text: # coding=utf-8
  # *** WARNING: this file was generated by the Pulumi SDK Generator. ***
  # *** Do not edit by hand unless you're certain you know what you are doing! ***
  
  import warnings
  import pulumi
  import pulumi.runtime
  from typing import Any, Mapping, Optional, Sequence, Union
  from ... import _utilities, _tables
  from . import outputs
  from ._inputs import *
  
  __all__ = ['SystemTopicEventSubscription']
  
  
  class SystemTopicEventSubscription(pulumi.CustomResource):
      def __init__(__self__,
                   resource_name: str,
                   opts: Optional[pulumi.ResourceOptions] = None,
                   dead_letter_destination: Optional[pulumi.Input[pulumi.InputType['StorageBlobDeadLetterDestinationArgs']]] = None,
                   dead_letter_with_resource_identity: Optional[pulumi.Input[pulumi.InputType['DeadLetterWithResourceIdentityArgs']]] = None,
                   delivery_with_resource_identity: Optional[pulumi.Input[pulumi.InputType['DeliveryWithResourceIdentityArgs']]] = None,
                   destination: Optional[pulumi.Input[Union[pulumi.InputType['AzureFunctionEventSubscriptionDestinationArgs'], pulumi.InputType['EventHubEventSubscriptionDestinationArgs'], pulumi.InputType['HybridConnectionEventSubscriptionDestinationArgs'], pulumi.InputType['ServiceBusQueueEventSubscriptionDestinationArgs'], pulumi.InputType['ServiceBusTopicEventSubscriptionDestinationArgs'], pulumi.InputType['StorageQueueEventSubscriptionDestinationArgs'], pulumi.InputType['WebHookEventSubscriptionDestinationArgs']]]] = None,
                   event_delivery_schema: Optional[pulumi.Input[str]] = None,
                   event_subscription_name: Optional[pulumi.Input[str]] = None,
                   expiration_time_utc: Optional[pulumi.Input[str]] = None,
                   filter: Optional[pulumi.Input[pulumi.InputType['EventSubscriptionFilterArgs']]] = None,
                   labels: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                   resource_group_name: Optional[pulumi.Input[str]] = None,
                   retry_policy: Optional[pulumi.Input[pulumi.InputType['RetryPolicyArgs']]] = None,
                   system_topic_name: Optional[pulumi.Input[str]] = None,
                   __props__=None,
                   __name__=None,
                   __opts__=None):
          """
          Event Subscription
  
          :param str resource_name: The name of the resource.
          :param pulumi.ResourceOptions opts: Options for the resource.
          :param pulumi.Input[pulumi.InputType['StorageBlobDeadLetterDestinationArgs']] dead_letter_destination: The dead letter destination of the event subscription. Any event that cannot be delivered to its' destination is sent to the dead letter destination.
                 Uses Azure Event Grid's identity to acquire the authentication tokens being used during delivery / dead-lettering.
          :param pulumi.Input[pulumi.InputType['DeadLetterWithResourceIdentityArgs']] dead_letter_with_resource_identity: The dead letter destination of the event subscription. Any event that cannot be delivered to its' destination is sent to the dead letter destination.
                 Uses the managed identity setup on the parent resource (namely, topic or domain) to acquire the authentication tokens being used during delivery / dead-lettering.
          :param pulumi.Input[pulumi.InputType['DeliveryWithResourceIdentityArgs']] delivery_with_resource_identity: Information about the destination where events have to be delivered for the event subscription.
                 Uses the managed identity setup on the parent resource (namely, topic or domain) to acquire the authentication tokens being used during delivery / dead-lettering.
          :param pulumi.Input[Union[pulumi.InputType['AzureFunctionEventSubscriptionDestinationArgs'], pulumi.InputType['EventHubEventSubscriptionDestinationArgs'], pulumi.InputType['HybridConnectionEventSubscriptionDestinationArgs'], pulumi.InputType['ServiceBusQueueEventSubscriptionDestinationArgs'], pulumi.InputType['ServiceBusTopicEventSubscriptionDestinationArgs'], pulumi.InputType['StorageQueueEventSubscriptionDestinationArgs'], pulumi.InputType['WebHookEventSubscriptionDestinationArgs']]] destination: Information about the destination where events have to be delivered for the event subscription.
                 Uses Azure Event Grid's identity to acquire the authentication tokens being used during delivery / dead-lettering.
          :param pulumi.Input[str] event_delivery_schema: The event delivery schema for the event subscription.
          :param pulumi.Input[str] event_subscription_name: Name of the event subscription to be created. Event subscription names must be between 3 and 100 characters in length and use alphanumeric letters only.
          :param pulumi.Input[str] expiration_time_utc: Expiration time of the event subscription.
          :param pulumi.Input[pulumi.InputType['EventSubscriptionFilterArgs']] filter: Information about the filter for the event subscription.
          :param pulumi.Input[Sequence[pulumi.Input[str]]] labels: List of user defined labels.
          :param pulumi.Input[str] resource_group_name: The name of the resource group within the user's subscription.
          :param pulumi.Input[pulumi.InputType['RetryPolicyArgs']] retry_policy: The retry policy for events. This can be used to configure maximum number of delivery attempts and time to live for events.
          :param pulumi.Input[str] system_topic_name: Name of the system topic.
          """
          if __name__ is not None:
              warnings.warn("explicit use of __name__ is deprecated", DeprecationWarning)
              resource_name = __name__
          if __opts__ is not None:
              warnings.warn("explicit use of __opts__ is deprecated, use 'opts' instead", DeprecationWarning)
              opts = __opts__
          if opts is None:
              opts = pulumi.ResourceOptions()
          if not isinstance(opts, pulumi.ResourceOptions):
              raise TypeError('Expected resource options to be a ResourceOptions instance')
          if opts.version is None:
              opts.version = _utilities.get_version()
          if opts.id is None:
              if __props__ is not None:
                  raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
              __props__ = dict()
  
              __props__['dead_letter_destination'] = dead_letter_destination
              __props__['dead_letter_with_resource_identity'] = dead_letter_with_resource_identity
              __props__['delivery_with_resource_identity'] = delivery_with_resource_identity
              __props__['destination'] = destination
              __props__['event_delivery_schema'] = event_delivery_schema
              if event_subscription_name is None:
                  raise TypeError("Missing required property 'event_subscription_name'")
              __props__['event_subscription_name'] = event_subscription_name
              __props__['expiration_time_utc'] = expiration_time_utc
              __props__['filter'] = filter
              __props__['labels'] = labels
              if resource_group_name is None:
                  raise TypeError("Missing required property 'resource_group_name'")
              __props__['resource_group_name'] = resource_group_name
              __props__['retry_policy'] = retry_policy
              if system_topic_name is None:
                  raise TypeError("Missing required property 'system_topic_name'")
              __props__['system_topic_name'] = system_topic_name
              __props__['name'] = None
              __props__['provisioning_state'] = None
              __props__['topic'] = None
              __props__['type'] = None
          super(SystemTopicEventSubscription, __self__).__init__(
              'azure-nextgen:eventgrid/v20200401preview:SystemTopicEventSubscription',
              resource_name,
              __props__,
              opts)
  
      @staticmethod
      def get(resource_name: str,
              id: pulumi.Input[str],
              opts: Optional[pulumi.ResourceOptions] = None) -> 'SystemTopicEventSubscription':
          """
          Get an existing SystemTopicEventSubscription resource's state with the given name, id, and optional extra
          properties used to qualify the lookup.
  
          :param str resource_name: The unique name of the resulting resource.
          :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
          :param pulumi.ResourceOptions opts: Options for the resource.
          """
          opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
  
          __props__ = dict()
  
          return SystemTopicEventSubscription(resource_name, opts=opts, __props__=__props__)
  
      @property
      @pulumi.getter(name="deadLetterDestination")
      def dead_letter_destination(self) -> pulumi.Output[Optional['outputs.StorageBlobDeadLetterDestinationResponse']]:
          """
          The dead letter destination of the event subscription. Any event that cannot be delivered to its' destination is sent to the dead letter destination.
          Uses Azure Event Grid's identity to acquire the authentication tokens being used during delivery / dead-lettering.
          """
          return pulumi.get(self, "dead_letter_destination")
  
      @property
      @pulumi.getter(name="deadLetterWithResourceIdentity")
      def dead_letter_with_resource_identity(self) -> pulumi.Output[Optional['outputs.DeadLetterWithResourceIdentityResponse']]:
          """
          The dead letter destination of the event subscription. Any event that cannot be delivered to its' destination is sent to the dead letter destination.
          Uses the managed identity setup on the parent resource (namely, topic or domain) to acquire the authentication tokens being used during delivery / dead-lettering.
          """
          return pulumi.get(self, "dead_letter_with_resource_identity")
  
      @property
      @pulumi.getter(name="deliveryWithResourceIdentity")
      def delivery_with_resource_identity(self) -> pulumi.Output[Optional['outputs.DeliveryWithResourceIdentityResponse']]:
          """
          Information about the destination where events have to be delivered for the event subscription.
          Uses the managed identity setup on the parent resource (namely, topic or domain) to acquire the authentication tokens being used during delivery / dead-lettering.
          """
          return pulumi.get(self, "delivery_with_resource_identity")
  
      @property
      @pulumi.getter
      def destination(self) -> pulumi.Output[Optional[Any]]:
          """
          Information about the destination where events have to be delivered for the event subscription.
          Uses Azure Event Grid's identity to acquire the authentication tokens being used during delivery / dead-lettering.
          """
          return pulumi.get(self, "destination")
  
      @property
      @pulumi.getter(name="eventDeliverySchema")
      def event_delivery_schema(self) -> pulumi.Output[Optional[str]]:
          """
          The event delivery schema for the event subscription.
          """
          return pulumi.get(self, "event_delivery_schema")
  
      @property
      @pulumi.getter(name="expirationTimeUtc")
      def expiration_time_utc(self) -> pulumi.Output[Optional[str]]:
          """
          Expiration time of the event subscription.
          """
          return pulumi.get(self, "expiration_time_utc")
  
      @property
      @pulumi.getter
      def filter(self) -> pulumi.Output[Optional['outputs.EventSubscriptionFilterResponse']]:
          """
          Information about the filter for the event subscription.
          """
          return pulumi.get(self, "filter")
  
      @property
      @pulumi.getter
      def labels(self) -> pulumi.Output[Optional[Sequence[str]]]:
          """
          List of user defined labels.
          """
          return pulumi.get(self, "labels")
  
      @property
      @pulumi.getter
      def name(self) -> pulumi.Output[str]:
          """
          Name of the resource
          """
          return pulumi.get(self, "name")
  
      @property
      @pulumi.getter(name="provisioningState")
      def provisioning_state(self) -> pulumi.Output[str]:
          """
          Provisioning state of the event subscription.
          """
          return pulumi.get(self, "provisioning_state")
  
      @property
      @pulumi.getter(name="retryPolicy")
      def retry_policy(self) -> pulumi.Output[Optional['outputs.RetryPolicyResponse']]:
          """
          The retry policy for events. This can be used to configure maximum number of delivery attempts and time to live for events.
          """
          return pulumi.get(self, "retry_policy")
  
      @property
      @pulumi.getter
      def topic(self) -> pulumi.Output[str]:
          """
          Name of the topic of the event subscription.
          """
          return pulumi.get(self, "topic")
  
      @property
      @pulumi.getter
      def type(self) -> pulumi.Output[str]:
          """
          Type of the resource
          """
          return pulumi.get(self, "type")
  
      def translate_output_property(self, prop):
          return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop
  
      def translate_input_property(self, prop):
          return _tables.SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop
  
  