All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.amazonaws.services.sns.model.PublishRequest Maven / Gradle / Ivy

Go to download

The AWS Java SDK for Amazon SNS module holds the client classes that are used for communicating with Amazon Simple Notification Service

There is a newer version: 1.12.778
Show newest version
/*
 * Copyright 2019-2024 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.model;

import java.io.Serializable;
import javax.annotation.Generated;

import com.amazonaws.AmazonWebServiceRequest;

/**
 * 

* Input for Publish action. *

* * @see AWS API Documentation */ @Generated("com.amazonaws:aws-java-sdk-code-generator") public class PublishRequest extends com.amazonaws.AmazonWebServiceRequest implements Serializable, Cloneable { /** *

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

*/ private String topicArn; /** *

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

*/ private String targetArn; /** *

* The phone number to which you want to deliver an SMS message. Use E.164 format. *

*

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

*/ private String phoneNumber; /** *

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

    *
  • *
*/ private String message; /** *

* 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 UTF-8 text with no line breaks or control characters, and less than 100 characters * long. *

*/ private String subject; /** *

* Set MessageStructure to json if you want to send a different message for each protocol. * For example, using one publish action, you can send a short message to your SMS subscribers and a longer message * to your email subscribers. If you set MessageStructure to json, the value of the * Message parameter must: *

*
    *
  • *

    * be a syntactically valid JSON object; and *

    *
  • *
  • *

    * contain at least a top-level JSON key of "default" with a value that is a string. *

    *
  • *
*

* You can define other top-level keys that define the message you want to send to a specific transport protocol * (e.g., "http"). *

*

* Valid value: json *

*/ private String messageStructure; /** *

* Message attributes for Publish action. *

*/ private com.amazonaws.internal.SdkInternalMap messageAttributes; /** *

* This parameter applies only to FIFO (first-in-first-out) topics. The MessageDeduplicationId can * contain up to 128 alphanumeric characters (a-z, A-Z, 0-9) and punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

*

* Every message must have a unique MessageDeduplicationId, which is a token used for deduplication of * sent messages. If a message with a particular MessageDeduplicationId is sent successfully, any * message sent with the same MessageDeduplicationId during the 5-minute deduplication interval is * treated as a duplicate. *

*

* If the topic has ContentBasedDeduplication set, the system generates a * MessageDeduplicationId based on the contents of the message. Your * MessageDeduplicationId overrides the generated one. *

*/ private String messageDeduplicationId; /** *

* This parameter applies only to FIFO (first-in-first-out) topics. The MessageGroupId can contain up * to 128 alphanumeric characters (a-z, A-Z, 0-9) and punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

*

* The MessageGroupId is a tag that specifies that a message belongs to a specific message group. * Messages that belong to the same message group are processed in a FIFO manner (however, messages in different * message groups might be processed out of order). Every message must include a MessageGroupId. *

*/ private String messageGroupId; /** * Default constructor for PublishRequest object. Callers should use the setter or fluent setter (with...) methods * to initialize the object after creating it. */ public PublishRequest() { } /** * Constructs a new PublishRequest object. Callers should use the setter or fluent setter (with...) methods to * initialize any additional object members. * * @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). *

    *
  • */ public PublishRequest(String topicArn, String message) { setTopicArn(topicArn); setMessage(message); } /** * Constructs a new PublishRequest object. Callers should use the setter or fluent setter (with...) methods to * initialize any additional object members. * * @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 UTF-8 text with no line breaks or control characters, and less than 100 * characters long. */ public PublishRequest(String topicArn, String message, String subject) { setTopicArn(topicArn); setMessage(message); setSubject(subject); } /** *

      * 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 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. */ public void setTopicArn(String topicArn) { this.topicArn = 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. *

      * * @return 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. */ public String getTopicArn() { return this.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 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. * @return Returns a reference to this object so that method calls can be chained together. */ public PublishRequest withTopicArn(String topicArn) { setTopicArn(topicArn); return this; } /** *

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

      * * @param targetArn * If you don't specify a value for the TargetArn parameter, you must specify a value for the * PhoneNumber or TopicArn parameters. */ public void setTargetArn(String targetArn) { this.targetArn = targetArn; } /** *

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

      * * @return If you don't specify a value for the TargetArn parameter, you must specify a value for the * PhoneNumber or TopicArn parameters. */ public String getTargetArn() { return this.targetArn; } /** *

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

      * * @param targetArn * If you don't specify a value for the TargetArn parameter, you must specify a value for the * PhoneNumber or TopicArn parameters. * @return Returns a reference to this object so that method calls can be chained together. */ public PublishRequest withTargetArn(String targetArn) { setTargetArn(targetArn); return this; } /** *

      * The phone number to which you want to deliver an SMS message. Use E.164 format. *

      *

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

      * * @param phoneNumber * The phone number to which you want to deliver an SMS message. Use E.164 format.

      *

      * If you don't specify a value for the PhoneNumber parameter, you must specify a value for the * TargetArn or TopicArn parameters. */ public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } /** *

      * The phone number to which you want to deliver an SMS message. Use E.164 format. *

      *

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

      * * @return The phone number to which you want to deliver an SMS message. Use E.164 format.

      *

      * If you don't specify a value for the PhoneNumber parameter, you must specify a value for the * TargetArn or TopicArn parameters. */ public String getPhoneNumber() { return this.phoneNumber; } /** *

      * The phone number to which you want to deliver an SMS message. Use E.164 format. *

      *

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

      * * @param phoneNumber * The phone number to which you want to deliver an SMS message. Use E.164 format.

      *

      * If you don't specify a value for the PhoneNumber parameter, you must specify a value for the * TargetArn or TopicArn parameters. * @return Returns a reference to this object so that method calls can be chained together. */ public PublishRequest withPhoneNumber(String phoneNumber) { setPhoneNumber(phoneNumber); return this; } /** *

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

        *
      • */ public void setMessage(String message) { this.message = 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 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). *

          *
        • */ public String getMessage() { return this.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 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 Returns a reference to this object so that method calls can be chained together. */ public PublishRequest withMessage(String message) { setMessage(message); return this; } /** *

            * 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 UTF-8 text with no line breaks or control characters, and less than 100 characters * long. *

            * * @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 UTF-8 text with no line breaks or control characters, and less than 100 * characters long. */ public void setSubject(String subject) { this.subject = 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 UTF-8 text with no line breaks or control characters, and less than 100 characters * long. *

            * * @return 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 UTF-8 text with no line breaks or control characters, and less than 100 * characters long. */ public String getSubject() { return this.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 UTF-8 text with no line breaks or control characters, and less than 100 characters * long. *

            * * @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 UTF-8 text with no line breaks or control characters, and less than 100 * characters long. * @return Returns a reference to this object so that method calls can be chained together. */ public PublishRequest withSubject(String subject) { setSubject(subject); return this; } /** *

            * Set MessageStructure to json if you want to send a different message for each protocol. * For example, using one publish action, you can send a short message to your SMS subscribers and a longer message * to your email subscribers. If you set MessageStructure to json, the value of the * Message parameter must: *

            *
              *
            • *

              * be a syntactically valid JSON object; and *

              *
            • *
            • *

              * contain at least a top-level JSON key of "default" with a value that is a string. *

              *
            • *
            *

            * You can define other top-level keys that define the message you want to send to a specific transport protocol * (e.g., "http"). *

            *

            * Valid value: json *

            * * @param messageStructure * Set MessageStructure to json if you want to send a different message for each * protocol. For example, using one publish action, you can send a short message to your SMS subscribers and * a longer message to your email subscribers. If you set MessageStructure to json, * the value of the Message parameter must:

            *
              *
            • *

              * be a syntactically valid JSON object; and *

              *
            • *
            • *

              * contain at least a top-level JSON key of "default" with a value that is a string. *

              *
            • *
            *

            * You can define other top-level keys that define the message you want to send to a specific transport * protocol (e.g., "http"). *

            *

            * Valid value: json */ public void setMessageStructure(String messageStructure) { this.messageStructure = messageStructure; } /** *

            * Set MessageStructure to json if you want to send a different message for each protocol. * For example, using one publish action, you can send a short message to your SMS subscribers and a longer message * to your email subscribers. If you set MessageStructure to json, the value of the * Message parameter must: *

            *
              *
            • *

              * be a syntactically valid JSON object; and *

              *
            • *
            • *

              * contain at least a top-level JSON key of "default" with a value that is a string. *

              *
            • *
            *

            * You can define other top-level keys that define the message you want to send to a specific transport protocol * (e.g., "http"). *

            *

            * Valid value: json *

            * * @return Set MessageStructure to json if you want to send a different message for each * protocol. For example, using one publish action, you can send a short message to your SMS subscribers and * a longer message to your email subscribers. If you set MessageStructure to json * , the value of the Message parameter must:

            *
              *
            • *

              * be a syntactically valid JSON object; and *

              *
            • *
            • *

              * contain at least a top-level JSON key of "default" with a value that is a string. *

              *
            • *
            *

            * You can define other top-level keys that define the message you want to send to a specific transport * protocol (e.g., "http"). *

            *

            * Valid value: json */ public String getMessageStructure() { return this.messageStructure; } /** *

            * Set MessageStructure to json if you want to send a different message for each protocol. * For example, using one publish action, you can send a short message to your SMS subscribers and a longer message * to your email subscribers. If you set MessageStructure to json, the value of the * Message parameter must: *

            *
              *
            • *

              * be a syntactically valid JSON object; and *

              *
            • *
            • *

              * contain at least a top-level JSON key of "default" with a value that is a string. *

              *
            • *
            *

            * You can define other top-level keys that define the message you want to send to a specific transport protocol * (e.g., "http"). *

            *

            * Valid value: json *

            * * @param messageStructure * Set MessageStructure to json if you want to send a different message for each * protocol. For example, using one publish action, you can send a short message to your SMS subscribers and * a longer message to your email subscribers. If you set MessageStructure to json, * the value of the Message parameter must:

            *
              *
            • *

              * be a syntactically valid JSON object; and *

              *
            • *
            • *

              * contain at least a top-level JSON key of "default" with a value that is a string. *

              *
            • *
            *

            * You can define other top-level keys that define the message you want to send to a specific transport * protocol (e.g., "http"). *

            *

            * Valid value: json * @return Returns a reference to this object so that method calls can be chained together. */ public PublishRequest withMessageStructure(String messageStructure) { setMessageStructure(messageStructure); return this; } /** *

            * Message attributes for Publish action. *

            * * @return Message attributes for Publish action. */ public java.util.Map getMessageAttributes() { if (messageAttributes == null) { messageAttributes = new com.amazonaws.internal.SdkInternalMap(); } return messageAttributes; } /** *

            * Message attributes for Publish action. *

            * * @param messageAttributes * Message attributes for Publish action. */ public void setMessageAttributes(java.util.Map messageAttributes) { this.messageAttributes = messageAttributes == null ? null : new com.amazonaws.internal.SdkInternalMap(messageAttributes); } /** *

            * Message attributes for Publish action. *

            * * @param messageAttributes * Message attributes for Publish action. * @return Returns a reference to this object so that method calls can be chained together. */ public PublishRequest withMessageAttributes(java.util.Map messageAttributes) { setMessageAttributes(messageAttributes); return this; } /** * Add a single MessageAttributes entry * * @see PublishRequest#withMessageAttributes * @returns a reference to this object so that method calls can be chained together. */ public PublishRequest addMessageAttributesEntry(String key, MessageAttributeValue value) { if (null == this.messageAttributes) { this.messageAttributes = new com.amazonaws.internal.SdkInternalMap(); } if (this.messageAttributes.containsKey(key)) throw new IllegalArgumentException("Duplicated keys (" + key.toString() + ") are provided."); this.messageAttributes.put(key, value); return this; } /** * Removes all the entries added into MessageAttributes. * * @return Returns a reference to this object so that method calls can be chained together. */ public PublishRequest clearMessageAttributesEntries() { this.messageAttributes = null; return this; } /** *

            * This parameter applies only to FIFO (first-in-first-out) topics. The MessageDeduplicationId can * contain up to 128 alphanumeric characters (a-z, A-Z, 0-9) and punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

            *

            * Every message must have a unique MessageDeduplicationId, which is a token used for deduplication of * sent messages. If a message with a particular MessageDeduplicationId is sent successfully, any * message sent with the same MessageDeduplicationId during the 5-minute deduplication interval is * treated as a duplicate. *

            *

            * If the topic has ContentBasedDeduplication set, the system generates a * MessageDeduplicationId based on the contents of the message. Your * MessageDeduplicationId overrides the generated one. *

            * * @param messageDeduplicationId * This parameter applies only to FIFO (first-in-first-out) topics. The MessageDeduplicationId * can contain up to 128 alphanumeric characters (a-z, A-Z, 0-9) and punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~).

            *

            * Every message must have a unique MessageDeduplicationId, which is a token used for * deduplication of sent messages. If a message with a particular MessageDeduplicationId is sent * successfully, any message sent with the same MessageDeduplicationId during the 5-minute * deduplication interval is treated as a duplicate. *

            *

            * If the topic has ContentBasedDeduplication set, the system generates a * MessageDeduplicationId based on the contents of the message. Your * MessageDeduplicationId overrides the generated one. */ public void setMessageDeduplicationId(String messageDeduplicationId) { this.messageDeduplicationId = messageDeduplicationId; } /** *

            * This parameter applies only to FIFO (first-in-first-out) topics. The MessageDeduplicationId can * contain up to 128 alphanumeric characters (a-z, A-Z, 0-9) and punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

            *

            * Every message must have a unique MessageDeduplicationId, which is a token used for deduplication of * sent messages. If a message with a particular MessageDeduplicationId is sent successfully, any * message sent with the same MessageDeduplicationId during the 5-minute deduplication interval is * treated as a duplicate. *

            *

            * If the topic has ContentBasedDeduplication set, the system generates a * MessageDeduplicationId based on the contents of the message. Your * MessageDeduplicationId overrides the generated one. *

            * * @return This parameter applies only to FIFO (first-in-first-out) topics. The MessageDeduplicationId * can contain up to 128 alphanumeric characters (a-z, A-Z, 0-9) and punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~).

            *

            * Every message must have a unique MessageDeduplicationId, which is a token used for * deduplication of sent messages. If a message with a particular MessageDeduplicationId is * sent successfully, any message sent with the same MessageDeduplicationId during the 5-minute * deduplication interval is treated as a duplicate. *

            *

            * If the topic has ContentBasedDeduplication set, the system generates a * MessageDeduplicationId based on the contents of the message. Your * MessageDeduplicationId overrides the generated one. */ public String getMessageDeduplicationId() { return this.messageDeduplicationId; } /** *

            * This parameter applies only to FIFO (first-in-first-out) topics. The MessageDeduplicationId can * contain up to 128 alphanumeric characters (a-z, A-Z, 0-9) and punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

            *

            * Every message must have a unique MessageDeduplicationId, which is a token used for deduplication of * sent messages. If a message with a particular MessageDeduplicationId is sent successfully, any * message sent with the same MessageDeduplicationId during the 5-minute deduplication interval is * treated as a duplicate. *

            *

            * If the topic has ContentBasedDeduplication set, the system generates a * MessageDeduplicationId based on the contents of the message. Your * MessageDeduplicationId overrides the generated one. *

            * * @param messageDeduplicationId * This parameter applies only to FIFO (first-in-first-out) topics. The MessageDeduplicationId * can contain up to 128 alphanumeric characters (a-z, A-Z, 0-9) and punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~).

            *

            * Every message must have a unique MessageDeduplicationId, which is a token used for * deduplication of sent messages. If a message with a particular MessageDeduplicationId is sent * successfully, any message sent with the same MessageDeduplicationId during the 5-minute * deduplication interval is treated as a duplicate. *

            *

            * If the topic has ContentBasedDeduplication set, the system generates a * MessageDeduplicationId based on the contents of the message. Your * MessageDeduplicationId overrides the generated one. * @return Returns a reference to this object so that method calls can be chained together. */ public PublishRequest withMessageDeduplicationId(String messageDeduplicationId) { setMessageDeduplicationId(messageDeduplicationId); return this; } /** *

            * This parameter applies only to FIFO (first-in-first-out) topics. The MessageGroupId can contain up * to 128 alphanumeric characters (a-z, A-Z, 0-9) and punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

            *

            * The MessageGroupId is a tag that specifies that a message belongs to a specific message group. * Messages that belong to the same message group are processed in a FIFO manner (however, messages in different * message groups might be processed out of order). Every message must include a MessageGroupId. *

            * * @param messageGroupId * This parameter applies only to FIFO (first-in-first-out) topics. The MessageGroupId can * contain up to 128 alphanumeric characters (a-z, A-Z, 0-9) and punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~).

            *

            * The MessageGroupId is a tag that specifies that a message belongs to a specific message * group. Messages that belong to the same message group are processed in a FIFO manner (however, messages in * different message groups might be processed out of order). Every message must include a * MessageGroupId. */ public void setMessageGroupId(String messageGroupId) { this.messageGroupId = messageGroupId; } /** *

            * This parameter applies only to FIFO (first-in-first-out) topics. The MessageGroupId can contain up * to 128 alphanumeric characters (a-z, A-Z, 0-9) and punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

            *

            * The MessageGroupId is a tag that specifies that a message belongs to a specific message group. * Messages that belong to the same message group are processed in a FIFO manner (however, messages in different * message groups might be processed out of order). Every message must include a MessageGroupId. *

            * * @return This parameter applies only to FIFO (first-in-first-out) topics. The MessageGroupId can * contain up to 128 alphanumeric characters (a-z, A-Z, 0-9) and punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~).

            *

            * The MessageGroupId is a tag that specifies that a message belongs to a specific message * group. Messages that belong to the same message group are processed in a FIFO manner (however, messages * in different message groups might be processed out of order). Every message must include a * MessageGroupId. */ public String getMessageGroupId() { return this.messageGroupId; } /** *

            * This parameter applies only to FIFO (first-in-first-out) topics. The MessageGroupId can contain up * to 128 alphanumeric characters (a-z, A-Z, 0-9) and punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~). *

            *

            * The MessageGroupId is a tag that specifies that a message belongs to a specific message group. * Messages that belong to the same message group are processed in a FIFO manner (however, messages in different * message groups might be processed out of order). Every message must include a MessageGroupId. *

            * * @param messageGroupId * This parameter applies only to FIFO (first-in-first-out) topics. The MessageGroupId can * contain up to 128 alphanumeric characters (a-z, A-Z, 0-9) and punctuation * (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~).

            *

            * The MessageGroupId is a tag that specifies that a message belongs to a specific message * group. Messages that belong to the same message group are processed in a FIFO manner (however, messages in * different message groups might be processed out of order). Every message must include a * MessageGroupId. * @return Returns a reference to this object so that method calls can be chained together. */ public PublishRequest withMessageGroupId(String messageGroupId) { setMessageGroupId(messageGroupId); return this; } /** * Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be * redacted from this string using a placeholder value. * * @return A string representation of this object. * * @see java.lang.Object#toString() */ @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("{"); if (getTopicArn() != null) sb.append("TopicArn: ").append(getTopicArn()).append(","); if (getTargetArn() != null) sb.append("TargetArn: ").append(getTargetArn()).append(","); if (getPhoneNumber() != null) sb.append("PhoneNumber: ").append("***Sensitive Data Redacted***").append(","); if (getMessage() != null) sb.append("Message: ").append(getMessage()).append(","); if (getSubject() != null) sb.append("Subject: ").append(getSubject()).append(","); if (getMessageStructure() != null) sb.append("MessageStructure: ").append(getMessageStructure()).append(","); if (getMessageAttributes() != null) sb.append("MessageAttributes: ").append(getMessageAttributes()).append(","); if (getMessageDeduplicationId() != null) sb.append("MessageDeduplicationId: ").append(getMessageDeduplicationId()).append(","); if (getMessageGroupId() != null) sb.append("MessageGroupId: ").append(getMessageGroupId()); sb.append("}"); return sb.toString(); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (obj instanceof PublishRequest == false) return false; PublishRequest other = (PublishRequest) obj; if (other.getTopicArn() == null ^ this.getTopicArn() == null) return false; if (other.getTopicArn() != null && other.getTopicArn().equals(this.getTopicArn()) == false) return false; if (other.getTargetArn() == null ^ this.getTargetArn() == null) return false; if (other.getTargetArn() != null && other.getTargetArn().equals(this.getTargetArn()) == false) return false; if (other.getPhoneNumber() == null ^ this.getPhoneNumber() == null) return false; if (other.getPhoneNumber() != null && other.getPhoneNumber().equals(this.getPhoneNumber()) == false) return false; if (other.getMessage() == null ^ this.getMessage() == null) return false; if (other.getMessage() != null && other.getMessage().equals(this.getMessage()) == false) return false; if (other.getSubject() == null ^ this.getSubject() == null) return false; if (other.getSubject() != null && other.getSubject().equals(this.getSubject()) == false) return false; if (other.getMessageStructure() == null ^ this.getMessageStructure() == null) return false; if (other.getMessageStructure() != null && other.getMessageStructure().equals(this.getMessageStructure()) == false) return false; if (other.getMessageAttributes() == null ^ this.getMessageAttributes() == null) return false; if (other.getMessageAttributes() != null && other.getMessageAttributes().equals(this.getMessageAttributes()) == false) return false; if (other.getMessageDeduplicationId() == null ^ this.getMessageDeduplicationId() == null) return false; if (other.getMessageDeduplicationId() != null && other.getMessageDeduplicationId().equals(this.getMessageDeduplicationId()) == false) return false; if (other.getMessageGroupId() == null ^ this.getMessageGroupId() == null) return false; if (other.getMessageGroupId() != null && other.getMessageGroupId().equals(this.getMessageGroupId()) == false) return false; return true; } @Override public int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + ((getTopicArn() == null) ? 0 : getTopicArn().hashCode()); hashCode = prime * hashCode + ((getTargetArn() == null) ? 0 : getTargetArn().hashCode()); hashCode = prime * hashCode + ((getPhoneNumber() == null) ? 0 : getPhoneNumber().hashCode()); hashCode = prime * hashCode + ((getMessage() == null) ? 0 : getMessage().hashCode()); hashCode = prime * hashCode + ((getSubject() == null) ? 0 : getSubject().hashCode()); hashCode = prime * hashCode + ((getMessageStructure() == null) ? 0 : getMessageStructure().hashCode()); hashCode = prime * hashCode + ((getMessageAttributes() == null) ? 0 : getMessageAttributes().hashCode()); hashCode = prime * hashCode + ((getMessageDeduplicationId() == null) ? 0 : getMessageDeduplicationId().hashCode()); hashCode = prime * hashCode + ((getMessageGroupId() == null) ? 0 : getMessageGroupId().hashCode()); return hashCode; } @Override public PublishRequest clone() { return (PublishRequest) super.clone(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy