# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** 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, overload
from . import _utilities
from . import outputs
from ._inputs import *

__all__ = ['PropertyArgs', 'Property']

@pulumi.input_type
class PropertyArgs:
    def __init__(__self__, *,
                 contacts: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 contract: Optional[pulumi.Input[str]] = None,
                 contract_id: Optional[pulumi.Input[str]] = None,
                 cp_code: Optional[pulumi.Input[str]] = None,
                 group: Optional[pulumi.Input[str]] = None,
                 group_id: Optional[pulumi.Input[str]] = None,
                 hostnames: Optional[pulumi.Input[Sequence[pulumi.Input['PropertyHostnameArgs']]]] = None,
                 is_secure: Optional[pulumi.Input[bool]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 origins: Optional[pulumi.Input[Sequence[pulumi.Input['PropertyOriginArgs']]]] = None,
                 product: Optional[pulumi.Input[str]] = None,
                 product_id: Optional[pulumi.Input[str]] = None,
                 rule_format: Optional[pulumi.Input[str]] = None,
                 rule_warnings: Optional[pulumi.Input[Sequence[pulumi.Input['PropertyRuleWarningArgs']]]] = None,
                 rules: Optional[pulumi.Input[str]] = None,
                 variables: Optional[pulumi.Input[str]] = None):
        """
        The set of arguments for constructing a Property resource.
        :param pulumi.Input[str] contract_id: Contract ID to be assigned to the Property
        :param pulumi.Input[str] group_id: Group ID to be assigned to the Property
        :param pulumi.Input[str] name: Name to give to the Property (must be unique)
        :param pulumi.Input[str] product_id: Product ID to be assigned to the Property
        :param pulumi.Input[str] rule_format: Specify the rule format version (defaults to latest version available when created)
        :param pulumi.Input[str] rules: Property Rules as JSON
        """
        if contacts is not None:
            warnings.warn("""The setting \"contact\" has been deprecated.""", DeprecationWarning)
            pulumi.log.warn("""contacts is deprecated: The setting \"contact\" has been deprecated.""")
        if contacts is not None:
            pulumi.set(__self__, "contacts", contacts)
        if contract is not None:
            warnings.warn("""The setting \"contract\" has been deprecated.""", DeprecationWarning)
            pulumi.log.warn("""contract is deprecated: The setting \"contract\" has been deprecated.""")
        if contract is not None:
            pulumi.set(__self__, "contract", contract)
        if contract_id is not None:
            pulumi.set(__self__, "contract_id", contract_id)
        if cp_code is not None:
            warnings.warn("""The setting \"cp_code\" has been deprecated.""", DeprecationWarning)
            pulumi.log.warn("""cp_code is deprecated: The setting \"cp_code\" has been deprecated.""")
        if cp_code is not None:
            pulumi.set(__self__, "cp_code", cp_code)
        if group is not None:
            warnings.warn("""The setting \"group\" has been deprecated.""", DeprecationWarning)
            pulumi.log.warn("""group is deprecated: The setting \"group\" has been deprecated.""")
        if group is not None:
            pulumi.set(__self__, "group", group)
        if group_id is not None:
            pulumi.set(__self__, "group_id", group_id)
        if hostnames is not None:
            pulumi.set(__self__, "hostnames", hostnames)
        if is_secure is not None:
            warnings.warn("""The setting \"is_secure\" has been deprecated.""", DeprecationWarning)
            pulumi.log.warn("""is_secure is deprecated: The setting \"is_secure\" has been deprecated.""")
        if is_secure is not None:
            pulumi.set(__self__, "is_secure", is_secure)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if origins is not None:
            warnings.warn("""The setting \"origin\" has been deprecated.""", DeprecationWarning)
            pulumi.log.warn("""origins is deprecated: The setting \"origin\" has been deprecated.""")
        if origins is not None:
            pulumi.set(__self__, "origins", origins)
        if product is not None:
            warnings.warn("""The setting \"product\" has been deprecated.""", DeprecationWarning)
            pulumi.log.warn("""product is deprecated: The setting \"product\" has been deprecated.""")
        if product is not None:
            pulumi.set(__self__, "product", product)
        if product_id is not None:
            pulumi.set(__self__, "product_id", product_id)
        if rule_format is not None:
            pulumi.set(__self__, "rule_format", rule_format)
        if rule_warnings is not None:
            warnings.warn("""Rule warnings will not be set in state anymore""", DeprecationWarning)
            pulumi.log.warn("""rule_warnings is deprecated: Rule warnings will not be set in state anymore""")
        if rule_warnings is not None:
            pulumi.set(__self__, "rule_warnings", rule_warnings)
        if rules is not None:
            pulumi.set(__self__, "rules", rules)
        if variables is not None:
            warnings.warn("""The setting \"variables\" has been deprecated.""", DeprecationWarning)
            pulumi.log.warn("""variables is deprecated: The setting \"variables\" has been deprecated.""")
        if variables is not None:
            pulumi.set(__self__, "variables", variables)

    @property
    @pulumi.getter
    def contacts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "contacts")

    @contacts.setter
    def contacts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "contacts", value)

    @property
    @pulumi.getter
    def contract(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "contract")

    @contract.setter
    def contract(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "contract", value)

    @property
    @pulumi.getter(name="contractId")
    def contract_id(self) -> Optional[pulumi.Input[str]]:
        """
        Contract ID to be assigned to the Property
        """
        return pulumi.get(self, "contract_id")

    @contract_id.setter
    def contract_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "contract_id", value)

    @property
    @pulumi.getter(name="cpCode")
    def cp_code(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "cp_code")

    @cp_code.setter
    def cp_code(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "cp_code", value)

    @property
    @pulumi.getter
    def group(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "group")

    @group.setter
    def group(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "group", value)

    @property
    @pulumi.getter(name="groupId")
    def group_id(self) -> Optional[pulumi.Input[str]]:
        """
        Group ID to be assigned to the Property
        """
        return pulumi.get(self, "group_id")

    @group_id.setter
    def group_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "group_id", value)

    @property
    @pulumi.getter
    def hostnames(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['PropertyHostnameArgs']]]]:
        return pulumi.get(self, "hostnames")

    @hostnames.setter
    def hostnames(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['PropertyHostnameArgs']]]]):
        pulumi.set(self, "hostnames", value)

    @property
    @pulumi.getter(name="isSecure")
    def is_secure(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "is_secure")

    @is_secure.setter
    def is_secure(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "is_secure", value)

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        Name to give to the Property (must be unique)
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter
    def origins(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['PropertyOriginArgs']]]]:
        return pulumi.get(self, "origins")

    @origins.setter
    def origins(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['PropertyOriginArgs']]]]):
        pulumi.set(self, "origins", value)

    @property
    @pulumi.getter
    def product(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "product")

    @product.setter
    def product(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "product", value)

    @property
    @pulumi.getter(name="productId")
    def product_id(self) -> Optional[pulumi.Input[str]]:
        """
        Product ID to be assigned to the Property
        """
        return pulumi.get(self, "product_id")

    @product_id.setter
    def product_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "product_id", value)

    @property
    @pulumi.getter(name="ruleFormat")
    def rule_format(self) -> Optional[pulumi.Input[str]]:
        """
        Specify the rule format version (defaults to latest version available when created)
        """
        return pulumi.get(self, "rule_format")

    @rule_format.setter
    def rule_format(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "rule_format", value)

    @property
    @pulumi.getter(name="ruleWarnings")
    def rule_warnings(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['PropertyRuleWarningArgs']]]]:
        return pulumi.get(self, "rule_warnings")

    @rule_warnings.setter
    def rule_warnings(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['PropertyRuleWarningArgs']]]]):
        pulumi.set(self, "rule_warnings", value)

    @property
    @pulumi.getter
    def rules(self) -> Optional[pulumi.Input[str]]:
        """
        Property Rules as JSON
        """
        return pulumi.get(self, "rules")

    @rules.setter
    def rules(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "rules", value)

    @property
    @pulumi.getter
    def variables(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "variables")

    @variables.setter
    def variables(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "variables", value)


