using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace Amazon.Sns.Wrapper.Interfaces
{
///
/// Interface of NotificationSubscription class
///
public interface INotificationSubscription
{
///
/// Gets Arn of SNS Subscription
///
string Arn { get; }
///
/// Gets Endpoint of SNS Subscription
///
string Endpoint { get; }
///
/// Gets Protocol of SNS Subscription
///
string Protocol { get; }
///
/// Deletes a subscription. If the subscription requires authentication for deletion,
/// only the owner of the subscription or the topic's owner can unsubscribe, and
/// an Amazon Web Services signature is required. If the
/// Unsubscribe
/// call does not require authentication and the requester is not the subscription
/// owner, a final cancellation message is delivered to the endpoint, so that the
/// endpoint owner can easily resubscribe to the topic if the
/// Unsubscribe
/// request was unintended.
/// This action is throttled at 100 transactions per second (TPS).
///
/// A cancellation token that can be used by other objects or threads to receive
/// notice of cancellation.
/// Returns true if the Http response is Ok
Task UnsubscribeAsync(CancellationToken cancellationToken = default);
///
/// Returns all of the properties of a subscription.
///
/// A cancellation token that can be used by other objects or threads to receive
/// notice of cancellation.
/// Attributes/Properties of a Subscription
Task> GetAttributesAsync(CancellationToken cancellationToken = default);
///
/// Allows a subscription owner to set an attribute of the subscription to a new value.
///
///
/// A map of attributes with their corresponding values. The following lists the
/// names, descriptions, and values of the special request parameters that this action
/// uses:
/// DeliveryPolicy
/// – The policy that defines how Amazon SNS retries failed deliveries to HTTP/S
/// endpoints.
/// FilterPolicy
/// – The simple JSON object that lets your subscriber receive only a subset of messages,
/// rather than receiving every message published to the topic.
/// 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.
///
/// The new value for the attribute in JSON format.
/// A cancellation token that can be used by other objects or threads to receive
/// notice of cancellation.
///
Task AddAtrributeAsync(string attributeName, string attributeValue, CancellationToken cancellationToken = default);
}
}