text: # coding=utf-8
  # *** WARNING: this file was generated by the Kulado Terraform Bridge (tfgen) Tool. ***
  # *** Do not edit by hand unless you're certain you know what you are doing! ***
  
  import json
  import warnings
  import kulado
  import kulado.runtime
  from .. import utilities, tables
  
  class AppService(kulado.CustomResource):
      app_service_plan_id: kulado.Output[str]
      """
      The ID of the App Service Plan within which to create this App Service.
      """
      app_settings: kulado.Output[dict]
      """
      A key-value pair of App Settings.
      """
      auth_settings: kulado.Output[dict]
      """
      A `auth_settings` block as defined below.
      """
      client_affinity_enabled: kulado.Output[bool]
      """
      Should the App Service send session affinity cookies, which route client requests in the same session to the same instance?
      """
      client_cert_enabled: kulado.Output[bool]
      """
      Does the App Service require client certificates for incoming requests? Defaults to `false`.
      """
      connection_strings: kulado.Output[list]
      """
      One or more `connection_string` blocks as defined below.
      """
      default_site_hostname: kulado.Output[str]
      """
      The Default Hostname associated with the App Service - such as `mysite.azurewebsites.net`
      """
      enabled: kulado.Output[bool]
      """
      Is the App Service Enabled?
      """
      https_only: kulado.Output[bool]
      """
      Can the App Service only be accessed via HTTPS? Defaults to `false`.
      """
      identity: kulado.Output[dict]
      """
      A Managed Service Identity block as defined below.
      """
      location: kulado.Output[str]
      """
      Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
      """
      logs: kulado.Output[dict]
      """
      A `logs` block as defined below.
      """
      name: kulado.Output[str]
      """
      Specifies the name of the App Service. Changing this forces a new resource to be created.
      """
      outbound_ip_addresses: kulado.Output[str]
      """
      A comma separated list of outbound IP addresses - such as `52.23.25.3,52.143.43.12`
      """
      possible_outbound_ip_addresses: kulado.Output[str]
      """
      A comma separated list of outbound IP addresses - such as `52.23.25.3,52.143.43.12,52.143.43.17` - not all of which are necessarily in use. Superset of `outbound_ip_addresses`.
      """
      resource_group_name: kulado.Output[str]
      """
      The name of the resource group in which to create the App Service.
      """
      site_config: kulado.Output[dict]
      """
      A `site_config` block as defined below.
      """
      site_credential: kulado.Output[dict]
      """
      A `site_credential` block as defined below, which contains the site-level credentials used to publish to this App Service.
      """
      source_control: kulado.Output[dict]
      """
      A `source_control` block as defined below, which contains the Source Control information when `scm_type` is set to `LocalGit`.
      """
      tags: kulado.Output[dict]
      """
      A mapping of tags to assign to the resource.
      """
      def __init__(__self__, resource_name, opts=None, app_service_plan_id=None, app_settings=None, auth_settings=None, client_affinity_enabled=None, client_cert_enabled=None, connection_strings=None, enabled=None, https_only=None, identity=None, location=None, logs=None, name=None, resource_group_name=None, site_config=None, tags=None, __name__=None, __opts__=None):
          """
          Manages an App Service (within an App Service Plan).
          
          > **Note:** When using Slots - the `app_settings`, `connection_string` and `site_config` blocks on the `azurerm_app_service` resource will be overwritten when promoting a Slot using the `azurerm_app_service_active_slot` resource.
          
          :param str resource_name: The name of the resource.
          :param kulado.ResourceOptions opts: Options for the resource.
          :param kulado.Input[str] app_service_plan_id: The ID of the App Service Plan within which to create this App Service.
          :param kulado.Input[dict] app_settings: A key-value pair of App Settings.
          :param kulado.Input[dict] auth_settings: A `auth_settings` block as defined below.
          :param kulado.Input[bool] client_affinity_enabled: Should the App Service send session affinity cookies, which route client requests in the same session to the same instance?
          :param kulado.Input[bool] client_cert_enabled: Does the App Service require client certificates for incoming requests? Defaults to `false`.
          :param kulado.Input[list] connection_strings: One or more `connection_string` blocks as defined below.
          :param kulado.Input[bool] enabled: Is the App Service Enabled?
          :param kulado.Input[bool] https_only: Can the App Service only be accessed via HTTPS? Defaults to `false`.
          :param kulado.Input[dict] identity: A Managed Service Identity block as defined below.
          :param kulado.Input[str] location: Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
          :param kulado.Input[dict] logs: A `logs` block as defined below.
          :param kulado.Input[str] name: Specifies the name of the App Service. Changing this forces a new resource to be created.
          :param kulado.Input[str] resource_group_name: The name of the resource group in which to create the App Service.
          :param kulado.Input[dict] site_config: A `site_config` block as defined below.
          :param kulado.Input[dict] tags: A mapping of tags to assign to the resource.
  
          > This content is derived from https://github.com/terraform-providers/terraform-provider-azurerm/blob/master/website/docs/r/app_service.html.markdown.
          """
          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 not resource_name:
              raise TypeError('Missing resource name argument (for URN creation)')
          if not isinstance(resource_name, str):
              raise TypeError('Expected resource name to be a string')
          if opts and not isinstance(opts, kulado.ResourceOptions):
              raise TypeError('Expected resource options to be a ResourceOptions instance')
  
          __props__ = dict()
  
          if app_service_plan_id is None:
              raise TypeError("Missing required property 'app_service_plan_id'")
          __props__['app_service_plan_id'] = app_service_plan_id
  
          __props__['app_settings'] = app_settings
  
          __props__['auth_settings'] = auth_settings
  
          __props__['client_affinity_enabled'] = client_affinity_enabled
  
          __props__['client_cert_enabled'] = client_cert_enabled
  
          __props__['connection_strings'] = connection_strings
  
          __props__['enabled'] = enabled
  
          __props__['https_only'] = https_only
  
          __props__['identity'] = identity
  
          __props__['location'] = location
  
          __props__['logs'] = logs
  
          __props__['name'] = name
  
          if resource_group_name is None:
              raise TypeError("Missing required property 'resource_group_name'")
          __props__['resource_group_name'] = resource_group_name
  
          __props__['site_config'] = site_config
  
          __props__['tags'] = tags
  
          __props__['default_site_hostname'] = None
          __props__['outbound_ip_addresses'] = None
          __props__['possible_outbound_ip_addresses'] = None
          __props__['site_credential'] = None
          __props__['source_control'] = None
  
          super(AppService, __self__).__init__(
              'azure:appservice/appService:AppService',
              resource_name,
              __props__,
              opts)
  
  
      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
  
  