/* * 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: /// The endpoint that you want to receive notifications. Endpoints vary by protocol: 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; } } }