/*
* Copyright 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.
*/
/*
* Do not modify this file. This file is generated from the sns-2010-03-31.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.SimpleNotificationService.Model
{
///
/// Container for the parameters to the Subscribe operation.
/// Subscribes an endpoint to an Amazon SNS topic. If the endpoint type is HTTP/S or email,
/// or if the endpoint and the topic are not in the same Amazon Web Services account,
/// the endpoint owner must run the ConfirmSubscription
action to confirm
/// the subscription.
///
///
///
/// You call the ConfirmSubscription
action with the token from the subscription
/// response. Confirmation tokens are valid for three days.
///
///
///
/// This action is throttled at 100 transactions per second (TPS).
///
///
public partial class SubscribeRequest : AmazonSimpleNotificationServiceRequest
{
private Dictionary _attributes = new Dictionary();
private string _endpoint;
private string _protocol;
private bool? _returnSubscriptionArn;
private string _topicArn;
///
/// Empty constructor used to set properties independently even when a simple constructor is available
///
public SubscribeRequest() { }
///
/// Instantiates SubscribeRequest with the parameterized properties
///
/// The ARN of the topic you want to subscribe to.
/// The protocol that you want to use. Supported protocols include: -
http
– delivery of JSON-encoded message via HTTP POST -
https
– delivery of JSON-encoded message via HTTPS POST -
email
– delivery of message via SMTP -
email-json
– delivery of JSON-encoded message via SMTP -
sms
– delivery of message via SMS -
sqs
– delivery of JSON-encoded message to an Amazon SQS queue -
application
– delivery of JSON-encoded message to an EndpointArn for a mobile app and device -
lambda
– delivery of JSON-encoded message to an Lambda function -
firehose
– delivery of JSON-encoded message to an Amazon Kinesis Data Firehose delivery stream.
/// The endpoint that you want to receive notifications. Endpoints vary by protocol: - For the
http
protocol, the (public) endpoint is a URL beginning with http://
. - For the
https
protocol, the (public) endpoint is a URL beginning with https://
. - For the
email
protocol, the endpoint is an email address. - For the
email-json
protocol, the endpoint is an email address. - For the
sms
protocol, the endpoint is a phone number of an SMS-enabled device. - For the
sqs
protocol, the endpoint is the ARN of an Amazon SQS queue. - For the
application
protocol, the endpoint is the EndpointArn of a mobile app and device. - For the
lambda
protocol, the endpoint is the ARN of an Lambda function. - For the
firehose
protocol, the endpoint is the ARN of an Amazon Kinesis Data Firehose delivery stream.
public SubscribeRequest(string topicArn, string protocol, string endpoint)
{
_topicArn = topicArn;
_protocol = protocol;
_endpoint = endpoint;
}
///
/// Gets and sets the property Attributes.
///
/// A map of attributes with their corresponding values.
///
///
///
/// The following lists the names, descriptions, and values of the special request parameters
/// that the Subscribe
action uses:
///
/// -
///
///
DeliveryPolicy
– The policy that defines how Amazon SNS retries failed
/// deliveries to HTTP/S endpoints.
///
/// -
///
///
FilterPolicy
– The simple JSON object that lets your subscriber receive
/// only a subset of messages, rather than receiving every message published to the topic.
///
/// -
///
///
FilterPolicyScope
– This attribute lets you choose the filtering scope
/// by using one of the following string value types:
///
/// -
///
///
MessageAttributes
(default) – The filter is applied on the message attributes.
///
/// -
///
///
MessageBody
– The filter is applied on the message body.
///
///
-
///
///
RawMessageDelivery
– When set to true
, enables raw message
/// delivery to Amazon SQS or HTTP/S endpoints. This eliminates the need for the endpoints
/// to process JSON formatting, which is otherwise created for Amazon SNS metadata.
///
/// -
///
///
RedrivePolicy
– When specified, sends undeliverable messages to the
/// specified Amazon SQS dead-letter queue. Messages that can't be delivered due to client
/// errors (for example, when the subscribed endpoint is unreachable) or server errors
/// (for example, when the service that powers the subscribed endpoint becomes unavailable)
/// are held in the dead-letter queue for further analysis or reprocessing.
///
///
///
/// The following attribute applies only to Amazon Kinesis Data Firehose delivery stream
/// subscriptions:
///
/// -
///
///
SubscriptionRoleArn
– The ARN of the IAM role that has the following:
///
/// -
///
/// Permission to write to the Kinesis Data Firehose delivery stream
///
///
-
///
/// Amazon SNS listed as a trusted entity
///
///
///
/// Specifying a valid ARN for this attribute is required for Kinesis Data Firehose delivery
/// stream subscriptions. For more information, see Fanout
/// to Kinesis Data Firehose delivery streams in the Amazon SNS Developer Guide.
///
///
///
public Dictionary Attributes
{
get { return this._attributes; }
set { this._attributes = value; }
}
// Check to see if Attributes property is set
internal bool IsSetAttributes()
{
return this._attributes != null && this._attributes.Count > 0;
}
///
/// Gets and sets the property Endpoint.
///
/// The endpoint that you want to receive notifications. Endpoints vary by protocol:
///
/// -
///
/// For the
http
protocol, the (public) endpoint is a URL beginning with
/// http://
.
///
/// -
///
/// For the
https
protocol, the (public) endpoint is a URL beginning with
/// https://
.
///
/// -
///
/// For the
email
protocol, the endpoint is an email address.
///
/// -
///
/// For the
email-json
protocol, the endpoint is an email address.
///
/// -
///
/// For the
sms
protocol, the endpoint is a phone number of an SMS-enabled
/// device.
///
/// -
///
/// For the
sqs
protocol, the endpoint is the ARN of an Amazon SQS queue.
///
/// -
///
/// For the
application
protocol, the endpoint is the EndpointArn of a mobile
/// app and device.
///
/// -
///
/// For the
lambda
protocol, the endpoint is the ARN of an Lambda function.
///
/// -
///
/// For the
firehose
protocol, the endpoint is the ARN of an Amazon Kinesis
/// Data Firehose delivery stream.
///
///
///
public string Endpoint
{
get { return this._endpoint; }
set { this._endpoint = value; }
}
// Check to see if Endpoint property is set
internal bool IsSetEndpoint()
{
return this._endpoint != null;
}
///
/// Gets and sets the property Protocol.
///
/// The protocol that you want to use. Supported protocols include:
///
/// -
///
///
http
– delivery of JSON-encoded message via HTTP POST
///
/// -
///
///
https
– delivery of JSON-encoded message via HTTPS POST
///
/// -
///
///
email
– delivery of message via SMTP
///
/// -
///
///
email-json
– delivery of JSON-encoded message via SMTP
///
/// -
///
///
sms
– delivery of message via SMS
///
/// -
///
///
sqs
– delivery of JSON-encoded message to an Amazon SQS queue
///
/// -
///
///
application
– delivery of JSON-encoded message to an EndpointArn for
/// a mobile app and device
///
/// -
///
///
lambda
– delivery of JSON-encoded message to an Lambda function
///
/// -
///
///
firehose
– delivery of JSON-encoded message to an Amazon Kinesis Data
/// Firehose delivery stream.
///
///
///
[AWSProperty(Required=true)]
public string Protocol
{
get { return this._protocol; }
set { this._protocol = value; }
}
// Check to see if Protocol property is set
internal bool IsSetProtocol()
{
return this._protocol != null;
}
///
/// Gets and sets the property ReturnSubscriptionArn.
///
/// Sets whether the response from the Subscribe
request includes the subscription
/// ARN, even if the subscription is not yet confirmed.
///
///
///
/// If you set this parameter to true
, the response includes the ARN in all
/// cases, even if the subscription is not yet confirmed. In addition to the ARN for confirmed
/// subscriptions, the response also includes the pending subscription
ARN
/// value for subscriptions that aren't yet confirmed. A subscription becomes confirmed
/// when the subscriber calls the ConfirmSubscription
action with a confirmation
/// token.
///
///
///
/// The default value is false
.
///
///
public bool ReturnSubscriptionArn
{
get { return this._returnSubscriptionArn.GetValueOrDefault(); }
set { this._returnSubscriptionArn = value; }
}
// Check to see if ReturnSubscriptionArn property is set
internal bool IsSetReturnSubscriptionArn()
{
return this._returnSubscriptionArn.HasValue;
}
///
/// Gets and sets the property TopicArn.
///
/// The ARN of the topic you want to subscribe to.
///
///
[AWSProperty(Required=true)]
public string TopicArn
{
get { return this._topicArn; }
set { this._topicArn = value; }
}
// Check to see if TopicArn property is set
internal bool IsSetTopicArn()
{
return this._topicArn != null;
}
}
}