pulumi-snowflake 0.59.0a1726827563__py3-none-any.whl → 0.60.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pulumi-snowflake might be problematic. Click here for more details.

Files changed (132) hide show
  1. pulumi_snowflake/__init__.py +36 -0
  2. pulumi_snowflake/_inputs.py +20444 -3310
  3. pulumi_snowflake/_utilities.py +1 -1
  4. pulumi_snowflake/account.py +5 -0
  5. pulumi_snowflake/account_parameter.py +5 -0
  6. pulumi_snowflake/account_password_policy_attachment.py +5 -0
  7. pulumi_snowflake/account_role.py +5 -0
  8. pulumi_snowflake/alert.py +5 -0
  9. pulumi_snowflake/api_authentication_integration_with_authorization_code_grant.py +5 -0
  10. pulumi_snowflake/api_authentication_integration_with_client_credentials.py +5 -0
  11. pulumi_snowflake/api_authentication_integration_with_jwt_bearer.py +5 -0
  12. pulumi_snowflake/api_integration.py +5 -0
  13. pulumi_snowflake/config/__init__.pyi +5 -0
  14. pulumi_snowflake/config/outputs.py +5 -0
  15. pulumi_snowflake/config/vars.py +5 -0
  16. pulumi_snowflake/cortex_search_service.py +5 -0
  17. pulumi_snowflake/database.py +5 -0
  18. pulumi_snowflake/database_old.py +5 -0
  19. pulumi_snowflake/database_role.py +5 -0
  20. pulumi_snowflake/dynamic_table.py +5 -0
  21. pulumi_snowflake/email_notification_integration.py +5 -0
  22. pulumi_snowflake/external_function.py +5 -0
  23. pulumi_snowflake/external_oauth_integration.py +5 -0
  24. pulumi_snowflake/external_table.py +5 -0
  25. pulumi_snowflake/failover_group.py +5 -0
  26. pulumi_snowflake/file_format.py +5 -0
  27. pulumi_snowflake/function.py +5 -0
  28. pulumi_snowflake/get_accounts.py +13 -4
  29. pulumi_snowflake/get_alerts.py +17 -4
  30. pulumi_snowflake/get_cortex_search_services.py +19 -4
  31. pulumi_snowflake/get_current_account.py +13 -4
  32. pulumi_snowflake/get_current_role.py +11 -4
  33. pulumi_snowflake/get_database.py +20 -4
  34. pulumi_snowflake/get_database_role.py +16 -4
  35. pulumi_snowflake/get_database_roles.py +21 -4
  36. pulumi_snowflake/get_databases.py +21 -4
  37. pulumi_snowflake/get_dynamic_tables.py +19 -4
  38. pulumi_snowflake/get_external_functions.py +15 -4
  39. pulumi_snowflake/get_external_tables.py +15 -4
  40. pulumi_snowflake/get_failover_groups.py +13 -4
  41. pulumi_snowflake/get_file_formats.py +15 -4
  42. pulumi_snowflake/get_functions.py +15 -4
  43. pulumi_snowflake/get_grants.py +21 -4
  44. pulumi_snowflake/get_masking_policies.py +92 -52
  45. pulumi_snowflake/get_materialized_views.py +15 -4
  46. pulumi_snowflake/get_network_policies.py +15 -4
  47. pulumi_snowflake/get_parameters.py +21 -4
  48. pulumi_snowflake/get_pipes.py +15 -4
  49. pulumi_snowflake/get_procedures.py +15 -4
  50. pulumi_snowflake/get_resource_monitors.py +41 -20
  51. pulumi_snowflake/get_role.py +13 -4
  52. pulumi_snowflake/get_roles.py +15 -4
  53. pulumi_snowflake/get_row_access_policies.py +92 -52
  54. pulumi_snowflake/get_schemas.py +23 -4
  55. pulumi_snowflake/get_security_integrations.py +15 -4
  56. pulumi_snowflake/get_sequences.py +15 -4
  57. pulumi_snowflake/get_shares.py +13 -4
  58. pulumi_snowflake/get_stages.py +15 -4
  59. pulumi_snowflake/get_storage_integrations.py +11 -4
  60. pulumi_snowflake/get_streamlits.py +19 -4
  61. pulumi_snowflake/get_streams.py +15 -4
  62. pulumi_snowflake/get_system_generate_scim_access_token.py +13 -4
  63. pulumi_snowflake/get_system_get_aws_sns_iam_policy.py +13 -4
  64. pulumi_snowflake/get_system_get_private_link_config.py +19 -4
  65. pulumi_snowflake/get_system_get_snowflake_platform_info.py +12 -4
  66. pulumi_snowflake/get_tables.py +15 -4
  67. pulumi_snowflake/get_tasks.py +15 -4
  68. pulumi_snowflake/get_users.py +21 -4
  69. pulumi_snowflake/get_views.py +25 -4
  70. pulumi_snowflake/get_warehouses.py +17 -4
  71. pulumi_snowflake/grant_account_role.py +5 -0
  72. pulumi_snowflake/grant_application_role.py +5 -0
  73. pulumi_snowflake/grant_database_role.py +5 -0
  74. pulumi_snowflake/grant_ownership.py +5 -0
  75. pulumi_snowflake/grant_privileges_to_account_role.py +5 -0
  76. pulumi_snowflake/grant_privileges_to_database_role.py +5 -0
  77. pulumi_snowflake/grant_privileges_to_share.py +5 -0
  78. pulumi_snowflake/legacy_service_user.py +3666 -0
  79. pulumi_snowflake/managed_account.py +5 -0
  80. pulumi_snowflake/masking_policy.py +197 -234
  81. pulumi_snowflake/materialized_view.py +5 -0
  82. pulumi_snowflake/network_policy.py +5 -0
  83. pulumi_snowflake/network_policy_attachment.py +5 -0
  84. pulumi_snowflake/network_rule.py +5 -0
  85. pulumi_snowflake/notification_integration.py +5 -0
  86. pulumi_snowflake/oauth_integration.py +5 -0
  87. pulumi_snowflake/oauth_integration_for_custom_clients.py +5 -0
  88. pulumi_snowflake/oauth_integration_for_partner_applications.py +5 -0
  89. pulumi_snowflake/object_parameter.py +5 -0
  90. pulumi_snowflake/outputs.py +11392 -2385
  91. pulumi_snowflake/password_policy.py +5 -0
  92. pulumi_snowflake/pipe.py +5 -0
  93. pulumi_snowflake/procedure.py +5 -0
  94. pulumi_snowflake/provider.py +5 -0
  95. pulumi_snowflake/pulumi-plugin.json +1 -1
  96. pulumi_snowflake/resource_monitor.py +88 -259
  97. pulumi_snowflake/role.py +5 -0
  98. pulumi_snowflake/row_access_policy.py +173 -114
  99. pulumi_snowflake/saml2_integration.py +5 -0
  100. pulumi_snowflake/saml_integration.py +5 -0
  101. pulumi_snowflake/schema.py +5 -0
  102. pulumi_snowflake/scim_integration.py +5 -0
  103. pulumi_snowflake/secondary_database.py +5 -0
  104. pulumi_snowflake/sequence.py +5 -0
  105. pulumi_snowflake/service_user.py +3585 -0
  106. pulumi_snowflake/session_parameter.py +5 -0
  107. pulumi_snowflake/share.py +5 -0
  108. pulumi_snowflake/shared_database.py +5 -0
  109. pulumi_snowflake/stage.py +12 -7
  110. pulumi_snowflake/storage_integration.py +5 -0
  111. pulumi_snowflake/stream.py +5 -0
  112. pulumi_snowflake/stream_on_external_table.py +597 -0
  113. pulumi_snowflake/stream_on_table.py +631 -0
  114. pulumi_snowflake/streamlit.py +5 -0
  115. pulumi_snowflake/table.py +5 -0
  116. pulumi_snowflake/table_column_masking_policy_application.py +5 -0
  117. pulumi_snowflake/table_constraint.py +5 -0
  118. pulumi_snowflake/tag.py +5 -0
  119. pulumi_snowflake/tag_association.py +5 -0
  120. pulumi_snowflake/tag_masking_policy_association.py +5 -0
  121. pulumi_snowflake/task.py +5 -0
  122. pulumi_snowflake/unsafe_execute.py +5 -0
  123. pulumi_snowflake/user.py +7 -2
  124. pulumi_snowflake/user_password_policy_attachment.py +5 -0
  125. pulumi_snowflake/user_public_keys.py +5 -0
  126. pulumi_snowflake/view.py +12 -7
  127. pulumi_snowflake/warehouse.py +9 -4
  128. {pulumi_snowflake-0.59.0a1726827563.dist-info → pulumi_snowflake-0.60.0.dist-info}/METADATA +3 -2
  129. pulumi_snowflake-0.60.0.dist-info/RECORD +133 -0
  130. pulumi_snowflake-0.59.0a1726827563.dist-info/RECORD +0 -129
  131. {pulumi_snowflake-0.59.0a1726827563.dist-info → pulumi_snowflake-0.60.0.dist-info}/WHEEL +0 -0
  132. {pulumi_snowflake-0.59.0a1726827563.dist-info → pulumi_snowflake-0.60.0.dist-info}/top_level.txt +0 -0
