# WARNING: DO NOT EDIT, AUTO-GENERATED CODE!
# See https://github.com/aws-beam/aws-codegen for more details.
defmodule AWS.Health do
@moduledoc """
Health
The Health API provides access to the Health information that appears in the
[Health Dashboard](https://health.aws.amazon.com/health/home). 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](http://aws.amazon.com/premiumsupport/) 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](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html)
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](https://docs.aws.amazon.com/health/latest/ug/health-api.html) in the
*Health User Guide*.
For authentication of requests, Health uses the [Signature Version 4 Signing Process](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html).
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](https://docs.aws.amazon.com/health/latest/ug/aggregate-events.html) in
the *Health User Guide*.
When you use the Health API operations to return Health events, see the
following recommendations:
Use the
[eventScopeCode](https://docs.aws.amazon.com/health/latest/APIReference/API_Event.html#AWSHealth-Type-Event-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.
"""
alias AWS.Client
alias AWS.Request
@typedoc """
## Example:
describe_events_for_organization_response() :: %{
"events" => list(organization_event()),
"nextToken" => String.t() | atom()
}
"""
@type describe_events_for_organization_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
unsupported_locale() :: %{
"message" => String.t() | atom()
}
"""
@type unsupported_locale() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
account_entity_aggregate() :: %{
"accountId" => String.t() | atom(),
"count" => integer(),
"statuses" => map()
}
"""
@type account_entity_aggregate() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
organization_event_filter() :: %{
"awsAccountIds" => list(String.t() | atom()),
"endTime" => date_time_range(),
"entityArns" => list(String.t() | atom()),
"entityValues" => list(String.t() | atom()),
"eventStatusCodes" => list(list(any())()),
"eventTypeCategories" => list(list(any())()),
"eventTypeCodes" => list(String.t() | atom()),
"lastUpdatedTime" => date_time_range(),
"regions" => list(String.t() | atom()),
"services" => list(String.t() | atom()),
"startTime" => date_time_range()
}
"""
@type organization_event_filter() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_event_details_for_organization_request() :: %{
optional("locale") => String.t() | atom(),
required("organizationEventDetailFilters") => list(event_account_filter())
}
"""
@type describe_event_details_for_organization_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_affected_accounts_for_organization_response() :: %{
"affectedAccounts" => list(String.t() | atom()),
"eventScopeCode" => list(any()),
"nextToken" => String.t() | atom()
}
"""
@type describe_affected_accounts_for_organization_response() :: %{
(String.t() | atom()) => any()
}
@typedoc """
## Example:
invalid_pagination_token() :: %{
"message" => String.t() | atom()
}
"""
@type invalid_pagination_token() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
affected_entity() :: %{
"awsAccountId" => String.t() | atom(),
"entityArn" => String.t() | atom(),
"entityMetadata" => map(),
"entityUrl" => String.t() | atom(),
"entityValue" => String.t() | atom(),
"eventArn" => String.t() | atom(),
"lastUpdatedTime" => non_neg_integer(),
"statusCode" => list(any()),
"tags" => map()
}
"""
@type affected_entity() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_entity_aggregates_response() :: %{
"entityAggregates" => list(entity_aggregate())
}
"""
@type describe_entity_aggregates_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
event_details() :: %{
"event" => event(),
"eventDescription" => event_description(),
"eventMetadata" => map()
}
"""
@type event_details() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
organization_event_details_error_item() :: %{
"awsAccountId" => String.t() | atom(),
"errorMessage" => String.t() | atom(),
"errorName" => String.t() | atom(),
"eventArn" => String.t() | atom()
}
"""
@type organization_event_details_error_item() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
organization_event_details() :: %{
"awsAccountId" => String.t() | atom(),
"event" => event(),
"eventDescription" => event_description(),
"eventMetadata" => map()
}
"""
@type organization_event_details() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
entity_filter() :: %{
"entityArns" => list(String.t() | atom()),
"entityValues" => list(String.t() | atom()),
"eventArns" => list(String.t() | atom()),
"lastUpdatedTimes" => list(date_time_range()),
"statusCodes" => list(list(any())()),
"tags" => list(map())
}
"""
@type entity_filter() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
event_description() :: %{
"latestDescription" => String.t() | atom()
}
"""
@type event_description() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_affected_entities_for_organization_request() :: %{
optional("locale") => String.t() | atom(),
optional("maxResults") => integer(),
optional("nextToken") => String.t() | atom(),
optional("organizationEntityAccountFilters") => list(entity_account_filter()),
optional("organizationEntityFilters") => list(event_account_filter())
}
"""
@type describe_affected_entities_for_organization_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_affected_entities_for_organization_response() :: %{
"entities" => list(affected_entity()),
"failedSet" => list(organization_affected_entities_error_item()),
"nextToken" => String.t() | atom()
}
"""
@type describe_affected_entities_for_organization_response() :: %{
(String.t() | atom()) => any()
}
@typedoc """
## Example:
event_account_filter() :: %{
"awsAccountId" => String.t() | atom(),
"eventArn" => String.t() | atom()
}
"""
@type event_account_filter() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_entity_aggregates_for_organization_response() :: %{
"organizationEntityAggregates" => list(organization_entity_aggregate())
}
"""
@type describe_entity_aggregates_for_organization_response() :: %{
(String.t() | atom()) => any()
}
@typedoc """
## Example:
describe_entity_aggregates_for_organization_request() :: %{
optional("awsAccountIds") => list(String.t() | atom()),
required("eventArns") => list(String.t() | atom())
}
"""
@type describe_entity_aggregates_for_organization_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_event_details_request() :: %{
optional("locale") => String.t() | atom(),
required("eventArns") => list(String.t() | atom())
}
"""
@type describe_event_details_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_event_types_response() :: %{
"eventTypes" => list(event_type()),
"nextToken" => String.t() | atom()
}
"""
@type describe_event_types_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_entity_aggregates_request() :: %{
optional("eventArns") => list(String.t() | atom())
}
"""
@type describe_entity_aggregates_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
entity_aggregate() :: %{
"count" => integer(),
"eventArn" => String.t() | atom(),
"statuses" => map()
}
"""
@type entity_aggregate() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_affected_entities_response() :: %{
"entities" => list(affected_entity()),
"nextToken" => String.t() | atom()
}
"""
@type describe_affected_entities_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_health_service_status_for_organization_response() :: %{
"healthServiceAccessStatusForOrganization" => String.t() | atom()
}
"""
@type describe_health_service_status_for_organization_response() :: %{
(String.t() | atom()) => any()
}
@typedoc """
## Example:
organization_entity_aggregate() :: %{
"accounts" => list(account_entity_aggregate()),
"count" => integer(),
"eventArn" => String.t() | atom(),
"statuses" => map()
}
"""
@type organization_entity_aggregate() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_affected_accounts_for_organization_request() :: %{
optional("maxResults") => integer(),
optional("nextToken") => String.t() | atom(),
required("eventArn") => String.t() | atom()
}
"""
@type describe_affected_accounts_for_organization_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
entity_account_filter() :: %{
"awsAccountId" => String.t() | atom(),
"eventArn" => String.t() | atom(),
"statusCodes" => list(list(any())())
}
"""
@type entity_account_filter() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
organization_affected_entities_error_item() :: %{
"awsAccountId" => String.t() | atom(),
"errorMessage" => String.t() | atom(),
"errorName" => String.t() | atom(),
"eventArn" => String.t() | atom()
}
"""
@type organization_affected_entities_error_item() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
date_time_range() :: %{
"from" => non_neg_integer(),
"to" => non_neg_integer()
}
"""
@type date_time_range() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
event_filter() :: %{
"availabilityZones" => list(String.t() | atom()),
"endTimes" => list(date_time_range()),
"entityArns" => list(String.t() | atom()),
"entityValues" => list(String.t() | atom()),
"eventArns" => list(String.t() | atom()),
"eventStatusCodes" => list(list(any())()),
"eventTypeCategories" => list(list(any())()),
"eventTypeCodes" => list(String.t() | atom()),
"lastUpdatedTimes" => list(date_time_range()),
"regions" => list(String.t() | atom()),
"services" => list(String.t() | atom()),
"startTimes" => list(date_time_range()),
"tags" => list(map())
}
"""
@type event_filter() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_event_aggregates_request() :: %{
optional("filter") => event_filter(),
optional("maxResults") => integer(),
optional("nextToken") => String.t() | atom(),
required("aggregateField") => list(any())
}
"""
@type describe_event_aggregates_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_events_for_organization_request() :: %{
optional("filter") => organization_event_filter(),
optional("locale") => String.t() | atom(),
optional("maxResults") => integer(),
optional("nextToken") => String.t() | atom()
}
"""
@type describe_events_for_organization_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
event() :: %{
"arn" => String.t() | atom(),
"availabilityZone" => String.t() | atom(),
"endTime" => non_neg_integer(),
"eventScopeCode" => list(any()),
"eventTypeCategory" => list(any()),
"eventTypeCode" => String.t() | atom(),
"lastUpdatedTime" => non_neg_integer(),
"region" => String.t() | atom(),
"service" => String.t() | atom(),
"startTime" => non_neg_integer(),
"statusCode" => list(any())
}
"""
@type event() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_events_request() :: %{
optional("filter") => event_filter(),
optional("locale") => String.t() | atom(),
optional("maxResults") => integer(),
optional("nextToken") => String.t() | atom()
}
"""
@type describe_events_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_event_aggregates_response() :: %{
"eventAggregates" => list(event_aggregate()),
"nextToken" => String.t() | atom()
}
"""
@type describe_event_aggregates_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
concurrent_modification_exception() :: %{
"message" => String.t() | atom()
}
"""
@type concurrent_modification_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
event_type_filter() :: %{
"eventTypeCategories" => list(list(any())()),
"eventTypeCodes" => list(String.t() | atom()),
"services" => list(String.t() | atom())
}
"""
@type event_type_filter() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_event_details_for_organization_response() :: %{
"failedSet" => list(organization_event_details_error_item()),
"successfulSet" => list(organization_event_details())
}
"""
@type describe_event_details_for_organization_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_event_types_request() :: %{
optional("filter") => event_type_filter(),
optional("locale") => String.t() | atom(),
optional("maxResults") => integer(),
optional("nextToken") => String.t() | atom()
}
"""
@type describe_event_types_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
event_type() :: %{
"category" => list(any()),
"code" => String.t() | atom(),
"service" => String.t() | atom()
}
"""
@type event_type() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
organization_event() :: %{
"arn" => String.t() | atom(),
"endTime" => non_neg_integer(),
"eventScopeCode" => list(any()),
"eventTypeCategory" => list(any()),
"eventTypeCode" => String.t() | atom(),
"lastUpdatedTime" => non_neg_integer(),
"region" => String.t() | atom(),
"service" => String.t() | atom(),
"startTime" => non_neg_integer(),
"statusCode" => list(any())
}
"""
@type organization_event() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_event_details_response() :: %{
"failedSet" => list(event_details_error_item()),
"successfulSet" => list(event_details())
}
"""
@type describe_event_details_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
event_details_error_item() :: %{
"errorMessage" => String.t() | atom(),
"errorName" => String.t() | atom(),
"eventArn" => String.t() | atom()
}
"""
@type event_details_error_item() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
event_aggregate() :: %{
"aggregateValue" => String.t() | atom(),
"count" => integer()
}
"""
@type event_aggregate() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_events_response() :: %{
"events" => list(event()),
"nextToken" => String.t() | atom()
}
"""
@type describe_events_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
describe_affected_entities_request() :: %{
optional("locale") => String.t() | atom(),
optional("maxResults") => integer(),
optional("nextToken") => String.t() | atom(),
required("filter") => entity_filter()
}
"""
@type describe_affected_entities_request() :: %{(String.t() | atom()) => any()}
@type describe_affected_accounts_for_organization_errors() :: invalid_pagination_token()
@type describe_affected_entities_errors() :: invalid_pagination_token() | unsupported_locale()
@type describe_affected_entities_for_organization_errors() ::
invalid_pagination_token() | unsupported_locale()
@type describe_event_aggregates_errors() :: invalid_pagination_token()
@type describe_event_details_errors() :: unsupported_locale()
@type describe_event_details_for_organization_errors() :: unsupported_locale()
@type describe_event_types_errors() :: invalid_pagination_token() | unsupported_locale()
@type describe_events_errors() :: invalid_pagination_token() | unsupported_locale()
@type describe_events_for_organization_errors() ::
invalid_pagination_token() | unsupported_locale()
@type disable_health_service_access_for_organization_errors() ::
concurrent_modification_exception()
@type enable_health_service_access_for_organization_errors() ::
concurrent_modification_exception()
def metadata do
%{
api_version: "2016-08-04",
content_type: "application/x-amz-json-1.1",
credential_scope: "us-east-1",
endpoint_prefix: "health",
global?: true,
hostname: "global.health.amazonaws.com",
protocol: "json",
service_id: "Health",
signature_version: "v4",
signing_name: "health",
target_prefix: "AWSHealth_20160804"
}
end
@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](https://docs.aws.amazon.com/health/latest/APIReference/API_Event.html). Before you can call this operation, you must first enable Health to work with
Organizations. To do this, call the
[EnableHealthServiceAccessForOrganization](https://docs.aws.amazon.com/health/latest/APIReference/API_EnableHealthServiceAccessForOrganization.html)
operation from your organization's
management account.
This API operation uses pagination. Specify the `nextToken` parameter in the
next request to return more results.
"""
@spec describe_affected_accounts_for_organization(
map(),
describe_affected_accounts_for_organization_request(),
list()
) ::
{:ok, describe_affected_accounts_for_organization_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, describe_affected_accounts_for_organization_errors()}
def describe_affected_accounts_for_organization(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribeAffectedAccountsForOrganization", input, options)
end
@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](https://docs.aws.amazon.com/health/latest/ug/security_iam_id-based-policy-examples.html#resource-action-based-conditions)
in the *Health User Guide*.
"""
@spec describe_affected_entities(map(), describe_affected_entities_request(), list()) ::
{:ok, describe_affected_entities_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, describe_affected_entities_errors()}
def describe_affected_entities(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribeAffectedEntities", input, options)
end
@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](https://docs.aws.amazon.com/health/latest/APIReference/API_EnableHealthServiceAccessForOrganization.html) 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](https://docs.aws.amazon.com/health/latest/ug/security_iam_id-based-policy-examples.html#resource-action-based-conditions)
in the *Health User Guide*.
"""
@spec describe_affected_entities_for_organization(
map(),
describe_affected_entities_for_organization_request(),
list()
) ::
{:ok, describe_affected_entities_for_organization_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, describe_affected_entities_for_organization_errors()}
def describe_affected_entities_for_organization(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribeAffectedEntitiesForOrganization", input, options)
end
@doc """
Returns the number of entities that are affected by each of the specified
events.
"""
@spec describe_entity_aggregates(map(), describe_entity_aggregates_request(), list()) ::
{:ok, describe_entity_aggregates_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
def describe_entity_aggregates(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribeEntityAggregates", input, options)
end
@doc """
Returns a list of entity aggregates for your Organizations that are affected by
each of the specified events.
"""
@spec describe_entity_aggregates_for_organization(
map(),
describe_entity_aggregates_for_organization_request(),
list()
) ::
{:ok, describe_entity_aggregates_for_organization_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
def describe_entity_aggregates_for_organization(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribeEntityAggregatesForOrganization", input, options)
end
@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.
"""
@spec describe_event_aggregates(map(), describe_event_aggregates_request(), list()) ::
{:ok, describe_event_aggregates_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, describe_event_aggregates_errors()}
def describe_event_aggregates(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribeEventAggregates", input, options)
end
@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](https://docs.aws.amazon.com/health/latest/APIReference/API_DescribeEvents.html)), 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](https://docs.aws.amazon.com/health/latest/APIReference/API_DescribeAffectedEntities.html)
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](https://docs.aws.amazon.com/health/latest/ug/security_iam_id-based-policy-examples.html#resource-action-based-conditions)
in the *Health User Guide*.
"""
@spec describe_event_details(map(), describe_event_details_request(), list()) ::
{:ok, describe_event_details_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, describe_event_details_errors()}
def describe_event_details(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribeEventDetails", input, options)
end
@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](https://docs.aws.amazon.com/health/latest/APIReference/API_DescribeAffectedEntitiesForOrganization.html) operation.
Before you can call this operation, you must first enable Health to work with
Organizations. To do this, call the
[EnableHealthServiceAccessForOrganization](https://docs.aws.amazon.com/health/latest/APIReference/API_EnableHealthServiceAccessForOrganization.html)
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](https://docs.aws.amazon.com/health/latest/APIReference/API_Event.html).
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](https://docs.aws.amazon.com/health/latest/ug/security_iam_id-based-policy-examples.html#resource-action-based-conditions)
in the *Health User Guide*.
"""
@spec describe_event_details_for_organization(
map(),
describe_event_details_for_organization_request(),
list()
) ::
{:ok, describe_event_details_for_organization_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, describe_event_details_for_organization_errors()}
def describe_event_details_for_organization(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribeEventDetailsForOrganization", input, options)
end
@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](https://docs.aws.amazon.com/health/latest/APIReference/API_EventType.html)
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.
"""
@spec describe_event_types(map(), describe_event_types_request(), list()) ::
{:ok, describe_event_types_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, describe_event_types_errors()}
def describe_event_types(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribeEventTypes", input, options)
end
@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](https://docs.aws.amazon.com/health/latest/APIReference/API_DescribeEventDetails.html) and
[DescribeAffectedEntities](https://docs.aws.amazon.com/health/latest/APIReference/API_DescribeAffectedEntities.html)
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](https://docs.aws.amazon.com/health/latest/APIReference/API_Event.html).
This API operation uses pagination. Specify the `nextToken` parameter in the
next request to return more results.
"""
@spec describe_events(map(), describe_events_request(), list()) ::
{:ok, describe_events_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, describe_events_errors()}
def describe_events(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribeEvents", input, options)
end
@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:
*
[DescribeAffectedAccountsForOrganization](https://docs.aws.amazon.com/health/latest/APIReference/API_DescribeAffectedAccountsForOrganization.html)
*
[DescribeEventDetailsForOrganization](https://docs.aws.amazon.com/health/latest/APIReference/API_DescribeEventDetailsForOrganization.html)
*
[DescribeAffectedEntitiesForOrganization](https://docs.aws.amazon.com/health/latest/APIReference/API_DescribeAffectedEntitiesForOrganization.html)
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](https://docs.aws.amazon.com/health/latest/APIReference/API_Event.html).
Before you can call this operation, you must first enable Health to work with
Organizations. To do this, call the
[EnableHealthServiceAccessForOrganization](https://docs.aws.amazon.com/health/latest/APIReference/API_EnableHealthServiceAccessForOrganization.html)
operation from your organization's
management account.
This API operation uses pagination. Specify the `nextToken` parameter in the
next request to return more results.
"""
@spec describe_events_for_organization(
map(),
describe_events_for_organization_request(),
list()
) ::
{:ok, describe_events_for_organization_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, describe_events_for_organization_errors()}
def describe_events_for_organization(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DescribeEventsForOrganization", input, options)
end
@doc """
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.
"""
@spec describe_health_service_status_for_organization(map(), %{}, list()) ::
{:ok, describe_health_service_status_for_organization_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
def describe_health_service_status_for_organization(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(
client,
meta,
"DescribeHealthServiceStatusForOrganization",
input,
options
)
end
@doc """
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](https://docs.aws.amazon.com/health/latest/ug/aggregate-events.html) 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)
in the
*IAM User Guide*.
You can also disable the organizational feature by using the Organizations
[DisableAWSServiceAccess](https://docs.aws.amazon.com/organizations/latest/APIReference/API_DisableAWSServiceAccess.html)
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.
"""
@spec disable_health_service_access_for_organization(map(), %{}, list()) ::
{:ok, nil, any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, disable_health_service_access_for_organization_errors()}
def disable_health_service_access_for_organization(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(
client,
meta,
"DisableHealthServiceAccessForOrganization",
input,
options
)
end
@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](http://aws.amazon.com/premiumsupport/) 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](https://docs.aws.amazon.com/health/latest/ug/security_iam_id-based-policy-examples.html).
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](https://docs.aws.amazon.com/health/latest/ug/aggregate-events.html) in
the *Health User Guide*.
"""
@spec enable_health_service_access_for_organization(map(), %{}, list()) ::
{:ok, nil, any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, enable_health_service_access_for_organization_errors()}
def enable_health_service_access_for_organization(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "EnableHealthServiceAccessForOrganization", input, options)
end
end