pulumi-webflow 0.0.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.
@@ -0,0 +1,166 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by pulumi-language-python. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import builtins as _builtins
6
+ import warnings
7
+ import sys
8
+ import pulumi
9
+ import pulumi.runtime
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
15
+ from . import _utilities
16
+
17
+ __all__ = ['RobotsTxtArgs', 'RobotsTxt']
18
+
19
+ @pulumi.input_type
20
+ class RobotsTxtArgs:
21
+ def __init__(__self__, *,
22
+ content: pulumi.Input[_builtins.str],
23
+ site_id: pulumi.Input[_builtins.str]):
24
+ """
25
+ The set of arguments for constructing a RobotsTxt resource.
26
+ :param pulumi.Input[_builtins.str] content: The robots.txt content in traditional format. Supports User-agent, Allow, Disallow, and Sitemap directives.
27
+ :param pulumi.Input[_builtins.str] site_id: The Webflow site ID (24-character lowercase hexadecimal string, e.g., '5f0c8c9e1c9d440000e8d8c3').
28
+ """
29
+ pulumi.set(__self__, "content", content)
30
+ pulumi.set(__self__, "site_id", site_id)
31
+
32
+ @_builtins.property
33
+ @pulumi.getter
34
+ def content(self) -> pulumi.Input[_builtins.str]:
35
+ """
36
+ The robots.txt content in traditional format. Supports User-agent, Allow, Disallow, and Sitemap directives.
37
+ """
38
+ return pulumi.get(self, "content")
39
+
40
+ @content.setter
41
+ def content(self, value: pulumi.Input[_builtins.str]):
42
+ pulumi.set(self, "content", value)
43
+
44
+ @_builtins.property
45
+ @pulumi.getter(name="siteId")
46
+ def site_id(self) -> pulumi.Input[_builtins.str]:
47
+ """
48
+ The Webflow site ID (24-character lowercase hexadecimal string, e.g., '5f0c8c9e1c9d440000e8d8c3').
49
+ """
50
+ return pulumi.get(self, "site_id")
51
+
52
+ @site_id.setter
53
+ def site_id(self, value: pulumi.Input[_builtins.str]):
54
+ pulumi.set(self, "site_id", value)
55
+
56
+
57
+ @pulumi.type_token("webflow:index:RobotsTxt")
58
+ class RobotsTxt(pulumi.CustomResource):
59
+ @overload
60
+ def __init__(__self__,
61
+ resource_name: str,
62
+ opts: Optional[pulumi.ResourceOptions] = None,
63
+ content: Optional[pulumi.Input[_builtins.str]] = None,
64
+ site_id: Optional[pulumi.Input[_builtins.str]] = None,
65
+ __props__=None):
66
+ """
67
+ Manages robots.txt configuration for a Webflow site. This resource allows you to define crawler access rules and sitemap references.
68
+
69
+ :param str resource_name: The name of the resource.
70
+ :param pulumi.ResourceOptions opts: Options for the resource.
71
+ :param pulumi.Input[_builtins.str] content: The robots.txt content in traditional format. Supports User-agent, Allow, Disallow, and Sitemap directives.
72
+ :param pulumi.Input[_builtins.str] site_id: The Webflow site ID (24-character lowercase hexadecimal string, e.g., '5f0c8c9e1c9d440000e8d8c3').
73
+ """
74
+ ...
75
+ @overload
76
+ def __init__(__self__,
77
+ resource_name: str,
78
+ args: RobotsTxtArgs,
79
+ opts: Optional[pulumi.ResourceOptions] = None):
80
+ """
81
+ Manages robots.txt configuration for a Webflow site. This resource allows you to define crawler access rules and sitemap references.
82
+
83
+ :param str resource_name: The name of the resource.
84
+ :param RobotsTxtArgs args: The arguments to use to populate this resource's properties.
85
+ :param pulumi.ResourceOptions opts: Options for the resource.
86
+ """
87
+ ...
88
+ def __init__(__self__, resource_name: str, *args, **kwargs):
89
+ resource_args, opts = _utilities.get_resource_args_opts(RobotsTxtArgs, pulumi.ResourceOptions, *args, **kwargs)
90
+ if resource_args is not None:
91
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
92
+ else:
93
+ __self__._internal_init(resource_name, *args, **kwargs)
94
+
95
+ def _internal_init(__self__,
96
+ resource_name: str,
97
+ opts: Optional[pulumi.ResourceOptions] = None,
98
+ content: Optional[pulumi.Input[_builtins.str]] = None,
99
+ site_id: Optional[pulumi.Input[_builtins.str]] = None,
100
+ __props__=None):
101
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
102
+ if not isinstance(opts, pulumi.ResourceOptions):
103
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
104
+ if opts.id is None:
105
+ if __props__ is not None:
106
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
107
+ __props__ = RobotsTxtArgs.__new__(RobotsTxtArgs)
108
+
109
+ if content is None and not opts.urn:
110
+ raise TypeError("Missing required property 'content'")
111
+ __props__.__dict__["content"] = content
112
+ if site_id is None and not opts.urn:
113
+ raise TypeError("Missing required property 'site_id'")
114
+ __props__.__dict__["site_id"] = site_id
115
+ __props__.__dict__["last_modified"] = None
116
+ super(RobotsTxt, __self__).__init__(
117
+ 'webflow:index:RobotsTxt',
118
+ resource_name,
119
+ __props__,
120
+ opts)
121
+
122
+ @staticmethod
123
+ def get(resource_name: str,
124
+ id: pulumi.Input[str],
125
+ opts: Optional[pulumi.ResourceOptions] = None) -> 'RobotsTxt':
126
+ """
127
+ Get an existing RobotsTxt resource's state with the given name, id, and optional extra
128
+ properties used to qualify the lookup.
129
+
130
+ :param str resource_name: The unique name of the resulting resource.
131
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
132
+ :param pulumi.ResourceOptions opts: Options for the resource.
133
+ """
134
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
135
+
136
+ __props__ = RobotsTxtArgs.__new__(RobotsTxtArgs)
137
+
138
+ __props__.__dict__["content"] = None
139
+ __props__.__dict__["last_modified"] = None
140
+ __props__.__dict__["site_id"] = None
141
+ return RobotsTxt(resource_name, opts=opts, __props__=__props__)
142
+
143
+ @_builtins.property
144
+ @pulumi.getter
145
+ def content(self) -> pulumi.Output[_builtins.str]:
146
+ """
147
+ The robots.txt content in traditional format. Supports User-agent, Allow, Disallow, and Sitemap directives.
148
+ """
149
+ return pulumi.get(self, "content")
150
+
151
+ @_builtins.property
152
+ @pulumi.getter(name="lastModified")
153
+ def last_modified(self) -> pulumi.Output[_builtins.str]:
154
+ """
155
+ RFC3339 timestamp of the last modification.
156
+ """
157
+ return pulumi.get(self, "last_modified")
158
+
159
+ @_builtins.property
160
+ @pulumi.getter(name="siteId")
161
+ def site_id(self) -> pulumi.Output[_builtins.str]:
162
+ """
163
+ The Webflow site ID (24-character lowercase hexadecimal string, e.g., '5f0c8c9e1c9d440000e8d8c3').
164
+ """
165
+ return pulumi.get(self, "site_id")
166
+
pulumi_webflow/site.py ADDED
@@ -0,0 +1,361 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by pulumi-language-python. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import builtins as _builtins
6
+ import warnings
7
+ import sys
8
+ import pulumi
9
+ import pulumi.runtime
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
15
+ from . import _utilities
16
+
17
+ __all__ = ['SiteArgs', 'Site']
18
+
19
+ @pulumi.input_type
20
+ class SiteArgs:
21
+ def __init__(__self__, *,
22
+ display_name: pulumi.Input[_builtins.str],
23
+ workspace_id: pulumi.Input[_builtins.str],
24
+ parent_folder_id: Optional[pulumi.Input[_builtins.str]] = None,
25
+ publish: Optional[pulumi.Input[_builtins.bool]] = None,
26
+ short_name: Optional[pulumi.Input[_builtins.str]] = None,
27
+ template_name: Optional[pulumi.Input[_builtins.str]] = None,
28
+ time_zone: Optional[pulumi.Input[_builtins.str]] = None):
29
+ """
30
+ The set of arguments for constructing a Site resource.
31
+ :param pulumi.Input[_builtins.str] display_name: The human-readable name of the site as shown in the Webflow dashboard. Required - must be a non-empty string. Examples: 'My Marketing Site', 'Company Blog', 'Product Landing Page'. This is the name users will see when managing the site.
32
+ :param pulumi.Input[_builtins.str] workspace_id: The Webflow workspace ID where the site will be created. Required for site creation (Enterprise workspace required by Webflow API). Example: '5f0c8c9e1c9d440000e8d8c3'. You can find your workspace ID in the Webflow dashboard under Account Settings > Workspace.
33
+ :param pulumi.Input[_builtins.str] parent_folder_id: The folder ID where the site will be organized in the Webflow dashboard. Optional - the site will be placed at the workspace root if not specified. This is useful for organizing multiple sites into logical groups within your workspace.
34
+ :param pulumi.Input[_builtins.bool] publish: Automatically publish the site after creation or updates. When set to true, the provider will publish the site to production after successfully creating or updating it. Default: false (manual publishing required). Note: Site must have at least one published version before automatic publishing will work. If publishing fails, the entire operation will fail with an error (site may exist but Pulumi will report failure). Recommendation: Set to false for initial site creation, then enable after first manual publish.
35
+ :param pulumi.Input[_builtins.str] short_name: The slugified version of the site name used in URLs and for file organization. Optional - if not provided, Webflow will automatically generate one from the displayName. Must use only lowercase letters (a-z), numbers (0-9), and hyphens (-). No spaces, underscores, or special characters allowed. Must start and end with a letter or number (no leading/trailing hyphens). Examples: 'my-site', 'company-blog-2024', 'product-landing-page'.
36
+ :param pulumi.Input[_builtins.str] template_name: The template to use for site creation. Optional - if not specified, Webflow will create a blank site. **WARNING: This field is IMMUTABLE.** Once set, it cannot be changed. Changing this value will trigger a REPLACE operation, which will: (1) DELETE your existing site and ALL its content (pages, CMS items, assets, etc.), (2) CREATE a new site with the new template, (3) REPLACE all dependent resources (redirects, robots.txt, etc.). This is a DESTRUCTIVE operation that cannot be undone. Use any valid Webflow template identifier (e.g., 'mast-framework', 'blank'). Consider using resource protection (`protect: true`) to prevent accidental replacement.
37
+ :param pulumi.Input[_builtins.str] time_zone: The IANA timezone identifier for the site. Optional - Webflow will use its default timezone if not specified. Use standard IANA timezone identifiers (e.g., 'America/New_York', 'Europe/London', 'Asia/Tokyo', 'UTC'). This timezone is used for scheduling, analytics, and other time-sensitive features.
38
+ """
39
+ pulumi.set(__self__, "display_name", display_name)
40
+ pulumi.set(__self__, "workspace_id", workspace_id)
41
+ if parent_folder_id is not None:
42
+ pulumi.set(__self__, "parent_folder_id", parent_folder_id)
43
+ if publish is not None:
44
+ pulumi.set(__self__, "publish", publish)
45
+ if short_name is not None:
46
+ pulumi.set(__self__, "short_name", short_name)
47
+ if template_name is not None:
48
+ pulumi.set(__self__, "template_name", template_name)
49
+ if time_zone is not None:
50
+ pulumi.set(__self__, "time_zone", time_zone)
51
+
52
+ @_builtins.property
53
+ @pulumi.getter(name="displayName")
54
+ def display_name(self) -> pulumi.Input[_builtins.str]:
55
+ """
56
+ The human-readable name of the site as shown in the Webflow dashboard. Required - must be a non-empty string. Examples: 'My Marketing Site', 'Company Blog', 'Product Landing Page'. This is the name users will see when managing the site.
57
+ """
58
+ return pulumi.get(self, "display_name")
59
+
60
+ @display_name.setter
61
+ def display_name(self, value: pulumi.Input[_builtins.str]):
62
+ pulumi.set(self, "display_name", value)
63
+
64
+ @_builtins.property
65
+ @pulumi.getter(name="workspaceId")
66
+ def workspace_id(self) -> pulumi.Input[_builtins.str]:
67
+ """
68
+ The Webflow workspace ID where the site will be created. Required for site creation (Enterprise workspace required by Webflow API). Example: '5f0c8c9e1c9d440000e8d8c3'. You can find your workspace ID in the Webflow dashboard under Account Settings > Workspace.
69
+ """
70
+ return pulumi.get(self, "workspace_id")
71
+
72
+ @workspace_id.setter
73
+ def workspace_id(self, value: pulumi.Input[_builtins.str]):
74
+ pulumi.set(self, "workspace_id", value)
75
+
76
+ @_builtins.property
77
+ @pulumi.getter(name="parentFolderId")
78
+ def parent_folder_id(self) -> Optional[pulumi.Input[_builtins.str]]:
79
+ """
80
+ The folder ID where the site will be organized in the Webflow dashboard. Optional - the site will be placed at the workspace root if not specified. This is useful for organizing multiple sites into logical groups within your workspace.
81
+ """
82
+ return pulumi.get(self, "parent_folder_id")
83
+
84
+ @parent_folder_id.setter
85
+ def parent_folder_id(self, value: Optional[pulumi.Input[_builtins.str]]):
86
+ pulumi.set(self, "parent_folder_id", value)
87
+
88
+ @_builtins.property
89
+ @pulumi.getter
90
+ def publish(self) -> Optional[pulumi.Input[_builtins.bool]]:
91
+ """
92
+ Automatically publish the site after creation or updates. When set to true, the provider will publish the site to production after successfully creating or updating it. Default: false (manual publishing required). Note: Site must have at least one published version before automatic publishing will work. If publishing fails, the entire operation will fail with an error (site may exist but Pulumi will report failure). Recommendation: Set to false for initial site creation, then enable after first manual publish.
93
+ """
94
+ return pulumi.get(self, "publish")
95
+
96
+ @publish.setter
97
+ def publish(self, value: Optional[pulumi.Input[_builtins.bool]]):
98
+ pulumi.set(self, "publish", value)
99
+
100
+ @_builtins.property
101
+ @pulumi.getter(name="shortName")
102
+ def short_name(self) -> Optional[pulumi.Input[_builtins.str]]:
103
+ """
104
+ The slugified version of the site name used in URLs and for file organization. Optional - if not provided, Webflow will automatically generate one from the displayName. Must use only lowercase letters (a-z), numbers (0-9), and hyphens (-). No spaces, underscores, or special characters allowed. Must start and end with a letter or number (no leading/trailing hyphens). Examples: 'my-site', 'company-blog-2024', 'product-landing-page'.
105
+ """
106
+ return pulumi.get(self, "short_name")
107
+
108
+ @short_name.setter
109
+ def short_name(self, value: Optional[pulumi.Input[_builtins.str]]):
110
+ pulumi.set(self, "short_name", value)
111
+
112
+ @_builtins.property
113
+ @pulumi.getter(name="templateName")
114
+ def template_name(self) -> Optional[pulumi.Input[_builtins.str]]:
115
+ """
116
+ The template to use for site creation. Optional - if not specified, Webflow will create a blank site. **WARNING: This field is IMMUTABLE.** Once set, it cannot be changed. Changing this value will trigger a REPLACE operation, which will: (1) DELETE your existing site and ALL its content (pages, CMS items, assets, etc.), (2) CREATE a new site with the new template, (3) REPLACE all dependent resources (redirects, robots.txt, etc.). This is a DESTRUCTIVE operation that cannot be undone. Use any valid Webflow template identifier (e.g., 'mast-framework', 'blank'). Consider using resource protection (`protect: true`) to prevent accidental replacement.
117
+ """
118
+ return pulumi.get(self, "template_name")
119
+
120
+ @template_name.setter
121
+ def template_name(self, value: Optional[pulumi.Input[_builtins.str]]):
122
+ pulumi.set(self, "template_name", value)
123
+
124
+ @_builtins.property
125
+ @pulumi.getter(name="timeZone")
126
+ def time_zone(self) -> Optional[pulumi.Input[_builtins.str]]:
127
+ """
128
+ The IANA timezone identifier for the site. Optional - Webflow will use its default timezone if not specified. Use standard IANA timezone identifiers (e.g., 'America/New_York', 'Europe/London', 'Asia/Tokyo', 'UTC'). This timezone is used for scheduling, analytics, and other time-sensitive features.
129
+ """
130
+ return pulumi.get(self, "time_zone")
131
+
132
+ @time_zone.setter
133
+ def time_zone(self, value: Optional[pulumi.Input[_builtins.str]]):
134
+ pulumi.set(self, "time_zone", value)
135
+
136
+
137
+ @pulumi.type_token("webflow:index:Site")
138
+ class Site(pulumi.CustomResource):
139
+ @overload
140
+ def __init__(__self__,
141
+ resource_name: str,
142
+ opts: Optional[pulumi.ResourceOptions] = None,
143
+ display_name: Optional[pulumi.Input[_builtins.str]] = None,
144
+ parent_folder_id: Optional[pulumi.Input[_builtins.str]] = None,
145
+ publish: Optional[pulumi.Input[_builtins.bool]] = None,
146
+ short_name: Optional[pulumi.Input[_builtins.str]] = None,
147
+ template_name: Optional[pulumi.Input[_builtins.str]] = None,
148
+ time_zone: Optional[pulumi.Input[_builtins.str]] = None,
149
+ workspace_id: Optional[pulumi.Input[_builtins.str]] = None,
150
+ __props__=None):
151
+ """
152
+ Manages Webflow sites programmatically. This resource allows you to create, configure, and manage Webflow sites through infrastructure code. Create, Read, Update, and Delete operations are fully supported for complete site lifecycle management.
153
+
154
+ :param str resource_name: The name of the resource.
155
+ :param pulumi.ResourceOptions opts: Options for the resource.
156
+ :param pulumi.Input[_builtins.str] display_name: The human-readable name of the site as shown in the Webflow dashboard. Required - must be a non-empty string. Examples: 'My Marketing Site', 'Company Blog', 'Product Landing Page'. This is the name users will see when managing the site.
157
+ :param pulumi.Input[_builtins.str] parent_folder_id: The folder ID where the site will be organized in the Webflow dashboard. Optional - the site will be placed at the workspace root if not specified. This is useful for organizing multiple sites into logical groups within your workspace.
158
+ :param pulumi.Input[_builtins.bool] publish: Automatically publish the site after creation or updates. When set to true, the provider will publish the site to production after successfully creating or updating it. Default: false (manual publishing required). Note: Site must have at least one published version before automatic publishing will work. If publishing fails, the entire operation will fail with an error (site may exist but Pulumi will report failure). Recommendation: Set to false for initial site creation, then enable after first manual publish.
159
+ :param pulumi.Input[_builtins.str] short_name: The slugified version of the site name used in URLs and for file organization. Optional - if not provided, Webflow will automatically generate one from the displayName. Must use only lowercase letters (a-z), numbers (0-9), and hyphens (-). No spaces, underscores, or special characters allowed. Must start and end with a letter or number (no leading/trailing hyphens). Examples: 'my-site', 'company-blog-2024', 'product-landing-page'.
160
+ :param pulumi.Input[_builtins.str] template_name: The template to use for site creation. Optional - if not specified, Webflow will create a blank site. **WARNING: This field is IMMUTABLE.** Once set, it cannot be changed. Changing this value will trigger a REPLACE operation, which will: (1) DELETE your existing site and ALL its content (pages, CMS items, assets, etc.), (2) CREATE a new site with the new template, (3) REPLACE all dependent resources (redirects, robots.txt, etc.). This is a DESTRUCTIVE operation that cannot be undone. Use any valid Webflow template identifier (e.g., 'mast-framework', 'blank'). Consider using resource protection (`protect: true`) to prevent accidental replacement.
161
+ :param pulumi.Input[_builtins.str] time_zone: The IANA timezone identifier for the site. Optional - Webflow will use its default timezone if not specified. Use standard IANA timezone identifiers (e.g., 'America/New_York', 'Europe/London', 'Asia/Tokyo', 'UTC'). This timezone is used for scheduling, analytics, and other time-sensitive features.
162
+ :param pulumi.Input[_builtins.str] workspace_id: The Webflow workspace ID where the site will be created. Required for site creation (Enterprise workspace required by Webflow API). Example: '5f0c8c9e1c9d440000e8d8c3'. You can find your workspace ID in the Webflow dashboard under Account Settings > Workspace.
163
+ """
164
+ ...
165
+ @overload
166
+ def __init__(__self__,
167
+ resource_name: str,
168
+ args: SiteArgs,
169
+ opts: Optional[pulumi.ResourceOptions] = None):
170
+ """
171
+ Manages Webflow sites programmatically. This resource allows you to create, configure, and manage Webflow sites through infrastructure code. Create, Read, Update, and Delete operations are fully supported for complete site lifecycle management.
172
+
173
+ :param str resource_name: The name of the resource.
174
+ :param SiteArgs args: The arguments to use to populate this resource's properties.
175
+ :param pulumi.ResourceOptions opts: Options for the resource.
176
+ """
177
+ ...
178
+ def __init__(__self__, resource_name: str, *args, **kwargs):
179
+ resource_args, opts = _utilities.get_resource_args_opts(SiteArgs, pulumi.ResourceOptions, *args, **kwargs)
180
+ if resource_args is not None:
181
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
182
+ else:
183
+ __self__._internal_init(resource_name, *args, **kwargs)
184
+
185
+ def _internal_init(__self__,
186
+ resource_name: str,
187
+ opts: Optional[pulumi.ResourceOptions] = None,
188
+ display_name: Optional[pulumi.Input[_builtins.str]] = None,
189
+ parent_folder_id: Optional[pulumi.Input[_builtins.str]] = None,
190
+ publish: Optional[pulumi.Input[_builtins.bool]] = None,
191
+ short_name: Optional[pulumi.Input[_builtins.str]] = None,
192
+ template_name: Optional[pulumi.Input[_builtins.str]] = None,
193
+ time_zone: Optional[pulumi.Input[_builtins.str]] = None,
194
+ workspace_id: Optional[pulumi.Input[_builtins.str]] = None,
195
+ __props__=None):
196
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
197
+ if not isinstance(opts, pulumi.ResourceOptions):
198
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
199
+ if opts.id is None:
200
+ if __props__ is not None:
201
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
202
+ __props__ = SiteArgs.__new__(SiteArgs)
203
+
204
+ if display_name is None and not opts.urn:
205
+ raise TypeError("Missing required property 'display_name'")
206
+ __props__.__dict__["display_name"] = display_name
207
+ __props__.__dict__["parent_folder_id"] = parent_folder_id
208
+ __props__.__dict__["publish"] = publish
209
+ __props__.__dict__["short_name"] = short_name
210
+ __props__.__dict__["template_name"] = template_name
211
+ __props__.__dict__["time_zone"] = time_zone
212
+ if workspace_id is None and not opts.urn:
213
+ raise TypeError("Missing required property 'workspace_id'")
214
+ __props__.__dict__["workspace_id"] = workspace_id
215
+ __props__.__dict__["custom_domains"] = None
216
+ __props__.__dict__["data_collection_enabled"] = None
217
+ __props__.__dict__["data_collection_type"] = None
218
+ __props__.__dict__["last_published"] = None
219
+ __props__.__dict__["last_updated"] = None
220
+ __props__.__dict__["preview_url"] = None
221
+ super(Site, __self__).__init__(
222
+ 'webflow:index:Site',
223
+ resource_name,
224
+ __props__,
225
+ opts)
226
+
227
+ @staticmethod
228
+ def get(resource_name: str,
229
+ id: pulumi.Input[str],
230
+ opts: Optional[pulumi.ResourceOptions] = None) -> 'Site':
231
+ """
232
+ Get an existing Site resource's state with the given name, id, and optional extra
233
+ properties used to qualify the lookup.
234
+
235
+ :param str resource_name: The unique name of the resulting resource.
236
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
237
+ :param pulumi.ResourceOptions opts: Options for the resource.
238
+ """
239
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
240
+
241
+ __props__ = SiteArgs.__new__(SiteArgs)
242
+
243
+ __props__.__dict__["custom_domains"] = None
244
+ __props__.__dict__["data_collection_enabled"] = None
245
+ __props__.__dict__["data_collection_type"] = None
246
+ __props__.__dict__["display_name"] = None
247
+ __props__.__dict__["last_published"] = None
248
+ __props__.__dict__["last_updated"] = None
249
+ __props__.__dict__["parent_folder_id"] = None
250
+ __props__.__dict__["preview_url"] = None
251
+ __props__.__dict__["publish"] = None
252
+ __props__.__dict__["short_name"] = None
253
+ __props__.__dict__["template_name"] = None
254
+ __props__.__dict__["time_zone"] = None
255
+ __props__.__dict__["workspace_id"] = None
256
+ return Site(resource_name, opts=opts, __props__=__props__)
257
+
258
+ @_builtins.property
259
+ @pulumi.getter(name="customDomains")
260
+ def custom_domains(self) -> pulumi.Output[Optional[Sequence[_builtins.str]]]:
261
+ """
262
+ List of custom domains attached to the site (read-only in this release). Custom domain management will be available in a future release.
263
+ """
264
+ return pulumi.get(self, "custom_domains")
265
+
266
+ @_builtins.property
267
+ @pulumi.getter(name="dataCollectionEnabled")
268
+ def data_collection_enabled(self) -> pulumi.Output[Optional[_builtins.bool]]:
269
+ """
270
+ Indicates whether data collection is enabled for this site (read-only). Controlled by your Webflow workspace settings, not per-site.
271
+ """
272
+ return pulumi.get(self, "data_collection_enabled")
273
+
274
+ @_builtins.property
275
+ @pulumi.getter(name="dataCollectionType")
276
+ def data_collection_type(self) -> pulumi.Output[Optional[_builtins.str]]:
277
+ """
278
+ The type of data collection enabled for the site (read-only). Possible values: 'always' (always collect), 'optOut' (collect by default), 'disabled' (no collection). Controlled by your Webflow workspace settings, not per-site.
279
+ """
280
+ return pulumi.get(self, "data_collection_type")
281
+
282
+ @_builtins.property
283
+ @pulumi.getter(name="displayName")
284
+ def display_name(self) -> pulumi.Output[_builtins.str]:
285
+ """
286
+ The human-readable name of the site as shown in the Webflow dashboard. Required - must be a non-empty string. Examples: 'My Marketing Site', 'Company Blog', 'Product Landing Page'. This is the name users will see when managing the site.
287
+ """
288
+ return pulumi.get(self, "display_name")
289
+
290
+ @_builtins.property
291
+ @pulumi.getter(name="lastPublished")
292
+ def last_published(self) -> pulumi.Output[Optional[_builtins.str]]:
293
+ """
294
+ The RFC3339 timestamp of the last time the site was published (read-only). Automatically set by Webflow when changes are published to production.
295
+ """
296
+ return pulumi.get(self, "last_published")
297
+
298
+ @_builtins.property
299
+ @pulumi.getter(name="lastUpdated")
300
+ def last_updated(self) -> pulumi.Output[Optional[_builtins.str]]:
301
+ """
302
+ The RFC3339 timestamp of the last time the site configuration was updated (read-only). Automatically set by Webflow when any site changes occur.
303
+ """
304
+ return pulumi.get(self, "last_updated")
305
+
306
+ @_builtins.property
307
+ @pulumi.getter(name="parentFolderId")
308
+ def parent_folder_id(self) -> pulumi.Output[Optional[_builtins.str]]:
309
+ """
310
+ The folder ID where the site will be organized in the Webflow dashboard. Optional - the site will be placed at the workspace root if not specified. This is useful for organizing multiple sites into logical groups within your workspace.
311
+ """
312
+ return pulumi.get(self, "parent_folder_id")
313
+
314
+ @_builtins.property
315
+ @pulumi.getter(name="previewUrl")
316
+ def preview_url(self) -> pulumi.Output[Optional[_builtins.str]]:
317
+ """
318
+ The URL to a preview image of the site (read-only). Automatically generated by Webflow for site thumbnails in the dashboard.
319
+ """
320
+ return pulumi.get(self, "preview_url")
321
+
322
+ @_builtins.property
323
+ @pulumi.getter
324
+ def publish(self) -> pulumi.Output[Optional[_builtins.bool]]:
325
+ """
326
+ Automatically publish the site after creation or updates. When set to true, the provider will publish the site to production after successfully creating or updating it. Default: false (manual publishing required). Note: Site must have at least one published version before automatic publishing will work. If publishing fails, the entire operation will fail with an error (site may exist but Pulumi will report failure). Recommendation: Set to false for initial site creation, then enable after first manual publish.
327
+ """
328
+ return pulumi.get(self, "publish")
329
+
330
+ @_builtins.property
331
+ @pulumi.getter(name="shortName")
332
+ def short_name(self) -> pulumi.Output[Optional[_builtins.str]]:
333
+ """
334
+ The slugified version of the site name used in URLs and for file organization. Optional - if not provided, Webflow will automatically generate one from the displayName. Must use only lowercase letters (a-z), numbers (0-9), and hyphens (-). No spaces, underscores, or special characters allowed. Must start and end with a letter or number (no leading/trailing hyphens). Examples: 'my-site', 'company-blog-2024', 'product-landing-page'.
335
+ """
336
+ return pulumi.get(self, "short_name")
337
+
338
+ @_builtins.property
339
+ @pulumi.getter(name="templateName")
340
+ def template_name(self) -> pulumi.Output[Optional[_builtins.str]]:
341
+ """
342
+ The template to use for site creation. Optional - if not specified, Webflow will create a blank site. **WARNING: This field is IMMUTABLE.** Once set, it cannot be changed. Changing this value will trigger a REPLACE operation, which will: (1) DELETE your existing site and ALL its content (pages, CMS items, assets, etc.), (2) CREATE a new site with the new template, (3) REPLACE all dependent resources (redirects, robots.txt, etc.). This is a DESTRUCTIVE operation that cannot be undone. Use any valid Webflow template identifier (e.g., 'mast-framework', 'blank'). Consider using resource protection (`protect: true`) to prevent accidental replacement.
343
+ """
344
+ return pulumi.get(self, "template_name")
345
+
346
+ @_builtins.property
347
+ @pulumi.getter(name="timeZone")
348
+ def time_zone(self) -> pulumi.Output[Optional[_builtins.str]]:
349
+ """
350
+ The IANA timezone identifier for the site. Optional - Webflow will use its default timezone if not specified. Use standard IANA timezone identifiers (e.g., 'America/New_York', 'Europe/London', 'Asia/Tokyo', 'UTC'). This timezone is used for scheduling, analytics, and other time-sensitive features.
351
+ """
352
+ return pulumi.get(self, "time_zone")
353
+
354
+ @_builtins.property
355
+ @pulumi.getter(name="workspaceId")
356
+ def workspace_id(self) -> pulumi.Output[_builtins.str]:
357
+ """
358
+ The Webflow workspace ID where the site will be created. Required for site creation (Enterprise workspace required by Webflow API). Example: '5f0c8c9e1c9d440000e8d8c3'. You can find your workspace ID in the Webflow dashboard under Account Settings > Workspace.
359
+ """
360
+ return pulumi.get(self, "workspace_id")
361
+