# WARNING: DO NOT EDIT, AUTO-GENERATED CODE!
# See https://github.com/aws-beam/aws-codegen for more details.
defmodule AWS.SNS do
@moduledoc """
Amazon Simple Notification Service
Amazon Simple Notification Service (Amazon SNS) is a web service that enables
you
to build distributed web-enabled applications.
Applications can use Amazon SNS to easily push
real-time notification messages to interested subscribers over multiple delivery
protocols. For more information about this product see the [Amazon SNS product page](http://aws.amazon.com/sns/). For detailed information about Amazon SNS
features
and their associated API calls, see the [Amazon SNS Developer Guide](https://docs.aws.amazon.com/sns/latest/dg/).
For information on the permissions you need to use this API, see [Identity and access management in Amazon
SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-authentication-and-access-control.html)
in the *Amazon SNS Developer
Guide.*
We also provide SDKs that enable you to access Amazon SNS from your preferred
programming
language. The SDKs contain functionality that automatically takes care of tasks
such as:
cryptographically signing your service requests, retrying requests, and handling
error
responses. For a list of available SDKs, go to [Tools for Amazon Web Services](http://aws.amazon.com/tools/).
"""
alias AWS.Client
alias AWS.Request
@typedoc """
## Example:
set_sms_attributes_response() :: %{}
"""
@type set_sms_attributes_response() :: %{}
@typedoc """
## Example:
create_platform_endpoint_input() :: %{
optional("Attributes") => map(),
optional("CustomUserData") => String.t() | atom(),
required("PlatformApplicationArn") => String.t() | atom(),
required("Token") => String.t() | atom()
}
"""
@type create_platform_endpoint_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
kms_disabled_exception() :: %{
"message" => String.t() | atom()
}
"""
@type kms_disabled_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
confirm_subscription_response() :: %{
"SubscriptionArn" => String.t() | atom()
}
"""
@type confirm_subscription_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_origination_numbers_result() :: %{
"NextToken" => String.t() | atom(),
"PhoneNumbers" => list(phone_number_information())
}
"""
@type list_origination_numbers_result() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
phone_number_information() :: %{
"CreatedAt" => non_neg_integer(),
"Iso2CountryCode" => String.t() | atom(),
"NumberCapabilities" => list(list(any())()),
"PhoneNumber" => String.t() | atom(),
"RouteType" => list(any()),
"Status" => String.t() | atom()
}
"""
@type phone_number_information() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
tag_resource_request() :: %{
required("ResourceArn") => String.t() | atom(),
required("Tags") => list(tag())
}
"""
@type tag_resource_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
platform_application_disabled_exception() :: %{
"message" => String.t() | atom()
}
"""
@type platform_application_disabled_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
unsubscribe_input() :: %{
required("SubscriptionArn") => String.t() | atom()
}
"""
@type unsubscribe_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
create_topic_input() :: %{
optional("Attributes") => map(),
optional("DataProtectionPolicy") => String.t() | atom(),
optional("Tags") => list(tag()),
required("Name") => String.t() | atom()
}
"""
@type create_topic_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
kms_opt_in_required() :: %{
"message" => String.t() | atom()
}
"""
@type kms_opt_in_required() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
delete_sms_sandbox_phone_number_input() :: %{
required("PhoneNumber") => String.t() | atom()
}
"""
@type delete_sms_sandbox_phone_number_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_platform_applications_input() :: %{
optional("NextToken") => String.t() | atom()
}
"""
@type list_platform_applications_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
get_subscription_attributes_response() :: %{
"Attributes" => map()
}
"""
@type get_subscription_attributes_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
delete_topic_input() :: %{
required("TopicArn") => String.t() | atom()
}
"""
@type delete_topic_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
get_topic_attributes_input() :: %{
required("TopicArn") => String.t() | atom()
}
"""
@type get_topic_attributes_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
platform_application() :: %{
"Attributes" => map(),
"PlatformApplicationArn" => String.t() | atom()
}
"""
@type platform_application() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
untag_resource_response() :: %{}
"""
@type untag_resource_response() :: %{}
@typedoc """
## Example:
create_platform_application_response() :: %{
"PlatformApplicationArn" => String.t() | atom()
}
"""
@type create_platform_application_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
kms_throttling_exception() :: %{
"message" => String.t() | atom()
}
"""
@type kms_throttling_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
get_endpoint_attributes_input() :: %{
required("EndpointArn") => String.t() | atom()
}
"""
@type get_endpoint_attributes_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
invalid_batch_entry_id_exception() :: %{
"message" => String.t() | atom()
}
"""
@type invalid_batch_entry_id_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_subscriptions_by_topic_response() :: %{
"NextToken" => String.t() | atom(),
"Subscriptions" => list(subscription())
}
"""
@type list_subscriptions_by_topic_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
message_attribute_value() :: %{
"BinaryValue" => binary(),
"DataType" => String.t() | atom(),
"StringValue" => String.t() | atom()
}
"""
@type message_attribute_value() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
check_if_phone_number_is_opted_out_input() :: %{
required("phoneNumber") => String.t() | atom()
}
"""
@type check_if_phone_number_is_opted_out_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
replay_limit_exceeded_exception() :: %{
"message" => String.t() | atom()
}
"""
@type replay_limit_exceeded_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_phone_numbers_opted_out_response() :: %{
"nextToken" => String.t() | atom(),
"phoneNumbers" => list(String.t() | atom())
}
"""
@type list_phone_numbers_opted_out_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
opt_in_phone_number_response() :: %{}
"""
@type opt_in_phone_number_response() :: %{}
@typedoc """
## Example:
create_sms_sandbox_phone_number_input() :: %{
optional("LanguageCode") => list(any()),
required("PhoneNumber") => String.t() | atom()
}
"""
@type create_sms_sandbox_phone_number_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
create_sms_sandbox_phone_number_result() :: %{}
"""
@type create_sms_sandbox_phone_number_result() :: %{}
@typedoc """
## Example:
user_error_exception() :: %{
"message" => String.t() | atom()
}
"""
@type user_error_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_subscriptions_input() :: %{
optional("NextToken") => String.t() | atom()
}
"""
@type list_subscriptions_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
set_topic_attributes_input() :: %{
optional("AttributeValue") => String.t() | atom(),
required("AttributeName") => String.t() | atom(),
required("TopicArn") => String.t() | atom()
}
"""
@type set_topic_attributes_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
tag_policy_exception() :: %{
"message" => String.t() | atom()
}
"""
@type tag_policy_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
get_platform_application_attributes_input() :: %{
required("PlatformApplicationArn") => String.t() | atom()
}
"""
@type get_platform_application_attributes_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_sms_sandbox_phone_numbers_result() :: %{
"NextToken" => String.t() | atom(),
"PhoneNumbers" => list(sms_sandbox_phone_number())
}
"""
@type list_sms_sandbox_phone_numbers_result() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
untag_resource_request() :: %{
required("ResourceArn") => String.t() | atom(),
required("TagKeys") => list(String.t() | atom())
}
"""
@type untag_resource_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
invalid_state_exception() :: %{
"message" => String.t() | atom()
}
"""
@type invalid_state_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
set_platform_application_attributes_input() :: %{
required("Attributes") => map(),
required("PlatformApplicationArn") => String.t() | atom()
}
"""
@type set_platform_application_attributes_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
batch_result_error_entry() :: %{
"Code" => String.t() | atom(),
"Id" => String.t() | atom(),
"Message" => String.t() | atom(),
"SenderFault" => boolean()
}
"""
@type batch_result_error_entry() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
publish_batch_response() :: %{
"Failed" => list(batch_result_error_entry()),
"Successful" => list(publish_batch_result_entry())
}
"""
@type publish_batch_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
verify_sms_sandbox_phone_number_input() :: %{
required("OneTimePassword") => String.t() | atom(),
required("PhoneNumber") => String.t() | atom()
}
"""
@type verify_sms_sandbox_phone_number_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
publish_batch_request_entry() :: %{
"Id" => String.t() | atom(),
"Message" => String.t() | atom(),
"MessageAttributes" => map(),
"MessageDeduplicationId" => String.t() | atom(),
"MessageGroupId" => String.t() | atom(),
"MessageStructure" => String.t() | atom(),
"Subject" => String.t() | atom()
}
"""
@type publish_batch_request_entry() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
create_topic_response() :: %{
"TopicArn" => String.t() | atom()
}
"""
@type create_topic_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
topic_limit_exceeded_exception() :: %{
"message" => String.t() | atom()
}
"""
@type topic_limit_exceeded_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
invalid_security_exception() :: %{
"message" => String.t() | atom()
}
"""
@type invalid_security_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
confirm_subscription_input() :: %{
optional("AuthenticateOnUnsubscribe") => String.t() | atom(),
required("Token") => String.t() | atom(),
required("TopicArn") => String.t() | atom()
}
"""
@type confirm_subscription_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
create_platform_application_input() :: %{
required("Attributes") => map(),
required("Name") => String.t() | atom(),
required("Platform") => String.t() | atom()
}
"""
@type create_platform_application_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
throttled_exception() :: %{
"message" => String.t() | atom()
}
"""
@type throttled_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
resource_not_found_exception() :: %{
"message" => String.t() | atom()
}
"""
@type resource_not_found_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
get_subscription_attributes_input() :: %{
required("SubscriptionArn") => String.t() | atom()
}
"""
@type get_subscription_attributes_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
subscribe_input() :: %{
optional("Attributes") => map(),
optional("Endpoint") => String.t() | atom(),
optional("ReturnSubscriptionArn") => boolean(),
required("Protocol") => String.t() | atom(),
required("TopicArn") => String.t() | atom()
}
"""
@type subscribe_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
tag() :: %{
"Key" => String.t() | atom(),
"Value" => String.t() | atom()
}
"""
@type tag() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
opted_out_exception() :: %{
"message" => String.t() | atom()
}
"""
@type opted_out_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
sms_sandbox_phone_number() :: %{
"PhoneNumber" => String.t() | atom(),
"Status" => list(any())
}
"""
@type sms_sandbox_phone_number() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_subscriptions_by_topic_input() :: %{
optional("NextToken") => String.t() | atom(),
required("TopicArn") => String.t() | atom()
}
"""
@type list_subscriptions_by_topic_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_sms_sandbox_phone_numbers_input() :: %{
optional("MaxResults") => integer(),
optional("NextToken") => String.t() | atom()
}
"""
@type list_sms_sandbox_phone_numbers_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
topic() :: %{
"TopicArn" => String.t() | atom()
}
"""
@type topic() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
invalid_parameter_value_exception() :: %{
"message" => String.t() | atom()
}
"""
@type invalid_parameter_value_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
not_found_exception() :: %{
"message" => String.t() | atom()
}
"""
@type not_found_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
tag_limit_exceeded_exception() :: %{
"message" => String.t() | atom()
}
"""
@type tag_limit_exceeded_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
get_endpoint_attributes_response() :: %{
"Attributes" => map()
}
"""
@type get_endpoint_attributes_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_tags_for_resource_response() :: %{
"Tags" => list(tag())
}
"""
@type list_tags_for_resource_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
get_sms_attributes_input() :: %{
optional("attributes") => list(String.t() | atom())
}
"""
@type get_sms_attributes_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_topics_response() :: %{
"NextToken" => String.t() | atom(),
"Topics" => list(topic())
}
"""
@type list_topics_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
verification_exception() :: %{
"Message" => String.t() | atom(),
"Status" => String.t() | atom()
}
"""
@type verification_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
endpoint_disabled_exception() :: %{
"message" => String.t() | atom()
}
"""
@type endpoint_disabled_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
remove_permission_input() :: %{
required("Label") => String.t() | atom(),
required("TopicArn") => String.t() | atom()
}
"""
@type remove_permission_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
publish_batch_result_entry() :: %{
"Id" => String.t() | atom(),
"MessageId" => String.t() | atom(),
"SequenceNumber" => String.t() | atom()
}
"""
@type publish_batch_result_entry() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
get_sms_sandbox_account_status_result() :: %{
"IsInSandbox" => boolean()
}
"""
@type get_sms_sandbox_account_status_result() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
empty_batch_request_exception() :: %{
"message" => String.t() | atom()
}
"""
@type empty_batch_request_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
endpoint() :: %{
"Attributes" => map(),
"EndpointArn" => String.t() | atom()
}
"""
@type endpoint() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
kms_access_denied_exception() :: %{
"message" => String.t() | atom()
}
"""
@type kms_access_denied_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
verify_sms_sandbox_phone_number_result() :: %{}
"""
@type verify_sms_sandbox_phone_number_result() :: %{}
@typedoc """
## Example:
kms_not_found_exception() :: %{
"message" => String.t() | atom()
}
"""
@type kms_not_found_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
invalid_parameter_exception() :: %{
"message" => String.t() | atom()
}
"""
@type invalid_parameter_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
batch_entry_ids_not_distinct_exception() :: %{
"message" => String.t() | atom()
}
"""
@type batch_entry_ids_not_distinct_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
set_sms_attributes_input() :: %{
required("attributes") => map()
}
"""
@type set_sms_attributes_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_platform_applications_response() :: %{
"NextToken" => String.t() | atom(),
"PlatformApplications" => list(platform_application())
}
"""
@type list_platform_applications_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
tag_resource_response() :: %{}
"""
@type tag_resource_response() :: %{}
@typedoc """
## Example:
set_subscription_attributes_input() :: %{
optional("AttributeValue") => String.t() | atom(),
required("AttributeName") => String.t() | atom(),
required("SubscriptionArn") => String.t() | atom()
}
"""
@type set_subscription_attributes_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
delete_endpoint_input() :: %{
required("EndpointArn") => String.t() | atom()
}
"""
@type delete_endpoint_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
subscribe_response() :: %{
"SubscriptionArn" => String.t() | atom()
}
"""
@type subscribe_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
validation_exception() :: %{
"Message" => String.t() | atom()
}
"""
@type validation_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_tags_for_resource_request() :: %{
required("ResourceArn") => String.t() | atom()
}
"""
@type list_tags_for_resource_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
subscription() :: %{
"Endpoint" => String.t() | atom(),
"Owner" => String.t() | atom(),
"Protocol" => String.t() | atom(),
"SubscriptionArn" => String.t() | atom(),
"TopicArn" => String.t() | atom()
}
"""
@type subscription() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_phone_numbers_opted_out_input() :: %{
optional("nextToken") => String.t() | atom()
}
"""
@type list_phone_numbers_opted_out_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_subscriptions_response() :: %{
"NextToken" => String.t() | atom(),
"Subscriptions" => list(subscription())
}
"""
@type list_subscriptions_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
publish_response() :: %{
"MessageId" => String.t() | atom(),
"SequenceNumber" => String.t() | atom()
}
"""
@type publish_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
authorization_error_exception() :: %{
"message" => String.t() | atom()
}
"""
@type authorization_error_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
check_if_phone_number_is_opted_out_response() :: %{
"isOptedOut" => boolean()
}
"""
@type check_if_phone_number_is_opted_out_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
concurrent_access_exception() :: %{
"message" => String.t() | atom()
}
"""
@type concurrent_access_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
add_permission_input() :: %{
required("AWSAccountId") => list(String.t() | atom()),
required("ActionName") => list(String.t() | atom()),
required("Label") => String.t() | atom(),
required("TopicArn") => String.t() | atom()
}
"""
@type add_permission_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
get_data_protection_policy_response() :: %{
"DataProtectionPolicy" => String.t() | atom()
}
"""
@type get_data_protection_policy_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_origination_numbers_request() :: %{
optional("MaxResults") => integer(),
optional("NextToken") => String.t() | atom()
}
"""
@type list_origination_numbers_request() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
set_endpoint_attributes_input() :: %{
required("Attributes") => map(),
required("EndpointArn") => String.t() | atom()
}
"""
@type set_endpoint_attributes_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
publish_input() :: %{
optional("MessageAttributes") => map(),
optional("MessageDeduplicationId") => String.t() | atom(),
optional("MessageGroupId") => String.t() | atom(),
optional("MessageStructure") => String.t() | atom(),
optional("PhoneNumber") => String.t() | atom(),
optional("Subject") => String.t() | atom(),
optional("TargetArn") => String.t() | atom(),
optional("TopicArn") => String.t() | atom(),
required("Message") => String.t() | atom()
}
"""
@type publish_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
filter_policy_limit_exceeded_exception() :: %{
"message" => String.t() | atom()
}
"""
@type filter_policy_limit_exceeded_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
create_endpoint_response() :: %{
"EndpointArn" => String.t() | atom()
}
"""
@type create_endpoint_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_endpoints_by_platform_application_response() :: %{
"Endpoints" => list(endpoint()),
"NextToken" => String.t() | atom()
}
"""
@type list_endpoints_by_platform_application_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
get_topic_attributes_response() :: %{
"Attributes" => map()
}
"""
@type get_topic_attributes_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_topics_input() :: %{
optional("NextToken") => String.t() | atom()
}
"""
@type list_topics_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
put_data_protection_policy_input() :: %{
required("DataProtectionPolicy") => String.t() | atom(),
required("ResourceArn") => String.t() | atom()
}
"""
@type put_data_protection_policy_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
subscription_limit_exceeded_exception() :: %{
"message" => String.t() | atom()
}
"""
@type subscription_limit_exceeded_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
delete_sms_sandbox_phone_number_result() :: %{}
"""
@type delete_sms_sandbox_phone_number_result() :: %{}
@typedoc """
## Example:
get_sms_attributes_response() :: %{
"attributes" => map()
}
"""
@type get_sms_attributes_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
get_sms_sandbox_account_status_input() :: %{}
"""
@type get_sms_sandbox_account_status_input() :: %{}
@typedoc """
## Example:
stale_tag_exception() :: %{
"message" => String.t() | atom()
}
"""
@type stale_tag_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
kms_invalid_state_exception() :: %{
"message" => String.t() | atom()
}
"""
@type kms_invalid_state_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
list_endpoints_by_platform_application_input() :: %{
optional("NextToken") => String.t() | atom(),
required("PlatformApplicationArn") => String.t() | atom()
}
"""
@type list_endpoints_by_platform_application_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
opt_in_phone_number_input() :: %{
required("phoneNumber") => String.t() | atom()
}
"""
@type opt_in_phone_number_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
get_platform_application_attributes_response() :: %{
"Attributes" => map()
}
"""
@type get_platform_application_attributes_response() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
too_many_entries_in_batch_request_exception() :: %{
"message" => String.t() | atom()
}
"""
@type too_many_entries_in_batch_request_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
internal_error_exception() :: %{
"message" => String.t() | atom()
}
"""
@type internal_error_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
batch_request_too_long_exception() :: %{
"message" => String.t() | atom()
}
"""
@type batch_request_too_long_exception() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
publish_batch_input() :: %{
required("PublishBatchRequestEntries") => list(publish_batch_request_entry()),
required("TopicArn") => String.t() | atom()
}
"""
@type publish_batch_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
get_data_protection_policy_input() :: %{
required("ResourceArn") => String.t() | atom()
}
"""
@type get_data_protection_policy_input() :: %{(String.t() | atom()) => any()}
@typedoc """
## Example:
delete_platform_application_input() :: %{
required("PlatformApplicationArn") => String.t() | atom()
}
"""
@type delete_platform_application_input() :: %{(String.t() | atom()) => any()}
@type add_permission_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| not_found_exception()
@type check_if_phone_number_is_opted_out_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| throttled_exception()
@type confirm_subscription_errors() ::
internal_error_exception()
| subscription_limit_exceeded_exception()
| filter_policy_limit_exceeded_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| not_found_exception()
| replay_limit_exceeded_exception()
@type create_platform_application_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
@type create_platform_endpoint_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| not_found_exception()
@type create_sms_sandbox_phone_number_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| opted_out_exception()
| throttled_exception()
| user_error_exception()
@type create_topic_errors() ::
internal_error_exception()
| stale_tag_exception()
| concurrent_access_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| tag_limit_exceeded_exception()
| invalid_security_exception()
| topic_limit_exceeded_exception()
| tag_policy_exception()
@type delete_endpoint_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
@type delete_platform_application_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
@type delete_sms_sandbox_phone_number_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| resource_not_found_exception()
| throttled_exception()
| user_error_exception()
@type delete_topic_errors() ::
internal_error_exception()
| stale_tag_exception()
| concurrent_access_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| not_found_exception()
| invalid_state_exception()
| tag_policy_exception()
@type get_data_protection_policy_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| not_found_exception()
| invalid_security_exception()
@type get_endpoint_attributes_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| not_found_exception()
@type get_platform_application_attributes_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| not_found_exception()
@type get_sms_attributes_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| throttled_exception()
@type get_sms_sandbox_account_status_errors() ::
internal_error_exception() | authorization_error_exception() | throttled_exception()
@type get_subscription_attributes_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| not_found_exception()
@type get_topic_attributes_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| not_found_exception()
| invalid_security_exception()
@type list_endpoints_by_platform_application_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| not_found_exception()
@type list_origination_numbers_errors() ::
internal_error_exception()
| authorization_error_exception()
| validation_exception()
| invalid_parameter_exception()
| throttled_exception()
@type list_phone_numbers_opted_out_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| throttled_exception()
@type list_platform_applications_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
@type list_sms_sandbox_phone_numbers_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| resource_not_found_exception()
| throttled_exception()
@type list_subscriptions_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
@type list_subscriptions_by_topic_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| not_found_exception()
@type list_tags_for_resource_errors() ::
concurrent_access_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| resource_not_found_exception()
| tag_policy_exception()
@type list_topics_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
@type opt_in_phone_number_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| throttled_exception()
@type publish_errors() ::
internal_error_exception()
| kms_invalid_state_exception()
| authorization_error_exception()
| validation_exception()
| invalid_parameter_exception()
| kms_not_found_exception()
| kms_access_denied_exception()
| endpoint_disabled_exception()
| not_found_exception()
| invalid_parameter_value_exception()
| invalid_security_exception()
| kms_throttling_exception()
| kms_opt_in_required()
| platform_application_disabled_exception()
| kms_disabled_exception()
@type publish_batch_errors() ::
batch_request_too_long_exception()
| internal_error_exception()
| too_many_entries_in_batch_request_exception()
| kms_invalid_state_exception()
| authorization_error_exception()
| validation_exception()
| batch_entry_ids_not_distinct_exception()
| invalid_parameter_exception()
| kms_not_found_exception()
| kms_access_denied_exception()
| empty_batch_request_exception()
| endpoint_disabled_exception()
| not_found_exception()
| invalid_parameter_value_exception()
| invalid_security_exception()
| invalid_batch_entry_id_exception()
| kms_throttling_exception()
| kms_opt_in_required()
| platform_application_disabled_exception()
| kms_disabled_exception()
@type put_data_protection_policy_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| not_found_exception()
| invalid_security_exception()
@type remove_permission_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| not_found_exception()
@type set_endpoint_attributes_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| not_found_exception()
@type set_platform_application_attributes_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| not_found_exception()
@type set_sms_attributes_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| throttled_exception()
@type set_subscription_attributes_errors() ::
internal_error_exception()
| filter_policy_limit_exceeded_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| not_found_exception()
| replay_limit_exceeded_exception()
@type set_topic_attributes_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| not_found_exception()
| invalid_security_exception()
@type subscribe_errors() ::
internal_error_exception()
| subscription_limit_exceeded_exception()
| filter_policy_limit_exceeded_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| not_found_exception()
| invalid_security_exception()
| replay_limit_exceeded_exception()
@type tag_resource_errors() ::
stale_tag_exception()
| concurrent_access_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| tag_limit_exceeded_exception()
| resource_not_found_exception()
| tag_policy_exception()
@type unsubscribe_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| not_found_exception()
| invalid_security_exception()
@type untag_resource_errors() ::
stale_tag_exception()
| concurrent_access_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| tag_limit_exceeded_exception()
| resource_not_found_exception()
| tag_policy_exception()
@type verify_sms_sandbox_phone_number_errors() ::
internal_error_exception()
| authorization_error_exception()
| invalid_parameter_exception()
| verification_exception()
| resource_not_found_exception()
| throttled_exception()
def metadata do
%{
api_version: "2010-03-31",
content_type: "application/x-www-form-urlencoded",
credential_scope: nil,
endpoint_prefix: "sns",
global?: false,
hostname: nil,
protocol: "query",
service_id: "SNS",
signature_version: "v4",
signing_name: "sns",
target_prefix: "AmazonSimpleNotificationService"
}
end
@doc """
Adds a statement to a topic's access control policy, granting access for the
specified
Amazon Web Services accounts to the specified actions.
To remove the ability to change topic permissions, you must deny permissions to
the `AddPermission`, `RemovePermission`, and
`SetTopicAttributes` actions in your IAM policy.
"""
@spec add_permission(map(), add_permission_input(), list()) ::
{:ok, nil, any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, add_permission_errors()}
def add_permission(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "AddPermission", input, options)
end
@doc """
Accepts a phone number and indicates whether the phone holder has opted out of
receiving SMS messages from your Amazon Web Services account.
You cannot send SMS messages to a number
that is opted out.
To resume sending messages, you can opt in the number by using the
`OptInPhoneNumber` action.
"""
@spec check_if_phone_number_is_opted_out(
map(),
check_if_phone_number_is_opted_out_input(),
list()
) ::
{:ok, check_if_phone_number_is_opted_out_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, check_if_phone_number_is_opted_out_errors()}
def check_if_phone_number_is_opted_out(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "CheckIfPhoneNumberIsOptedOut", input, options)
end
@doc """
Verifies an endpoint owner's intent to receive messages by validating the token
sent
to the endpoint by an earlier `Subscribe` action.
If the token is valid, the
action creates a new subscription and returns its Amazon Resource Name (ARN).
This call
requires an AWS signature only when the `AuthenticateOnUnsubscribe` flag is
set to "true".
"""
@spec confirm_subscription(map(), confirm_subscription_input(), list()) ::
{:ok, confirm_subscription_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, confirm_subscription_errors()}
def confirm_subscription(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ConfirmSubscription", input, options)
end
@doc """
Creates a platform application object for one of the supported push notification
services, such as APNS and GCM (Firebase Cloud Messaging), to which devices and
mobile
apps may register.
You must specify `PlatformPrincipal` and
`PlatformCredential` attributes when using the
`CreatePlatformApplication` action.
`PlatformPrincipal` and `PlatformCredential` are received from
the notification service.
*
For ADM, `PlatformPrincipal` is `client id` and
`PlatformCredential` is `client secret`.
*
For APNS and `APNS_SANDBOX` using certificate credentials,
`PlatformPrincipal` is `SSL certificate` and
`PlatformCredential` is `private key`.
*
For APNS and `APNS_SANDBOX` using token credentials,
`PlatformPrincipal` is `signing key ID` and
`PlatformCredential` is `signing key`.
*
For Baidu, `PlatformPrincipal` is `API key` and
`PlatformCredential` is `secret key`.
*
For GCM (Firebase Cloud Messaging) using key credentials, there is no
`PlatformPrincipal`. The `PlatformCredential` is
`API key`.
*
For GCM (Firebase Cloud Messaging) using token credentials, there is no
`PlatformPrincipal`. The `PlatformCredential` is a
JSON formatted private key file. When using the Amazon Web Services CLI or
Amazon Web Services SDKs, the
file must be in string format and special characters must be ignored. To format
the file correctly, Amazon SNS recommends using the following command:
`SERVICE_JSON=$(jq @json < service.json)`.
*
For MPNS, `PlatformPrincipal` is `TLS certificate` and
`PlatformCredential` is `private key`.
*
For WNS, `PlatformPrincipal` is
```
Package Security
Identifier
```
and `PlatformCredential` is
```
secret
key
```
.
You can use the returned `PlatformApplicationArn` as an attribute for the
`CreatePlatformEndpoint` action.
"""
@spec create_platform_application(map(), create_platform_application_input(), list()) ::
{:ok, create_platform_application_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, create_platform_application_errors()}
def create_platform_application(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "CreatePlatformApplication", input, options)
end
@doc """
Creates an endpoint for a device and mobile app on one of the supported push
notification services, such as GCM (Firebase Cloud Messaging) and APNS.
`CreatePlatformEndpoint` requires the `PlatformApplicationArn`
that is returned from `CreatePlatformApplication`. You can use the returned
`EndpointArn` to send a message to a mobile app or by the
`Subscribe` action for subscription to a topic. The
`CreatePlatformEndpoint` action is idempotent, so if the requester
already owns an endpoint with the same device token and attributes, that
endpoint's ARN
is returned without creating a new endpoint. For more information, see [Using Amazon SNS Mobile Push
Notifications](https://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html).
When using `CreatePlatformEndpoint` with Baidu, two attributes must be
provided: ChannelId and UserId. The token field must also contain the ChannelId.
For
more information, see [Creating an Amazon SNS Endpoint for Baidu](https://docs.aws.amazon.com/sns/latest/dg/SNSMobilePushBaiduEndpoint.html).
"""
@spec create_platform_endpoint(map(), create_platform_endpoint_input(), list()) ::
{:ok, create_endpoint_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, create_platform_endpoint_errors()}
def create_platform_endpoint(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "CreatePlatformEndpoint", input, options)
end
@doc """
Adds a destination phone number to an Amazon Web Services account in the SMS
sandbox and sends a
one-time password (OTP) to that phone number.
When you start using Amazon SNS to send SMS messages, your Amazon Web Services
account is in the
*SMS sandbox*. The SMS sandbox provides a safe environment for
you to try Amazon SNS features without risking your reputation as an SMS sender.
While your
Amazon Web Services account is in the SMS sandbox, you can use all of the
features of Amazon SNS. However, you can send
SMS messages only to verified destination phone numbers. For more information,
including how to
move out of the sandbox to send messages without restrictions,
see [SMS sandbox](https://docs.aws.amazon.com/sns/latest/dg/sns-sms-sandbox.html) in
the *Amazon SNS Developer Guide*.
"""
@spec create_sms_sandbox_phone_number(map(), create_sms_sandbox_phone_number_input(), list()) ::
{:ok, create_sms_sandbox_phone_number_result(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, create_sms_sandbox_phone_number_errors()}
def create_sms_sandbox_phone_number(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "CreateSMSSandboxPhoneNumber", input, options)
end
@doc """
Creates a topic to which notifications can be published.
Users can create at most
100,000 standard topics (at most 1,000 FIFO topics). For more information, see
[Creating an Amazon SNS topic](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html) in the
*Amazon SNS Developer Guide*. This action is
idempotent, so if the requester already owns a topic with the specified name,
that
topic's ARN is returned without creating a new topic.
"""
@spec create_topic(map(), create_topic_input(), list()) ::
{:ok, create_topic_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, create_topic_errors()}
def create_topic(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "CreateTopic", input, options)
end
@doc """
Deletes the endpoint for a device and mobile app from Amazon SNS.
This action is
idempotent. For more information, see [Using Amazon SNS Mobile Push Notifications](https://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html).
When you delete an endpoint that is also subscribed to a topic, then you must
also
unsubscribe the endpoint from the topic.
"""
@spec delete_endpoint(map(), delete_endpoint_input(), list()) ::
{:ok, nil, any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, delete_endpoint_errors()}
def delete_endpoint(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DeleteEndpoint", input, options)
end
@doc """
Deletes a platform application object for one of the supported push notification
services, such as APNS and GCM (Firebase Cloud Messaging).
For more information, see
[Using Amazon SNS Mobile Push
Notifications](https://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html).
"""
@spec delete_platform_application(map(), delete_platform_application_input(), list()) ::
{:ok, nil, any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, delete_platform_application_errors()}
def delete_platform_application(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DeletePlatformApplication", input, options)
end
@doc """
Deletes an Amazon Web Services account's verified or pending phone number from
the SMS
sandbox.
When you start using Amazon SNS to send SMS messages, your Amazon Web Services
account is in the
*SMS sandbox*. The SMS sandbox provides a safe environment for
you to try Amazon SNS features without risking your reputation as an SMS sender.
While your
Amazon Web Services account is in the SMS sandbox, you can use all of the
features of Amazon SNS. However, you can send
SMS messages only to verified destination phone numbers. For more information,
including how to
move out of the sandbox to send messages without restrictions,
see [SMS sandbox](https://docs.aws.amazon.com/sns/latest/dg/sns-sms-sandbox.html) in
the *Amazon SNS Developer Guide*.
"""
@spec delete_sms_sandbox_phone_number(map(), delete_sms_sandbox_phone_number_input(), list()) ::
{:ok, delete_sms_sandbox_phone_number_result(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, delete_sms_sandbox_phone_number_errors()}
def delete_sms_sandbox_phone_number(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DeleteSMSSandboxPhoneNumber", input, options)
end
@doc """
Deletes a topic and all its subscriptions.
Deleting a topic might prevent some
messages previously sent to the topic from being delivered to subscribers. This
action
is idempotent, so deleting a topic that does not exist does not result in an
error.
"""
@spec delete_topic(map(), delete_topic_input(), list()) ::
{:ok, nil, any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, delete_topic_errors()}
def delete_topic(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "DeleteTopic", input, options)
end
@doc """
Retrieves the specified inline `DataProtectionPolicy` document that is
stored in the specified Amazon SNS topic.
"""
@spec get_data_protection_policy(map(), get_data_protection_policy_input(), list()) ::
{:ok, get_data_protection_policy_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, get_data_protection_policy_errors()}
def get_data_protection_policy(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "GetDataProtectionPolicy", input, options)
end
@doc """
Retrieves the endpoint attributes for a device on one of the supported push
notification services, such as GCM (Firebase Cloud Messaging) and APNS.
For more
information, see [Using Amazon SNS Mobile Push Notifications](https://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html).
"""
@spec get_endpoint_attributes(map(), get_endpoint_attributes_input(), list()) ::
{:ok, get_endpoint_attributes_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, get_endpoint_attributes_errors()}
def get_endpoint_attributes(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "GetEndpointAttributes", input, options)
end
@doc """
Retrieves the attributes of the platform application object for the supported
push
notification services, such as APNS and GCM (Firebase Cloud Messaging).
For more
information, see [Using Amazon SNS Mobile Push Notifications](https://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html).
"""
@spec get_platform_application_attributes(
map(),
get_platform_application_attributes_input(),
list()
) ::
{:ok, get_platform_application_attributes_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, get_platform_application_attributes_errors()}
def get_platform_application_attributes(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "GetPlatformApplicationAttributes", input, options)
end
@doc """
Returns the settings for sending SMS messages from your Amazon Web Services
account.
These settings are set with the `SetSMSAttributes` action.
"""
@spec get_sms_attributes(map(), get_sms_attributes_input(), list()) ::
{:ok, get_sms_attributes_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, get_sms_attributes_errors()}
def get_sms_attributes(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "GetSMSAttributes", input, options)
end
@doc """
Retrieves the SMS sandbox status for the calling Amazon Web Services account in
the target
Amazon Web Services Region.
When you start using Amazon SNS to send SMS messages, your Amazon Web Services
account is in the
*SMS sandbox*. The SMS sandbox provides a safe environment for
you to try Amazon SNS features without risking your reputation as an SMS sender.
While your
Amazon Web Services account is in the SMS sandbox, you can use all of the
features of Amazon SNS. However, you can send
SMS messages only to verified destination phone numbers. For more information,
including how to
move out of the sandbox to send messages without restrictions,
see [SMS sandbox](https://docs.aws.amazon.com/sns/latest/dg/sns-sms-sandbox.html) in
the *Amazon SNS Developer Guide*.
"""
@spec get_sms_sandbox_account_status(map(), get_sms_sandbox_account_status_input(), list()) ::
{:ok, get_sms_sandbox_account_status_result(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, get_sms_sandbox_account_status_errors()}
def get_sms_sandbox_account_status(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "GetSMSSandboxAccountStatus", input, options)
end
@doc """
Returns all of the properties of a subscription.
"""
@spec get_subscription_attributes(map(), get_subscription_attributes_input(), list()) ::
{:ok, get_subscription_attributes_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, get_subscription_attributes_errors()}
def get_subscription_attributes(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "GetSubscriptionAttributes", input, options)
end
@doc """
Returns all of the properties of a topic.
Topic properties returned might differ based
on the authorization of the user.
"""
@spec get_topic_attributes(map(), get_topic_attributes_input(), list()) ::
{:ok, get_topic_attributes_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, get_topic_attributes_errors()}
def get_topic_attributes(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "GetTopicAttributes", input, options)
end
@doc """
Lists the endpoints and endpoint attributes for devices in a supported push
notification service, such as GCM (Firebase Cloud Messaging) and APNS.
The results for
`ListEndpointsByPlatformApplication` are paginated and return a limited
list of endpoints, up to 100. If additional records are available after the
first page
results, then a NextToken string will be returned. To receive the next page, you
call
`ListEndpointsByPlatformApplication` again using the NextToken string
received from the previous call. When there are no more records to return,
NextToken
will be null. For more information, see [Using Amazon SNS Mobile Push Notifications](https://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html).
This action is throttled at 30 transactions per second (TPS).
"""
@spec list_endpoints_by_platform_application(
map(),
list_endpoints_by_platform_application_input(),
list()
) ::
{:ok, list_endpoints_by_platform_application_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, list_endpoints_by_platform_application_errors()}
def list_endpoints_by_platform_application(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ListEndpointsByPlatformApplication", input, options)
end
@doc """
Lists the calling Amazon Web Services account's dedicated origination numbers
and their metadata.
For more information about origination numbers, see [Origination numbers](https://docs.aws.amazon.com/sns/latest/dg/channels-sms-originating-identities-origination-numbers.html)
in the *Amazon SNS Developer
Guide*.
"""
@spec list_origination_numbers(map(), list_origination_numbers_request(), list()) ::
{:ok, list_origination_numbers_result(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, list_origination_numbers_errors()}
def list_origination_numbers(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ListOriginationNumbers", input, options)
end
@doc """
Returns a list of phone numbers that are opted out, meaning you cannot send SMS
messages to them.
The results for `ListPhoneNumbersOptedOut` are paginated, and each page
returns up to 100 phone numbers. If additional phone numbers are available after
the
first page of results, then a `NextToken` string will be returned. To receive
the next page, you call `ListPhoneNumbersOptedOut` again using the
`NextToken` string received from the previous call. When there are no
more records to return, `NextToken` will be null.
"""
@spec list_phone_numbers_opted_out(map(), list_phone_numbers_opted_out_input(), list()) ::
{:ok, list_phone_numbers_opted_out_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, list_phone_numbers_opted_out_errors()}
def list_phone_numbers_opted_out(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ListPhoneNumbersOptedOut", input, options)
end
@doc """
Lists the platform application objects for the supported push notification
services,
such as APNS and GCM (Firebase Cloud Messaging).
The results for
`ListPlatformApplications` are paginated and return a limited list of
applications, up to 100. If additional records are available after the first
page
results, then a NextToken string will be returned. To receive the next page, you
call
`ListPlatformApplications` using the NextToken string received from the
previous call. When there are no more records to return, `NextToken` will be
null. For more information, see [Using Amazon SNS Mobile Push Notifications](https://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html).
This action is throttled at 15 transactions per second (TPS).
"""
@spec list_platform_applications(map(), list_platform_applications_input(), list()) ::
{:ok, list_platform_applications_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, list_platform_applications_errors()}
def list_platform_applications(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ListPlatformApplications", input, options)
end
@doc """
Lists the calling Amazon Web Services account's current verified and pending
destination phone
numbers in the SMS sandbox.
When you start using Amazon SNS to send SMS messages, your Amazon Web Services
account is in the
*SMS sandbox*. The SMS sandbox provides a safe environment for
you to try Amazon SNS features without risking your reputation as an SMS sender.
While your
Amazon Web Services account is in the SMS sandbox, you can use all of the
features of Amazon SNS. However, you can send
SMS messages only to verified destination phone numbers. For more information,
including how to
move out of the sandbox to send messages without restrictions,
see [SMS sandbox](https://docs.aws.amazon.com/sns/latest/dg/sns-sms-sandbox.html) in
the *Amazon SNS Developer Guide*.
"""
@spec list_sms_sandbox_phone_numbers(map(), list_sms_sandbox_phone_numbers_input(), list()) ::
{:ok, list_sms_sandbox_phone_numbers_result(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, list_sms_sandbox_phone_numbers_errors()}
def list_sms_sandbox_phone_numbers(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ListSMSSandboxPhoneNumbers", input, options)
end
@doc """
Returns a list of the requester's subscriptions.
Each call returns a limited list of
subscriptions, up to 100. If there are more subscriptions, a `NextToken` is
also returned. Use the `NextToken` parameter in a new
`ListSubscriptions` call to get further results.
This action is throttled at 30 transactions per second (TPS).
"""
@spec list_subscriptions(map(), list_subscriptions_input(), list()) ::
{:ok, list_subscriptions_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, list_subscriptions_errors()}
def list_subscriptions(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ListSubscriptions", input, options)
end
@doc """
Returns a list of the subscriptions to a specific topic.
Each call returns a limited
list of subscriptions, up to 100. If there are more subscriptions, a
`NextToken` is also returned. Use the `NextToken` parameter in
a new `ListSubscriptionsByTopic` call to get further results.
This action is throttled at 30 transactions per second (TPS).
"""
@spec list_subscriptions_by_topic(map(), list_subscriptions_by_topic_input(), list()) ::
{:ok, list_subscriptions_by_topic_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, list_subscriptions_by_topic_errors()}
def list_subscriptions_by_topic(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ListSubscriptionsByTopic", input, options)
end
@doc """
List all tags added to the specified Amazon SNS topic.
For an overview, see [Amazon SNS Tags](https://docs.aws.amazon.com/sns/latest/dg/sns-tags.html) in the
*Amazon Simple Notification Service Developer Guide*.
"""
@spec list_tags_for_resource(map(), list_tags_for_resource_request(), list()) ::
{:ok, list_tags_for_resource_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, list_tags_for_resource_errors()}
def list_tags_for_resource(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ListTagsForResource", input, options)
end
@doc """
Returns a list of the requester's topics.
Each call returns a limited list of topics,
up to 100. If there are more topics, a `NextToken` is also returned. Use the
`NextToken` parameter in a new `ListTopics` call to get
further results.
This action is throttled at 30 transactions per second (TPS).
"""
@spec list_topics(map(), list_topics_input(), list()) ::
{:ok, list_topics_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, list_topics_errors()}
def list_topics(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "ListTopics", input, options)
end
@doc """
Use this request to opt in a phone number that is opted out, which enables you
to
resume sending SMS messages to the number.
You can opt in a phone number only once every 30 days.
"""
@spec opt_in_phone_number(map(), opt_in_phone_number_input(), list()) ::
{:ok, opt_in_phone_number_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, opt_in_phone_number_errors()}
def opt_in_phone_number(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "OptInPhoneNumber", input, options)
end
@doc """
Sends a message to an Amazon SNS topic, a text message (SMS message) directly to
a phone
number, or a message to a mobile platform endpoint (when you specify the
`TargetArn`).
If you send a message to a topic, Amazon SNS delivers the message to each
endpoint that is
subscribed to the topic. The format of the message depends on the notification
protocol
for each subscribed endpoint.
When a `messageId` is returned, the message is saved and Amazon SNS immediately
delivers it to subscribers.
To use the `Publish` action for publishing a message to a mobile endpoint,
such as an app on a Kindle device or mobile phone, you must specify the
EndpointArn for
the TargetArn parameter. The EndpointArn is returned when making a call with the
`CreatePlatformEndpoint` action.
For more information about formatting messages, see [Send Custom Platform-Specific Payloads in Messages to Mobile
Devices](https://docs.aws.amazon.com/sns/latest/dg/mobile-push-send-custommessage.html).
You can publish messages only to topics and endpoints in the same
Amazon Web Services Region.
"""
@spec publish(map(), publish_input(), list()) ::
{:ok, publish_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, publish_errors()}
def publish(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "Publish", input, options)
end
@doc """
Publishes up to 10 messages to the specified topic in a single batch.
This is a batch
version of the `Publish` API. If you try to send more than 10 messages in a
single batch request, you will receive a `TooManyEntriesInBatchRequest`
exception.
For FIFO topics, multiple messages within a single batch are published in the
order
they are sent, and messages are deduplicated within the batch and across batches
for
five minutes.
The result of publishing each message is reported individually in the response.
Because the batch request can result in a combination of successful and
unsuccessful
actions, you should check for batch errors even when the call returns an HTTP
status
code of 200.
The maximum allowed individual message size and the maximum total payload size
(the sum
of the individual lengths of all of the batched messages) are both 256 KB
(262,144
bytes).
The `PublishBatch` API can send up to 10 messages at a time. If you
attempt to send more than 10 messages in one request, you will encounter a
`TooManyEntriesInBatchRequest` exception. In such cases, split your
messages into multiple requests, each containing no more than 10 messages.
Some actions take lists of parameters. These lists are specified using the
`param.n` notation. Values of `n` are integers starting from
**1**. For example, a parameter list with two elements
looks like this:
`&AttributeName.1=first`
`&AttributeName.2=second`
If you send a batch message to a topic, Amazon SNS publishes the batch message
to each
endpoint that is subscribed to the topic. The format of the batch message
depends on the
notification protocol for each subscribed endpoint.
When a `messageId` is returned, the batch message is saved, and Amazon SNS
immediately delivers the message to subscribers.
"""
@spec publish_batch(map(), publish_batch_input(), list()) ::
{:ok, publish_batch_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, publish_batch_errors()}
def publish_batch(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "PublishBatch", input, options)
end
@doc """
Adds or updates an inline policy document that is stored in the specified Amazon
SNS
topic.
"""
@spec put_data_protection_policy(map(), put_data_protection_policy_input(), list()) ::
{:ok, nil, any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, put_data_protection_policy_errors()}
def put_data_protection_policy(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "PutDataProtectionPolicy", input, options)
end
@doc """
Removes a statement from a topic's access control policy.
To remove the ability to change topic permissions, you must deny permissions to
the `AddPermission`, `RemovePermission`, and
`SetTopicAttributes` actions in your IAM policy.
"""
@spec remove_permission(map(), remove_permission_input(), list()) ::
{:ok, nil, any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, remove_permission_errors()}
def remove_permission(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "RemovePermission", input, options)
end
@doc """
Sets the attributes for an endpoint for a device on one of the supported push
notification services, such as GCM (Firebase Cloud Messaging) and APNS.
For more
information, see [Using Amazon SNS Mobile Push Notifications](https://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html).
"""
@spec set_endpoint_attributes(map(), set_endpoint_attributes_input(), list()) ::
{:ok, nil, any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, set_endpoint_attributes_errors()}
def set_endpoint_attributes(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "SetEndpointAttributes", input, options)
end
@doc """
Sets the attributes of the platform application object for the supported push
notification services, such as APNS and GCM (Firebase Cloud Messaging).
For more
information, see [Using Amazon SNS Mobile Push Notifications](https://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html).
For information on configuring
attributes for message delivery status, see [Using Amazon SNS Application Attributes for
Message Delivery
Status](https://docs.aws.amazon.com/sns/latest/dg/sns-msg-status.html).
"""
@spec set_platform_application_attributes(
map(),
set_platform_application_attributes_input(),
list()
) ::
{:ok, nil, any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, set_platform_application_attributes_errors()}
def set_platform_application_attributes(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "SetPlatformApplicationAttributes", input, options)
end
@doc """
Use this request to set the default settings for sending SMS messages and
receiving
daily SMS usage reports.
You can override some of these settings for a single message when you use the
`Publish` action with the `MessageAttributes.entry.N`
parameter. For more information, see [Publishing to a mobile phone](https://docs.aws.amazon.com/sns/latest/dg/sms_publish-to-phone.html)
in the *Amazon SNS Developer Guide*.
To use this operation, you must grant the Amazon SNS service principal
(`sns.amazonaws.com`) permission to perform the
`s3:ListBucket` action.
"""
@spec set_sms_attributes(map(), set_sms_attributes_input(), list()) ::
{:ok, set_sms_attributes_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, set_sms_attributes_errors()}
def set_sms_attributes(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "SetSMSAttributes", input, options)
end
@doc """
Allows a subscription owner to set an attribute of the subscription to a new
value.
"""
@spec set_subscription_attributes(map(), set_subscription_attributes_input(), list()) ::
{:ok, nil, any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, set_subscription_attributes_errors()}
def set_subscription_attributes(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "SetSubscriptionAttributes", input, options)
end
@doc """
Allows a topic owner to set an attribute of the topic to a new value.
To remove the ability to change topic permissions, you must deny permissions to
the `AddPermission`, `RemovePermission`, and
`SetTopicAttributes` actions in your IAM policy.
"""
@spec set_topic_attributes(map(), set_topic_attributes_input(), list()) ::
{:ok, nil, any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, set_topic_attributes_errors()}
def set_topic_attributes(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "SetTopicAttributes", input, options)
end
@doc """
Subscribes an endpoint to an Amazon SNS topic.
If the endpoint type is HTTP/S or email, or
if the endpoint and the topic are not in the same Amazon Web Services account,
the endpoint owner must
run the `ConfirmSubscription` action to confirm the subscription.
You call the `ConfirmSubscription` action with the token from the
subscription response. Confirmation tokens are valid for two days.
This action is throttled at 100 transactions per second (TPS).
"""
@spec subscribe(map(), subscribe_input(), list()) ::
{:ok, subscribe_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, subscribe_errors()}
def subscribe(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "Subscribe", input, options)
end
@doc """
Add tags to the specified Amazon SNS topic.
For an overview, see [Amazon SNS Tags](https://docs.aws.amazon.com/sns/latest/dg/sns-tags.html) in the
*Amazon SNS Developer Guide*.
When you use topic tags, keep the following guidelines in mind:
*
Adding more than 50 tags to a topic isn't recommended.
*
Tags don't have any semantic meaning. Amazon SNS interprets tags as character
strings.
*
Tags are case-sensitive.
*
A new tag with a key identical to that of an existing tag overwrites the
existing tag.
*
Tagging actions are limited to 10 TPS per Amazon Web Services account, per
Amazon Web Services Region. If
your application requires a higher throughput, file a [technical support request](https://console.aws.amazon.com/support/home#/case/create?issueType=technical).
"""
@spec tag_resource(map(), tag_resource_request(), list()) ::
{:ok, tag_resource_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, tag_resource_errors()}
def tag_resource(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "TagResource", input, options)
end
@doc """
Deletes a subscription.
If the subscription requires authentication for deletion, only
the owner of the subscription or the topic's owner can unsubscribe, and an
Amazon Web Services
signature is required. If the `Unsubscribe` call does not require
authentication and the requester is not the subscription owner, a final
cancellation
message is delivered to the endpoint, so that the endpoint owner can easily
resubscribe
to the topic if the `Unsubscribe` request was unintended.
This action is throttled at 100 transactions per second (TPS).
"""
@spec unsubscribe(map(), unsubscribe_input(), list()) ::
{:ok, nil, any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, unsubscribe_errors()}
def unsubscribe(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "Unsubscribe", input, options)
end
@doc """
Remove tags from the specified Amazon SNS topic.
For an overview, see [Amazon SNS Tags](https://docs.aws.amazon.com/sns/latest/dg/sns-tags.html) in the
*Amazon SNS Developer Guide*.
"""
@spec untag_resource(map(), untag_resource_request(), list()) ::
{:ok, untag_resource_response(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, untag_resource_errors()}
def untag_resource(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "UntagResource", input, options)
end
@doc """
Verifies a destination phone number with a one-time password (OTP) for the
calling
Amazon Web Services account.
When you start using Amazon SNS to send SMS messages, your Amazon Web Services
account is in the
*SMS sandbox*. The SMS sandbox provides a safe environment for
you to try Amazon SNS features without risking your reputation as an SMS sender.
While your
Amazon Web Services account is in the SMS sandbox, you can use all of the
features of Amazon SNS. However, you can send
SMS messages only to verified destination phone numbers. For more information,
including how to
move out of the sandbox to send messages without restrictions,
see [SMS sandbox](https://docs.aws.amazon.com/sns/latest/dg/sns-sms-sandbox.html) in
the *Amazon SNS Developer Guide*.
"""
@spec verify_sms_sandbox_phone_number(map(), verify_sms_sandbox_phone_number_input(), list()) ::
{:ok, verify_sms_sandbox_phone_number_result(), any()}
| {:error, {:unexpected_response, any()}}
| {:error, term()}
| {:error, verify_sms_sandbox_phone_number_errors()}
def verify_sms_sandbox_phone_number(%Client{} = client, input, options \\ []) do
meta = metadata()
Request.request_post(client, meta, "VerifySMSSandboxPhoneNumber", input, options)
end
end