@pulumi.input_type
class _PropertyState:
    def __init__(__self__, *,
                 contacts: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 contract: Optional[pulumi.Input[str]] = None,
                 contract_id: Optional[pulumi.Input[str]] = None,
                 cp_code: Optional[pulumi.Input[str]] = None,
                 group: Optional[pulumi.Input[str]] = None,
                 group_id: Optional[pulumi.Input[str]] = None,
                 hostnames: Optional[pulumi.Input[Sequence[pulumi.Input['PropertyHostnameArgs']]]] = None,
                 is_secure: Optional[pulumi.Input[bool]] = None,
                 latest_version: Optional[pulumi.Input[int]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 origins: Optional[pulumi.Input[Sequence[pulumi.Input['PropertyOriginArgs']]]] = None,
                 product: Optional[pulumi.Input[str]] = None,
                 product_id: Optional[pulumi.Input[str]] = None,
                 production_version: Optional[pulumi.Input[int]] = None,
                 read_version: Optional[pulumi.Input[int]] = None,
                 rule_errors: Optional[pulumi.Input[Sequence[pulumi.Input['PropertyRuleErrorArgs']]]] = None,
                 rule_format: Optional[pulumi.Input[str]] = None,
                 rule_warnings: Optional[pulumi.Input[Sequence[pulumi.Input['PropertyRuleWarningArgs']]]] = None,
                 rules: Optional[pulumi.Input[str]] = None,
                 staging_version: Optional[pulumi.Input[int]] = None,
                 variables: Optional[pulumi.Input[str]] = None):
        """
        Input properties used for looking up and filtering Property resources.
        :param pulumi.Input[str] contract_id: Contract ID to be assigned to the Property
        :param pulumi.Input[str] group_id: Group ID to be assigned to the Property
        :param pulumi.Input[int] latest_version: Property's current latest version number
        :param pulumi.Input[str] name: Name to give to the Property (must be unique)
        :param pulumi.Input[str] product_id: Product ID to be assigned to the Property
        :param pulumi.Input[int] production_version: Property's version currently activated in production (zero when not active in production)
        :param pulumi.Input[int] read_version: Required property's version to be read
        :param pulumi.Input[str] rule_format: Specify the rule format version (defaults to latest version available when created)
        :param pulumi.Input[str] rules: Property Rules as JSON
        :param pulumi.Input[int] staging_version: Property's version currently activated in staging (zero when not active in staging)
        """
        if contacts is not None:
            warnings.warn("""The setting \"contact\" has been deprecated.""", DeprecationWarning)
            pulumi.log.warn("""contacts is deprecated: The setting \"contact\" has been deprecated.""")
        if contacts is not None:
            pulumi.set(__self__, "contacts", contacts)
        if contract is not None:
            warnings.warn("""The setting \"contract\" has been deprecated.""", DeprecationWarning)
            pulumi.log.warn("""contract is deprecated: The setting \"contract\" has been deprecated.""")
        if contract is not None:
            pulumi.set(__self__, "contract", contract)
        if contract_id is not None:
            pulumi.set(__self__, "contract_id", contract_id)
        if cp_code is not None:
            warnings.warn("""The setting \"cp_code\" has been deprecated.""", DeprecationWarning)
            pulumi.log.warn("""cp_code is deprecated: The setting \"cp_code\" has been deprecated.""")
        if cp_code is not None:
            pulumi.set(__self__, "cp_code", cp_code)
        if group is not None:
            warnings.warn("""The setting \"group\" has been deprecated.""", DeprecationWarning)
            pulumi.log.warn("""group is deprecated: The setting \"group\" has been deprecated.""")
        if group is not None:
            pulumi.set(__self__, "group", group)
        if group_id is not None:
            pulumi.set(__self__, "group_id", group_id)
        if hostnames is not None:
            pulumi.set(__self__, "hostnames", hostnames)
        if is_secure is not None:
            warnings.warn("""The setting \"is_secure\" has been deprecated.""", DeprecationWarning)
            pulumi.log.warn("""is_secure is deprecated: The setting \"is_secure\" has been deprecated.""")
        if is_secure is not None:
            pulumi.set(__self__, "is_secure", is_secure)
        if latest_version is not None:
            pulumi.set(__self__, "latest_version", latest_version)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if origins is not None:
            warnings.warn("""The setting \"origin\" has been deprecated.""", DeprecationWarning)
            pulumi.log.warn("""origins is deprecated: The setting \"origin\" has been deprecated.""")
        if origins is not None:
            pulumi.set(__self__, "origins", origins)
        if product is not None:
            warnings.warn("""The setting \"product\" has been deprecated.""", DeprecationWarning)
            pulumi.log.warn("""product is deprecated: The setting \"product\" has been deprecated.""")
        if product is not None:
            pulumi.set(__self__, "product", product)
        if product_id is not None:
            pulumi.set(__self__, "product_id", product_id)
        if production_version is not None:
            pulumi.set(__self__, "production_version", production_version)
        if read_version is not None:
            pulumi.set(__self__, "read_version", read_version)
        if rule_errors is not None:
            pulumi.set(__self__, "rule_errors", rule_errors)
        if rule_format is not None:
            pulumi.set(__self__, "rule_format", rule_format)
        if rule_warnings is not None:
            warnings.warn("""Rule warnings will not be set in state anymore""", DeprecationWarning)
            pulumi.log.warn("""rule_warnings is deprecated: Rule warnings will not be set in state anymore""")
        if rule_warnings is not None:
            pulumi.set(__self__, "rule_warnings", rule_warnings)
        if rules is not None:
            pulumi.set(__self__, "rules", rules)
        if staging_version is not None:
            pulumi.set(__self__, "staging_version", staging_version)
        if variables is not None:
            warnings.warn("""The setting \"variables\" has been deprecated.""", DeprecationWarning)
            pulumi.log.warn("""variables is deprecated: The setting \"variables\" has been deprecated.""")
        if variables is not None:
            pulumi.set(__self__, "variables", variables)

    @property
    @pulumi.getter
    def contacts(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "contacts")

    @contacts.setter
    def contacts(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "contacts", value)

    @property
    @pulumi.getter
    def contract(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "contract")

    @contract.setter
    def contract(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "contract", value)

    @property
    @pulumi.getter(name="contractId")
    def contract_id(self) -> Optional[pulumi.Input[str]]:
        """
        Contract ID to be assigned to the Property
        """
        return pulumi.get(self, "contract_id")

    @contract_id.setter
    def contract_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "contract_id", value)

    @property
    @pulumi.getter(name="cpCode")
    def cp_code(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "cp_code")

    @cp_code.setter
    def cp_code(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "cp_code", value)

    @property
    @pulumi.getter
    def group(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "group")

    @group.setter
    def group(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "group", value)

    @property
    @pulumi.getter(name="groupId")
    def group_id(self) -> Optional[pulumi.Input[str]]:
        """
        Group ID to be assigned to the Property
        """
        return pulumi.get(self, "group_id")

    @group_id.setter
    def group_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "group_id", value)

    @property
    @pulumi.getter
    def hostnames(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['PropertyHostnameArgs']]]]:
        return pulumi.get(self, "hostnames")

    @hostnames.setter
    def hostnames(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['PropertyHostnameArgs']]]]):
        pulumi.set(self, "hostnames", value)

    @property
    @pulumi.getter(name="isSecure")
    def is_secure(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "is_secure")

    @is_secure.setter
    def is_secure(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "is_secure", value)

    @property
    @pulumi.getter(name="latestVersion")
    def latest_version(self) -> Optional[pulumi.Input[int]]:
        """
        Property's current latest version number
        """
        return pulumi.get(self, "latest_version")

    @latest_version.setter
    def latest_version(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "latest_version", value)

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        Name to give to the Property (must be unique)
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter
    def origins(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['PropertyOriginArgs']]]]:
        return pulumi.get(self, "origins")

    @origins.setter
    def origins(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['PropertyOriginArgs']]]]):
        pulumi.set(self, "origins", value)

    @property
    @pulumi.getter
    def product(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "product")

    @product.setter
    def product(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "product", value)

    @property
    @pulumi.getter(name="productId")
    def product_id(self) -> Optional[pulumi.Input[str]]:
        """
        Product ID to be assigned to the Property
        """
        return pulumi.get(self, "product_id")

    @product_id.setter
    def product_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "product_id", value)

    @property
    @pulumi.getter(name="productionVersion")
    def production_version(self) -> Optional[pulumi.Input[int]]:
        """
        Property's version currently activated in production (zero when not active in production)
        """
        return pulumi.get(self, "production_version")

    @production_version.setter
    def production_version(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "production_version", value)

    @property
    @pulumi.getter(name="readVersion")
    def read_version(self) -> Optional[pulumi.Input[int]]:
        """
        Required property's version to be read
        """
        return pulumi.get(self, "read_version")

    @read_version.setter
    def read_version(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "read_version", value)

    @property
    @pulumi.getter(name="ruleErrors")
    def rule_errors(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['PropertyRuleErrorArgs']]]]:
        return pulumi.get(self, "rule_errors")

    @rule_errors.setter
    def rule_errors(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['PropertyRuleErrorArgs']]]]):
        pulumi.set(self, "rule_errors", value)

    @property
    @pulumi.getter(name="ruleFormat")
    def rule_format(self) -> Optional[pulumi.Input[str]]:
        """
        Specify the rule format version (defaults to latest version available when created)
        """
        return pulumi.get(self, "rule_format")

    @rule_format.setter
    def rule_format(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "rule_format", value)

    @property
    @pulumi.getter(name="ruleWarnings")
    def rule_warnings(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['PropertyRuleWarningArgs']]]]:
        return pulumi.get(self, "rule_warnings")

    @rule_warnings.setter
    def rule_warnings(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['PropertyRuleWarningArgs']]]]):
        pulumi.set(self, "rule_warnings", value)

    @property
    @pulumi.getter
    def rules(self) -> Optional[pulumi.Input[str]]:
        """
        Property Rules as JSON
        """
        return pulumi.get(self, "rules")

    @rules.setter
    def rules(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "rules", value)

    @property
    @pulumi.getter(name="stagingVersion")
    def staging_version(self) -> Optional[pulumi.Input[int]]:
        """
        Property's version currently activated in staging (zero when not active in staging)
        """
        return pulumi.get(self, "staging_version")

    @staging_version.setter
    def staging_version(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "staging_version", value)

    @property
    @pulumi.getter
    def variables(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "variables")

    @variables.setter
    def variables(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "variables", value)