@@ -4,9 +4,14 @@
4
4
 
5
5
  import copy
6
6
  import warnings
7
+ import sys
7
8
  import pulumi
8
9
  import pulumi.runtime
9
10
  from typing import Any, Mapping, Optional, Sequence, Union, overload
11
+ if sys.version_info >= (3, 11):
12
+ from typing import NotRequired, TypedDict, TypeAlias
13
+ else:
14
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
10
15
  from . import _utilities
11
16
  from . import outputs
12
17
  from ._inputs import *
@@ -16,74 +21,78 @@ __all__ = ['MaskingPolicyArgs', 'MaskingPolicy']
16
21
  @pulumi.input_type
17
22
  class MaskingPolicyArgs:
18
23
  def __init__(__self__, *,
24
+ arguments: pulumi.Input[Sequence[pulumi.Input['MaskingPolicyArgumentArgs']]],
25
+ body: pulumi.Input[str],
19
26
  database: pulumi.Input[str],
20
- masking_expression: pulumi.Input[str],
21
27
  return_data_type: pulumi.Input[str],
22
28
  schema: pulumi.Input[str],
23
- signature: pulumi.Input['MaskingPolicySignatureArgs'],
24
29
  comment: Optional[pulumi.Input[str]] = None,
25
- exempt_other_policies: Optional[pulumi.Input[bool]] = None,
26
- if_not_exists: Optional[pulumi.Input[bool]] = None,
27
- name: Optional[pulumi.Input[str]] = None,
28
- or_replace: Optional[pulumi.Input[bool]] = None):
30
+ exempt_other_policies: Optional[pulumi.Input[str]] = None,
31
+ name: Optional[pulumi.Input[str]] = None):
29
32
  """
30
33
  The set of arguments for constructing a MaskingPolicy resource.
31
- :param pulumi.Input[str] database: The database in which to create the masking policy.
32
- :param pulumi.Input[str] masking_expression: Specifies the SQL expression that transforms the data.
33
- :param pulumi.Input[str] return_data_type: Specifies the data type to return.
34
- :param pulumi.Input[str] schema: The schema in which to create the masking policy.
35
- :param pulumi.Input['MaskingPolicySignatureArgs'] signature: The signature for the masking policy; specifies the input columns and data types to evaluate at query runtime.
34
+ :param pulumi.Input[Sequence[pulumi.Input['MaskingPolicyArgumentArgs']]] arguments: List of the arguments for the masking policy. The first column and its data type always indicate the column data type values to mask or tokenize in the subsequent policy conditions. Note that you can not specify a virtual column as the first column argument in a conditional masking policy.
35
+ :param pulumi.Input[str] body: Specifies the SQL expression that transforms the data. To mitigate permadiff on this field, the provider replaces blank characters with a space. This can lead to false positives in cases where a change in case or run of whitespace is semantically significant.
36
+ :param pulumi.Input[str] database: The database in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `(`, `)`, `"`
37
+ :param pulumi.Input[str] return_data_type: The return data type must match the input data type of the first column that is specified as an input column. For more information about data types, check [Snowflake docs](https://docs.snowflake.com/en/sql-reference/intro-summary-data-types).
38
+ :param pulumi.Input[str] schema: The schema in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `(`, `)`, `"`
36
39
  :param pulumi.Input[str] comment: Specifies a comment for the masking policy.
37
- :param pulumi.Input[bool] exempt_other_policies: Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy.
38
- :param pulumi.Input[bool] if_not_exists: Prevent overwriting a previous masking policy with the same name.
39
- :param pulumi.Input[str] name: Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created.
40
- :param pulumi.Input[bool] or_replace: Whether to override a previous masking policy with the same name.
40
+ :param pulumi.Input[str] exempt_other_policies: Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy. Due to Snowflake limitations, when value is chenged, the resource is recreated. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
41
+ :param pulumi.Input[str] name: Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `(`, `)`, `"`
41
42
  """
