/* * Copyright 2018-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.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.
*
* If you don't specify a value for the TargetArn
parameter, you must specify a value for the
* PhoneNumber
or TopicArn
parameters.
*
* 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.
*
* 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).
*
* 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. *
*/ 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
*
* Message attributes for Publish action. *
*/ private com.amazonaws.internal.SdkInternalMap
* 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.
*
* 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
.
*
* 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).
*
* 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).
*
* 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. */ 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.
*
* 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.
*
* 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.
*
* 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.
*
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.
*
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.
*
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.
*
* 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.
*
* 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.
*
* 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).
*
* 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).
*
* 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).
*
* 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).
*
* 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).
*
* 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).
*
* 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. *
* * @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. */ 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 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 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. */ 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 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. *
* * @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 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
*
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
*
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
*
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* Message attributes for Publish action. *
* * @param messageAttributes * Message attributes for Publish action. */ public void setMessageAttributes(java.util.Map* 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
* 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.
*
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.
*
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.
*
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
.
*
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
.
*
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
.
*
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(getPhoneNumber()).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();
}
}