class Property(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 contacts: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 contract: Optional[pulumi.Input[str]] = None,
                 contract_id: Optional[pulumi.Input[str]] = None,
                 cp_code: Optional[pulumi.Input[str]] = None,
                 group: Optional[pulumi.Input[str]] = None,
                 group_id: Optional[pulumi.Input[str]] = None,
                 hostnames: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['PropertyHostnameArgs']]]]] = None,
                 is_secure: Optional[pulumi.Input[bool]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 origins: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['PropertyOriginArgs']]]]] = None,
                 product: Optional[pulumi.Input[str]] = None,
                 product_id: Optional[pulumi.Input[str]] = None,
                 rule_format: Optional[pulumi.Input[str]] = None,
                 rule_warnings: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['PropertyRuleWarningArgs']]]]] = None,
                 rules: Optional[pulumi.Input[str]] = None,
                 variables: Optional[pulumi.Input[str]] = None,
                 __props__=None):
        """
        The `Property` resource represents an Akamai property configuration.
        This resource lets you to create, update, and activate properties on the
        Akamai platform.

        Akamai’s edge network caches your web assets near to servers that request them.
        A property provides the main way to control how edge servers respond to various
        kinds of requests for those assets. Properties apply rules to a set of hostnames,
        and you can only apply one property at a time to any given hostname. Each property
        is assigned to a product, which determines which behaviors you can use. Each
        property’s default rule needs a valid content provider (CP) code assigned to bill
        and report for the service.

        > **Note** In version 0.10 and earlier of this resource, it also controlled content provider (CP) codes, origin settings, rules, and hostname associations. Starting with version 1.0.0, this logic is broken out into individual resources.

        ## Example Usage

        Basic usage:

        ```python
        import pulumi
        import pulumi_akamai as akamai

        example = akamai.Property("example",
            product_id="prd_SPM",
            contract_id=var["contractid"],
            group_id=var["groupid"],
            hostnames=[
                akamai.PropertyHostnameArgs(
                    cname_from="example.com",
                    cname_to="example.com.edgekey.net",
                    cert_provisioning_type="DEFAULT",
                ),
                akamai.PropertyHostnameArgs(
                    cname_from="www.example.com",
                    cname_to="example.com.edgesuite.net",
                    cert_provisioning_type="CPS_MANAGED",
                ),
            ],
            rule_format="v2020-03-04",
            rules=data["akamai_property_rules_template"]["example"]["json"])
        ```
        ## Argument reference

        This resource supports these arguments:

        * `name` - (Required) The property name.
        * `contract_id` - (Required) A contract's unique ID, including the `ctr_` prefix.
        * `group_id` - (Required) A group's unique ID, including the `grp_` prefix.
        * `product_id` - (Required to create, otherwise Optional) A product's unique ID, including the `prd_` prefix.
        * `hostnames` - (Optional) A mapping of public hostnames to edge hostnames. See the `getPropertyHostnames` data source for details on the necessary DNS configuration.
          
            > **Note** Starting from version 1.5.0, the `hostnames` argument supports a new block type. If you created your code and state in version 1.4 or earlier, you need to manually update your configuration and replace the previous input for `hostnames` with the new syntax. This error indicates that the state is outdated: `Error: missing expected [`. To fix it, remove `Property` from the state and import it again.
          
          Requires these additional arguments:
          
              * `cname_from` - (Required) A string containing the original origin's hostname. For example, `"example.org"`.
              * `cname_to` - (Required) A string containing the hostname for edge content. For example,  `"example.org.edgesuite.net"`.
              * `cert_provisioning_type` - (Required) The certificate’s provisioning type, either the default `CPS_MANAGED` type for the custom certificates you provision with the [Certificate Provisioning System (CPS)](https://learn.akamai.com/en-us/products/core_features/certificate_provisioning_system.html), or `DEFAULT` for certificates provisioned automatically.
        * `rules` - (Optional) A JSON-encoded rule tree for a given property. For this argument, you need to enter a complete JSON rule tree, unless you set up a series of JSON templates. See the `getPropertyRules` data source.
        * `rule_format` - (Optional) The [rule format](https://developer.akamai.com/api/core_features/property_manager/v1.html#getruleformats) to use. Uses the latest rule format by default.
        * `contract` - (Deprecated) Replaced by `contract_id`. Maintained for legacy purposes.
        * `group` - (Deprecated) Replaced by `group_id`. Maintained for legacy purposes.
        * `product` - (Deprecated) Optional argument replaced by the now required `product_id`. Maintained for legacy purposes.

        ## Attribute reference

        The resource returns these attributes:

        * `rule_errors` - The contents of `errors` field returned by the API. For more information see [Errors](https://developer.akamai.com/api/core_features/property_manager/v1.html#errors) in the PAPI documentation.
        * `latest_version` - The version of the property you've created or updated rules for. The Akamai Provider always uses the latest version or creates a new version if latest is not editable.
        * `production_version` - The current version of the property active on the Akamai production network.
        * `staging_version` - The current version of the property active on the Akamai staging network.

        ### Deprecated attributes

        * `rule_warnings` - (Deprecated) Rule warnings are no longer maintained in the state file. You can still see the warnings in logs.

        ## Import

        Basic Usagehcl resource "akamai_property" "example" {

        # (resource arguments)

         } You can import the latest Akamai property version by using either the `property_id` or a comma-delimited string of the property, contract, and group IDs. You'll need to enter the string of IDs if the property belongs to multiple groups or contracts. If using the string of IDs, you need to enter them in this order`property_id,contract_id,group_id` To import a specific property version, pass additional parameters, either* `LATEST` to import the latest version of the property, regardless of whether it's active or not. This works the same as providing just the `property_id` or a string of the property, contract, and group IDs, which is the default behavior. * `PRODUCTION`, `PROD`, or `P` to import the latest version activated on the production environment. * `STAGING`, `STAGE`, `STAG`, or `S` to import the latest version activated on the staging environment. * Version number or version number with the `ver_` prefix to import a specific property version. For example `3` and `ver_3` correspond to the same version number. Here are some examples for the latest property version

        ```sh
         $ pulumi import akamai:index/property:Property example prp_123
        ```

         Or

        ```sh
         $ pulumi import akamai:index/property:Property example prp_123,ctr_1-AB123,grp_123
        ```

         Here are some examples for the latest active property version on the production network

        ```sh
         $ pulumi import akamai:index/property:Property example prp_123,P
        ```

         Or

        ```sh
         $ pulumi import akamai:index/property:Property example prp_123,ctr_1-AB123,grp_123,PROD
        ```

         Here are some examples for the specific property version

        ```sh
         $ pulumi import akamai:index/property:Property example prp_123,3
        ```

         Or

        ```sh
         $ pulumi import akamai:index/property:Property example prp_123,ctr_1-AB123,grp_123,ver_3
        ```

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[str] contract_id: Contract ID to be assigned to the Property
        :param pulumi.Input[str] group_id: Group ID to be assigned to the Property
        :param pulumi.Input[str] name: Name to give to the Property (must be unique)
        :param pulumi.Input[str] product_id: Product ID to be assigned to the Property
        :param pulumi.Input[str] rule_format: Specify the rule format version (defaults to latest version available when created)
        :param pulumi.Input[str] rules: Property Rules as JSON
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: Optional[PropertyArgs] = None,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        The `Property` resource represents an Akamai property configuration.
        This resource lets you to create, update, and activate properties on the
        Akamai platform.

        Akamai’s edge network caches your web assets near to servers that request them.
        A property provides the main way to control how edge servers respond to various
        kinds of requests for those assets. Properties apply rules to a set of hostnames,
        and you can only apply one property at a time to any given hostname. Each property
        is assigned to a product, which determines which behaviors you can use. Each
        property’s default rule needs a valid content provider (CP) code assigned to bill
        and report for the service.

        > **Note** In version 0.10 and earlier of this resource, it also controlled content provider (CP) codes, origin settings, rules, and hostname associations. Starting with version 1.0.0, this logic is broken out into individual resources.

        ## Example Usage

        Basic usage:

        ```python
        import pulumi
        import pulumi_akamai as akamai

        example = akamai.Property("example",
            product_id="prd_SPM",
            contract_id=var["contractid"],
            group_id=var["groupid"],
            hostnames=[
                akamai.PropertyHostnameArgs(
                    cname_from="example.com",
                    cname_to="example.com.edgekey.net",
                    cert_provisioning_type="DEFAULT",
                ),
                akamai.PropertyHostnameArgs(
                    cname_from="www.example.com",
                    cname_to="example.com.edgesuite.net",
                    cert_provisioning_type="CPS_MANAGED",
                ),
            ],
            rule_format="v2020-03-04",
            rules=data["akamai_property_rules_template"]["example"]["json"])
        ```
        ## Argument reference

        This resource supports these arguments:

        * `name` - (Required) The property name.
        * `contract_id` - (Required) A contract's unique ID, including the `ctr_` prefix.
        * `group_id` - (Required) A group's unique ID, including the `grp_` prefix.
        * `product_id` - (Required to create, otherwise Optional) A product's unique ID, including the `prd_` prefix.
        * `hostnames` - (Optional) A mapping of public hostnames to edge hostnames. See the `getPropertyHostnames` data source for details on the necessary DNS configuration.
          
            > **Note** Starting from version 1.5.0, the `hostnames` argument supports a new block type. If you created your code and state in version 1.4 or earlier, you need to manually update your configuration and replace the previous input for `hostnames` with the new syntax. This error indicates that the state is outdated: `Error: missing expected [`. To fix it, remove `Property` from the state and import it again.
          
          Requires these additional arguments:
          
              * `cname_from` - (Required) A string containing the original origin's hostname. For example, `"example.org"`.
              * `cname_to` - (Required) A string containing the hostname for edge content. For example,  `"example.org.edgesuite.net"`.
              * `cert_provisioning_type` - (Required) The certificate’s provisioning type, either the default `CPS_MANAGED` type for the custom certificates you provision with the [Certificate Provisioning System (CPS)](https://learn.akamai.com/en-us/products/core_features/certificate_provisioning_system.html), or `DEFAULT` for certificates provisioned automatically.
        * `rules` - (Optional) A JSON-encoded rule tree for a given property. For this argument, you need to enter a complete JSON rule tree, unless you set up a series of JSON templates. See the `getPropertyRules` data source.
        * `rule_format` - (Optional) The [rule format](https://developer.akamai.com/api/core_features/property_manager/v1.html#getruleformats) to use. Uses the latest rule format by default.
        * `contract` - (Deprecated) Replaced by `contract_id`. Maintained for legacy purposes.
        * `group` - (Deprecated) Replaced by `group_id`. Maintained for legacy purposes.
        * `product` - (Deprecated) Optional argument replaced by the now required `product_id`. Maintained for legacy purposes.

        ## Attribute reference

        The resource returns these attributes:

        * `rule_errors` - The contents of `errors` field returned by the API. For more information see [Errors](https://developer.akamai.com/api/core_features/property_manager/v1.html#errors) in the PAPI documentation.
        * `latest_version` - The version of the property you've created or updated rules for. The Akamai Provider always uses the latest version or creates a new version if latest is not editable.
        * `production_version` - The current version of the property active on the Akamai production network.
        * `staging_version` - The current version of the property active on the Akamai staging network.

        ### Deprecated attributes

        * `rule_warnings` - (Deprecated) Rule warnings are no longer maintained in the state file. You can still see the warnings in logs.

        ## Import

        Basic Usagehcl resource "akamai_property" "example" {

        # (resource arguments)

         } You can import the latest Akamai property version by using either the `property_id` or a comma-delimited string of the property, contract, and group IDs. You'll need to enter the string of IDs if the property belongs to multiple groups or contracts. If using the string of IDs, you need to enter them in this order`property_id,contract_id,group_id` To import a specific property version, pass additional parameters, either* `LATEST` to import the latest version of the property, regardless of whether it's active or not. This works the same as providing just the `property_id` or a string of the property, contract, and group IDs, which is the default behavior. * `PRODUCTION`, `PROD`, or `P` to import the latest version activated on the production environment. * `STAGING`, `STAGE`, `STAG`, or `S` to import the latest version activated on the staging environment. * Version number or version number with the `ver_` prefix to import a specific property version. For example `3` and `ver_3` correspond to the same version number. Here are some examples for the latest property version

        ```sh
         $ pulumi import akamai:index/property:Property example prp_123
        ```

         Or

        ```sh
         $ pulumi import akamai:index/property:Property example prp_123,ctr_1-AB123,grp_123
        ```

         Here are some examples for the latest active property version on the production network

        ```sh
         $ pulumi import akamai:index/property:Property example prp_123,P
        ```

         Or

        ```sh
         $ pulumi import akamai:index/property:Property example prp_123,ctr_1-AB123,grp_123,PROD
        ```

         Here are some examples for the specific property version

        ```sh
         $ pulumi import akamai:index/property:Property example prp_123,3
        ```

         Or

        ```sh
         $ pulumi import akamai:index/property:Property example prp_123,ctr_1-AB123,grp_123,ver_3
        ```

        :param str resource_name: The name of the resource.
        :param PropertyArgs args: The arguments to use to populate this resource's properties.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    def __init__(__self__, resource_name: str, *args, **kwargs):
        resource_args, opts = _utilities.get_resource_args_opts(PropertyArgs, pulumi.ResourceOptions, *args, **kwargs)
        if resource_args is not None:
            __self__._internal_init(resource_name, opts, **resource_args.__dict__)
        else:
            __self__._internal_init(resource_name, *args, **kwargs)

    def _internal_init(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 contacts: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 contract: Optional[pulumi.Input[str]] = None,
                 contract_id: Optional[pulumi.Input[str]] = None,
                 cp_code: Optional[pulumi.Input[str]] = None,
                 group: Optional[pulumi.Input[str]] = None,
                 group_id: Optional[pulumi.Input[str]] = None,
                 hostnames: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['PropertyHostnameArgs']]]]] = None,
                 is_secure: Optional[pulumi.Input[bool]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 origins: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['PropertyOriginArgs']]]]] = None,
                 product: Optional[pulumi.Input[str]] = None,
                 product_id: Optional[pulumi.Input[str]] = None,
                 rule_format: Optional[pulumi.Input[str]] = None,
                 rule_warnings: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['PropertyRuleWarningArgs']]]]] = None,
                 rules: Optional[pulumi.Input[str]] = None,
                 variables: Optional[pulumi.Input[str]] = None,
                 __props__=None):
        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__ = PropertyArgs.__new__(PropertyArgs)

            if contacts is not None and not opts.urn:
                warnings.warn("""The setting \"contact\" has been deprecated.""", DeprecationWarning)
                pulumi.log.warn("""contacts is deprecated: The setting \"contact\" has been deprecated.""")
            __props__.__dict__["contacts"] = contacts
            if contract is not None and not opts.urn:
                warnings.warn("""The setting \"contract\" has been deprecated.""", DeprecationWarning)
                pulumi.log.warn("""contract is deprecated: The setting \"contract\" has been deprecated.""")
            __props__.__dict__["contract"] = contract
            __props__.__dict__["contract_id"] = contract_id
            if cp_code is not None and not opts.urn:
                warnings.warn("""The setting \"cp_code\" has been deprecated.""", DeprecationWarning)
                pulumi.log.warn("""cp_code is deprecated: The setting \"cp_code\" has been deprecated.""")
            __props__.__dict__["cp_code"] = cp_code
            if group is not None and not opts.urn:
                warnings.warn("""The setting \"group\" has been deprecated.""", DeprecationWarning)
                pulumi.log.warn("""group is deprecated: The setting \"group\" has been deprecated.""")
            __props__.__dict__["group"] = group
            __props__.__dict__["group_id"] = group_id
            __props__.__dict__["hostnames"] = hostnames
            if is_secure is not None and not opts.urn:
                warnings.warn("""The setting \"is_secure\" has been deprecated.""", DeprecationWarning)
                pulumi.log.warn("""is_secure is deprecated: The setting \"is_secure\" has been deprecated.""")
            __props__.__dict__["is_secure"] = is_secure
            __props__.__dict__["name"] = name
            if origins is not None and not opts.urn:
                warnings.warn("""The setting \"origin\" has been deprecated.""", DeprecationWarning)
                pulumi.log.warn("""origins is deprecated: The setting \"origin\" has been deprecated.""")
            __props__.__dict__["origins"] = origins
            if product is not None and not opts.urn:
                warnings.warn("""The setting \"product\" has been deprecated.""", DeprecationWarning)
                pulumi.log.warn("""product is deprecated: The setting \"product\" has been deprecated.""")
            __props__.__dict__["product"] = product
            __props__.__dict__["product_id"] = product_id
            __props__.__dict__["rule_format"] = rule_format
            if rule_warnings is not None and not opts.urn:
                warnings.warn("""Rule warnings will not be set in state anymore""", DeprecationWarning)
                pulumi.log.warn("""rule_warnings is deprecated: Rule warnings will not be set in state anymore""")
            __props__.__dict__["rule_warnings"] = rule_warnings
            __props__.__dict__["rules"] = rules
            if variables is not None and not opts.urn:
                warnings.warn("""The setting \"variables\" has been deprecated.""", DeprecationWarning)
                pulumi.log.warn("""variables is deprecated: The setting \"variables\" has been deprecated.""")
            __props__.__dict__["variables"] = variables
            __props__.__dict__["latest_version"] = None
            __props__.__dict__["production_version"] = None
            __props__.__dict__["read_version"] = None
            __props__.__dict__["rule_errors"] = None
            __props__.__dict__["staging_version"] = None
        alias_opts = pulumi.ResourceOptions(aliases=[pulumi.Alias(type_="akamai:properties/property:Property")])
        opts = pulumi.ResourceOptions.merge(opts, alias_opts)
        super(Property, __self__).__init__(
            'akamai:index/property:Property',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            contacts: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            contract: Optional[pulumi.Input[str]] = None,
            contract_id: Optional[pulumi.Input[str]] = None,
            cp_code: Optional[pulumi.Input[str]] = None,
            group: Optional[pulumi.Input[str]] = None,
            group_id: Optional[pulumi.Input[str]] = None,
            hostnames: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['PropertyHostnameArgs']]]]] = None,
            is_secure: Optional[pulumi.Input[bool]] = None,
            latest_version: Optional[pulumi.Input[int]] = None,
            name: Optional[pulumi.Input[str]] = None,
            origins: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['PropertyOriginArgs']]]]] = None,
            product: Optional[pulumi.Input[str]] = None,
            product_id: Optional[pulumi.Input[str]] = None,
            production_version: Optional[pulumi.Input[int]] = None,
            read_version: Optional[pulumi.Input[int]] = None,
            rule_errors: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['PropertyRuleErrorArgs']]]]] = None,
            rule_format: Optional[pulumi.Input[str]] = None,
            rule_warnings: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['PropertyRuleWarningArgs']]]]] = None,
            rules: Optional[pulumi.Input[str]] = None,
            staging_version: Optional[pulumi.Input[int]] = None,
            variables: Optional[pulumi.Input[str]] = None) -> 'Property':
        """
        Get an existing Property 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.
        :param pulumi.Input[str] contract_id: Contract ID to be assigned to the Property
        :param pulumi.Input[str] group_id: Group ID to be assigned to the Property
        :param pulumi.Input[int] latest_version: Property's current latest version number
        :param pulumi.Input[str] name: Name to give to the Property (must be unique)
        :param pulumi.Input[str] product_id: Product ID to be assigned to the Property
        :param pulumi.Input[int] production_version: Property's version currently activated in production (zero when not active in production)
        :param pulumi.Input[int] read_version: Required property's version to be read
        :param pulumi.Input[str] rule_format: Specify the rule format version (defaults to latest version available when created)
        :param pulumi.Input[str] rules: Property Rules as JSON
        :param pulumi.Input[int] staging_version: Property's version currently activated in staging (zero when not active in staging)
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _PropertyState.__new__(_PropertyState)

        __props__.__dict__["contacts"] = contacts
        __props__.__dict__["contract"] = contract
        __props__.__dict__["contract_id"] = contract_id
        __props__.__dict__["cp_code"] = cp_code
        __props__.__dict__["group"] = group
        __props__.__dict__["group_id"] = group_id
        __props__.__dict__["hostnames"] = hostnames
        __props__.__dict__["is_secure"] = is_secure
        __props__.__dict__["latest_version"] = latest_version
        __props__.__dict__["name"] = name
        __props__.__dict__["origins"] = origins
        __props__.__dict__["product"] = product
        __props__.__dict__["product_id"] = product_id
        __props__.__dict__["production_version"] = production_version
        __props__.__dict__["read_version"] = read_version
        __props__.__dict__["rule_errors"] = rule_errors
        __props__.__dict__["rule_format"] = rule_format
        __props__.__dict__["rule_warnings"] = rule_warnings
        __props__.__dict__["rules"] = rules
        __props__.__dict__["staging_version"] = staging_version
        __props__.__dict__["variables"] = variables
        return Property(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter
    def contacts(self) -> pulumi.Output[Optional[Sequence[str]]]:
        return pulumi.get(self, "contacts")

    @property
    @pulumi.getter
    def contract(self) -> pulumi.Output[str]:
        return pulumi.get(self, "contract")

    @property
    @pulumi.getter(name="contractId")
    def contract_id(self) -> pulumi.Output[str]:
        """
        Contract ID to be assigned to the Property
        """
        return pulumi.get(self, "contract_id")

    @property
    @pulumi.getter(name="cpCode")
    def cp_code(self) -> pulumi.Output[Optional[str]]:
        return pulumi.get(self, "cp_code")

    @property
    @pulumi.getter
    def group(self) -> pulumi.Output[str]:
        return pulumi.get(self, "group")

    @property
    @pulumi.getter(name="groupId")
    def group_id(self) -> pulumi.Output[str]:
        """
        Group ID to be assigned to the Property
        """
        return pulumi.get(self, "group_id")

    @property
    @pulumi.getter
    def hostnames(self) -> pulumi.Output[Optional[Sequence['outputs.PropertyHostname']]]:
        return pulumi.get(self, "hostnames")

    @property
    @pulumi.getter(name="isSecure")
    def is_secure(self) -> pulumi.Output[Optional[bool]]:
        return pulumi.get(self, "is_secure")

    @property
    @pulumi.getter(name="latestVersion")
    def latest_version(self) -> pulumi.Output[int]:
        """
        Property's current latest version number
        """
        return pulumi.get(self, "latest_version")

    @property
    @pulumi.getter
    def name(self) -> pulumi.Output[str]:
        """
        Name to give to the Property (must be unique)
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def origins(self) -> pulumi.Output[Optional[Sequence['outputs.PropertyOrigin']]]:
        return pulumi.get(self, "origins")

    @property
    @pulumi.getter
    def product(self) -> pulumi.Output[str]:
        return pulumi.get(self, "product")

    @property
    @pulumi.getter(name="productId")
    def product_id(self) -> pulumi.Output[str]:
        """
        Product ID to be assigned to the Property
        """
        return pulumi.get(self, "product_id")

    @property
    @pulumi.getter(name="productionVersion")
    def production_version(self) -> pulumi.Output[int]:
        """
        Property's version currently activated in production (zero when not active in production)
        """
        return pulumi.get(self, "production_version")

    @property
    @pulumi.getter(name="readVersion")
    def read_version(self) -> pulumi.Output[int]:
        """
        Required property's version to be read
        """
        return pulumi.get(self, "read_version")

    @property
    @pulumi.getter(name="ruleErrors")
    def rule_errors(self) -> pulumi.Output[Sequence['outputs.PropertyRuleError']]:
        return pulumi.get(self, "rule_errors")

    @property
    @pulumi.getter(name="ruleFormat")
    def rule_format(self) -> pulumi.Output[str]:
        """
        Specify the rule format version (defaults to latest version available when created)
        """
        return pulumi.get(self, "rule_format")

    @property
    @pulumi.getter(name="ruleWarnings")
    def rule_warnings(self) -> pulumi.Output[Sequence['outputs.PropertyRuleWarning']]:
        return pulumi.get(self, "rule_warnings")

    @property
    @pulumi.getter
    def rules(self) -> pulumi.Output[str]:
        """
        Property Rules as JSON
        """
        return pulumi.get(self, "rules")

    @property
    @pulumi.getter(name="stagingVersion")
    def staging_version(self) -> pulumi.Output[int]:
        """
        Property's version currently activated in staging (zero when not active in staging)
        """
        return pulumi.get(self, "staging_version")

    @property
    @pulumi.getter
    def variables(self) -> pulumi.Output[Optional[str]]:
        return pulumi.get(self, "variables")

