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.
- pulumi_webflow/__init__.py +76 -0
- pulumi_webflow/_inputs.py +254 -0
- pulumi_webflow/_utilities.py +331 -0
- pulumi_webflow/asset.py +334 -0
- pulumi_webflow/asset_folder.py +225 -0
- pulumi_webflow/collection.py +235 -0
- pulumi_webflow/collection_field.py +322 -0
- pulumi_webflow/collection_item.py +283 -0
- pulumi_webflow/config/__init__.py +9 -0
- pulumi_webflow/config/__init__.pyi +21 -0
- pulumi_webflow/config/vars.py +29 -0
- pulumi_webflow/ecommerce_settings.py +146 -0
- pulumi_webflow/get_authorized_user.py +109 -0
- pulumi_webflow/get_token_info.py +82 -0
- pulumi_webflow/outputs.py +455 -0
- pulumi_webflow/page_content.py +172 -0
- pulumi_webflow/page_custom_code.py +178 -0
- pulumi_webflow/page_data.py +256 -0
- pulumi_webflow/provider.py +106 -0
- pulumi_webflow/pulumi-plugin.json +4 -0
- pulumi_webflow/py.typed +0 -0
- pulumi_webflow/redirect.py +226 -0
- pulumi_webflow/registered_script.py +295 -0
- pulumi_webflow/robots_txt.py +166 -0
- pulumi_webflow/site.py +361 -0
- pulumi_webflow/site_custom_code.py +178 -0
- pulumi_webflow/user.py +284 -0
- pulumi_webflow/webhook.py +235 -0
- pulumi_webflow-0.0.0.dist-info/METADATA +602 -0
- pulumi_webflow-0.0.0.dist-info/RECORD +32 -0
- pulumi_webflow-0.0.0.dist-info/WHEEL +5 -0
- pulumi_webflow-0.0.0.dist-info/top_level.txt +1 -0
|
@@ -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
|
+
|