/* * Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ package com.amazonaws.services.sns; import org.w3c.dom.*; import java.util.*; import com.amazonaws.*; import com.amazonaws.auth.*; import com.amazonaws.handlers.*; import com.amazonaws.http.*; import com.amazonaws.internal.*; import com.amazonaws.metrics.*; import com.amazonaws.transform.*; import com.amazonaws.util.*; import com.amazonaws.util.AWSRequestMetrics.Field; import com.amazonaws.services.sns.model.*; import com.amazonaws.services.sns.model.transform.*; /** * Client for accessing Amazon Simple Notification Service. All service calls * made using this client are blocking, and will not return until the service * call completes. *

* 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. For detailed information about Amazon SNS features and their * associated API calls, see the Amazon SNS Developer * Guide. *

*

* For information on the permissions you need to use this API, see Identity and access management in Amazon SNS 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. *

*/ public class AmazonSNSClient extends AmazonWebServiceClient implements AmazonSNS { /** Provider for AWS credentials. */ private AWSCredentialsProvider awsCredentialsProvider; /** * List of exception unmarshallers for all Amazon Simple Notification * Service exceptions. */ protected final List> exceptionUnmarshallers = new ArrayList>(); /** * Constructs a new client to invoke service methods on AmazonSNS. A * credentials provider chain will be used that searches for credentials in * this order: * *

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @see DefaultAWSCredentialsProviderChain */ @Deprecated public AmazonSNSClient() { this(new DefaultAWSCredentialsProviderChain(), new ClientConfiguration()); } /** * Constructs a new client to invoke service methods on AmazonSNS. A * credentials provider chain will be used that searches for credentials in * this order: *

*

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param clientConfiguration The client configuration options controlling * how this client connects to AmazonSNS (ex: proxy settings, * retry counts, etc.). * @see DefaultAWSCredentialsProviderChain */ @Deprecated public AmazonSNSClient(ClientConfiguration clientConfiguration) { this(new DefaultAWSCredentialsProviderChain(), clientConfiguration); } /** * Constructs a new client to invoke service methods on AmazonSNS using the * specified AWS account credentials. *

* The client requests are authenticated using the {@link AWSCredentials} * provided in this constructor. Static AWSCredentials can be passed for * quick testing. However, it is strongly recommended to use Amazon Cognito * vended temporary credentials for use in production. This can be achieved * by using {@link AWSMobileClient}. Please see * https://aws-amplify.github.io/docs/android/authentication for * instructions on how to enable {@link AWSMobileClient}. * *

     * AWSMobileClient.getInstance().initialize(getApplicationContext(), new Callback<UserStateDetails>() {
     *     @Override
     *     public void onResult(final UserStateDetails details) {
     *         AmazonSNSClient client = new AmazonSNSClient(AWSMobileClient.getInstance());
     *     }
     * 
     *     @Override
     *     public void onError(final Exception e) {
     *         e.printStackTrace();
     *     }
     * });
     * 
*

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentials The AWS credentials (access key ID and secret key) * to use when authenticating with AWS services. */ public AmazonSNSClient(AWSCredentials awsCredentials) { this(awsCredentials, new ClientConfiguration()); } /** * Constructs a new client to invoke service methods on AmazonSNS using the * specified AWS account credentials and client configuration options. *

* The client requests are authenticated using the {@link AWSCredentials} * provided in this constructor. Static AWSCredentials can be passed for * quick testing. However, it is strongly recommended to use Amazon Cognito * vended temporary credentials for use in production. This can be achieved * by using {@link AWSMobileClient}. Please see * https://aws-amplify.github.io/docs/android/authentication for * instructions on how to enable {@link AWSMobileClient}. * *

     * AWSMobileClient.getInstance().initialize(getApplicationContext(), new Callback<UserStateDetails>() {
     *     @Override
     *     public void onResult(final UserStateDetails details) {
     *         AmazonSNSClient client = new AmazonSNSClient(AWSMobileClient.getInstance());
     *     }
     * 
     *     @Override
     *     public void onError(final Exception e) {
     *         e.printStackTrace();
     *     }
     * });
     * 
*

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentials The AWS credentials (access key ID and secret key) * to use when authenticating with AWS services. * @param clientConfiguration The client configuration options controlling * how this client connects to AmazonSNS (ex: proxy settings, * retry counts, etc.). */ public AmazonSNSClient(AWSCredentials awsCredentials, ClientConfiguration clientConfiguration) { this(new StaticCredentialsProvider(awsCredentials), clientConfiguration); } /** * Constructs a new client to invoke service methods on AmazonSNS using the * specified AWS account credentials provider. *

* The client requests are authenticated using the {@link AWSCredentials} * provided by the {@link AWSCredentialsProvider}. Static AWSCredentials can * be passed for quick testing. However, it is strongly recommended to use * Amazon Cognito vended temporary credentials for use in production. This * can be achieved by using {@link AWSMobileClient}. Please see * https://aws-amplify.github.io/docs/android/authentication for * instructions on how to enable {@link AWSMobileClient}. * *

     * AWSMobileClient.getInstance().initialize(getApplicationContext(), new Callback<UserStateDetails>() {
     *     @Override
     *     public void onResult(final UserStateDetails details) {
     *         AmazonSNSClient client = new AmazonSNSClient(AWSMobileClient.getInstance());
     *     }
     * 
     *     @Override
     *     public void onError(final Exception e) {
     *         e.printStackTrace();
     *     }
     * });
     * 
*

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentialsProvider The AWS credentials provider which will * provide credentials to authenticate requests with AWS * services. */ public AmazonSNSClient(AWSCredentialsProvider awsCredentialsProvider) { this(awsCredentialsProvider, new ClientConfiguration()); } /** * Constructs a new client to invoke service methods on AmazonSNS using the * specified AWS account credentials provider and client configuration * options. *

* The client requests are authenticated using the {@link AWSCredentials} * provided by the {@link AWSCredentialsProvider}. Static AWSCredentials can * be passed for quick testing. However, it is strongly recommended to use * Amazon Cognito vended temporary credentials for use in production. This * can be achieved by using {@link AWSMobileClient}. Please see * https://aws-amplify.github.io/docs/android/authentication for * instructions on how to enable {@link AWSMobileClient}. * *

     * AWSMobileClient.getInstance().initialize(getApplicationContext(), new Callback<UserStateDetails>() {
     *     @Override
     *     public void onResult(final UserStateDetails details) {
     *         AmazonSNSClient client = new AmazonSNSClient(AWSMobileClient.getInstance());
     *     }
     * 
     *     @Override
     *     public void onError(final Exception e) {
     *         e.printStackTrace();
     *     }
     * });
     * 
*

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentialsProvider The AWS credentials provider which will * provide credentials to authenticate requests with AWS * services. * @param clientConfiguration The client configuration options controlling * how this client connects to AmazonSNS (ex: proxy settings, * retry counts, etc.). */ public AmazonSNSClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration) { this(awsCredentialsProvider, clientConfiguration, new UrlHttpClient(clientConfiguration)); } /** * Constructs a new client to invoke service methods on AmazonSNS using the * specified AWS account credentials provider, client configuration options * and request metric collector. *

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentialsProvider The AWS credentials provider which will * provide credentials to authenticate requests with AWS * services. * @param clientConfiguration The client configuration options controlling * how this client connects to AmazonSNS (ex: proxy settings, * retry counts, etc.). * @param requestMetricCollector optional request metric collector */ @Deprecated public AmazonSNSClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration, RequestMetricCollector requestMetricCollector) { super(adjustClientConfiguration(clientConfiguration), requestMetricCollector); this.awsCredentialsProvider = awsCredentialsProvider; init(); } /** * Constructs a new client to invoke service methods on AmazonSNS using the * specified AWS account credentials provider, client configuration options * and request metric collector. *

* The client requests are authenticated using the {@link AWSCredentials} * provided by the {@link AWSCredentialsProvider}. Static AWSCredentials can * be passed for quick testing. However, it is strongly recommended to use * Amazon Cognito vended temporary credentials for use in production. This * can be achieved by using {@link AWSMobileClient}. Please see * https://aws-amplify.github.io/docs/android/authentication for * instructions on how to enable {@link AWSMobileClient}. * *

     * AWSMobileClient.getInstance().initialize(getApplicationContext(), new Callback<UserStateDetails>() {
     *     @Override
     *     public void onResult(final UserStateDetails details) {
     *         AmazonSNSClient client = new AmazonSNSClient(AWSMobileClient.getInstance());
     *     }
     * 
     *     @Override
     *     public void onError(final Exception e) {
     *         e.printStackTrace();
     *     }
     * });
     * 
*

* All service calls made using this new client object are blocking, and * will not return until the service call completes. * * @param awsCredentialsProvider The AWS credentials provider which will * provide credentials to authenticate requests with AWS * services. * @param clientConfiguration The client configuration options controlling * how this client connects to AmazonSNS (ex: proxy settings, * retry counts, etc.). * @param httpClient A http client */ public AmazonSNSClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration, HttpClient httpClient) { super(adjustClientConfiguration(clientConfiguration), httpClient); this.awsCredentialsProvider = awsCredentialsProvider; init(); } private void init() { exceptionUnmarshallers.add(new AuthorizationErrorExceptionUnmarshaller()); exceptionUnmarshallers.add(new BatchEntryIdsNotDistinctExceptionUnmarshaller()); exceptionUnmarshallers.add(new BatchRequestTooLongExceptionUnmarshaller()); exceptionUnmarshallers.add(new ConcurrentAccessExceptionUnmarshaller()); exceptionUnmarshallers.add(new EmptyBatchRequestExceptionUnmarshaller()); exceptionUnmarshallers.add(new EndpointDisabledExceptionUnmarshaller()); exceptionUnmarshallers.add(new FilterPolicyLimitExceededExceptionUnmarshaller()); exceptionUnmarshallers.add(new InternalErrorExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidBatchEntryIdExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidParameterExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidParameterValueExceptionUnmarshaller()); exceptionUnmarshallers.add(new InvalidSecurityExceptionUnmarshaller()); exceptionUnmarshallers.add(new KMSAccessDeniedExceptionUnmarshaller()); exceptionUnmarshallers.add(new KMSDisabledExceptionUnmarshaller()); exceptionUnmarshallers.add(new KMSInvalidStateExceptionUnmarshaller()); exceptionUnmarshallers.add(new KMSNotFoundExceptionUnmarshaller()); exceptionUnmarshallers.add(new KMSOptInRequiredExceptionUnmarshaller()); exceptionUnmarshallers.add(new KMSThrottlingExceptionUnmarshaller()); exceptionUnmarshallers.add(new NotFoundExceptionUnmarshaller()); exceptionUnmarshallers.add(new OptedOutExceptionUnmarshaller()); exceptionUnmarshallers.add(new PlatformApplicationDisabledExceptionUnmarshaller()); exceptionUnmarshallers.add(new ResourceNotFoundExceptionUnmarshaller()); exceptionUnmarshallers.add(new StaleTagExceptionUnmarshaller()); exceptionUnmarshallers.add(new SubscriptionLimitExceededExceptionUnmarshaller()); exceptionUnmarshallers.add(new TagLimitExceededExceptionUnmarshaller()); exceptionUnmarshallers.add(new TagPolicyExceptionUnmarshaller()); exceptionUnmarshallers.add(new ThrottledExceptionUnmarshaller()); exceptionUnmarshallers.add(new TooManyEntriesInBatchRequestExceptionUnmarshaller()); exceptionUnmarshallers.add(new TopicLimitExceededExceptionUnmarshaller()); exceptionUnmarshallers.add(new UserErrorExceptionUnmarshaller()); exceptionUnmarshallers.add(new ValidationExceptionUnmarshaller()); exceptionUnmarshallers.add(new VerificationExceptionUnmarshaller()); exceptionUnmarshallers.add(new StandardErrorUnmarshaller()); // calling this.setEndPoint(...) will also modify the signer accordingly this.setEndpoint("sns.us-east-1.amazonaws.com"); this.endpointPrefix = "sns"; HandlerChainFactory chainFactory = new HandlerChainFactory(); requestHandler2s.addAll(chainFactory.newRequestHandlerChain( "/com/amazonaws/services/sns/request.handlers")); requestHandler2s.addAll(chainFactory.newRequestHandler2Chain( "/com/amazonaws/services/sns/request.handler2s")); } private static ClientConfiguration adjustClientConfiguration(ClientConfiguration orig) { ClientConfiguration config = orig; return config; } /** *

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

*
* * @param addPermissionRequest * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void addPermission(AddPermissionRequest addPermissionRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(addPermissionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new AddPermissionRequestMarshaller().marshall(addPermissionRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

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

* * @param checkIfPhoneNumberIsOptedOutRequest

* The input for the CheckIfPhoneNumberIsOptedOut * action. *

* @return checkIfPhoneNumberIsOptedOutResult The response from the * CheckIfPhoneNumberIsOptedOut service method, as returned by * Amazon Simple Notification Service. * @throws ThrottledException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws InvalidParameterException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public CheckIfPhoneNumberIsOptedOutResult checkIfPhoneNumberIsOptedOut( CheckIfPhoneNumberIsOptedOutRequest checkIfPhoneNumberIsOptedOutRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(checkIfPhoneNumberIsOptedOutRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new CheckIfPhoneNumberIsOptedOutRequestMarshaller() .marshall(checkIfPhoneNumberIsOptedOutRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new CheckIfPhoneNumberIsOptedOutResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

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

* * @param confirmSubscriptionRequest

* Input for ConfirmSubscription action. *

* @return confirmSubscriptionResult The response from the * ConfirmSubscription service method, as returned by Amazon Simple * Notification Service. * @throws SubscriptionLimitExceededException * @throws InvalidParameterException * @throws NotFoundException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws FilterPolicyLimitExceededException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ConfirmSubscriptionResult confirmSubscription( ConfirmSubscriptionRequest confirmSubscriptionRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(confirmSubscriptionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new ConfirmSubscriptionRequestMarshaller() .marshall(confirmSubscriptionRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new ConfirmSubscriptionResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

* 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 Baidu, PlatformPrincipal is * API key and PlatformCredential is * secret key. *

    *
  • *
  • *

    * 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 GCM (Firebase Cloud Messaging), there is no * PlatformPrincipal and the PlatformCredential is * API key. *

    *
  • *
  • *

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

* * @param createPlatformApplicationRequest

* Input for CreatePlatformApplication action. *

* @return createPlatformApplicationResult The response from the * CreatePlatformApplication service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public CreatePlatformApplicationResult createPlatformApplication( CreatePlatformApplicationRequest createPlatformApplicationRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(createPlatformApplicationRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new CreatePlatformApplicationRequestMarshaller() .marshall(createPlatformApplicationRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new CreatePlatformApplicationResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

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

*

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

* * @param createPlatformEndpointRequest

* Input for CreatePlatformEndpoint action. *

* @return createPlatformEndpointResult The response from the * CreatePlatformEndpoint service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public CreatePlatformEndpointResult createPlatformEndpoint( CreatePlatformEndpointRequest createPlatformEndpointRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(createPlatformEndpointRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new CreatePlatformEndpointRequestMarshaller() .marshall(createPlatformEndpointRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new CreatePlatformEndpointResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

* 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 in the Amazon SNS Developer Guide. *

* * @param createSMSSandboxPhoneNumberRequest * @return createSMSSandboxPhoneNumberResult The response from the * CreateSMSSandboxPhoneNumber service method, as returned by Amazon * Simple Notification Service. * @throws AuthorizationErrorException * @throws InternalErrorException * @throws InvalidParameterException * @throws OptedOutException * @throws UserErrorException * @throws ThrottledException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public CreateSMSSandboxPhoneNumberResult createSMSSandboxPhoneNumber( CreateSMSSandboxPhoneNumberRequest createSMSSandboxPhoneNumberRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(createSMSSandboxPhoneNumberRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new CreateSMSSandboxPhoneNumberRequestMarshaller() .marshall(createSMSSandboxPhoneNumberRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new CreateSMSSandboxPhoneNumberResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

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

* * @param createTopicRequest

* Input for CreateTopic action. *

* @return createTopicResult The response from the CreateTopic service * method, as returned by Amazon Simple Notification Service. * @throws InvalidParameterException * @throws TopicLimitExceededException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws InvalidSecurityException * @throws TagLimitExceededException * @throws StaleTagException * @throws TagPolicyException * @throws ConcurrentAccessException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public CreateTopicResult createTopic(CreateTopicRequest createTopicRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(createTopicRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new CreateTopicRequestMarshaller().marshall(createTopicRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new CreateTopicResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

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

*

* When you delete an endpoint that is also subscribed to a topic, then you * must also unsubscribe the endpoint from the topic. *

* * @param deleteEndpointRequest

* Input for DeleteEndpoint action. *

* @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void deleteEndpoint(DeleteEndpointRequest deleteEndpointRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(deleteEndpointRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new DeleteEndpointRequestMarshaller().marshall(deleteEndpointRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

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

* * @param deletePlatformApplicationRequest

* Input for DeletePlatformApplication action. *

* @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void deletePlatformApplication( DeletePlatformApplicationRequest deletePlatformApplicationRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(deletePlatformApplicationRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new DeletePlatformApplicationRequestMarshaller() .marshall(deletePlatformApplicationRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

* 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 in the Amazon SNS Developer Guide. *

* * @param deleteSMSSandboxPhoneNumberRequest * @return deleteSMSSandboxPhoneNumberResult The response from the * DeleteSMSSandboxPhoneNumber service method, as returned by Amazon * Simple Notification Service. * @throws AuthorizationErrorException * @throws InternalErrorException * @throws InvalidParameterException * @throws ResourceNotFoundException * @throws UserErrorException * @throws ThrottledException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public DeleteSMSSandboxPhoneNumberResult deleteSMSSandboxPhoneNumber( DeleteSMSSandboxPhoneNumberRequest deleteSMSSandboxPhoneNumberRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(deleteSMSSandboxPhoneNumberRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new DeleteSMSSandboxPhoneNumberRequestMarshaller() .marshall(deleteSMSSandboxPhoneNumberRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new DeleteSMSSandboxPhoneNumberResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

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

* * @param deleteTopicRequest * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws StaleTagException * @throws TagPolicyException * @throws ConcurrentAccessException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void deleteTopic(DeleteTopicRequest deleteTopicRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(deleteTopicRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new DeleteTopicRequestMarshaller().marshall(deleteTopicRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

* Retrieves the specified inline DataProtectionPolicy document * that is stored in the specified Amazon SNS topic. *

* * @param getDataProtectionPolicyRequest * @return getDataProtectionPolicyResult The response from the * GetDataProtectionPolicy service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws InvalidSecurityException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public GetDataProtectionPolicyResult getDataProtectionPolicy( GetDataProtectionPolicyRequest getDataProtectionPolicyRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(getDataProtectionPolicyRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new GetDataProtectionPolicyRequestMarshaller() .marshall(getDataProtectionPolicyRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new GetDataProtectionPolicyResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

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

* * @param getEndpointAttributesRequest

* Input for GetEndpointAttributes action. *

* @return getEndpointAttributesResult The response from the * GetEndpointAttributes service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public GetEndpointAttributesResult getEndpointAttributes( GetEndpointAttributesRequest getEndpointAttributesRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(getEndpointAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new GetEndpointAttributesRequestMarshaller() .marshall(getEndpointAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new GetEndpointAttributesResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

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

* * @param getPlatformApplicationAttributesRequest

* Input for GetPlatformApplicationAttributes action. *

* @return getPlatformApplicationAttributesResult The response from the * GetPlatformApplicationAttributes service method, as returned by * Amazon Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public GetPlatformApplicationAttributesResult getPlatformApplicationAttributes( GetPlatformApplicationAttributesRequest getPlatformApplicationAttributesRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(getPlatformApplicationAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new GetPlatformApplicationAttributesRequestMarshaller() .marshall(getPlatformApplicationAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new GetPlatformApplicationAttributesResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

* Returns the settings for sending SMS messages from your Amazon Web * Services account. *

*

* These settings are set with the SetSMSAttributes action. *

* * @param getSMSAttributesRequest

* The input for the GetSMSAttributes request. *

* @return getSMSAttributesResult The response from the GetSMSAttributes * service method, as returned by Amazon Simple Notification * Service. * @throws ThrottledException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws InvalidParameterException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public GetSMSAttributesResult getSMSAttributes(GetSMSAttributesRequest getSMSAttributesRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(getSMSAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new GetSMSAttributesRequestMarshaller().marshall(getSMSAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new GetSMSAttributesResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

* 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 in the Amazon SNS Developer Guide. *

* * @param getSMSSandboxAccountStatusRequest * @return getSMSSandboxAccountStatusResult The response from the * GetSMSSandboxAccountStatus service method, as returned by Amazon * Simple Notification Service. * @throws AuthorizationErrorException * @throws InternalErrorException * @throws ThrottledException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public GetSMSSandboxAccountStatusResult getSMSSandboxAccountStatus( GetSMSSandboxAccountStatusRequest getSMSSandboxAccountStatusRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(getSMSSandboxAccountStatusRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new GetSMSSandboxAccountStatusRequestMarshaller() .marshall(getSMSSandboxAccountStatusRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new GetSMSSandboxAccountStatusResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

* Returns all of the properties of a subscription. *

* * @param getSubscriptionAttributesRequest

* Input for GetSubscriptionAttributes. *

* @return getSubscriptionAttributesResult The response from the * GetSubscriptionAttributes service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public GetSubscriptionAttributesResult getSubscriptionAttributes( GetSubscriptionAttributesRequest getSubscriptionAttributesRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(getSubscriptionAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new GetSubscriptionAttributesRequestMarshaller() .marshall(getSubscriptionAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new GetSubscriptionAttributesResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

* Returns all of the properties of a topic. Topic properties returned might * differ based on the authorization of the user. *

* * @param getTopicAttributesRequest

* Input for GetTopicAttributes action. *

* @return getTopicAttributesResult The response from the GetTopicAttributes * service method, as returned by Amazon Simple Notification * Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws InvalidSecurityException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public GetTopicAttributesResult getTopicAttributes( GetTopicAttributesRequest getTopicAttributesRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(getTopicAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new GetTopicAttributesRequestMarshaller().marshall(getTopicAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new GetTopicAttributesResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

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

*

* This action is throttled at 30 transactions per second (TPS). *

* * @param listEndpointsByPlatformApplicationRequest

* Input for ListEndpointsByPlatformApplication action. *

* @return listEndpointsByPlatformApplicationResult The response from the * ListEndpointsByPlatformApplication service method, as returned by * Amazon Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListEndpointsByPlatformApplicationResult listEndpointsByPlatformApplication( ListEndpointsByPlatformApplicationRequest listEndpointsByPlatformApplicationRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(listEndpointsByPlatformApplicationRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new ListEndpointsByPlatformApplicationRequestMarshaller() .marshall(listEndpointsByPlatformApplicationRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new ListEndpointsByPlatformApplicationResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

* Lists the calling Amazon Web Services account's dedicated origination * numbers and their metadata. For more information about origination * numbers, see Origination numbers in the Amazon SNS Developer Guide. *

* * @param listOriginationNumbersRequest * @return listOriginationNumbersResult The response from the * ListOriginationNumbers service method, as returned by Amazon * Simple Notification Service. * @throws InternalErrorException * @throws AuthorizationErrorException * @throws ThrottledException * @throws InvalidParameterException * @throws ValidationException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListOriginationNumbersResult listOriginationNumbers( ListOriginationNumbersRequest listOriginationNumbersRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(listOriginationNumbersRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new ListOriginationNumbersRequestMarshaller() .marshall(listOriginationNumbersRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new ListOriginationNumbersResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

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

* * @param listPhoneNumbersOptedOutRequest

* The input for the ListPhoneNumbersOptedOut * action. *

* @return listPhoneNumbersOptedOutResult The response from the * ListPhoneNumbersOptedOut service method, as returned by Amazon * Simple Notification Service. * @throws ThrottledException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws InvalidParameterException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListPhoneNumbersOptedOutResult listPhoneNumbersOptedOut( ListPhoneNumbersOptedOutRequest listPhoneNumbersOptedOutRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(listPhoneNumbersOptedOutRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new ListPhoneNumbersOptedOutRequestMarshaller() .marshall(listPhoneNumbersOptedOutRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new ListPhoneNumbersOptedOutResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

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

*

* This action is throttled at 15 transactions per second (TPS). *

* * @param listPlatformApplicationsRequest

* Input for ListPlatformApplications action. *

* @return listPlatformApplicationsResult The response from the * ListPlatformApplications service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListPlatformApplicationsResult listPlatformApplications( ListPlatformApplicationsRequest listPlatformApplicationsRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(listPlatformApplicationsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new ListPlatformApplicationsRequestMarshaller() .marshall(listPlatformApplicationsRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new ListPlatformApplicationsResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

* 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 in the Amazon SNS Developer Guide. *

* * @param listSMSSandboxPhoneNumbersRequest * @return listSMSSandboxPhoneNumbersResult The response from the * ListSMSSandboxPhoneNumbers service method, as returned by Amazon * Simple Notification Service. * @throws AuthorizationErrorException * @throws InternalErrorException * @throws InvalidParameterException * @throws ResourceNotFoundException * @throws ThrottledException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListSMSSandboxPhoneNumbersResult listSMSSandboxPhoneNumbers( ListSMSSandboxPhoneNumbersRequest listSMSSandboxPhoneNumbersRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(listSMSSandboxPhoneNumbersRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new ListSMSSandboxPhoneNumbersRequestMarshaller() .marshall(listSMSSandboxPhoneNumbersRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new ListSMSSandboxPhoneNumbersResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

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

* * @param listSubscriptionsRequest

* Input for ListSubscriptions action. *

* @return listSubscriptionsResult The response from the ListSubscriptions * service method, as returned by Amazon Simple Notification * Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListSubscriptionsResult listSubscriptions( ListSubscriptionsRequest listSubscriptionsRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(listSubscriptionsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new ListSubscriptionsRequestMarshaller().marshall(listSubscriptionsRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new ListSubscriptionsResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

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

* * @param listSubscriptionsByTopicRequest

* Input for ListSubscriptionsByTopic action. *

* @return listSubscriptionsByTopicResult The response from the * ListSubscriptionsByTopic service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListSubscriptionsByTopicResult listSubscriptionsByTopic( ListSubscriptionsByTopicRequest listSubscriptionsByTopicRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(listSubscriptionsByTopicRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new ListSubscriptionsByTopicRequestMarshaller() .marshall(listSubscriptionsByTopicRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new ListSubscriptionsByTopicResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

* List all tags added to the specified Amazon SNS topic. For an overview, * see Amazon SNS * Tags in the Amazon Simple Notification Service Developer * Guide. *

* * @param listTagsForResourceRequest * @return listTagsForResourceResult The response from the * ListTagsForResource service method, as returned by Amazon Simple * Notification Service. * @throws ResourceNotFoundException * @throws TagPolicyException * @throws InvalidParameterException * @throws AuthorizationErrorException * @throws ConcurrentAccessException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListTagsForResourceResult listTagsForResource( ListTagsForResourceRequest listTagsForResourceRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(listTagsForResourceRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new ListTagsForResourceRequestMarshaller() .marshall(listTagsForResourceRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new ListTagsForResourceResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

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

* * @param listTopicsRequest * @return listTopicsResult The response from the ListTopics service method, * as returned by Amazon Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListTopicsResult listTopics(ListTopicsRequest listTopicsRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(listTopicsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new ListTopicsRequestMarshaller().marshall(listTopicsRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new ListTopicsResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

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

* * @param optInPhoneNumberRequest

* Input for the OptInPhoneNumber action. *

* @return optInPhoneNumberResult The response from the OptInPhoneNumber * service method, as returned by Amazon Simple Notification * Service. * @throws ThrottledException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws InvalidParameterException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public OptInPhoneNumberResult optInPhoneNumber(OptInPhoneNumberRequest optInPhoneNumberRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(optInPhoneNumberRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new OptInPhoneNumberRequestMarshaller().marshall(optInPhoneNumberRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new OptInPhoneNumberResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

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

* *

* You can publish messages only to topics and endpoints in the same Amazon * Web Services Region. *

*
* * @param publishRequest

* Input for Publish action. *

* @return publishResult The response from the Publish service method, as * returned by Amazon Simple Notification Service. * @throws InvalidParameterException * @throws InvalidParameterValueException * @throws InternalErrorException * @throws NotFoundException * @throws EndpointDisabledException * @throws PlatformApplicationDisabledException * @throws AuthorizationErrorException * @throws KMSDisabledException * @throws KMSInvalidStateException * @throws KMSNotFoundException * @throws KMSOptInRequiredException * @throws KMSThrottlingException * @throws KMSAccessDeniedException * @throws InvalidSecurityException * @throws ValidationException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public PublishResult publish(PublishRequest publishRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(publishRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new PublishRequestMarshaller().marshall(publishRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new PublishResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

* Publishes up to ten messages to the specified topic. This is a batch * version of Publish. 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 5 * 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). *

*

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

* * @param publishBatchRequest * @return publishBatchResult The response from the PublishBatch service * method, as returned by Amazon Simple Notification Service. * @throws InvalidParameterException * @throws InvalidParameterValueException * @throws InternalErrorException * @throws NotFoundException * @throws EndpointDisabledException * @throws PlatformApplicationDisabledException * @throws AuthorizationErrorException * @throws BatchEntryIdsNotDistinctException * @throws BatchRequestTooLongException * @throws EmptyBatchRequestException * @throws InvalidBatchEntryIdException * @throws TooManyEntriesInBatchRequestException * @throws KMSDisabledException * @throws KMSInvalidStateException * @throws KMSNotFoundException * @throws KMSOptInRequiredException * @throws KMSThrottlingException * @throws KMSAccessDeniedException * @throws InvalidSecurityException * @throws ValidationException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public PublishBatchResult publishBatch(PublishBatchRequest publishBatchRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(publishBatchRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new PublishBatchRequestMarshaller().marshall(publishBatchRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new PublishBatchResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

* Adds or updates an inline policy document that is stored in the specified * Amazon SNS topic. *

* * @param putDataProtectionPolicyRequest * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws InvalidSecurityException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void putDataProtectionPolicy( PutDataProtectionPolicyRequest putDataProtectionPolicyRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(putDataProtectionPolicyRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new PutDataProtectionPolicyRequestMarshaller() .marshall(putDataProtectionPolicyRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

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

*
* * @param removePermissionRequest

* Input for RemovePermission action. *

* @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void removePermission(RemovePermissionRequest removePermissionRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(removePermissionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new RemovePermissionRequestMarshaller().marshall(removePermissionRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

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

* * @param setEndpointAttributesRequest

* Input for SetEndpointAttributes action. *

* @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void setEndpointAttributes(SetEndpointAttributesRequest setEndpointAttributesRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(setEndpointAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new SetEndpointAttributesRequestMarshaller() .marshall(setEndpointAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

* 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. For information on configuring * attributes for message delivery status, see Using Amazon SNS Application Attributes for Message Delivery Status. *

* * @param setPlatformApplicationAttributesRequest

* Input for SetPlatformApplicationAttributes action. *

* @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void setPlatformApplicationAttributes( SetPlatformApplicationAttributesRequest setPlatformApplicationAttributesRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(setPlatformApplicationAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new SetPlatformApplicationAttributesRequestMarshaller() .marshall(setPlatformApplicationAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

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

*
* * @param setSMSAttributesRequest

* The input for the SetSMSAttributes action. *

* @return setSMSAttributesResult The response from the SetSMSAttributes * service method, as returned by Amazon Simple Notification * Service. * @throws InvalidParameterException * @throws ThrottledException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public SetSMSAttributesResult setSMSAttributes(SetSMSAttributesRequest setSMSAttributesRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(setSMSAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new SetSMSAttributesRequestMarshaller().marshall(setSMSAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new SetSMSAttributesResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

* Allows a subscription owner to set an attribute of the subscription to a * new value. *

* * @param setSubscriptionAttributesRequest

* Input for SetSubscriptionAttributes action. *

* @throws InvalidParameterException * @throws FilterPolicyLimitExceededException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void setSubscriptionAttributes( SetSubscriptionAttributesRequest setSubscriptionAttributesRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(setSubscriptionAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new SetSubscriptionAttributesRequestMarshaller() .marshall(setSubscriptionAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

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

*
* * @param setTopicAttributesRequest

* Input for SetTopicAttributes action. *

* @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws InvalidSecurityException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void setTopicAttributes(SetTopicAttributesRequest setTopicAttributesRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(setTopicAttributesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new SetTopicAttributesRequestMarshaller().marshall(setTopicAttributesRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

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

*

* This action is throttled at 100 transactions per second (TPS). *

* * @param subscribeRequest

* Input for Subscribe action. *

* @return subscribeResult The response from the Subscribe service method, * as returned by Amazon Simple Notification Service. * @throws SubscriptionLimitExceededException * @throws FilterPolicyLimitExceededException * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws InvalidSecurityException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public SubscribeResult subscribe(SubscribeRequest subscribeRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(subscribeRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new SubscribeRequestMarshaller().marshall(subscribeRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new SubscribeResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

* Add tags to the specified Amazon SNS topic. For an overview, see Amazon SNS * Tags 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. *

    *
  • *
* * @param tagResourceRequest * @return tagResourceResult The response from the TagResource service * method, as returned by Amazon Simple Notification Service. * @throws ResourceNotFoundException * @throws TagLimitExceededException * @throws StaleTagException * @throws TagPolicyException * @throws InvalidParameterException * @throws AuthorizationErrorException * @throws ConcurrentAccessException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public TagResourceResult tagResource(TagResourceRequest tagResourceRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(tagResourceRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new TagResourceRequestMarshaller().marshall(tagResourceRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new TagResourceResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

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

* *

* Amazon SQS queue subscriptions require authentication for deletion. Only * the owner of the subscription, or the owner of the topic can unsubscribe * using the required Amazon Web Services signature. *

*
*

* This action is throttled at 100 transactions per second (TPS). *

* * @param unsubscribeRequest

* Input for Unsubscribe action. *

* @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws InvalidSecurityException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void unsubscribe(UnsubscribeRequest unsubscribeRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(unsubscribeRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new UnsubscribeRequestMarshaller().marshall(unsubscribeRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); invoke(request, null, executionContext); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

* Remove tags from the specified Amazon SNS topic. For an overview, see Amazon SNS * Tags in the Amazon SNS Developer Guide. *

* * @param untagResourceRequest * @return untagResourceResult The response from the UntagResource service * method, as returned by Amazon Simple Notification Service. * @throws ResourceNotFoundException * @throws TagLimitExceededException * @throws StaleTagException * @throws TagPolicyException * @throws InvalidParameterException * @throws AuthorizationErrorException * @throws ConcurrentAccessException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public UntagResourceResult untagResource(UntagResourceRequest untagResourceRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(untagResourceRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new UntagResourceRequestMarshaller().marshall(untagResourceRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new UntagResourceResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

* 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 in the Amazon SNS Developer Guide. *

* * @param verifySMSSandboxPhoneNumberRequest * @return verifySMSSandboxPhoneNumberResult The response from the * VerifySMSSandboxPhoneNumber service method, as returned by Amazon * Simple Notification Service. * @throws AuthorizationErrorException * @throws InternalErrorException * @throws InvalidParameterException * @throws ResourceNotFoundException * @throws VerificationException * @throws ThrottledException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public VerifySMSSandboxPhoneNumberResult verifySMSSandboxPhoneNumber( VerifySMSSandboxPhoneNumberRequest verifySMSSandboxPhoneNumberRequest) throws AmazonServiceException, AmazonClientException { ExecutionContext executionContext = createExecutionContext(verifySMSSandboxPhoneNumberRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { request = new VerifySMSSandboxPhoneNumberRequestMarshaller() .marshall(verifySMSSandboxPhoneNumberRequest); // Binds the request metrics to the current request. request.setAWSRequestMetrics(awsRequestMetrics); response = invoke(request, new VerifySMSSandboxPhoneNumberResultStaxUnmarshaller(), executionContext); return response.getAwsResponse(); } finally { awsRequestMetrics.endEvent(Field.ClientExecuteTime); endClientExecution(awsRequestMetrics, request, response); } } /** *

* Allows a subscription owner to set an attribute of the subscription to a * new value. *

* * @param subscriptionArn

* The ARN of the subscription to modify. *

* @param attributeName

* A map of attributes with their corresponding values. *

*

* The following lists the names, descriptions, and values of the * special request parameters that this action uses: *

*
    *
  • *

    * DeliveryPolicy – The policy that defines how * Amazon SNS retries failed deliveries to HTTP/S endpoints. *

    *
  • *
  • *

    * FilterPolicy – The simple JSON object that lets * your subscriber receive only a subset of messages, rather than * receiving every message published to the topic. *

    *
  • *
  • *

    * FilterPolicyScope – This attribute lets you * choose the filtering scope by using one of the following * string value types: *

    *
      *
    • *

      * MessageAttributes (default) – The filter is * applied on the message attributes. *

      *
    • *
    • *

      * MessageBody – The filter is applied on the * message body. *

      *
    • *
    *
  • *
  • *

    * RawMessageDelivery – When set to * true, enables raw message delivery to Amazon SQS * or HTTP/S endpoints. This eliminates the need for the * endpoints to process JSON formatting, which is otherwise * created for Amazon SNS metadata. *

    *
  • *
  • *

    * RedrivePolicy – When specified, sends * undeliverable messages to the specified Amazon SQS dead-letter * queue. Messages that can't be delivered due to client errors * (for example, when the subscribed endpoint is unreachable) or * server errors (for example, when the service that powers the * subscribed endpoint becomes unavailable) are held in the * dead-letter queue for further analysis or reprocessing. *

    *
  • *
*

* The following attribute applies only to Amazon Kinesis Data * Firehose delivery stream subscriptions: *

*
    *
  • *

    * SubscriptionRoleArn – The ARN of the IAM role * that has the following: *

    *
      *
    • *

      * Permission to write to the Kinesis Data Firehose delivery * stream *

      *
    • *
    • *

      * Amazon SNS listed as a trusted entity *

      *
    • *
    *

    * Specifying a valid ARN for this attribute is required for * Kinesis Data Firehose delivery stream subscriptions. For more * information, see Fanout to Kinesis Data Firehose delivery streams in the * Amazon SNS Developer Guide. *

    *
  • *
* @param attributeValue

* The new value for the attribute in JSON format. *

* @throws InvalidParameterException * @throws FilterPolicyLimitExceededException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void setSubscriptionAttributes(String subscriptionArn, String attributeName, String attributeValue) throws AmazonServiceException, AmazonClientException { SetSubscriptionAttributesRequest setSubscriptionAttributesRequest = new SetSubscriptionAttributesRequest(); setSubscriptionAttributesRequest.setSubscriptionArn(subscriptionArn); setSubscriptionAttributesRequest.setAttributeName(attributeName); setSubscriptionAttributesRequest.setAttributeValue(attributeValue); setSubscriptionAttributes(setSubscriptionAttributesRequest); } /** *

* Returns all of the properties of a subscription. *

* * @param subscriptionArn

* The ARN of the subscription whose properties you want to get. *

* @return getSubscriptionAttributesResult The response from the * GetSubscriptionAttributes service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public GetSubscriptionAttributesResult getSubscriptionAttributes(String subscriptionArn) throws AmazonServiceException, AmazonClientException { GetSubscriptionAttributesRequest getSubscriptionAttributesRequest = new GetSubscriptionAttributesRequest(); getSubscriptionAttributesRequest.setSubscriptionArn(subscriptionArn); return getSubscriptionAttributes(getSubscriptionAttributesRequest); } /** *

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

*

* This action is throttled at 100 transactions per second (TPS). *

* * @param topicArn

* The ARN of the topic you want to subscribe to. *

* @param protocol

* The protocol that you want to use. Supported protocols * include: *

*
    *
  • *

    * http – delivery of JSON-encoded message via HTTP * POST *

    *
  • *
  • *

    * https – delivery of JSON-encoded message via * HTTPS POST *

    *
  • *
  • *

    * email – delivery of message via SMTP *

    *
  • *
  • *

    * email-json – delivery of JSON-encoded message via * SMTP *

    *
  • *
  • *

    * sms – delivery of message via SMS *

    *
  • *
  • *

    * sqs – delivery of JSON-encoded message to an * Amazon SQS queue *

    *
  • *
  • *

    * application – delivery of JSON-encoded message to * an EndpointArn for a mobile app and device *

    *
  • *
  • *

    * lambda – delivery of JSON-encoded message to an * Lambda function *

    *
  • *
  • *

    * firehose – delivery of JSON-encoded message to an * Amazon Kinesis Data Firehose delivery stream. *

    *
  • *
* @param endpoint

* The endpoint that you want to receive notifications. Endpoints * vary by protocol: *

*
    *
  • *

    * For the http protocol, the (public) endpoint is a * URL beginning with http://. *

    *
  • *
  • *

    * For the https protocol, the (public) endpoint is * a URL beginning with https://. *

    *
  • *
  • *

    * For the email protocol, the endpoint is an email * address. *

    *
  • *
  • *

    * For the email-json protocol, the endpoint is an * email address. *

    *
  • *
  • *

    * For the sms protocol, the endpoint is a phone * number of an SMS-enabled device. *

    *
  • *
  • *

    * For the sqs protocol, the endpoint is the ARN of * an Amazon SQS queue. *

    *
  • *
  • *

    * For the application protocol, the endpoint is the * EndpointArn of a mobile app and device. *

    *
  • *
  • *

    * For the lambda protocol, the endpoint is the ARN * of an Lambda function. *

    *
  • *
  • *

    * For the firehose protocol, the endpoint is the * ARN of an Amazon Kinesis Data Firehose delivery stream. *

    *
  • *
* @return subscribeResult The response from the Subscribe service method, * as returned by Amazon Simple Notification Service. * @throws SubscriptionLimitExceededException * @throws FilterPolicyLimitExceededException * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws InvalidSecurityException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public SubscribeResult subscribe(String topicArn, String protocol, String endpoint) throws AmazonServiceException, AmazonClientException { SubscribeRequest subscribeRequest = new SubscribeRequest(); subscribeRequest.setTopicArn(topicArn); subscribeRequest.setProtocol(protocol); subscribeRequest.setEndpoint(endpoint); return subscribe(subscribeRequest); } /** *

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

*
* * @param topicArn

* The ARN of the topic whose access control policy you wish to * modify. *

* @param label

* A unique identifier for the new policy statement. *

* @param aWSAccountIds

* The Amazon Web Services account IDs of the users (principals) * who will be given access to the specified actions. The users * must have Amazon Web Services account, but do not need to be * signed up for this service. *

* @param actionNames

* The action you want to allow for the specified principal(s). *

*

* Valid values: Any Amazon SNS action name, for example * Publish. *

* @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void addPermission(String topicArn, String label, java.util.List aWSAccountIds, java.util.List actionNames) throws AmazonServiceException, AmazonClientException { AddPermissionRequest addPermissionRequest = new AddPermissionRequest(); addPermissionRequest.setTopicArn(topicArn); addPermissionRequest.setLabel(label); addPermissionRequest.setAWSAccountIds(aWSAccountIds); addPermissionRequest.setActionNames(actionNames); addPermission(addPermissionRequest); } /** *

* Returns all of the properties of a topic. Topic properties returned might * differ based on the authorization of the user. *

* * @param topicArn

* The ARN of the topic whose properties you want to get. *

* @return getTopicAttributesResult The response from the GetTopicAttributes * service method, as returned by Amazon Simple Notification * Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws InvalidSecurityException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public GetTopicAttributesResult getTopicAttributes(String topicArn) throws AmazonServiceException, AmazonClientException { GetTopicAttributesRequest getTopicAttributesRequest = new GetTopicAttributesRequest(); getTopicAttributesRequest.setTopicArn(topicArn); return getTopicAttributes(getTopicAttributesRequest); } /** *

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

*
* * @param topicArn

* The ARN of the topic whose access control policy you wish to * modify. *

* @param label

* The unique label of the statement you want to remove. *

* @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void removePermission(String topicArn, String label) throws AmazonServiceException, AmazonClientException { RemovePermissionRequest removePermissionRequest = new RemovePermissionRequest(); removePermissionRequest.setTopicArn(topicArn); removePermissionRequest.setLabel(label); removePermission(removePermissionRequest); } /** *

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

* * @return listTopicsResult The response from the ListTopics service method, * as returned by Amazon Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListTopicsResult listTopics() throws AmazonServiceException, AmazonClientException { ListTopicsRequest listTopicsRequest = new ListTopicsRequest(); return listTopics(listTopicsRequest); } /** *

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

* * @param nextToken

* Token returned by the previous ListTopics * request. *

* @return listTopicsResult The response from the ListTopics service method, * as returned by Amazon Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListTopicsResult listTopics(String nextToken) throws AmazonServiceException, AmazonClientException { ListTopicsRequest listTopicsRequest = new ListTopicsRequest(); listTopicsRequest.setNextToken(nextToken); return listTopics(listTopicsRequest); } /** *

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

* * @param topicArn

* The ARN of the topic for which you wish to confirm a * subscription. *

* @param token

* Short-lived token sent to an endpoint during the * Subscribe action. *

* @param authenticateOnUnsubscribe

* Disallows unauthenticated unsubscribes of the subscription. If * the value of this parameter is true and the * request has an Amazon Web Services signature, then only the * topic owner and the subscription owner can unsubscribe the * endpoint. The unsubscribe action requires Amazon Web Services * authentication. *

* @return confirmSubscriptionResult The response from the * ConfirmSubscription service method, as returned by Amazon Simple * Notification Service. * @throws SubscriptionLimitExceededException * @throws InvalidParameterException * @throws NotFoundException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws FilterPolicyLimitExceededException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ConfirmSubscriptionResult confirmSubscription(String topicArn, String token, String authenticateOnUnsubscribe) throws AmazonServiceException, AmazonClientException { ConfirmSubscriptionRequest confirmSubscriptionRequest = new ConfirmSubscriptionRequest(); confirmSubscriptionRequest.setTopicArn(topicArn); confirmSubscriptionRequest.setToken(token); confirmSubscriptionRequest.setAuthenticateOnUnsubscribe(authenticateOnUnsubscribe); return confirmSubscription(confirmSubscriptionRequest); } /** *

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

* * @param topicArn

* The ARN of the topic for which you wish to confirm a * subscription. *

* @param token

* Short-lived token sent to an endpoint during the * Subscribe action. *

* @return confirmSubscriptionResult The response from the * ConfirmSubscription service method, as returned by Amazon Simple * Notification Service. * @throws SubscriptionLimitExceededException * @throws InvalidParameterException * @throws NotFoundException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws FilterPolicyLimitExceededException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ConfirmSubscriptionResult confirmSubscription(String topicArn, String token) throws AmazonServiceException, AmazonClientException { ConfirmSubscriptionRequest confirmSubscriptionRequest = new ConfirmSubscriptionRequest(); confirmSubscriptionRequest.setTopicArn(topicArn); confirmSubscriptionRequest.setToken(token); return confirmSubscription(confirmSubscriptionRequest); } /** *

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

*
* * @param topicArn

* The ARN of the topic to modify. *

* @param attributeName

* A map of attributes with their corresponding values. *

*

* The following lists the names, descriptions, and values of the * special request parameters that the * SetTopicAttributes action uses: *

*
    *
  • *

    * ApplicationSuccessFeedbackRoleArn – Indicates * failed message delivery status for an Amazon SNS topic that is * subscribed to a platform application endpoint. *

    *
  • *
  • *

    * DeliveryPolicy – The policy that defines how * Amazon SNS retries failed deliveries to HTTP/S endpoints. *

    *
  • *
  • *

    * DisplayName – The display name to use for a topic * with SMS subscriptions. *

    *
  • *
  • *

    * Policy – The policy that defines who can access * your topic. By default, only the topic owner can publish or * subscribe to the topic. *

    *
  • *
  • *

    * TracingConfig – Tracing mode of an Amazon SNS * topic. By default TracingConfig is set to * PassThrough, and the topic passes through the * tracing header it receives from an Amazon SNS publisher to its * subscriptions. If set to Active, Amazon SNS will * vend X-Ray segment data to topic owner account if the sampled * flag in the tracing header is true. This is only supported on * standard topics. *

    *
  • *
  • *

    * HTTP *

    *
      *
    • *

      * HTTPSuccessFeedbackRoleArn – Indicates successful * message delivery status for an Amazon SNS topic that is * subscribed to an HTTP endpoint. *

      *
    • *
    • *

      * HTTPSuccessFeedbackSampleRate – Indicates * percentage of successful messages to sample for an Amazon SNS * topic that is subscribed to an HTTP endpoint. *

      *
    • *
    • *

      * HTTPFailureFeedbackRoleArn – Indicates failed * message delivery status for an Amazon SNS topic that is * subscribed to an HTTP endpoint. *

      *
    • *
    *
  • *
  • *

    * Amazon Kinesis Data Firehose *

    *
      *
    • *

      * FirehoseSuccessFeedbackRoleArn – Indicates * successful message delivery status for an Amazon SNS topic * that is subscribed to an Amazon Kinesis Data Firehose * endpoint. *

      *
    • *
    • *

      * FirehoseSuccessFeedbackSampleRate – Indicates * percentage of successful messages to sample for an Amazon SNS * topic that is subscribed to an Amazon Kinesis Data Firehose * endpoint. *

      *
    • *
    • *

      * FirehoseFailureFeedbackRoleArn – Indicates failed * message delivery status for an Amazon SNS topic that is * subscribed to an Amazon Kinesis Data Firehose endpoint. *

      *
    • *
    *
  • *
  • *

    * Lambda *

    *
      *
    • *

      * LambdaSuccessFeedbackRoleArn – Indicates * successful message delivery status for an Amazon SNS topic * that is subscribed to an Lambda endpoint. *

      *
    • *
    • *

      * LambdaSuccessFeedbackSampleRate – Indicates * percentage of successful messages to sample for an Amazon SNS * topic that is subscribed to an Lambda endpoint. *

      *
    • *
    • *

      * LambdaFailureFeedbackRoleArn – Indicates failed * message delivery status for an Amazon SNS topic that is * subscribed to an Lambda endpoint. *

      *
    • *
    *
  • *
  • *

    * Platform application endpoint *

    *
      *
    • *

      * ApplicationSuccessFeedbackRoleArn – Indicates * successful message delivery status for an Amazon SNS topic * that is subscribed to an Amazon Web Services application * endpoint. *

      *
    • *
    • *

      * ApplicationSuccessFeedbackSampleRate – Indicates * percentage of successful messages to sample for an Amazon SNS * topic that is subscribed to an Amazon Web Services application * endpoint. *

      *
    • *
    • *

      * ApplicationFailureFeedbackRoleArn – Indicates * failed message delivery status for an Amazon SNS topic that is * subscribed to an Amazon Web Services application endpoint. *

      *
    • *
    * *

    * In addition to being able to configure topic attributes for * message delivery status of notification messages sent to * Amazon SNS application endpoints, you can also configure * application attributes for the delivery status of push * notification messages sent to push notification services. *

    *

    * For example, For more information, see Using Amazon SNS Application Attributes for Message Delivery * Status. *

    *
  • *
  • *

    * Amazon SQS *

    *
      *
    • *

      * SQSSuccessFeedbackRoleArn – Indicates successful * message delivery status for an Amazon SNS topic that is * subscribed to an Amazon SQS endpoint. *

      *
    • *
    • *

      * SQSSuccessFeedbackSampleRate – Indicates * percentage of successful messages to sample for an Amazon SNS * topic that is subscribed to an Amazon SQS endpoint. *

      *
    • *
    • *

      * SQSFailureFeedbackRoleArn – Indicates failed * message delivery status for an Amazon SNS topic that is * subscribed to an Amazon SQS endpoint. *

      *
    • *
    *
  • *
* *

* The <ENDPOINT>SuccessFeedbackRoleArn and * <ENDPOINT>FailureFeedbackRoleArn attributes are used to * give Amazon SNS write access to use CloudWatch Logs on your * behalf. The <ENDPOINT>SuccessFeedbackSampleRate * attribute is for specifying the sample rate percentage (0-100) * of successfully delivered messages. After you configure the * <ENDPOINT>FailureFeedbackRoleArn attribute, then all * failed message deliveries generate CloudWatch Logs. *

*
*

* The following attribute applies only to server-side-encryption: *

*
    *
  • *

    * KmsMasterKeyId – The ID of an Amazon Web Services * managed customer master key (CMK) for Amazon SNS or a custom * CMK. For more information, see Key Terms. For more examples, see KeyId in the Key Management Service API Reference. *

    *
  • *
  • *

    * SignatureVersion – The signature version * corresponds to the hashing algorithm used while creating the * signature of the notifications, subscription confirmations, or * unsubscribe confirmation messages sent by Amazon SNS. By * default, SignatureVersion is set to * 1. *

    *
  • *
*

* The following attribute applies only to FIFO topics: *

*
    *
  • *

    * ContentBasedDeduplication – Enables content-based * deduplication for FIFO topics. *

    *
      *
    • *

      * By default, ContentBasedDeduplication is set to * false. If you create a FIFO topic and this * attribute is false, you must specify a value for * the MessageDeduplicationId parameter for the Publish action. *

      *
    • *
    • *

      * When you set ContentBasedDeduplication to * true, Amazon SNS uses a SHA-256 hash to generate * the MessageDeduplicationId using the body of the * message (but not the attributes of the message). *

      *

      * (Optional) To override the generated value, you can specify a * value for the MessageDeduplicationId parameter * for the Publish action. *

      *
    • *
    *
  • *
* @param attributeValue

* The new value for the attribute. *

* @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws InvalidSecurityException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void setTopicAttributes(String topicArn, String attributeName, String attributeValue) throws AmazonServiceException, AmazonClientException { SetTopicAttributesRequest setTopicAttributesRequest = new SetTopicAttributesRequest(); setTopicAttributesRequest.setTopicArn(topicArn); setTopicAttributesRequest.setAttributeName(attributeName); setTopicAttributesRequest.setAttributeValue(attributeValue); setTopicAttributes(setTopicAttributesRequest); } /** *

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

* * @param name

* The name of the topic you want to create. *

*

* Constraints: Topic names must be made up of only uppercase and * lowercase ASCII letters, numbers, underscores, and hyphens, * and must be between 1 and 256 characters long. *

*

* For a FIFO (first-in-first-out) topic, the name must end with * the .fifo suffix. *

* @return createTopicResult The response from the CreateTopic service * method, as returned by Amazon Simple Notification Service. * @throws InvalidParameterException * @throws TopicLimitExceededException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws InvalidSecurityException * @throws TagLimitExceededException * @throws StaleTagException * @throws TagPolicyException * @throws ConcurrentAccessException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public CreateTopicResult createTopic(String name) throws AmazonServiceException, AmazonClientException { CreateTopicRequest createTopicRequest = new CreateTopicRequest(); createTopicRequest.setName(name); return createTopic(createTopicRequest); } /** *

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

* * @param topicArn

* The ARN of the topic you want to delete. *

* @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws StaleTagException * @throws TagPolicyException * @throws ConcurrentAccessException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void deleteTopic(String topicArn) throws AmazonServiceException, AmazonClientException { DeleteTopicRequest deleteTopicRequest = new DeleteTopicRequest(); deleteTopicRequest.setTopicArn(topicArn); deleteTopic(deleteTopicRequest); } /** *

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

* *

* Amazon SQS queue subscriptions require authentication for deletion. Only * the owner of the subscription, or the owner of the topic can unsubscribe * using the required Amazon Web Services signature. *

*
*

* This action is throttled at 100 transactions per second (TPS). *

* * @param subscriptionArn

* The ARN of the subscription to be deleted. *

* @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws NotFoundException * @throws InvalidSecurityException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public void unsubscribe(String subscriptionArn) throws AmazonServiceException, AmazonClientException { UnsubscribeRequest unsubscribeRequest = new UnsubscribeRequest(); unsubscribeRequest.setSubscriptionArn(subscriptionArn); unsubscribe(unsubscribeRequest); } /** *

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

* *

* You can publish messages only to topics and endpoints in the same Amazon * Web Services Region. *

*
* * @param topicArn

* The topic you want to publish to. *

*

* If you don't specify a value for the TopicArn * parameter, you must specify a value for the * PhoneNumber or TargetArn parameters. *

* @param message

* The message you want to send. *

*

* If you are publishing to a topic and you want to send the same * message to all transport protocols, include the text of the * message as a String value. If you want to send different * messages for each transport protocol, set the value of the * MessageStructure parameter to json * and use a JSON object for the Message parameter. *

*

*

* Constraints: *

*
    *
  • *

    * With the exception of SMS, messages must be UTF-8 encoded * strings and at most 256 KB in size (262,144 bytes, not 262,144 * characters). *

    *
  • *
  • *

    * For SMS, each message can contain up to 140 characters. This * character limit depends on the encoding schema. For example, * an SMS message can contain 160 GSM characters, 140 ASCII * characters, or 70 UCS-2 characters. *

    *

    * If you publish a message that exceeds this size limit, Amazon * SNS sends the message as multiple messages, each fitting * within the size limit. Messages aren't truncated mid-word but * are cut off at whole-word boundaries. *

    *

    * The total size limit for a single SMS Publish * action is 1,600 characters. *

    *
  • *
*

* JSON-specific constraints: *

*
    *
  • *

    * Keys in the JSON object that correspond to supported transport * protocols must have simple JSON string values. *

    *
  • *
  • *

    * The values will be parsed (unescaped) before they are used in * outgoing messages. *

    *
  • *
  • *

    * Outbound notifications are JSON encoded (meaning that the * characters will be reescaped for sending). *

    *
  • *
  • *

    * Values have a minimum length of 0 (the empty string, "", is * allowed). *

    *
  • *
  • *

    * Values have a maximum length bounded by the overall message * size (so, including multiple protocols may limit message * sizes). *

    *
  • *
  • *

    * Non-string values will cause the key to be ignored. *

    *
  • *
  • *

    * Keys that do not correspond to supported transport protocols * are ignored. *

    *
  • *
  • *

    * Duplicate keys are not allowed. *

    *
  • *
  • *

    * Failure to parse or validate any key or value in the message * will cause the Publish call to return an error * (no partial delivery). *

    *
  • *
* @return publishResult The response from the Publish service method, as * returned by Amazon Simple Notification Service. * @throws InvalidParameterException * @throws InvalidParameterValueException * @throws InternalErrorException * @throws NotFoundException * @throws EndpointDisabledException * @throws PlatformApplicationDisabledException * @throws AuthorizationErrorException * @throws KMSDisabledException * @throws KMSInvalidStateException * @throws KMSNotFoundException * @throws KMSOptInRequiredException * @throws KMSThrottlingException * @throws KMSAccessDeniedException * @throws InvalidSecurityException * @throws ValidationException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public PublishResult publish(String topicArn, String message) throws AmazonServiceException, AmazonClientException { PublishRequest publishRequest = new PublishRequest(); publishRequest.setTopicArn(topicArn); publishRequest.setMessage(message); return publish(publishRequest); } /** *

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

* *

* You can publish messages only to topics and endpoints in the same Amazon * Web Services Region. *

*
* * @param topicArn

* The topic you want to publish to. *

*

* If you don't specify a value for the TopicArn * parameter, you must specify a value for the * PhoneNumber or TargetArn parameters. *

* @param message

* The message you want to send. *

*

* If you are publishing to a topic and you want to send the same * message to all transport protocols, include the text of the * message as a String value. If you want to send different * messages for each transport protocol, set the value of the * MessageStructure parameter to json * and use a JSON object for the Message parameter. *

*

*

* Constraints: *

*
    *
  • *

    * With the exception of SMS, messages must be UTF-8 encoded * strings and at most 256 KB in size (262,144 bytes, not 262,144 * characters). *

    *
  • *
  • *

    * For SMS, each message can contain up to 140 characters. This * character limit depends on the encoding schema. For example, * an SMS message can contain 160 GSM characters, 140 ASCII * characters, or 70 UCS-2 characters. *

    *

    * If you publish a message that exceeds this size limit, Amazon * SNS sends the message as multiple messages, each fitting * within the size limit. Messages aren't truncated mid-word but * are cut off at whole-word boundaries. *

    *

    * The total size limit for a single SMS Publish * action is 1,600 characters. *

    *
  • *
*

* JSON-specific constraints: *

*
    *
  • *

    * Keys in the JSON object that correspond to supported transport * protocols must have simple JSON string values. *

    *
  • *
  • *

    * The values will be parsed (unescaped) before they are used in * outgoing messages. *

    *
  • *
  • *

    * Outbound notifications are JSON encoded (meaning that the * characters will be reescaped for sending). *

    *
  • *
  • *

    * Values have a minimum length of 0 (the empty string, "", is * allowed). *

    *
  • *
  • *

    * Values have a maximum length bounded by the overall message * size (so, including multiple protocols may limit message * sizes). *

    *
  • *
  • *

    * Non-string values will cause the key to be ignored. *

    *
  • *
  • *

    * Keys that do not correspond to supported transport protocols * are ignored. *

    *
  • *
  • *

    * Duplicate keys are not allowed. *

    *
  • *
  • *

    * Failure to parse or validate any key or value in the message * will cause the Publish call to return an error * (no partial delivery). *

    *
  • *
* @param subject

* Optional parameter to be used as the "Subject" line when the * message is delivered to email endpoints. This field will also * be included, if present, in the standard JSON messages * delivered to other endpoints. *

*

* Constraints: Subjects must be ASCII text that begins with a * letter, number, or punctuation mark; must not include line * breaks or control characters; and must be less than 100 * characters long. *

* @return publishResult The response from the Publish service method, as * returned by Amazon Simple Notification Service. * @throws InvalidParameterException * @throws InvalidParameterValueException * @throws InternalErrorException * @throws NotFoundException * @throws EndpointDisabledException * @throws PlatformApplicationDisabledException * @throws AuthorizationErrorException * @throws KMSDisabledException * @throws KMSInvalidStateException * @throws KMSNotFoundException * @throws KMSOptInRequiredException * @throws KMSThrottlingException * @throws KMSAccessDeniedException * @throws InvalidSecurityException * @throws ValidationException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public PublishResult publish(String topicArn, String message, String subject) throws AmazonServiceException, AmazonClientException { PublishRequest publishRequest = new PublishRequest(); publishRequest.setTopicArn(topicArn); publishRequest.setMessage(message); publishRequest.setSubject(subject); return publish(publishRequest); } /** *

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

* * @return listSubscriptionsResult The response from the ListSubscriptions * service method, as returned by Amazon Simple Notification * Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListSubscriptionsResult listSubscriptions() throws AmazonServiceException, AmazonClientException { ListSubscriptionsRequest listSubscriptionsRequest = new ListSubscriptionsRequest(); return listSubscriptions(listSubscriptionsRequest); } /** *

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

* * @param nextToken

* Token returned by the previous ListSubscriptions * request. *

* @return listSubscriptionsResult The response from the ListSubscriptions * service method, as returned by Amazon Simple Notification * Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListSubscriptionsResult listSubscriptions(String nextToken) throws AmazonServiceException, AmazonClientException { ListSubscriptionsRequest listSubscriptionsRequest = new ListSubscriptionsRequest(); listSubscriptionsRequest.setNextToken(nextToken); return listSubscriptions(listSubscriptionsRequest); } /** *

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

* * @param topicArn

* The ARN of the topic for which you wish to find subscriptions. *

* @return listSubscriptionsByTopicResult The response from the * ListSubscriptionsByTopic service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListSubscriptionsByTopicResult listSubscriptionsByTopic(String topicArn) throws AmazonServiceException, AmazonClientException { ListSubscriptionsByTopicRequest listSubscriptionsByTopicRequest = new ListSubscriptionsByTopicRequest(); listSubscriptionsByTopicRequest.setTopicArn(topicArn); return listSubscriptionsByTopic(listSubscriptionsByTopicRequest); } /** *

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

* * @param topicArn

* The ARN of the topic for which you wish to find subscriptions. *

* @param nextToken

* Token returned by the previous * ListSubscriptionsByTopic request. *

* @return listSubscriptionsByTopicResult The response from the * ListSubscriptionsByTopic service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws NotFoundException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListSubscriptionsByTopicResult listSubscriptionsByTopic(String topicArn, String nextToken) throws AmazonServiceException, AmazonClientException { ListSubscriptionsByTopicRequest listSubscriptionsByTopicRequest = new ListSubscriptionsByTopicRequest(); listSubscriptionsByTopicRequest.setTopicArn(topicArn); listSubscriptionsByTopicRequest.setNextToken(nextToken); return listSubscriptionsByTopic(listSubscriptionsByTopicRequest); } /** *

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

*

* This action is throttled at 15 transactions per second (TPS). *

* * @return listPlatformApplicationsResult The response from the * ListPlatformApplications service method, as returned by Amazon * Simple Notification Service. * @throws InvalidParameterException * @throws InternalErrorException * @throws AuthorizationErrorException * @throws AmazonClientException If any internal errors are encountered * inside the client while attempting to make the request or * handle the response. For example if a network connection is * not available. * @throws AmazonServiceException If an error response is returned by Amazon * Simple Notification Service indicating either a problem with * the data in the request, or a server side issue. */ public ListPlatformApplicationsResult listPlatformApplications() throws AmazonServiceException, AmazonClientException { ListPlatformApplicationsRequest listPlatformApplicationsRequest = new ListPlatformApplicationsRequest(); return listPlatformApplications(listPlatformApplicationsRequest); } /** * Returns additional metadata for a previously executed successful, * request, typically used for debugging issues where a service isn't acting * as expected. This data isn't considered part of the result data returned * by an operation, so it's available through this separate, diagnostic * interface. *

* Response metadata is only cached for a limited period of time, so if you * need to access this extra diagnostic information for an executed request, * you should use this method to retrieve it as soon as possible after * executing the request. * * @param request The originally executed request * @return The response metadata for the specified request, or null if none * is available. * @deprecated ResponseMetadata cache can hold up to 50 requests and * responses in memory and will cause memory issue. This method * now always returns null. */ @Deprecated public ResponseMetadata getCachedResponseMetadata(AmazonWebServiceRequest request) { return client.getResponseMetadataForRequest(request); } private Response invoke(Request request, Unmarshaller unmarshaller, ExecutionContext executionContext) { request.setEndpoint(endpoint); request.setTimeOffset(timeOffset); AmazonWebServiceRequest originalRequest = request.getOriginalRequest(); AWSCredentials credentials = awsCredentialsProvider.getCredentials(); if (originalRequest.getRequestCredentials() != null) { credentials = originalRequest.getRequestCredentials(); } executionContext.setCredentials(credentials); StaxResponseHandler responseHandler = new StaxResponseHandler(unmarshaller); DefaultErrorResponseHandler errorResponseHandler = new DefaultErrorResponseHandler( exceptionUnmarshallers); return client.execute(request, responseHandler, errorResponseHandler, executionContext); } }