43
+ pulumi.set(__self__, "arguments", arguments)
44
+ pulumi.set(__self__, "body", body)
42
45
  pulumi.set(__self__, "database", database)
43
- pulumi.set(__self__, "masking_expression", masking_expression)
44
46
  pulumi.set(__self__, "return_data_type", return_data_type)
45
47
  pulumi.set(__self__, "schema", schema)
46
- pulumi.set(__self__, "signature", signature)
47
48
  if comment is not None:
48
49
  pulumi.set(__self__, "comment", comment)
49
50
  if exempt_other_policies is not None:
50
51
  pulumi.set(__self__, "exempt_other_policies", exempt_other_policies)
51
- if if_not_exists is not None:
52
- pulumi.set(__self__, "if_not_exists", if_not_exists)
53
52
  if name is not None:
54
53
  pulumi.set(__self__, "name", name)
55
- if or_replace is not None:
56
- pulumi.set(__self__, "or_replace", or_replace)
57
54
 
58
55
  @property
59
56
  @pulumi.getter
60
- def database(self) -> pulumi.Input[str]:
57
+ def arguments(self) -> pulumi.Input[Sequence[pulumi.Input['MaskingPolicyArgumentArgs']]]:
61
58
  """
62
- The database in which to create the masking policy.
59
+ List of the arguments for the masking policy. The first column and its data type always indicate the column data type values to mask or tokenize in the subsequent policy conditions. Note that you can not specify a virtual column as the first column argument in a conditional masking policy.
63
60
  """
64
- return pulumi.get(self, "database")
61
+ return pulumi.get(self, "arguments")
65
62
 
66
- @database.setter
67
- def database(self, value: pulumi.Input[str]):
68
- pulumi.set(self, "database", value)
63
+ @arguments.setter
64
+ def arguments(self, value: pulumi.Input[Sequence[pulumi.Input['MaskingPolicyArgumentArgs']]]):
65
+ pulumi.set(self, "arguments", value)
69
66
 
70
67
  @property
71
- @pulumi.getter(name="maskingExpression")
72
- def masking_expression(self) -> pulumi.Input[str]:
68
+ @pulumi.getter
69
+ def body(self) -> pulumi.Input[str]:
73
70
  """
74
- Specifies the SQL expression that transforms the data.
71
+ Specifies the SQL expression that transforms the data. To mitigate permadiff on this field, the provider replaces blank characters with a space. This can lead to false positives in cases where a change in case or run of whitespace is semantically significant.
75
72
  """
76
- return pulumi.get(self, "masking_expression")
73
+ return pulumi.get(self, "body")
77
74
 
78
- @masking_expression.setter
79
- def masking_expression(self, value: pulumi.Input[str]):
80
- pulumi.set(self, "masking_expression", value)
75
+ @body.setter
76
+ def body(self, value: pulumi.Input[str]):
77
+ pulumi.set(self, "body", value)
78
+
79
+ @property
80
+ @pulumi.getter
81
+ def database(self) -> pulumi.Input[str]:
82
+ """
83
+ The database in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `(`, `)`, `"`
84
+ """
85
+ return pulumi.get(self, "database")
86
+
87
+ @database.setter
88
+ def database(self, value: pulumi.Input[str]):
89
+ pulumi.set(self, "database", value)
81
90
 
82
91
  @property
83
92
  @pulumi.getter(name="returnDataType")
84
93
  def return_data_type(self) -> pulumi.Input[str]:
85
94
  """
86
- Specifies the data type to return.
95
+ The return data type must match the input data type of the first column that is specified as an input column. For more information about data types, check [Snowflake docs](https://docs.snowflake.com/en/sql-reference/intro-summary-data-types).
87
96
  """
88
97
  return pulumi.get(self, "return_data_type")
89
98
 
@@ -95,7 +104,7 @@ class MaskingPolicyArgs:
95
104
  @pulumi.getter
96
105
  def schema(self) -> pulumi.Input[str]:
97
106
  """
98
- The schema in which to create the masking policy.
107
+ The schema in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `(`, `)`, `"`
99
108
  """
100
109
  return pulumi.get(self, "schema")
101
110
 
@@ -103,18 +112,6 @@ class MaskingPolicyArgs:
103
112
  def schema(self, value: pulumi.Input[str]):
104
113
  pulumi.set(self, "schema", value)
105
114
 
106
- @property
107
- @pulumi.getter
108
- def signature(self) -> pulumi.Input['MaskingPolicySignatureArgs']:
109
- """
110
- The signature for the masking policy; specifies the input columns and data types to evaluate at query runtime.
111
- """
112
- return pulumi.get(self, "signature")
113
-
114
- @signature.setter
115
- def signature(self, value: pulumi.Input['MaskingPolicySignatureArgs']):
116
- pulumi.set(self, "signature", value)
117
-
118
115
  @property
119
116
  @pulumi.getter
120
117
  def comment(self) -> Optional[pulumi.Input[str]]:
@@ -129,33 +126,21 @@ class MaskingPolicyArgs:
129
126
 
130
127
  @property
131
128
  @pulumi.getter(name="exemptOtherPolicies")
132
- def exempt_other_policies(self) -> Optional[pulumi.Input[bool]]:
129
+ def exempt_other_policies(self) -> Optional[pulumi.Input[str]]:
133
130
  """
134
- Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy.
131
+ Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy. Due to Snowflake limitations, when value is chenged, the resource is recreated. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
135
132
  """
136
133
  return pulumi.get(self, "exempt_other_policies")
137
134
 
138
135
  @exempt_other_policies.setter
139
- def exempt_other_policies(self, value: Optional[pulumi.Input[bool]]):
136
+ def exempt_other_policies(self, value: Optional[pulumi.Input[str]]):
140
137
  pulumi.set(self, "exempt_other_policies", value)
141
138
 
142
- @property
143
- @pulumi.getter(name="ifNotExists")
144
- def if_not_exists(self) -> Optional[pulumi.Input[bool]]:
145
- """
146
- Prevent overwriting a previous masking policy with the same name.
147
- """
148
- return pulumi.get(self, "if_not_exists")
149
-
150
- @if_not_exists.setter
151
- def if_not_exists(self, value: Optional[pulumi.Input[bool]]):
152
- pulumi.set(self, "if_not_exists", value)
153
-
154
139
  @property
155
140
  @pulumi.getter
156
141
  def name(self) -> Optional[pulumi.Input[str]]:
157
142
  """
158
- Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created.
143
+ Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `(`, `)`, `"`
159
144
  """
160
145
  return pulumi.get(self, "name")
161
146
 
@@ -163,69 +148,81 @@ class MaskingPolicyArgs:
163
148
  def name(self, value: Optional[pulumi.Input[str]]):
164
149
  pulumi.set(self, "name", value)
165
150
 
166
- @property
167
- @pulumi.getter(name="orReplace")
168
- def or_replace(self) -> Optional[pulumi.Input[bool]]:
169
- """
170
- Whether to override a previous masking policy with the same name.
171
- """
172
- return pulumi.get(self, "or_replace")
173
-
174
- @or_replace.setter
175
- def or_replace(self, value: Optional[pulumi.Input[bool]]):
176
- pulumi.set(self, "or_replace", value)
177
-
178
151
 
179
152
  @pulumi.input_type
180
153
  class _MaskingPolicyState:
181
154
  def __init__(__self__, *,
155
+ arguments: Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyArgumentArgs']]]] = None,
156
+ body: Optional[pulumi.Input[str]] = None,
182
157
  comment: Optional[pulumi.Input[str]] = None,
183
158
  database: Optional[pulumi.Input[str]] = None,
184
- exempt_other_policies: Optional[pulumi.Input[bool]] = None,
159
+ describe_outputs: Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyDescribeOutputArgs']]]] = None,
160
+ exempt_other_policies: Optional[pulumi.Input[str]] = None,
185
161
  fully_qualified_name: Optional[pulumi.Input[str]] = None,
186
- if_not_exists: Optional[pulumi.Input[bool]] = None,
187
- masking_expression: Optional[pulumi.Input[str]] = None,
188
162
  name: Optional[pulumi.Input[str]] = None,
189
- or_replace: Optional[pulumi.Input[bool]] = None,
190
163
  return_data_type: Optional[pulumi.Input[str]] = None,
191
164
  schema: Optional[pulumi.Input[str]] = None,
192
- signature: Optional[pulumi.Input['MaskingPolicySignatureArgs']] = None):
165
+ show_outputs: Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyShowOutputArgs']]]] = None):
193
166
  """
194
167
  Input properties used for looking up and filtering MaskingPolicy resources.
168
+ :param pulumi.Input[Sequence[pulumi.Input['MaskingPolicyArgumentArgs']]] arguments: List of the arguments for the masking policy. The first column and its data type always indicate the column data type values to mask or tokenize in the subsequent policy conditions. Note that you can not specify a virtual column as the first column argument in a conditional masking policy.
169
+ :param pulumi.Input[str] body: Specifies the SQL expression that transforms the data. To mitigate permadiff on this field, the provider replaces blank characters with a space. This can lead to false positives in cases where a change in case or run of whitespace is semantically significant.
195
170
  :param pulumi.Input[str] comment: Specifies a comment for the masking policy.
196
- :param pulumi.Input[str] database: The database in which to create the masking policy.
197
- :param pulumi.Input[bool] exempt_other_policies: Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy.
171
+ :param pulumi.Input[str] database: The database in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `(`, `)`, `"`
172
+ :param pulumi.Input[Sequence[pulumi.Input['MaskingPolicyDescribeOutputArgs']]] describe_outputs: Outputs the result of `DESCRIBE MASKING POLICY` for the given masking policy.
173
+ :param pulumi.Input[str] exempt_other_policies: Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy. Due to Snowflake limitations, when value is chenged, the resource is recreated. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
198
174
  :param pulumi.Input[str] fully_qualified_name: Fully qualified name of the resource. For more information, see [object name resolution](https://docs.snowflake.com/en/sql-reference/name-resolution).
199
- :param pulumi.Input[bool] if_not_exists: Prevent overwriting a previous masking policy with the same name.
200
- :param pulumi.Input[str] masking_expression: Specifies the SQL expression that transforms the data.
201
- :param pulumi.Input[str] name: Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created.
202
- :param pulumi.Input[bool] or_replace: Whether to override a previous masking policy with the same name.
203
- :param pulumi.Input[str] return_data_type: Specifies the data type to return.
204
- :param pulumi.Input[str] schema: The schema in which to create the masking policy.
205
- :param pulumi.Input['MaskingPolicySignatureArgs'] signature: The signature for the masking policy; specifies the input columns and data types to evaluate at query runtime.
206
- """
175
+ :param pulumi.Input[str] name: Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `(`, `)`, `"`
176
+ :param pulumi.Input[str] return_data_type: The return data type must match the input data type of the first column that is specified as an input column. For more information about data types, check [Snowflake docs](https://docs.snowflake.com/en/sql-reference/intro-summary-data-types).
177
+ :param pulumi.Input[str] schema: The schema in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `(`, `)`, `"`
178
+ :param pulumi.Input[Sequence[pulumi.Input['MaskingPolicyShowOutputArgs']]] show_outputs: Outputs the result of `SHOW MASKING POLICIES` for the given masking policy.
179
+ """
180
+ if arguments is not None:
181
+ pulumi.set(__self__, "arguments", arguments)
182
+ if body is not None:
183
+ pulumi.set(__self__, "body", body)
207
184
  if comment is not None:
208
185
  pulumi.set(__self__, "comment", comment)
209
186
  if database is not None:
210
187
  pulumi.set(__self__, "database", database)
188
+ if describe_outputs is not None:
189
+ pulumi.set(__self__, "describe_outputs", describe_outputs)
211
190
  if exempt_other_policies is not None:
212
191
  pulumi.set(__self__, "exempt_other_policies", exempt_other_policies)
213
192
  if fully_qualified_name is not None:
214
193
  pulumi.set(__self__, "fully_qualified_name", fully_qualified_name)
215
- if if_not_exists is not None:
216
- pulumi.set(__self__, "if_not_exists", if_not_exists)
217
- if masking_expression is not None:
218
- pulumi.set(__self__, "masking_expression", masking_expression)
219
194
  if name is not None:
220
195
  pulumi.set(__self__, "name", name)
221
- if or_replace is not None:
222
- pulumi.set(__self__, "or_replace", or_replace)
223
196
  if return_data_type is not None:
224
197
  pulumi.set(__self__, "return_data_type", return_data_type)
225
198
  if schema is not None:
226
199
  pulumi.set(__self__, "schema", schema)
227
- if signature is not None:
228
- pulumi.set(__self__, "signature", signature)
200
+ if show_outputs is not None:
201
+ pulumi.set(__self__, "show_outputs", show_outputs)
202
+
203
+ @property
204
+ @pulumi.getter
205
+ def arguments(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyArgumentArgs']]]]:
206
+ """
207
+ List of the arguments for the masking policy. The first column and its data type always indicate the column data type values to mask or tokenize in the subsequent policy conditions. Note that you can not specify a virtual column as the first column argument in a conditional masking policy.
208
+ """
209
+ return pulumi.get(self, "arguments")
210
+
211
+ @arguments.setter
212
+ def arguments(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyArgumentArgs']]]]):
213
+ pulumi.set(self, "arguments", value)
214
+
215
+ @property
216
+ @pulumi.getter
217
+ def body(self) -> Optional[pulumi.Input[str]]:
218
+ """
219
+ Specifies the SQL expression that transforms the data. To mitigate permadiff on this field, the provider replaces blank characters with a space. This can lead to false positives in cases where a change in case or run of whitespace is semantically significant.
220
+ """
221
+ return pulumi.get(self, "body")
222
+
223
+ @body.setter
224
+ def body(self, value: Optional[pulumi.Input[str]]):
225
+ pulumi.set(self, "body", value)
229
226
 
230
227
  @property
231
228
  @pulumi.getter
@@ -243,7 +240,7 @@ class _MaskingPolicyState:
243
240
  @pulumi.getter
244
241
  def database(self) -> Optional[pulumi.Input[str]]:
245
242
  """
246
- The database in which to create the masking policy.
243
+ The database in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `(`, `)`, `"`
247
244
  """
248
245
  return pulumi.get(self, "database")
249
246
 
@@ -251,16 +248,28 @@ class _MaskingPolicyState:
251
248
  def database(self, value: Optional[pulumi.Input[str]]):
252
249
  pulumi.set(self, "database", value)
253
250
 
251
+ @property
252
+ @pulumi.getter(name="describeOutputs")
253
+ def describe_outputs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyDescribeOutputArgs']]]]:
254
+ """
255
+ Outputs the result of `DESCRIBE MASKING POLICY` for the given masking policy.
256
+ """
257
+ return pulumi.get(self, "describe_outputs")
258
+
259
+ @describe_outputs.setter
260
+ def describe_outputs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyDescribeOutputArgs']]]]):
261
+ pulumi.set(self, "describe_outputs", value)
262
+
254
263
  @property
255
264
  @pulumi.getter(name="exemptOtherPolicies")
256
- def exempt_other_policies(self) -> Optional[pulumi.Input[bool]]:
265
+ def exempt_other_policies(self) -> Optional[pulumi.Input[str]]:
257
266
  """
258
- Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy.
267
+ Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy. Due to Snowflake limitations, when value is chenged, the resource is recreated. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
259
268
  """
260
269
  return pulumi.get(self, "exempt_other_policies")
261
270
 
262
271
  @exempt_other_policies.setter
263
- def exempt_other_policies(self, value: Optional[pulumi.Input[bool]]):
272
+ def exempt_other_policies(self, value: Optional[pulumi.Input[str]]):
264
273
  pulumi.set(self, "exempt_other_policies", value)
265
274
 
266
275
  @property
@@ -275,35 +284,11 @@ class _MaskingPolicyState:
275
284
  def fully_qualified_name(self, value: Optional[pulumi.Input[str]]):
276
285
  pulumi.set(self, "fully_qualified_name", value)
277
286
 
278
- @property
279
- @pulumi.getter(name="ifNotExists")
280
- def if_not_exists(self) -> Optional[pulumi.Input[bool]]:
281
- """
282
- Prevent overwriting a previous masking policy with the same name.
283
- """
284
- return pulumi.get(self, "if_not_exists")
285
-
286
- @if_not_exists.setter
287
- def if_not_exists(self, value: Optional[pulumi.Input[bool]]):
288
- pulumi.set(self, "if_not_exists", value)
289
-
290
- @property
291
- @pulumi.getter(name="maskingExpression")
292
- def masking_expression(self) -> Optional[pulumi.Input[str]]:
293
- """
294
- Specifies the SQL expression that transforms the data.
295
- """
296
- return pulumi.get(self, "masking_expression")
297
-
298
- @masking_expression.setter
299
- def masking_expression(self, value: Optional[pulumi.Input[str]]):
300
- pulumi.set(self, "masking_expression", value)
301
-
302
287
  @property
303
288
  @pulumi.getter
304
289
  def name(self) -> Optional[pulumi.Input[str]]:
305
290
  """
306
- Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created.
291
+ Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `(`, `)`, `"`
307
292
  """
308
293
  return pulumi.get(self, "name")
309
294
 
@@ -311,23 +296,11 @@ class _MaskingPolicyState:
311
296
  def name(self, value: Optional[pulumi.Input[str]]):
312
297
  pulumi.set(self, "name", value)
313
298
 
314
- @property
315
- @pulumi.getter(name="orReplace")
316
- def or_replace(self) -> Optional[pulumi.Input[bool]]:
317
- """
318
- Whether to override a previous masking policy with the same name.
319
- """
320
- return pulumi.get(self, "or_replace")
321
-
322
- @or_replace.setter
323
- def or_replace(self, value: Optional[pulumi.Input[bool]]):
324
- pulumi.set(self, "or_replace", value)
325
-
326
299
  @property
327
300
  @pulumi.getter(name="returnDataType")
328
301
  def return_data_type(self) -> Optional[pulumi.Input[str]]:
329
302
  """
330
- Specifies the data type to return.
303
+ The return data type must match the input data type of the first column that is specified as an input column. For more information about data types, check [Snowflake docs](https://docs.snowflake.com/en/sql-reference/intro-summary-data-types).
331
304
  """
332
305
  return pulumi.get(self, "return_data_type")
333
306
 
@@ -339,7 +312,7 @@ class _MaskingPolicyState:
339
312
  @pulumi.getter
340
313
  def schema(self) -> Optional[pulumi.Input[str]]:
341
314
  """
342
- The schema in which to create the masking policy.
315
+ The schema in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `(`, `)`, `"`
343
316
  """
344
317
  return pulumi.get(self, "schema")
345
318
 
@@ -348,16 +321,16 @@ class _MaskingPolicyState:
348
321
  pulumi.set(self, "schema", value)
349
322
 
350
323
  @property
351
- @pulumi.getter
352
- def signature(self) -> Optional[pulumi.Input['MaskingPolicySignatureArgs']]:
324
+ @pulumi.getter(name="showOutputs")
325
+ def show_outputs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyShowOutputArgs']]]]:
353
326
  """
354
- The signature for the masking policy; specifies the input columns and data types to evaluate at query runtime.
327
+ Outputs the result of `SHOW MASKING POLICIES` for the given masking policy.
355
328
  """
356
- return pulumi.get(self, "signature")
329
+ return pulumi.get(self, "show_outputs")
357
330
 
358
- @signature.setter
359
- def signature(self, value: Optional[pulumi.Input['MaskingPolicySignatureArgs']]):
360
- pulumi.set(self, "signature", value)
331
+ @show_outputs.setter
332
+ def show_outputs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['MaskingPolicyShowOutputArgs']]]]):
333
+ pulumi.set(self, "show_outputs", value)
361
334
 
362
335
 
363
336
  class MaskingPolicy(pulumi.CustomResource):
@@ -365,38 +338,32 @@ class MaskingPolicy(pulumi.CustomResource):
365
338
  def __init__(__self__,
366
339
  resource_name: str,
367
340
  opts: Optional[pulumi.ResourceOptions] = None,
341
+ arguments: Optional[pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyArgumentArgs', 'MaskingPolicyArgumentArgsDict']]]]] = None,
342
+ body: Optional[pulumi.Input[str]] = None,
368
343
  comment: Optional[pulumi.Input[str]] = None,
369
344
  database: Optional[pulumi.Input[str]] = None,
370
- exempt_other_policies: Optional[pulumi.Input[bool]] = None,
371
- if_not_exists: Optional[pulumi.Input[bool]] = None,
372
- masking_expression: Optional[pulumi.Input[str]] = None,
345
+ exempt_other_policies: Optional[pulumi.Input[str]] = None,
373
346
  name: Optional[pulumi.Input[str]] = None,
374
- or_replace: Optional[pulumi.Input[bool]] = None,
375
347
  return_data_type: Optional[pulumi.Input[str]] = None,
376
348
  schema: Optional[pulumi.Input[str]] = None,
377
- signature: Optional[pulumi.Input[Union['MaskingPolicySignatureArgs', 'MaskingPolicySignatureArgsDict']]] = None,
378
349
  __props__=None):
379
350
  """
380
351
  ## Import
381
352
 
382
- format is database name | schema name | policy name
383
-
384
353
  ```sh
385
- $ pulumi import snowflake:index/maskingPolicy:MaskingPolicy example 'dbName|schemaName|policyName'
354
+ $ pulumi import snowflake:index/maskingPolicy:MaskingPolicy example '"<database_name>"."<schema_name>"."<masking_policy_name>"'
386
355
  ```
387
356
 
388
357
  :param str resource_name: The name of the resource.
389
358
  :param pulumi.ResourceOptions opts: Options for the resource.
359
+ :param pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyArgumentArgs', 'MaskingPolicyArgumentArgsDict']]]] arguments: List of the arguments for the masking policy. The first column and its data type always indicate the column data type values to mask or tokenize in the subsequent policy conditions. Note that you can not specify a virtual column as the first column argument in a conditional masking policy.
360
+ :param pulumi.Input[str] body: Specifies the SQL expression that transforms the data. To mitigate permadiff on this field, the provider replaces blank characters with a space. This can lead to false positives in cases where a change in case or run of whitespace is semantically significant.
390
361
  :param pulumi.Input[str] comment: Specifies a comment for the masking policy.
391
- :param pulumi.Input[str] database: The database in which to create the masking policy.
392
- :param pulumi.Input[bool] exempt_other_policies: Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy.
393
- :param pulumi.Input[bool] if_not_exists: Prevent overwriting a previous masking policy with the same name.
394
- :param pulumi.Input[str] masking_expression: Specifies the SQL expression that transforms the data.
395
- :param pulumi.Input[str] name: Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created.
396
- :param pulumi.Input[bool] or_replace: Whether to override a previous masking policy with the same name.
397
- :param pulumi.Input[str] return_data_type: Specifies the data type to return.
398
- :param pulumi.Input[str] schema: The schema in which to create the masking policy.
399
- :param pulumi.Input[Union['MaskingPolicySignatureArgs', 'MaskingPolicySignatureArgsDict']] signature: The signature for the masking policy; specifies the input columns and data types to evaluate at query runtime.
362
+ :param pulumi.Input[str] database: The database in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `(`, `)`, `"`
363
+ :param pulumi.Input[str] exempt_other_policies: Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy. Due to Snowflake limitations, when value is chenged, the resource is recreated. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
364
+ :param pulumi.Input[str] name: Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `(`, `)`, `"`
365
+ :param pulumi.Input[str] return_data_type: The return data type must match the input data type of the first column that is specified as an input column. For more information about data types, check [Snowflake docs](https://docs.snowflake.com/en/sql-reference/intro-summary-data-types).
366
+ :param pulumi.Input[str] schema: The schema in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `(`, `)`, `"`
400
367
  """
401
368
  ...
402
369
  @overload
@@ -407,10 +374,8 @@ class MaskingPolicy(pulumi.CustomResource):
407
374
  """
408
375
  ## Import
409
376
 
410
- format is database name | schema name | policy name
411
-
412
377
  ```sh
413
- $ pulumi import snowflake:index/maskingPolicy:MaskingPolicy example 'dbName|schemaName|policyName'
378
+ $ pulumi import snowflake:index/maskingPolicy:MaskingPolicy example '"<database_name>"."<schema_name>"."<masking_policy_name>"'
414
379
  ```
415
380
 
416
381
  :param str resource_name: The name of the resource.
@@ -428,16 +393,14 @@ class MaskingPolicy(pulumi.CustomResource):
428
393
  def _internal_init(__self__,
429
394
  resource_name: str,
430
395
  opts: Optional[pulumi.ResourceOptions] = None,
396
+ arguments: Optional[pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyArgumentArgs', 'MaskingPolicyArgumentArgsDict']]]]] = None,
397
+ body: Optional[pulumi.Input[str]] = None,
431
398
  comment: Optional[pulumi.Input[str]] = None,
432
399
  database: Optional[pulumi.Input[str]] = None,
433
- exempt_other_policies: Optional[pulumi.Input[bool]] = None,
434
- if_not_exists: Optional[pulumi.Input[bool]] = None,
435
- masking_expression: Optional[pulumi.Input[str]] = None,
400
+ exempt_other_policies: Optional[pulumi.Input[str]] = None,
436
401
  name: Optional[pulumi.Input[str]] = None,
437
- or_replace: Optional[pulumi.Input[bool]] = None,
438
402
  return_data_type: Optional[pulumi.Input[str]] = None,
439
403
  schema: Optional[pulumi.Input[str]] = None,
440
- signature: Optional[pulumi.Input[Union['MaskingPolicySignatureArgs', 'MaskingPolicySignatureArgsDict']]] = None,
441
404
  __props__=None):
442
405
  opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
443
406
  if not isinstance(opts, pulumi.ResourceOptions):
@@ -447,27 +410,27 @@ class MaskingPolicy(pulumi.CustomResource):
447
410
  raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
448
411
  __props__ = MaskingPolicyArgs.__new__(MaskingPolicyArgs)
449
412
 
413
+ if arguments is None and not opts.urn:
414
+ raise TypeError("Missing required property 'arguments'")
415
+ __props__.__dict__["arguments"] = arguments
416
+ if body is None and not opts.urn:
417
+ raise TypeError("Missing required property 'body'")
418
+ __props__.__dict__["body"] = body
450
419
  __props__.__dict__["comment"] = comment
451
420
  if database is None and not opts.urn:
452
421
  raise TypeError("Missing required property 'database'")
453
422
  __props__.__dict__["database"] = database
454
423
  __props__.__dict__["exempt_other_policies"] = exempt_other_policies
455
- __props__.__dict__["if_not_exists"] = if_not_exists
456
- if masking_expression is None and not opts.urn:
457
- raise TypeError("Missing required property 'masking_expression'")
458
- __props__.__dict__["masking_expression"] = masking_expression
459
424
  __props__.__dict__["name"] = name
460
- __props__.__dict__["or_replace"] = or_replace
461
425
  if return_data_type is None and not opts.urn:
462
426
  raise TypeError("Missing required property 'return_data_type'")
463
427
  __props__.__dict__["return_data_type"] = return_data_type
464
428
  if schema is None and not opts.urn:
465
429
  raise TypeError("Missing required property 'schema'")
466
430
  __props__.__dict__["schema"] = schema
467
- if signature is None and not opts.urn:
468
- raise TypeError("Missing required property 'signature'")
469
- __props__.__dict__["signature"] = signature
431
+ __props__.__dict__["describe_outputs"] = None
470
432
  __props__.__dict__["fully_qualified_name"] = None
433
+ __props__.__dict__["show_outputs"] = None
471
434
  super(MaskingPolicy, __self__).__init__(
472
435
  'snowflake:index/maskingPolicy:MaskingPolicy',
473
436
  resource_name,
@@ -478,17 +441,17 @@ class MaskingPolicy(pulumi.CustomResource):
478
441
  def get(resource_name: str,
479
442
  id: pulumi.Input[str],
480
443
  opts: Optional[pulumi.ResourceOptions] = None,
444
+ arguments: Optional[pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyArgumentArgs', 'MaskingPolicyArgumentArgsDict']]]]] = None,
445
+ body: Optional[pulumi.Input[str]] = None,
481
446
  comment: Optional[pulumi.Input[str]] = None,
482
447
  database: Optional[pulumi.Input[str]] = None,
483
- exempt_other_policies: Optional[pulumi.Input[bool]] = None,
448
+ describe_outputs: Optional[pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyDescribeOutputArgs', 'MaskingPolicyDescribeOutputArgsDict']]]]] = None,
449
+ exempt_other_policies: Optional[pulumi.Input[str]] = None,
484
450
  fully_qualified_name: Optional[pulumi.Input[str]] = None,
485
- if_not_exists: Optional[pulumi.Input[bool]] = None,
486
- masking_expression: Optional[pulumi.Input[str]] = None,
487
451
  name: Optional[pulumi.Input[str]] = None,
488
- or_replace: Optional[pulumi.Input[bool]] = None,
489
452
  return_data_type: Optional[pulumi.Input[str]] = None,
490
453
  schema: Optional[pulumi.Input[str]] = None,
491
- signature: Optional[pulumi.Input[Union['MaskingPolicySignatureArgs', 'MaskingPolicySignatureArgsDict']]] = None) -> 'MaskingPolicy':
454
+ show_outputs: Optional[pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyShowOutputArgs', 'MaskingPolicyShowOutputArgsDict']]]]] = None) -> 'MaskingPolicy':
492
455
  """
493
456
  Get an existing MaskingPolicy resource's state with the given name, id, and optional extra
494
457
  properties used to qualify the lookup.
@@ -496,35 +459,51 @@ class MaskingPolicy(pulumi.CustomResource):
496
459
  :param str resource_name: The unique name of the resulting resource.
497
460
  :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
498
461
  :param pulumi.ResourceOptions opts: Options for the resource.
462
+ :param pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyArgumentArgs', 'MaskingPolicyArgumentArgsDict']]]] arguments: List of the arguments for the masking policy. The first column and its data type always indicate the column data type values to mask or tokenize in the subsequent policy conditions. Note that you can not specify a virtual column as the first column argument in a conditional masking policy.
463
+ :param pulumi.Input[str] body: Specifies the SQL expression that transforms the data. To mitigate permadiff on this field, the provider replaces blank characters with a space. This can lead to false positives in cases where a change in case or run of whitespace is semantically significant.
499
464
  :param pulumi.Input[str] comment: Specifies a comment for the masking policy.
500
- :param pulumi.Input[str] database: The database in which to create the masking policy.
501
- :param pulumi.Input[bool] exempt_other_policies: Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy.
465
+ :param pulumi.Input[str] database: The database in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `(`, `)`, `"`
466
+ :param pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyDescribeOutputArgs', 'MaskingPolicyDescribeOutputArgsDict']]]] describe_outputs: Outputs the result of `DESCRIBE MASKING POLICY` for the given masking policy.
467
+ :param pulumi.Input[str] exempt_other_policies: Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy. Due to Snowflake limitations, when value is chenged, the resource is recreated. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
502
468
  :param pulumi.Input[str] fully_qualified_name: Fully qualified name of the resource. For more information, see [object name resolution](https://docs.snowflake.com/en/sql-reference/name-resolution).
503
- :param pulumi.Input[bool] if_not_exists: Prevent overwriting a previous masking policy with the same name.
504
- :param pulumi.Input[str] masking_expression: Specifies the SQL expression that transforms the data.
505
- :param pulumi.Input[str] name: Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created.
506
- :param pulumi.Input[bool] or_replace: Whether to override a previous masking policy with the same name.
507
- :param pulumi.Input[str] return_data_type: Specifies the data type to return.
508
- :param pulumi.Input[str] schema: The schema in which to create the masking policy.
509
- :param pulumi.Input[Union['MaskingPolicySignatureArgs', 'MaskingPolicySignatureArgsDict']] signature: The signature for the masking policy; specifies the input columns and data types to evaluate at query runtime.
469
+ :param pulumi.Input[str] name: Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `(`, `)`, `"`
470
+ :param pulumi.Input[str] return_data_type: The return data type must match the input data type of the first column that is specified as an input column. For more information about data types, check [Snowflake docs](https://docs.snowflake.com/en/sql-reference/intro-summary-data-types).
471
+ :param pulumi.Input[str] schema: The schema in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `(`, `)`, `"`
472
+ :param pulumi.Input[Sequence[pulumi.Input[Union['MaskingPolicyShowOutputArgs', 'MaskingPolicyShowOutputArgsDict']]]] show_outputs: Outputs the result of `SHOW MASKING POLICIES` for the given masking policy.
510
473
  """
511
474
  opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
512
475
 
513
476
  __props__ = _MaskingPolicyState.__new__(_MaskingPolicyState)
514
477
 
478
+ __props__.__dict__["arguments"] = arguments
479
+ __props__.__dict__["body"] = body
515
480
  __props__.__dict__["comment"] = comment
516
481
  __props__.__dict__["database"] = database
482
+ __props__.__dict__["describe_outputs"] = describe_outputs
517
483
  __props__.__dict__["exempt_other_policies"] = exempt_other_policies
518
484
  __props__.__dict__["fully_qualified_name"] = fully_qualified_name
519
- __props__.__dict__["if_not_exists"] = if_not_exists
520
- __props__.__dict__["masking_expression"] = masking_expression
521
485
  __props__.__dict__["name"] = name
522
- __props__.__dict__["or_replace"] = or_replace
523
486
  __props__.__dict__["return_data_type"] = return_data_type
524
487
  __props__.__dict__["schema"] = schema
525
- __props__.__dict__["signature"] = signature
488
+ __props__.__dict__["show_outputs"] = show_outputs
526
489
  return MaskingPolicy(resource_name, opts=opts, __props__=__props__)
527
490
 
491
+ @property
492
+ @pulumi.getter
493
+ def arguments(self) -> pulumi.Output[Sequence['outputs.MaskingPolicyArgument']]:
494
+ """
495
+ List of the arguments for the masking policy. The first column and its data type always indicate the column data type values to mask or tokenize in the subsequent policy conditions. Note that you can not specify a virtual column as the first column argument in a conditional masking policy.
496
+ """
497
+ return pulumi.get(self, "arguments")
498
+
499
+ @property
500
+ @pulumi.getter
501
+ def body(self) -> pulumi.Output[str]:
502
+ """
503
+ Specifies the SQL expression that transforms the data. To mitigate permadiff on this field, the provider replaces blank characters with a space. This can lead to false positives in cases where a change in case or run of whitespace is semantically significant.
504
+ """
505
+ return pulumi.get(self, "body")
506
+
528
507
  @property
529
508
  @pulumi.getter
530
509
  def comment(self) -> pulumi.Output[Optional[str]]:
@@ -537,15 +516,23 @@ class MaskingPolicy(pulumi.CustomResource):
537
516
  @pulumi.getter
538
517
  def database(self) -> pulumi.Output[str]:
539
518
  """
540
- The database in which to create the masking policy.
519
+ The database in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `(`, `)`, `"`
541
520
  """
542
521
  return pulumi.get(self, "database")
543
522
 
523
+ @property
524
+ @pulumi.getter(name="describeOutputs")
525
+ def describe_outputs(self) -> pulumi.Output[Sequence['outputs.MaskingPolicyDescribeOutput']]:
526
+ """
527
+ Outputs the result of `DESCRIBE MASKING POLICY` for the given masking policy.
528
+ """
529
+ return pulumi.get(self, "describe_outputs")
530
+
544
531
  @property
545
532
  @pulumi.getter(name="exemptOtherPolicies")
546
- def exempt_other_policies(self) -> pulumi.Output[Optional[bool]]:
533
+ def exempt_other_policies(self) -> pulumi.Output[Optional[str]]:
547
534
  """
548
- Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy.
535
+ Specifies whether the row access policy or conditional masking policy can reference a column that is already protected by a masking policy. Due to Snowflake limitations, when value is chenged, the resource is recreated. Available options are: "true" or "false". When the value is not set in the configuration the provider will put "default" there which means to use the Snowflake default for this value.
549
536
  """
550
537
  return pulumi.get(self, "exempt_other_policies")
551
538
 
@@ -557,43 +544,19 @@ class MaskingPolicy(pulumi.CustomResource):
557
544
  """
558
545
  return pulumi.get(self, "fully_qualified_name")
559
546
 
560
- @property
561
- @pulumi.getter(name="ifNotExists")
562
- def if_not_exists(self) -> pulumi.Output[Optional[bool]]:
563
- """
564
- Prevent overwriting a previous masking policy with the same name.
565
- """
566
- return pulumi.get(self, "if_not_exists")
567
-
568
- @property
569
- @pulumi.getter(name="maskingExpression")
570
- def masking_expression(self) -> pulumi.Output[str]:
571
- """
572
- Specifies the SQL expression that transforms the data.
573
- """
574
- return pulumi.get(self, "masking_expression")
575
-
576
547
  @property
577
548
  @pulumi.getter
578
549
  def name(self) -> pulumi.Output[str]:
579
550
  """
580
- Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created.
551
+ Specifies the identifier for the masking policy; must be unique for the database and schema in which the masking policy is created. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `(`, `)`, `"`
581
552
  """
582
553
  return pulumi.get(self, "name")
583
554
 
584
- @property
585
- @pulumi.getter(name="orReplace")
586
- def or_replace(self) -> pulumi.Output[Optional[bool]]:
587
- """
588
- Whether to override a previous masking policy with the same name.
589
- """
590
- return pulumi.get(self, "or_replace")
591
-
592
555
  @property
593
556
  @pulumi.getter(name="returnDataType")
594
557
  def return_data_type(self) -> pulumi.Output[str]:
595
558
  """
596
- Specifies the data type to return.
559
+ The return data type must match the input data type of the first column that is specified as an input column. For more information about data types, check [Snowflake docs](https://docs.snowflake.com/en/sql-reference/intro-summary-data-types).
597
560
  """
598
561
  return pulumi.get(self, "return_data_type")
599
562
 
@@ -601,15 +564,15 @@ class MaskingPolicy(pulumi.CustomResource):
601
564
  @pulumi.getter
602
565
  def schema(self) -> pulumi.Output[str]:
603
566
  """
604
- The schema in which to create the masking policy.
567
+ The schema in which to create the masking policy. Due to technical limitations (read more here), avoid using the following characters: `|`, `.`, `(`, `)`, `"`
605
568
  """
606
569
  return pulumi.get(self, "schema")
607
570
 
608
571
  @property
609
- @pulumi.getter
610
- def signature(self) -> pulumi.Output['outputs.MaskingPolicySignature']:
572
+ @pulumi.getter(name="showOutputs")
573
+ def show_outputs(self) -> pulumi.Output[Sequence['outputs.MaskingPolicyShowOutput']]:
611
574
  """
612
- The signature for the masking policy; specifies the input columns and data types to evaluate at query runtime.
575
+ Outputs the result of `SHOW MASKING POLICIES` for the given masking policy.
613
576
  """
614
- return pulumi.get(self, "signature")
577
+ return pulumi.get(self, "show_outputs")
615
578