diff --git a/.grit/patterns/terraform_cloudflare_v5.grit b/.grit/patterns/terraform_cloudflare_v5.grit new file mode 100644 index 0000000000..fc5f2bf9ba --- /dev/null +++ b/.grit/patterns/terraform_cloudflare_v5.grit @@ -0,0 +1,199 @@ + +language hcl + +pattern terraform_cloudflare_v5() { + or { + `cors_headers { $block }` => `cors_headers = { + $block +}` where { $block <: within `resource "cloudflare_access_application" $_ { $_ }` }, + `landing_page_design { $block }` => `landing_page_design = { + $block +}` where { $block <: within `resource "cloudflare_access_application" $_ { $_ }` }, + `saas_app { $block }` => `saas_app = { + $block +}` where { $block <: within `resource "cloudflare_access_application" $_ { $_ }` }, + `scim_config { $block }` => `scim_config = { + $block +}` where { $block <: within `resource "cloudflare_access_application" $_ { $_ }` }, + `exclude { $block }` => `exclude = { + $block +}` where { $block <: within `resource "cloudflare_access_group" $_ { $_ }` }, + `include { $block }` => `include = { + $block +}` where { $block <: within `resource "cloudflare_access_group" $_ { $_ }` }, + `require { $block }` => `require = { + $block +}` where { $block <: within `resource "cloudflare_access_group" $_ { $_ }` }, + `config { $block }` => `config = { + $block +}` where { $block <: within `resource "cloudflare_access_identity_provider" $_ { $_ }` }, + `scim_config { $block }` => `scim_config = { + $block +}` where { $block <: within `resource "cloudflare_access_identity_provider" $_ { $_ }` }, + `settings { $block }` => `settings = { + $block +}` where { $block <: within `resource "cloudflare_access_mutual_tls_hostname_settings" $_ { $_ }` }, + `custom_pages { $block }` => `custom_pages = { + $block +}` where { $block <: within `resource "cloudflare_access_organization" $_ { $_ }` }, + `login_design { $block }` => `login_design = { + $block +}` where { $block <: within `resource "cloudflare_access_organization" $_ { $_ }` }, + `approval_group { $block }` => `approval_group = { + $block +}` where { $block <: within `resource "cloudflare_access_policy" $_ { $_ }` }, + `exclude { $block }` => `exclude = { + $block +}` where { $block <: within `resource "cloudflare_access_policy" $_ { $_ }` }, + `include { $block }` => `include = { + $block +}` where { $block <: within `resource "cloudflare_access_policy" $_ { $_ }` }, + `require { $block }` => `require = { + $block +}` where { $block <: within `resource "cloudflare_access_policy" $_ { $_ }` }, + `configuration { $block }` => `configuration = { + $block +}` where { $block <: within `resource "cloudflare_access_rule" $_ { $_ }` }, + `auth_id_characteristics { $block }` => `auth_id_characteristics = { + $block +}` where { $block <: within `resource "cloudflare_api_shield" $_ { $_ }` }, + `condition { $block }` => `condition = { + $block +}` where { $block <: within `resource "cloudflare_api_token" $_ { $_ }` }, + `validation_errors { $block }` => `validation_errors = { + $block +}` where { $block <: within `resource "cloudflare_certificate_pack" $_ { $_ }` }, + `validation_records { $block }` => `validation_records = { + $block +}` where { $block <: within `resource "cloudflare_certificate_pack" $_ { $_ }` }, + `ssl { $block }` => `ssl = { + $block +}` where { $block <: within `resource "cloudflare_custom_hostname" $_ { $_ }` }, + `custom_ssl_options { $block }` => `custom_ssl_options = { + $block +}` where { $block <: within `resource "cloudflare_custom_ssl" $_ { $_ }` }, + `custom_ssl_priority { $block }` => `custom_ssl_priority = { + $block +}` where { $block <: within `resource "cloudflare_custom_ssl" $_ { $_ }` }, + `data { $block }` => `data = { + $block +}` where { $block <: within `resource "cloudflare_device_dex_test" $_ { $_ }` }, + `config { $block }` => `config = { + $block +}` where { $block <: within `resource "cloudflare_device_managed_networks" $_ { $_ }` }, + `config { $block }` => `config = { + $block +}` where { $block <: within `resource "cloudflare_device_posture_integration" $_ { $_ }` }, + `input { $block }` => `input = { + $block +}` where { $block <: within `resource "cloudflare_device_posture_rule" $_ { $_ }` }, + `match { $block }` => `match = { + $block +}` where { $block <: within `resource "cloudflare_device_posture_rule" $_ { $_ }` }, + `context_awareness { $block }` => `context_awareness = { + $block +}` where { $block <: within `resource "cloudflare_dlp_profile" $_ { $_ }` }, + `hostname { $block }` => `hostname = { + $block +}` where { $block <: within `resource "cloudflare_list_item" $_ { $_ }` }, + `redirect { $block }` => `redirect = { + $block +}` where { $block <: within `resource "cloudflare_list_item" $_ { $_ }` }, + `rules { $block }` => `rules = { + $block +}` where { $block <: within `resource "cloudflare_load_balancer" $_ { $_ }` }, + `output_options { $block }` => `output_options = { + $block +}` where { $block <: within `resource "cloudflare_logpush_job" $_ { $_ }` }, + `filters { $block }` => `filters = { + $block +}` where { $block <: within `resource "cloudflare_notification_policy" $_ { $_ }` }, + `actions { $block }` => `actions = { + $block +}` where { $block <: within `resource "cloudflare_page_rule" $_ { $_ }` }, + `build_config { $block }` => `build_config = { + $block +}` where { $block <: within `resource "cloudflare_pages_project" $_ { $_ }` }, + `deployment_configs { $block }` => `deployment_configs = { + $block +}` where { $block <: within `resource "cloudflare_pages_project" $_ { $_ }` }, + `source { $block }` => `source = { + $block +}` where { $block <: within `resource "cloudflare_pages_project" $_ { $_ }` }, + `action { $block }` => `action = { + $block +}` where { $block <: within `resource "cloudflare_rate_limit" $_ { $_ }` }, + `correlate { $block }` => `correlate = { + $block +}` where { $block <: within `resource "cloudflare_rate_limit" $_ { $_ }` }, + `match { $block }` => `match = { + $block +}` where { $block <: within `resource "cloudflare_rate_limit" $_ { $_ }` }, + `data { $block }` => `data = { + $block +}` where { $block <: within `resource "cloudflare_record" $_ { $_ }` }, + `rules { $block }` => `rules = { + $block +}` where { $block <: within `resource "cloudflare_ruleset" $_ { $_ }` }, + `dns { $block }` => `dns = { + $block +}` where { $block <: within `resource "cloudflare_spectrum_application" $_ { $_ }` }, + `edge_ips { $block }` => `edge_ips = { + $block +}` where { $block <: within `resource "cloudflare_spectrum_application" $_ { $_ }` }, + `origin_dns { $block }` => `origin_dns = { + $block +}` where { $block <: within `resource "cloudflare_spectrum_application" $_ { $_ }` }, + `origin_port_range { $block }` => `origin_port_range = { + $block +}` where { $block <: within `resource "cloudflare_spectrum_application" $_ { $_ }` }, + `antivirus { $block }` => `antivirus = { + $block +}` where { $block <: within `resource "cloudflare_teams_account" $_ { $_ }` }, + `block_page { $block }` => `block_page = { + $block +}` where { $block <: within `resource "cloudflare_teams_account" $_ { $_ }` }, + `body_scanning { $block }` => `body_scanning = { + $block +}` where { $block <: within `resource "cloudflare_teams_account" $_ { $_ }` }, + `custom_certificate { $block }` => `custom_certificate = { + $block +}` where { $block <: within `resource "cloudflare_teams_account" $_ { $_ }` }, + `extended_email_matching { $block }` => `extended_email_matching = { + $block +}` where { $block <: within `resource "cloudflare_teams_account" $_ { $_ }` }, + `fips { $block }` => `fips = { + $block +}` where { $block <: within `resource "cloudflare_teams_account" $_ { $_ }` }, + `logging { $block }` => `logging = { + $block +}` where { $block <: within `resource "cloudflare_teams_account" $_ { $_ }` }, + `payload_log { $block }` => `payload_log = { + $block +}` where { $block <: within `resource "cloudflare_teams_account" $_ { $_ }` }, + `proxy { $block }` => `proxy = { + $block +}` where { $block <: within `resource "cloudflare_teams_account" $_ { $_ }` }, + `ssh_session_log { $block }` => `ssh_session_log = { + $block +}` where { $block <: within `resource "cloudflare_teams_account" $_ { $_ }` }, + `rule_settings { $block }` => `rule_settings = { + $block +}` where { $block <: within `resource "cloudflare_teams_rule" $_ { $_ }` }, + `config { $block }` => `config = { + $block +}` where { $block <: within `resource "cloudflare_tunnel_config" $_ { $_ }` }, + `configuration { $block }` => `configuration = { + $block +}` where { $block <: within `resource "cloudflare_user_agent_blocking_rule" $_ { $_ }` }, + `additional_routes { $block }` => `additional_routes = { + $block +}` where { $block <: within `resource "cloudflare_waiting_room" $_ { $_ }` }, + `rules { $block }` => `rules = { + $block +}` where { $block <: within `resource "cloudflare_waiting_room_rules" $_ { $_ }` }, + `settings { $block }` => `settings = { + $block +}` where { $block <: within `resource "cloudflare_zone_settings_override" $_ { $_ }` } + } +} \ No newline at end of file diff --git a/.grit/patterns/v5_upgrade.md b/.grit/patterns/v5_upgrade.md new file mode 100644 index 0000000000..a7c4c3e61a --- /dev/null +++ b/.grit/patterns/v5_upgrade.md @@ -0,0 +1,98 @@ +--- +layout: "cloudflare" +page_title: "Upgrading to version 5 (from 4.x)" +description: Terraform Cloudflare Provider Version 5 Upgrade Guide +--- + +# Terraform Cloudflare Provider Version 5 Upgrade Guide + +Version 5 of the Cloudflare Terraform Provider is a ground-up rewrite of the provider, using code generation from our OpenAPI spec. + +```grit +language hcl + +or { + terraform_cloudflare_v5(), + `provider "cloudflare" { $provider }` where { + $provider <: contains `version = $old` => `version = "~> 5"`, + $old <: not includes "5" + } +} +``` + +## Provider Version Configuration + +If you are not ready to make a move to version 5 of the Cloudflare provider, +you may keep the 4.x branch active for your Terraform project by specifying: + +```hcl +provider "cloudflare" { + version = "~> 4" + # ... any other configuration +} +``` + +We highly recommend reviewing this guide, make necessary changes and move to +5.x branch, as further 4.x releases are unlikely to happen outside of critical +security fixes. + +~> Before attempting to upgrade to version 5, you should first upgrade to the +latest version of 4 to ensure any transitional updates are applied to your +existing configuration. + +Once ready, make the following change to use the latest 5.x release: + +```hcl +provider "cloudflare" { + version = "~> 5" + # ... any other configuration +} +``` + +## Automatic migration + +For assisting with automatic migrations, we have provided a [GritQL] pattern. +This will allow you to rewrite the parts of your Terraform configuration that have changed automatically. Once you [install Grit], you can run the following +command in the directory where your Terraform configuration is located. + +~> If you are using modules or other dynamic features of HCL, the provided +codemods may not be as effective. We recommend reviewing the migration notes below to verify all the changes. + +## Block attributes + +All blocks used for configuration have been converted to attributes, which must be set with an `=` sign. + +For example, the `config` block in the `cloudflare_device_posture_integration` resource must be converted from this: + +```hcl +resource "cloudflare_device_posture_integration" "example" { + # old stuff + config { + api_url = "https://example.com/api" + auth_url = "https://example.com/connect/token" + client_id = "client-id" + client_secret = "client-secret" + } +} +``` + +Afterwards it will look like this: + +```hcl +resource "cloudflare_device_posture_integration" "example" { + # old stuff + config = { + api_url = "https://example.com/api" + auth_url = "https://example.com/connect/token" + client_id = "client-id" + client_secret = "client-secret" + } +} +``` + +## Renames + +## Removals + +[GritQL]: https://www.grit.io/ +[install Grit]: https://docs.grit.io/cli/quickstart diff --git a/.grit/workflows/stainless-gritql-generator/.gitignore b/.grit/workflows/stainless-gritql-generator/.gitignore deleted file mode 100644 index f46d9c9e1e..0000000000 --- a/.grit/workflows/stainless-gritql-generator/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.tfrc -*.lock.hcl \ No newline at end of file diff --git a/.grit/workflows/stainless-gritql-generator/config/.terraform.lock.hcl b/.grit/workflows/stainless-gritql-generator/config/.terraform.lock.hcl deleted file mode 100644 index f635a6ded3..0000000000 --- a/.grit/workflows/stainless-gritql-generator/config/.terraform.lock.hcl +++ /dev/null @@ -1,25 +0,0 @@ -# This file is maintained automatically by "terraform init". -# Manual edits may be lost in future updates. - -provider "registry.terraform.io/cloudflare/cloudflare" { - version = "4.36.0" - constraints = "~> 4.0" - hashes = [ - "h1:zjzavjIdLDGRYsWd3v0HJz6ul12Cewj9RW/cqAQ4DxI=", - "zh:02665712b3893307596b3caab99cf1f2502d5caca18e22d4b37bb535e628e102", - "zh:1514b0d3ef62934484ac471113ee68cddec0c21e56b4f710922741fe9b6e6fdf", - "zh:1fab4dfcecbcea13267b42e5ff05ba0692aa2dcb247b8e633fea0daf49feb156", - "zh:24d8367295fe1f1b2be37802aecb96edf32f743364663ffe781d1bb92438395d", - "zh:34e84e7940c99dcf65663cfd25afac22bf5c8a5ff2cd21900c67180d3a072be9", - "zh:3d71d63204a329acf1d1de8638f2c725243cb94cf444d2d7acde54b3d1ac1696", - "zh:57831ba88e779a762bcfa224ba9eac8bc22ef9cd70cd541d848b351e0ba6a75c", - "zh:6407560f2e548afcb4852c91efc664627a9ee565c31a9c81fc9ea1806fca0567", - "zh:738ddbc664d75f4859aa09444a27809bc398795a8ea8f5be8531040690287712", - "zh:841ca2b2d78b6f8d33ec3435bc090c5e04a3a7d85c80df11227a7ea00d36f6b1", - "zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f", - "zh:8b3d3d63354032ab9b2403c50728e9aa4e83c7367eaad2d18794221addeafc0f", - "zh:9e293443fe3127e488f540229983c1b9688268185f87567bb3d18e794697acd2", - "zh:b3a22439156e46461213db183e2e89569cd2e8d7cbcfc4b9f90469090e105807", - "zh:f430feb5d51891e84028459e57039045dea4f1f5fcf671161d8ac2d8f28763f3", - ] -} diff --git a/.grit/workflows/stainless-gritql-generator/new.json b/.grit/workflows/stainless-gritql-generator/new.json deleted file mode 100644 index 310530f801..0000000000 --- a/.grit/workflows/stainless-gritql-generator/new.json +++ /dev/null @@ -1,12429 +0,0 @@ -{ - "format_version": "1.0", - "provider_schemas": { - "registry.terraform.io/cloudflare/cloudflare": { - "provider": { - "version": 0, - "block": { - "attributes": { - "api_key": { - "type": "string", - "description": "The API key for operations. Alternatively, can be configured using the `CLOUDFLARE_API_KEY` environment variable. API keys are [now considered legacy by Cloudflare](https://developers.cloudflare.com/fundamentals/api/get-started/keys/#limitations), API tokens should be used instead. Must provide only one of `api_key`, `api_token`, `api_user_service_key`.", - "description_kind": "markdown", - "optional": true - }, - "api_token": { - "type": "string", - "description": "The API Token for operations. Alternatively, can be configured using the `CLOUDFLARE_API_TOKEN` environment variable. Must provide only one of `api_key`, `api_token`, `api_user_service_key`.", - "description_kind": "markdown", - "optional": true - }, - "api_user_service_key": { - "type": "string", - "description": "A special Cloudflare API key good for a restricted set of endpoints. Alternatively, can be configured using the `CLOUDFLARE_API_USER_SERVICE_KEY` environment variable. Must provide only one of `api_key`, `api_token`, `api_user_service_key`.", - "description_kind": "markdown", - "optional": true - }, - "base_url": { - "type": "string", - "description": "Value to override the default HTTP client base URL. Alternatively, can be configured using the `base_url` environment variable.", - "description_kind": "markdown", - "optional": true - }, - "email": { - "type": "string", - "description": "A registered Cloudflare email address. Alternatively, can be configured using the `CLOUDFLARE_EMAIL` environment variable. Required when using `api_key`. Conflicts with `api_token`.", - "description_kind": "markdown", - "optional": true - }, - "user_agent_operator_suffix": { - "type": "string", - "description": "A value to append to the HTTP User Agent for all API calls. This value is not something most users need to modify however, if you are using a non-standard provider or operator configuration, this is recommended to assist in uniquely identifying your traffic. **Setting this value will remove the Terraform version from the HTTP User Agent string and may have unintended consequences**. Alternatively, can be configured using the `CLOUDFLARE_USER_AGENT_OPERATOR_SUFFIX` environment variable.", - "description_kind": "markdown", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "resource_schemas": { - "cloudflare_access_application": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "The Account ID to use for this endpoint. Mutually exclusive with the Zone ID.", - "description_kind": "plain", - "optional": true - }, - "allow_authenticate_via_warp": { - "type": "bool", - "description": "When set to true, users can authenticate to this application using their WARP session. When set to false this application will always require direct IdP authentication. This setting always overrides the organization setting for WARP authentication.", - "description_kind": "plain", - "optional": true - }, - "allowed_idps": { - "type": "string", - "description": "The identity providers your users can select when connecting to this application. Defaults to all IdPs configured in your account.", - "description_kind": "plain", - "optional": true - }, - "app_launcher_visible": { - "type": "bool", - "description": "Displays the application in the App Launcher.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "auto_redirect_to_identity": { - "type": "bool", - "description": "When set to `true`, users skip the identity provider selection step during login. You must specify only one identity provider in allowed_idps.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "cors_headers": { - "nested_type": { - "attributes": { - "allow_all_headers": { - "type": "bool", - "description": "Allows all HTTP request headers.", - "description_kind": "plain", - "optional": true - }, - "allow_all_methods": { - "type": "bool", - "description": "Allows all HTTP request methods.", - "description_kind": "plain", - "optional": true - }, - "allow_all_origins": { - "type": "bool", - "description": "Allows all origins.", - "description_kind": "plain", - "optional": true - }, - "allow_credentials": { - "type": "bool", - "description": "When set to `true`, includes credentials (cookies, authorization headers, or TLS client certificates) with requests.", - "description_kind": "plain", - "optional": true - }, - "allowed_headers": { - "type": "string", - "description": "Allowed HTTP request headers.", - "description_kind": "plain", - "optional": true - }, - "allowed_methods": { - "type": "string", - "description": "Allowed HTTP request methods.", - "description_kind": "plain", - "optional": true - }, - "allowed_origins": { - "type": "string", - "description": "Allowed origins.", - "description_kind": "plain", - "optional": true - }, - "max_age": { - "type": "number", - "description": "The maximum number of seconds the results of a preflight request can be cached.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "custom_deny_message": { - "type": "string", - "description": "The custom error message shown to a user when they are denied access to the application.", - "description_kind": "plain", - "optional": true - }, - "custom_deny_url": { - "type": "string", - "description": "The custom URL a user is redirected to when they are denied access to the application when failing identity-based rules.", - "description_kind": "plain", - "optional": true - }, - "custom_non_identity_deny_url": { - "type": "string", - "description": "The custom URL a user is redirected to when they are denied access to the application when failing non-identity rules.", - "description_kind": "plain", - "optional": true - }, - "custom_pages": { - "type": "string", - "description": "The custom pages that will be displayed when applicable for this application", - "description_kind": "plain", - "optional": true - }, - "domain": { - "type": "string", - "description": "The primary hostname and path that Access will secure. If the app is visible in the App Launcher dashboard, this is the domain that will be displayed.", - "description_kind": "plain", - "optional": true - }, - "enable_binding_cookie": { - "type": "bool", - "description": "Enables the binding cookie, which increases security against compromised authorization tokens and CSRF attacks.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "http_only_cookie_attribute": { - "type": "bool", - "description": "Enables the HttpOnly cookie attribute, which increases security against XSS attacks.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "id": { - "type": "string", - "description": "UUID", - "description_kind": "plain", - "computed": true - }, - "logo_url": { - "type": "string", - "description": "The image URL for the logo shown in the App Launcher dashboard.", - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description": "The name of the application.", - "description_kind": "plain", - "optional": true - }, - "options_preflight_bypass": { - "type": "bool", - "description": "Allows options preflight requests to bypass Access authentication and go directly to the origin. Cannot turn on if cors_headers is set.", - "description_kind": "plain", - "optional": true - }, - "path_cookie_attribute": { - "type": "bool", - "description": "Enables cookie paths to scope an application's JWT to the application path. If disabled, the JWT will scope to the hostname by default", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "policies": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description": "The UUID of the policy", - "description_kind": "plain", - "optional": true - }, - "precedence": { - "type": "number", - "description": "The order of execution for this policy. Must be unique for each policy within an app.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "list" - }, - "description": "The policies that will apply to the application, in ascending order of precedence. Items can reference existing policies or create new policies exclusive to the application.", - "description_kind": "plain", - "optional": true - }, - "saas_app": { - "nested_type": { - "attributes": { - "access_token_lifetime": { - "type": "string", - "description": "The lifetime of the OIDC Access Token after creation. Valid units are m,h. Must be greater than or equal to 1m and less than or equal to 24h.", - "description_kind": "plain", - "optional": true - }, - "allow_pkce_without_client_secret": { - "type": "bool", - "description": "If client secret should be required on the token endpoint when authorization_code_with_pkce grant is used.", - "description_kind": "plain", - "optional": true - }, - "app_launcher_url": { - "type": "string", - "description": "The URL where this applications tile redirects users", - "description_kind": "plain", - "optional": true - }, - "auth_type": { - "type": "string", - "description": "Optional identifier indicating the authentication protocol used for the saas app. Required for OIDC. Default if unset is \"saml\"", - "description_kind": "plain", - "optional": true - }, - "client_id": { - "type": "string", - "description": "The application client id", - "description_kind": "plain", - "optional": true - }, - "client_secret": { - "type": "string", - "description": "The application client secret, only returned on POST request.", - "description_kind": "plain", - "optional": true - }, - "consumer_service_url": { - "type": "string", - "description": "The service provider's endpoint that is responsible for receiving and parsing a SAML assertion.", - "description_kind": "plain", - "optional": true - }, - "created_at": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "custom_attributes": { - "nested_type": { - "attributes": { - "friendly_name": { - "type": "string", - "description": "The SAML FriendlyName of the attribute.", - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description": "The name of the attribute.", - "description_kind": "plain", - "optional": true - }, - "name_format": { - "type": "string", - "description": "A globally unique name for an identity or service provider.", - "description_kind": "plain", - "optional": true - }, - "required": { - "type": "bool", - "description": "If the attribute is required when building a SAML assertion.", - "description_kind": "plain", - "optional": true - }, - "source": { - "nested_type": { - "attributes": { - "name": { - "type": "string", - "description": "The name of the IdP attribute.", - "description_kind": "plain", - "optional": true - }, - "name_by_idp": { - "type": ["map", "string"], - "description": "A mapping from IdP ID to attribute name.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "custom_claims": { - "nested_type": { - "attributes": { - "name": { - "type": "string", - "description": "The name of the claim.", - "description_kind": "plain", - "optional": true - }, - "required": { - "type": "bool", - "description": "If the claim is required when building an OIDC token.", - "description_kind": "plain", - "optional": true - }, - "scope": { - "type": "string", - "description": "The scope of the claim.", - "description_kind": "plain", - "optional": true - }, - "source": { - "nested_type": { - "attributes": { - "name": { - "type": "string", - "description": "The name of the IdP claim.", - "description_kind": "plain", - "optional": true - }, - "name_by_idp": { - "type": ["map", "string"], - "description": "A mapping from IdP ID to claim name.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "default_relay_state": { - "type": "string", - "description": "The URL that the user will be redirected to after a successful login for IDP initiated logins.", - "description_kind": "plain", - "optional": true - }, - "grant_types": { - "type": "string", - "description": "The OIDC flows supported by this application", - "description_kind": "plain", - "optional": true - }, - "group_filter_regex": { - "type": "string", - "description": "A regex to filter Cloudflare groups returned in ID token and userinfo endpoint", - "description_kind": "plain", - "optional": true - }, - "hybrid_and_implicit_options": { - "nested_type": { - "attributes": { - "return_access_token_from_authorization_endpoint": { - "type": "bool", - "description": "If an Access Token should be returned from the OIDC Authorization endpoint", - "description_kind": "plain", - "optional": true - }, - "return_id_token_from_authorization_endpoint": { - "type": "bool", - "description": "If an ID Token should be returned from the OIDC Authorization endpoint", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "idp_entity_id": { - "type": "string", - "description": "The unique identifier for your SaaS application.", - "description_kind": "plain", - "optional": true - }, - "name_id_format": { - "type": "string", - "description": "The format of the name identifier sent to the SaaS application.", - "description_kind": "plain", - "optional": true - }, - "name_id_transform_jsonata": { - "type": "string", - "description": "A [JSONata](https://jsonata.org/) expression that transforms an application's user identities into a NameID value for its SAML assertion. This expression should evaluate to a singular string. The output of this expression can override the `name_id_format` setting.\n", - "description_kind": "plain", - "optional": true - }, - "public_key": { - "type": "string", - "description": "The Access public certificate that will be used to verify your identity.", - "description_kind": "plain", - "optional": true - }, - "redirect_uris": { - "type": "string", - "description": "The permitted URL's for Cloudflare to return Authorization codes and Access/ID tokens", - "description_kind": "plain", - "optional": true - }, - "refresh_token_options": { - "nested_type": { - "attributes": { - "lifetime": { - "type": "string", - "description": "How long a refresh token will be valid for after creation. Valid units are m,h,d. Must be longer than 1m.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "saml_attribute_transform_jsonata": { - "type": "string", - "description": "A [JSONata] (https://jsonata.org/) expression that transforms an application's user identities into attribute assertions in the SAML response. The expression can transform id, email, name, and groups values. It can also transform fields listed in the saml_attributes or oidc_fields of the identity provider used to authenticate. The output of this expression must be a JSON object.\n", - "description_kind": "plain", - "optional": true - }, - "scopes": { - "type": "string", - "description": "Define the user information shared with access, \"offline_access\" scope will be automatically enabled if refresh tokens are enabled", - "description_kind": "plain", - "optional": true - }, - "sp_entity_id": { - "type": "string", - "description": "A globally unique name for an identity or service provider.", - "description_kind": "plain", - "optional": true - }, - "sso_endpoint": { - "type": "string", - "description": "The endpoint where your SaaS application will send login requests.", - "description_kind": "plain", - "optional": true - }, - "updated_at": { - "type": "string", - "description_kind": "plain", - "computed": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "same_site_cookie_attribute": { - "type": "string", - "description": "Sets the SameSite cookie setting, which provides increased security against CSRF attacks.", - "description_kind": "plain", - "optional": true - }, - "scim_config": { - "nested_type": { - "attributes": { - "authentication": { - "nested_type": { - "attributes": { - "authorization_url": { - "type": "string", - "description": "URL used to generate the auth code used during token generation.", - "description_kind": "plain", - "optional": true - }, - "client_id": { - "type": "string", - "description": "Client ID used to authenticate when generating a token for authenticating with the remote SCIM service.", - "description_kind": "plain", - "optional": true - }, - "client_secret": { - "type": "string", - "description": "Secret used to authenticate when generating a token for authenticating with the remove SCIM service.", - "description_kind": "plain", - "optional": true - }, - "password": { - "type": "string", - "description": "Password used to authenticate with the remote SCIM service.", - "description_kind": "plain", - "optional": true - }, - "scheme": { - "type": "string", - "description": "The authentication scheme to use when making SCIM requests to this application.", - "description_kind": "plain", - "required": true - }, - "scopes": { - "type": "string", - "description": "The authorization scopes to request when generating the token used to authenticate with the remove SCIM service.", - "description_kind": "plain", - "optional": true - }, - "token": { - "type": "string", - "description": "Token used to authenticate with the remote SCIM service.", - "description_kind": "plain", - "optional": true - }, - "token_url": { - "type": "string", - "description": "URL used to generate the token used to authenticate with the remote SCIM service.", - "description_kind": "plain", - "optional": true - }, - "user": { - "type": "string", - "description": "User name used to authenticate with the remote SCIM service.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Attributes for configuring HTTP Basic authentication scheme for SCIM provisioning to an application.", - "description_kind": "plain", - "optional": true - }, - "deactivate_on_delete": { - "type": "bool", - "description": "If false, propagates DELETE requests to the target application for SCIM resources. If true, sets 'active' to false on the SCIM resource. Note: Some targets do not support DELETE operations.", - "description_kind": "plain", - "optional": true - }, - "enabled": { - "type": "bool", - "description": "Whether SCIM provisioning is turned on for this application.", - "description_kind": "plain", - "optional": true - }, - "idp_uid": { - "type": "string", - "description": "The UID of the IdP to use as the source for SCIM resources to provision to this application.", - "description_kind": "plain", - "required": true - }, - "mappings": { - "nested_type": { - "attributes": { - "enabled": { - "type": "bool", - "description": "Whether or not this mapping is enabled.", - "description_kind": "plain", - "optional": true - }, - "filter": { - "type": "string", - "description": "A [SCIM filter expression](https://datatracker.ietf.org/doc/html/rfc7644#section-3.4.2.2) that matches resources that should be provisioned to this application.", - "description_kind": "plain", - "optional": true - }, - "operations": { - "nested_type": { - "attributes": { - "create": { - "type": "bool", - "description": "Whether or not this mapping applies to create (POST) operations.", - "description_kind": "plain", - "optional": true - }, - "delete": { - "type": "bool", - "description": "Whether or not this mapping applies to DELETE operations.", - "description_kind": "plain", - "optional": true - }, - "update": { - "type": "bool", - "description": "Whether or not this mapping applies to update (PATCH/PUT) operations.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Whether or not this mapping applies to creates, updates, or deletes.", - "description_kind": "plain", - "optional": true - }, - "schema": { - "type": "string", - "description": "Which SCIM resource type this mapping applies to.", - "description_kind": "plain", - "required": true - }, - "transform_jsonata": { - "type": "string", - "description": "A [JSONata](https://jsonata.org/) expression that transforms the resource before provisioning it in the application.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "list" - }, - "description": "A list of mappings to apply to SCIM resources before provisioning them in this application. These can transform or filter the resources to be provisioned.", - "description_kind": "plain", - "optional": true - }, - "remote_uri": { - "type": "string", - "description": "The base URI for the application's SCIM-compatible API.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description": "Configuration for provisioning to this application via SCIM. This is currently in closed beta.", - "description_kind": "plain", - "optional": true - }, - "self_hosted_domains": { - "type": "string", - "description": "List of domains that Access will secure.", - "description_kind": "plain", - "optional": true - }, - "service_auth_401_redirect": { - "type": "bool", - "description": "Returns a 401 status code when the request is blocked by a Service Auth policy.", - "description_kind": "plain", - "optional": true - }, - "session_duration": { - "type": "string", - "description": "The amount of time that tokens issued for this application will be valid. Must be in the format `300ms` or `2h45m`. Valid time units are: ns, us (or µs), ms, s, m, h.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "skip_interstitial": { - "type": "bool", - "description": "Enables automatic authentication through cloudflared.", - "description_kind": "plain", - "optional": true - }, - "tags": { - "type": "string", - "description": "The tags you want assigned to an application. Tags are used to filter applications in the App Launcher dashboard.", - "description_kind": "plain", - "optional": true - }, - "type": { - "type": "string", - "description": "The application type.", - "description_kind": "plain", - "optional": true - }, - "zone_id": { - "type": "string", - "description": "The Zone ID to use for this endpoint. Mutually exclusive with the Account ID.", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_access_ca_certificate": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "The Account ID to use for this endpoint. Mutually exclusive with the Zone ID.", - "description_kind": "plain", - "optional": true - }, - "app_id": { - "type": "string", - "description": "UUID", - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "The Zone ID to use for this endpoint. Mutually exclusive with the Account ID.", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_access_custom_page": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "app_count": { - "type": "number", - "description": "Number of apps the custom page is assigned to.", - "description_kind": "plain", - "optional": true - }, - "custom_html": { - "type": "string", - "description": "Custom page HTML.", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "UUID", - "description_kind": "plain", - "computed": true - }, - "name": { - "type": "string", - "description": "Custom page name.", - "description_kind": "plain", - "required": true - }, - "type": { - "type": "string", - "description": "Custom page type.", - "description_kind": "plain", - "required": true - }, - "uid": { - "type": "string", - "description": "UUID", - "description_kind": "plain", - "computed": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_access_group": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "The Account ID to use for this endpoint. Mutually exclusive with the Zone ID.", - "description_kind": "plain", - "optional": true - }, - "exclude": { - "nested_type": { - "attributes": { - "any_valid_service_token": { - "type": "string", - "description": "An empty object which matches on all service tokens.", - "description_kind": "plain", - "optional": true - }, - "auth_method": { - "nested_type": { - "attributes": { - "auth_method": { - "type": "string", - "description": "The type of authentication method https://datatracker.ietf.org/doc/html/rfc8176.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "azure_ad": { - "nested_type": { - "attributes": { - "connection_id": { - "type": "string", - "description": "The ID of your Azure identity provider.", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "The ID of an Azure group.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "certificate": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "device_posture": { - "nested_type": { - "attributes": { - "integration_uid": { - "type": "string", - "description": "The ID of a device posture integration.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "email": { - "nested_type": { - "attributes": { - "email": { - "type": "string", - "description": "The email of the user.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "email_domain": { - "nested_type": { - "attributes": { - "domain": { - "type": "string", - "description": "The email domain to match.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "email_list": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description": "The ID of a previously created email list.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "everyone": { - "type": "string", - "description": "An empty object which matches on all users.", - "description_kind": "plain", - "optional": true - }, - "external_evaluation": { - "nested_type": { - "attributes": { - "evaluate_url": { - "type": "string", - "description": "The API endpoint containing your business logic.", - "description_kind": "plain", - "required": true - }, - "keys_url": { - "type": "string", - "description": "The API endpoint containing the key that Access uses to verify that the response came from your API.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "geo": { - "nested_type": { - "attributes": { - "country_code": { - "type": "string", - "description": "The country code that should be matched.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "github_organization": { - "nested_type": { - "attributes": { - "connection_id": { - "type": "string", - "description": "The ID of your Github identity provider.", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description": "The name of the organization.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "group": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description": "The ID of a previously created Access group.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "gsuite": { - "nested_type": { - "attributes": { - "connection_id": { - "type": "string", - "description": "The ID of your Google Workspace identity provider.", - "description_kind": "plain", - "required": true - }, - "email": { - "type": "string", - "description": "The email of the Google Workspace group.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "ip": { - "nested_type": { - "attributes": { - "ip": { - "type": "string", - "description": "An IPv4 or IPv6 CIDR block.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "ip_list": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description": "The ID of a previously created IP list.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "okta": { - "nested_type": { - "attributes": { - "connection_id": { - "type": "string", - "description": "The ID of your Okta identity provider.", - "description_kind": "plain", - "required": true - }, - "email": { - "type": "string", - "description": "The email of the Okta group.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "saml": { - "nested_type": { - "attributes": { - "attribute_name": { - "type": "string", - "description": "The name of the SAML attribute.", - "description_kind": "plain", - "required": true - }, - "attribute_value": { - "type": "string", - "description": "The SAML attribute value to look for.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "service_token": { - "nested_type": { - "attributes": { - "token_id": { - "type": "string", - "description": "The ID of a Service Token.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "list" - }, - "description": "Rules evaluated with a NOT logical operator. To match a policy, a user cannot meet any of the Exclude rules.", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description": "UUID", - "description_kind": "plain", - "computed": true - }, - "include": { - "nested_type": { - "attributes": { - "any_valid_service_token": { - "type": "string", - "description": "An empty object which matches on all service tokens.", - "description_kind": "plain", - "optional": true - }, - "auth_method": { - "nested_type": { - "attributes": { - "auth_method": { - "type": "string", - "description": "The type of authentication method https://datatracker.ietf.org/doc/html/rfc8176.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "azure_ad": { - "nested_type": { - "attributes": { - "connection_id": { - "type": "string", - "description": "The ID of your Azure identity provider.", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "The ID of an Azure group.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "certificate": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "device_posture": { - "nested_type": { - "attributes": { - "integration_uid": { - "type": "string", - "description": "The ID of a device posture integration.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "email": { - "nested_type": { - "attributes": { - "email": { - "type": "string", - "description": "The email of the user.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "email_domain": { - "nested_type": { - "attributes": { - "domain": { - "type": "string", - "description": "The email domain to match.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "email_list": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description": "The ID of a previously created email list.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "everyone": { - "type": "string", - "description": "An empty object which matches on all users.", - "description_kind": "plain", - "optional": true - }, - "external_evaluation": { - "nested_type": { - "attributes": { - "evaluate_url": { - "type": "string", - "description": "The API endpoint containing your business logic.", - "description_kind": "plain", - "required": true - }, - "keys_url": { - "type": "string", - "description": "The API endpoint containing the key that Access uses to verify that the response came from your API.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "geo": { - "nested_type": { - "attributes": { - "country_code": { - "type": "string", - "description": "The country code that should be matched.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "github_organization": { - "nested_type": { - "attributes": { - "connection_id": { - "type": "string", - "description": "The ID of your Github identity provider.", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description": "The name of the organization.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "group": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description": "The ID of a previously created Access group.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "gsuite": { - "nested_type": { - "attributes": { - "connection_id": { - "type": "string", - "description": "The ID of your Google Workspace identity provider.", - "description_kind": "plain", - "required": true - }, - "email": { - "type": "string", - "description": "The email of the Google Workspace group.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "ip": { - "nested_type": { - "attributes": { - "ip": { - "type": "string", - "description": "An IPv4 or IPv6 CIDR block.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "ip_list": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description": "The ID of a previously created IP list.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "okta": { - "nested_type": { - "attributes": { - "connection_id": { - "type": "string", - "description": "The ID of your Okta identity provider.", - "description_kind": "plain", - "required": true - }, - "email": { - "type": "string", - "description": "The email of the Okta group.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "saml": { - "nested_type": { - "attributes": { - "attribute_name": { - "type": "string", - "description": "The name of the SAML attribute.", - "description_kind": "plain", - "required": true - }, - "attribute_value": { - "type": "string", - "description": "The SAML attribute value to look for.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "service_token": { - "nested_type": { - "attributes": { - "token_id": { - "type": "string", - "description": "The ID of a Service Token.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "list" - }, - "description": "Rules evaluated with an OR logical operator. A user needs to meet only one of the Include rules.", - "description_kind": "plain", - "required": true - }, - "is_default": { - "type": "bool", - "description": "Whether this is the default group", - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description": "The name of the Access group.", - "description_kind": "plain", - "required": true - }, - "require": { - "nested_type": { - "attributes": { - "any_valid_service_token": { - "type": "string", - "description": "An empty object which matches on all service tokens.", - "description_kind": "plain", - "optional": true - }, - "auth_method": { - "nested_type": { - "attributes": { - "auth_method": { - "type": "string", - "description": "The type of authentication method https://datatracker.ietf.org/doc/html/rfc8176.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "azure_ad": { - "nested_type": { - "attributes": { - "connection_id": { - "type": "string", - "description": "The ID of your Azure identity provider.", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "The ID of an Azure group.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "certificate": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "device_posture": { - "nested_type": { - "attributes": { - "integration_uid": { - "type": "string", - "description": "The ID of a device posture integration.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "email": { - "nested_type": { - "attributes": { - "email": { - "type": "string", - "description": "The email of the user.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "email_domain": { - "nested_type": { - "attributes": { - "domain": { - "type": "string", - "description": "The email domain to match.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "email_list": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description": "The ID of a previously created email list.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "everyone": { - "type": "string", - "description": "An empty object which matches on all users.", - "description_kind": "plain", - "optional": true - }, - "external_evaluation": { - "nested_type": { - "attributes": { - "evaluate_url": { - "type": "string", - "description": "The API endpoint containing your business logic.", - "description_kind": "plain", - "required": true - }, - "keys_url": { - "type": "string", - "description": "The API endpoint containing the key that Access uses to verify that the response came from your API.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "geo": { - "nested_type": { - "attributes": { - "country_code": { - "type": "string", - "description": "The country code that should be matched.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "github_organization": { - "nested_type": { - "attributes": { - "connection_id": { - "type": "string", - "description": "The ID of your Github identity provider.", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description": "The name of the organization.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "group": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description": "The ID of a previously created Access group.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "gsuite": { - "nested_type": { - "attributes": { - "connection_id": { - "type": "string", - "description": "The ID of your Google Workspace identity provider.", - "description_kind": "plain", - "required": true - }, - "email": { - "type": "string", - "description": "The email of the Google Workspace group.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "ip": { - "nested_type": { - "attributes": { - "ip": { - "type": "string", - "description": "An IPv4 or IPv6 CIDR block.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "ip_list": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description": "The ID of a previously created IP list.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "okta": { - "nested_type": { - "attributes": { - "connection_id": { - "type": "string", - "description": "The ID of your Okta identity provider.", - "description_kind": "plain", - "required": true - }, - "email": { - "type": "string", - "description": "The email of the Okta group.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "saml": { - "nested_type": { - "attributes": { - "attribute_name": { - "type": "string", - "description": "The name of the SAML attribute.", - "description_kind": "plain", - "required": true - }, - "attribute_value": { - "type": "string", - "description": "The SAML attribute value to look for.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "service_token": { - "nested_type": { - "attributes": { - "token_id": { - "type": "string", - "description": "The ID of a Service Token.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "list" - }, - "description": "Rules evaluated with an AND logical operator. To match a policy, a user must meet all of the Require rules.", - "description_kind": "plain", - "optional": true - }, - "zone_id": { - "type": "string", - "description": "The Zone ID to use for this endpoint. Mutually exclusive with the Account ID.", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_access_identity_provider": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "The Account ID to use for this endpoint. Mutually exclusive with the Zone ID.", - "description_kind": "plain", - "optional": true - }, - "config": { - "nested_type": { - "attributes": { - "claims": { - "type": ["list", "string"], - "description": "Custom claims", - "description_kind": "plain", - "optional": true - }, - "client_id": { - "type": "string", - "description": "Your OAuth Client ID", - "description_kind": "plain", - "optional": true - }, - "client_secret": { - "type": "string", - "description": "Your OAuth Client Secret", - "description_kind": "plain", - "optional": true - }, - "conditional_access_enabled": { - "type": "bool", - "description": "Should Cloudflare try to load authentication contexts from your account", - "description_kind": "plain", - "optional": true - }, - "directory_id": { - "type": "string", - "description": "Your Azure directory uuid", - "description_kind": "plain", - "optional": true - }, - "email_claim_name": { - "type": "string", - "description": "The claim name for email in the id_token response.", - "description_kind": "plain", - "optional": true - }, - "prompt": { - "type": "string", - "description": "Indicates the type of user interaction that is required. prompt=login forces the user to enter their credentials on that request, negating single-sign on. prompt=none is the opposite. It ensures that the user isn't presented with any interactive prompt. If the request can't be completed silently by using single-sign on, the Microsoft identity platform returns an interaction_required error. prompt=select_account interrupts single sign-on providing account selection experience listing all the accounts either in session or any remembered account or an option to choose to use a different account altogether.", - "description_kind": "plain", - "optional": true - }, - "support_groups": { - "type": "bool", - "description": "Should Cloudflare try to load groups from your account", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "The configuration parameters for the identity provider. To view the required parameters for a specific provider, refer to our [developer documentation](https://developers.cloudflare.com/cloudflare-one/identity/idp-integration/).", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "UUID", - "description_kind": "plain", - "computed": true - }, - "name": { - "type": "string", - "description": "The name of the identity provider, shown to users on the login page.", - "description_kind": "plain", - "required": true - }, - "scim_config": { - "nested_type": { - "attributes": { - "enabled": { - "type": "bool", - "description": "A flag to enable or disable SCIM for the identity provider.", - "description_kind": "plain", - "optional": true - }, - "group_member_deprovision": { - "type": "bool", - "description": "A flag to revoke a user's session in Access and force a reauthentication on the user's Gateway session when they have been added or removed from a group in the Identity Provider.", - "description_kind": "plain", - "optional": true - }, - "seat_deprovision": { - "type": "bool", - "description": "A flag to remove a user's seat in Zero Trust when they have been deprovisioned in the Identity Provider. This cannot be enabled unless user_deprovision is also enabled.", - "description_kind": "plain", - "optional": true - }, - "secret": { - "type": "string", - "description": "A read-only token generated when the SCIM integration is enabled for the first time. It is redacted on subsequent requests. If you lose this you will need to refresh it token at /access/identity_providers/:idpID/refresh_scim_secret.", - "description_kind": "plain", - "optional": true - }, - "user_deprovision": { - "type": "bool", - "description": "A flag to enable revoking a user's session in Access and Gateway when they have been deprovisioned in the Identity Provider.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "The configuration settings for enabling a System for Cross-Domain Identity Management (SCIM) with the identity provider.", - "description_kind": "plain", - "optional": true - }, - "type": { - "type": "string", - "description": "The type of identity provider. To determine the value for a specific provider, refer to our [developer documentation](https://developers.cloudflare.com/cloudflare-one/identity/idp-integration/).", - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "The Zone ID to use for this endpoint. Mutually exclusive with the Account ID.", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_access_keys_configuration": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "key_rotation_interval_days": { - "type": "number", - "description": "The number of days between key rotations.", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_access_mutual_tls_certificate": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "The Account ID to use for this endpoint. Mutually exclusive with the Zone ID.", - "description_kind": "plain", - "optional": true - }, - "associated_hostnames": { - "type": ["list", "string"], - "description": "The hostnames of the applications that will use this certificate.", - "description_kind": "plain", - "optional": true - }, - "certificate": { - "type": "string", - "description": "The certificate content.", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "The ID of the application that will use this certificate.", - "description_kind": "plain", - "computed": true - }, - "name": { - "type": "string", - "description": "The name of the certificate.", - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "The Zone ID to use for this endpoint. Mutually exclusive with the Account ID.", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_access_mutual_tls_hostname_settings": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "The Account ID to use for this endpoint. Mutually exclusive with the Zone ID.", - "description_kind": "plain", - "optional": true - }, - "settings": { - "nested_type": { - "attributes": { - "china_network": { - "type": "bool", - "description": "Request client certificates for this hostname in China. Can only be set to true if this zone is china network enabled.", - "description_kind": "plain", - "required": true - }, - "client_certificate_forwarding": { - "type": "bool", - "description": "Client Certificate Forwarding is a feature that takes the client cert provided by the eyeball to the edge, and forwards it to the origin as a HTTP header to allow logging on the origin.", - "description_kind": "plain", - "required": true - }, - "hostname": { - "type": "string", - "description": "The hostname that these settings apply to.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "list" - }, - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "The Zone ID to use for this endpoint. Mutually exclusive with the Account ID.", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_access_organization": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "The Account ID to use for this endpoint. Mutually exclusive with the Zone ID.", - "description_kind": "plain", - "optional": true - }, - "allow_authenticate_via_warp": { - "type": "bool", - "description": "When set to true, users can authenticate via WARP for any application in your organization. Application settings will take precedence over this value.", - "description_kind": "plain", - "optional": true - }, - "auth_domain": { - "type": "string", - "description": "The unique subdomain assigned to your Zero Trust organization.", - "description_kind": "plain", - "required": true - }, - "auto_redirect_to_identity": { - "type": "bool", - "description": "When set to `true`, users skip the identity provider selection step during login.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "id": { - "type": "string", - "description": "The name of your Zero Trust organization.", - "description_kind": "plain", - "computed": true - }, - "is_ui_read_only": { - "type": "bool", - "description": "Lock all settings as Read-Only in the Dashboard, regardless of user permission. Updates may only be made via the API or Terraform for this account when enabled.", - "description_kind": "plain", - "optional": true - }, - "login_design": { - "nested_type": { - "attributes": { - "background_color": { - "type": "string", - "description": "The background color on your login page.", - "description_kind": "plain", - "optional": true - }, - "footer_text": { - "type": "string", - "description": "The text at the bottom of your login page.", - "description_kind": "plain", - "optional": true - }, - "header_text": { - "type": "string", - "description": "The text at the top of your login page.", - "description_kind": "plain", - "optional": true - }, - "logo_path": { - "type": "string", - "description": "The URL of the logo on your login page.", - "description_kind": "plain", - "optional": true - }, - "text_color": { - "type": "string", - "description": "The text color on your login page.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description": "The name of your Zero Trust organization.", - "description_kind": "plain", - "required": true - }, - "session_duration": { - "type": "string", - "description": "The amount of time that tokens issued for applications will be valid. Must be in the format `300ms` or `2h45m`. Valid time units are: ns, us (or µs), ms, s, m, h.", - "description_kind": "plain", - "optional": true - }, - "ui_read_only_toggle_reason": { - "type": "string", - "description": "A description of the reason why the UI read only field is being toggled.", - "description_kind": "plain", - "optional": true - }, - "user_seat_expiration_inactive_time": { - "type": "string", - "description": "The amount of time a user seat is inactive before it expires. When the user seat exceeds the set time of inactivity, the user is removed as an active seat and no longer counts against your Teams seat count. Must be in the format `300ms` or `2h45m`. Valid time units are: `ns`, `us` (or `µs`), `ms`, `s`, `m`, `h`.", - "description_kind": "plain", - "optional": true - }, - "warp_auth_session_duration": { - "type": "string", - "description": "The amount of time that tokens issued for applications will be valid. Must be in the format `30m` or `2h45m`. Valid time units are: m, h.", - "description_kind": "plain", - "optional": true - }, - "zone_id": { - "type": "string", - "description": "The Zone ID to use for this endpoint. Mutually exclusive with the Account ID.", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_access_policy": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "The Account ID to use for this endpoint. Mutually exclusive with the Zone ID.", - "description_kind": "plain", - "optional": true - }, - "app_id": { - "type": "string", - "description": "UUID", - "description_kind": "plain", - "required": true - }, - "approval_groups": { - "nested_type": { - "attributes": { - "approvals_needed": { - "type": "number", - "description": "The number of approvals needed to obtain access.", - "description_kind": "plain", - "required": true - }, - "email_addresses": { - "type": ["list", "string"], - "description": "A list of emails that can approve the access request.", - "description_kind": "plain", - "optional": true - }, - "email_list_uuid": { - "type": "string", - "description": "The UUID of an re-usable email list.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "list" - }, - "description": "Administrators who can approve a temporary authentication request.", - "description_kind": "plain", - "optional": true - }, - "approval_required": { - "type": "bool", - "description": "Requires the user to request access from an administrator at the start of each session.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "decision": { - "type": "string", - "description": "The action Access will take if a user matches this policy.", - "description_kind": "plain", - "required": true - }, - "exclude": { - "nested_type": { - "attributes": { - "any_valid_service_token": { - "type": "string", - "description": "An empty object which matches on all service tokens.", - "description_kind": "plain", - "optional": true - }, - "auth_method": { - "nested_type": { - "attributes": { - "auth_method": { - "type": "string", - "description": "The type of authentication method https://datatracker.ietf.org/doc/html/rfc8176.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "azure_ad": { - "nested_type": { - "attributes": { - "connection_id": { - "type": "string", - "description": "The ID of your Azure identity provider.", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "The ID of an Azure group.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "certificate": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "device_posture": { - "nested_type": { - "attributes": { - "integration_uid": { - "type": "string", - "description": "The ID of a device posture integration.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "email": { - "nested_type": { - "attributes": { - "email": { - "type": "string", - "description": "The email of the user.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "email_domain": { - "nested_type": { - "attributes": { - "domain": { - "type": "string", - "description": "The email domain to match.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "email_list": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description": "The ID of a previously created email list.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "everyone": { - "type": "string", - "description": "An empty object which matches on all users.", - "description_kind": "plain", - "optional": true - }, - "external_evaluation": { - "nested_type": { - "attributes": { - "evaluate_url": { - "type": "string", - "description": "The API endpoint containing your business logic.", - "description_kind": "plain", - "required": true - }, - "keys_url": { - "type": "string", - "description": "The API endpoint containing the key that Access uses to verify that the response came from your API.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "geo": { - "nested_type": { - "attributes": { - "country_code": { - "type": "string", - "description": "The country code that should be matched.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "github_organization": { - "nested_type": { - "attributes": { - "connection_id": { - "type": "string", - "description": "The ID of your Github identity provider.", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description": "The name of the organization.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "group": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description": "The ID of a previously created Access group.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "gsuite": { - "nested_type": { - "attributes": { - "connection_id": { - "type": "string", - "description": "The ID of your Google Workspace identity provider.", - "description_kind": "plain", - "required": true - }, - "email": { - "type": "string", - "description": "The email of the Google Workspace group.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "ip": { - "nested_type": { - "attributes": { - "ip": { - "type": "string", - "description": "An IPv4 or IPv6 CIDR block.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "ip_list": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description": "The ID of a previously created IP list.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "okta": { - "nested_type": { - "attributes": { - "connection_id": { - "type": "string", - "description": "The ID of your Okta identity provider.", - "description_kind": "plain", - "required": true - }, - "email": { - "type": "string", - "description": "The email of the Okta group.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "saml": { - "nested_type": { - "attributes": { - "attribute_name": { - "type": "string", - "description": "The name of the SAML attribute.", - "description_kind": "plain", - "required": true - }, - "attribute_value": { - "type": "string", - "description": "The SAML attribute value to look for.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "service_token": { - "nested_type": { - "attributes": { - "token_id": { - "type": "string", - "description": "The ID of a Service Token.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "list" - }, - "description": "Rules evaluated with a NOT logical operator. To match the policy, a user cannot meet any of the Exclude rules.", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description": "The UUID of the policy", - "description_kind": "plain", - "computed": true - }, - "include": { - "nested_type": { - "attributes": { - "any_valid_service_token": { - "type": "string", - "description": "An empty object which matches on all service tokens.", - "description_kind": "plain", - "optional": true - }, - "auth_method": { - "nested_type": { - "attributes": { - "auth_method": { - "type": "string", - "description": "The type of authentication method https://datatracker.ietf.org/doc/html/rfc8176.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "azure_ad": { - "nested_type": { - "attributes": { - "connection_id": { - "type": "string", - "description": "The ID of your Azure identity provider.", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "The ID of an Azure group.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "certificate": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "device_posture": { - "nested_type": { - "attributes": { - "integration_uid": { - "type": "string", - "description": "The ID of a device posture integration.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "email": { - "nested_type": { - "attributes": { - "email": { - "type": "string", - "description": "The email of the user.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "email_domain": { - "nested_type": { - "attributes": { - "domain": { - "type": "string", - "description": "The email domain to match.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "email_list": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description": "The ID of a previously created email list.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "everyone": { - "type": "string", - "description": "An empty object which matches on all users.", - "description_kind": "plain", - "optional": true - }, - "external_evaluation": { - "nested_type": { - "attributes": { - "evaluate_url": { - "type": "string", - "description": "The API endpoint containing your business logic.", - "description_kind": "plain", - "required": true - }, - "keys_url": { - "type": "string", - "description": "The API endpoint containing the key that Access uses to verify that the response came from your API.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "geo": { - "nested_type": { - "attributes": { - "country_code": { - "type": "string", - "description": "The country code that should be matched.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "github_organization": { - "nested_type": { - "attributes": { - "connection_id": { - "type": "string", - "description": "The ID of your Github identity provider.", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description": "The name of the organization.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "group": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description": "The ID of a previously created Access group.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "gsuite": { - "nested_type": { - "attributes": { - "connection_id": { - "type": "string", - "description": "The ID of your Google Workspace identity provider.", - "description_kind": "plain", - "required": true - }, - "email": { - "type": "string", - "description": "The email of the Google Workspace group.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "ip": { - "nested_type": { - "attributes": { - "ip": { - "type": "string", - "description": "An IPv4 or IPv6 CIDR block.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "ip_list": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description": "The ID of a previously created IP list.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "okta": { - "nested_type": { - "attributes": { - "connection_id": { - "type": "string", - "description": "The ID of your Okta identity provider.", - "description_kind": "plain", - "required": true - }, - "email": { - "type": "string", - "description": "The email of the Okta group.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "saml": { - "nested_type": { - "attributes": { - "attribute_name": { - "type": "string", - "description": "The name of the SAML attribute.", - "description_kind": "plain", - "required": true - }, - "attribute_value": { - "type": "string", - "description": "The SAML attribute value to look for.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "service_token": { - "nested_type": { - "attributes": { - "token_id": { - "type": "string", - "description": "The ID of a Service Token.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "list" - }, - "description": "Rules evaluated with an OR logical operator. A user needs to meet only one of the Include rules.", - "description_kind": "plain", - "required": true - }, - "isolation_required": { - "type": "bool", - "description": "Require this application to be served in an isolated browser for users matching this policy. 'Client Web Isolation' must be on for the account in order to use this feature.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "name": { - "type": "string", - "description": "The name of the Access policy.", - "description_kind": "plain", - "required": true - }, - "precedence": { - "type": "number", - "description": "The order of execution for this policy. Must be unique for each policy within an app.", - "description_kind": "plain", - "optional": true - }, - "purpose_justification_prompt": { - "type": "string", - "description": "A custom message that will appear on the purpose justification screen.", - "description_kind": "plain", - "optional": true - }, - "purpose_justification_required": { - "type": "bool", - "description": "Require users to enter a justification when they log in to the application.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "require": { - "nested_type": { - "attributes": { - "any_valid_service_token": { - "type": "string", - "description": "An empty object which matches on all service tokens.", - "description_kind": "plain", - "optional": true - }, - "auth_method": { - "nested_type": { - "attributes": { - "auth_method": { - "type": "string", - "description": "The type of authentication method https://datatracker.ietf.org/doc/html/rfc8176.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "azure_ad": { - "nested_type": { - "attributes": { - "connection_id": { - "type": "string", - "description": "The ID of your Azure identity provider.", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "The ID of an Azure group.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "certificate": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "device_posture": { - "nested_type": { - "attributes": { - "integration_uid": { - "type": "string", - "description": "The ID of a device posture integration.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "email": { - "nested_type": { - "attributes": { - "email": { - "type": "string", - "description": "The email of the user.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "email_domain": { - "nested_type": { - "attributes": { - "domain": { - "type": "string", - "description": "The email domain to match.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "email_list": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description": "The ID of a previously created email list.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "everyone": { - "type": "string", - "description": "An empty object which matches on all users.", - "description_kind": "plain", - "optional": true - }, - "external_evaluation": { - "nested_type": { - "attributes": { - "evaluate_url": { - "type": "string", - "description": "The API endpoint containing your business logic.", - "description_kind": "plain", - "required": true - }, - "keys_url": { - "type": "string", - "description": "The API endpoint containing the key that Access uses to verify that the response came from your API.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "geo": { - "nested_type": { - "attributes": { - "country_code": { - "type": "string", - "description": "The country code that should be matched.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "github_organization": { - "nested_type": { - "attributes": { - "connection_id": { - "type": "string", - "description": "The ID of your Github identity provider.", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description": "The name of the organization.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "group": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description": "The ID of a previously created Access group.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "gsuite": { - "nested_type": { - "attributes": { - "connection_id": { - "type": "string", - "description": "The ID of your Google Workspace identity provider.", - "description_kind": "plain", - "required": true - }, - "email": { - "type": "string", - "description": "The email of the Google Workspace group.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "ip": { - "nested_type": { - "attributes": { - "ip": { - "type": "string", - "description": "An IPv4 or IPv6 CIDR block.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "ip_list": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description": "The ID of a previously created IP list.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "okta": { - "nested_type": { - "attributes": { - "connection_id": { - "type": "string", - "description": "The ID of your Okta identity provider.", - "description_kind": "plain", - "required": true - }, - "email": { - "type": "string", - "description": "The email of the Okta group.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "saml": { - "nested_type": { - "attributes": { - "attribute_name": { - "type": "string", - "description": "The name of the SAML attribute.", - "description_kind": "plain", - "required": true - }, - "attribute_value": { - "type": "string", - "description": "The SAML attribute value to look for.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "service_token": { - "nested_type": { - "attributes": { - "token_id": { - "type": "string", - "description": "The ID of a Service Token.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "list" - }, - "description": "Rules evaluated with an AND logical operator. To match the policy, a user must meet all of the Require rules.", - "description_kind": "plain", - "optional": true - }, - "session_duration": { - "type": "string", - "description": "The amount of time that tokens issued for the application will be valid. Must be in the format `300ms` or `2h45m`. Valid time units are: ns, us (or µs), ms, s, m, h.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "zone_id": { - "type": "string", - "description": "The Zone ID to use for this endpoint. Mutually exclusive with the Account ID.", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_access_rule": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "The Account ID to use for this endpoint. Mutually exclusive with the Zone ID.", - "description_kind": "plain", - "optional": true - }, - "configuration": { - "nested_type": { - "attributes": { - "target": { - "type": "string", - "description": "The configuration target. You must set the target to `ip` when specifying an IP address in the rule.", - "description_kind": "plain", - "optional": true - }, - "value": { - "type": "string", - "description": "The IP address to match. This address will be compared to the IP address of incoming requests.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "The rule configuration.", - "description_kind": "plain", - "required": true - }, - "identifier": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "mode": { - "type": "string", - "description": "The action to apply to a matched request.", - "description_kind": "plain", - "required": true - }, - "notes": { - "type": "string", - "description": "An informative summary of the rule, typically used as a reminder or explanation.", - "description_kind": "plain", - "optional": true - }, - "zone_id": { - "type": "string", - "description": "The Zone ID to use for this endpoint. Mutually exclusive with the Account ID.", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_access_service_token": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "The Account ID to use for this endpoint. Mutually exclusive with the Zone ID.", - "description_kind": "plain", - "optional": true - }, - "duration": { - "type": "string", - "description": "The duration for how long the service token will be valid. Must be in the format `300ms` or `2h45m`. Valid time units are: ns, us (or µs), ms, s, m, h. The default is 1 year in hours (8760h).", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description": "The ID of the service token.", - "description_kind": "plain", - "computed": true - }, - "name": { - "type": "string", - "description": "The name of the service token.", - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "The Zone ID to use for this endpoint. Mutually exclusive with the Account ID.", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_access_tag": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "The name of the tag", - "description_kind": "plain", - "computed": true - }, - "name": { - "type": "string", - "description": "The name of the tag", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_account": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description": "Account name", - "description_kind": "plain", - "required": true - }, - "settings": { - "nested_type": { - "attributes": { - "abuse_contact_email": { - "type": "string", - "description": "Sets an abuse contact email to notify for abuse reports.", - "description_kind": "plain", - "optional": true - }, - "default_nameservers": { - "type": "string", - "description": "Specifies the default nameservers to be used for new zones added to this account.\n\n- `cloudflare.standard` for Cloudflare-branded nameservers\n- `custom.account` for account custom nameservers\n- `custom.tenant` for tenant custom nameservers\n\nSee [Custom Nameservers](https://developers.cloudflare.com/dns/additional-options/custom-nameservers/)\nfor more information.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "enforce_twofactor": { - "type": "bool", - "description": "Indicates whether membership in this account requires that\nTwo-Factor Authentication is enabled", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "use_account_custom_ns_by_default": { - "type": "bool", - "description": "Indicates whether new zones should use the account-level custom\nnameservers by default.\n\nDeprecated in favor of `default_nameservers`.", - "description_kind": "plain", - "optional": true, - "computed": true - } - }, - "nesting_mode": "single" - }, - "description": "Account settings", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_account_member": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Account identifier tag.", - "description_kind": "plain", - "required": true - }, - "email": { - "type": "string", - "description": "The contact email address of the user.", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "Membership identifier tag.", - "description_kind": "plain", - "computed": true - }, - "policies": { - "nested_type": { - "attributes": { - "access": { - "type": "string", - "description": "Allow or deny operations against the resources.", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "Policy identifier.", - "description_kind": "plain", - "computed": true - }, - "permission_groups": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description": "Identifier of the group.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "list" - }, - "description": "A set of permission groups that are specified to the policy.", - "description_kind": "plain", - "required": true - }, - "resource_groups": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description": "Identifier of the group.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "list" - }, - "description": "A list of resource groups that the policy applies to.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "list" - }, - "description": "Array of policies associated with this member.", - "description_kind": "plain", - "optional": true - }, - "roles": { - "type": "string", - "description": "Array of roles associated with this member.", - "description_kind": "plain", - "optional": true - }, - "status": { - "type": "string", - "description_kind": "plain", - "computed": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_address_map": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "description": { - "type": "string", - "description": "An optional description field which may be used to describe the types of IPs or zones on the map.", - "description_kind": "plain", - "optional": true - }, - "enabled": { - "type": "bool", - "description": "Whether the Address Map is enabled or not. Cloudflare's DNS will not respond with IP addresses on an Address Map until the map is enabled.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "computed": true - }, - "ips": { - "type": ["list", "string"], - "description_kind": "plain", - "optional": true - }, - "memberships": { - "nested_type": { - "attributes": { - "can_delete": { - "type": "bool", - "description": "Controls whether the membership can be deleted via the API or not.", - "description_kind": "plain", - "computed": true - }, - "created_at": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "identifier": { - "type": "string", - "description": "The identifier for the membership (eg. a zone or account tag).", - "description_kind": "plain", - "optional": true - }, - "kind": { - "type": "string", - "description": "The type of the membership.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "list" - }, - "description": "Zones and Accounts which will be assigned IPs on this Address Map. A zone membership will take priority over an account membership.", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_api_shield": { - "version": 0, - "block": { - "attributes": { - "auth_id_characteristics": { - "nested_type": { - "attributes": { - "name": { - "type": "string", - "description": "The name of the characteristic field, i.e., the header or cookie name.", - "description_kind": "plain", - "required": true - }, - "type": { - "type": "string", - "description": "The type of characteristic.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "list" - }, - "description_kind": "plain", - "optional": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_api_shield_operation": { - "version": 0, - "block": { - "attributes": { - "operation_id": { - "type": "string", - "description": "UUID identifier", - "description_kind": "plain", - "required": true - }, - "state": { - "type": "string", - "description": "Mark state of operation in API Discovery\n * `review` - Mark operation as for review\n * `ignored` - Mark operation as ignored\n", - "description_kind": "plain", - "optional": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_api_shield_operation_schema_validation_settings": { - "version": 0, - "block": { - "attributes": { - "mitigation_action": { - "type": "string", - "description": "When set, this applies a mitigation action to this operation\n\n - `log` log request when request does not conform to schema for this operation\n - `block` deny access to the site when request does not conform to schema for this operation\n - `none` will skip mitigation for this operation\n - `null` indicates that no operation level mitigation is in place, see Zone Level Schema Validation Settings for mitigation action that will be applied\n", - "description_kind": "plain", - "optional": true - }, - "operation_id": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_api_shield_schema": { - "version": 0, - "block": { - "attributes": { - "file": { - "type": "string", - "description": "Schema file bytes", - "description_kind": "plain", - "required": true - }, - "kind": { - "type": "string", - "description": "Kind of schema", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description": "Name of the schema", - "description_kind": "plain", - "optional": true - }, - "schema_id": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "validation_enabled": { - "type": "string", - "description": "Flag whether schema is enabled for validation.", - "description_kind": "plain", - "optional": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_api_shield_schema_validation_settings": { - "version": 0, - "block": { - "attributes": { - "validation_default_mitigation_action": { - "type": "string", - "description": "The default mitigation action used when there is no mitigation action defined on the operation\n\nMitigation actions are as follows:\n\n * `log` - log request when request does not conform to schema\n * `block` - deny access to the site when request does not conform to schema\n\nA special value of of `none` will skip running schema validation entirely for the request when there is no mitigation action defined on the operation\n", - "description_kind": "plain", - "required": true - }, - "validation_override_mitigation_action": { - "type": "string", - "description": "When set, this overrides both zone level and operation level mitigation actions.\n\n - `none` will skip running schema validation entirely for the request\n - `null` indicates that no override is in place\n\nTo clear any override, use the special value `disable_override` or `null`\n", - "description_kind": "plain", - "optional": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_api_token": { - "version": 0, - "block": { - "attributes": { - "condition": { - "nested_type": { - "attributes": { - "request_ip": { - "nested_type": { - "attributes": { - "in": { - "type": ["list", "string"], - "description": "List of IPv4/IPv6 CIDR addresses.", - "description_kind": "plain", - "optional": true - }, - "not_in": { - "type": ["list", "string"], - "description": "List of IPv4/IPv6 CIDR addresses.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Client IP restrictions.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "expires_on": { - "type": "string", - "description": "The expiration time on or after which the JWT MUST NOT be accepted for processing.", - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description": "Token name.", - "description_kind": "plain", - "required": true - }, - "not_before": { - "type": "string", - "description": "The time before which the token MUST NOT be accepted for processing.", - "description_kind": "plain", - "optional": true - }, - "policies": { - "nested_type": { - "attributes": { - "effect": { - "type": "string", - "description": "Allow or deny operations against the resources.", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "Policy identifier.", - "description_kind": "plain", - "computed": true - }, - "permission_groups": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description": "Identifier of the group.", - "description_kind": "plain", - "computed": true - }, - "meta": { - "type": "string", - "description": "Attributes associated to the permission group.", - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description": "Name of the group.", - "description_kind": "plain", - "computed": true - } - }, - "nesting_mode": "list" - }, - "description": "A set of permission groups that are specified to the policy.", - "description_kind": "plain", - "required": true - }, - "resources": { - "type": "string", - "description": "A list of resource names that the policy applies to.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "list" - }, - "description": "List of access policies assigned to the token.", - "description_kind": "plain", - "required": true - }, - "token_id": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_argo_smart_routing": { - "version": 0, - "block": { - "attributes": { - "value": { - "type": "string", - "description": "Enables Argo Smart Routing.", - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_argo_tiered_caching": { - "version": 0, - "block": { - "attributes": { - "id": { - "type": "string", - "description": "The identifier of the caching setting", - "description_kind": "plain", - "required": true - }, - "value": { - "type": "string", - "description": "Enables Tiered Caching.", - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_authenticated_origin_pulls": { - "version": 0, - "block": { - "attributes": { - "config": { - "nested_type": { - "attributes": { - "cert_id": { - "type": "string", - "description": "Certificate identifier tag.", - "description_kind": "plain", - "optional": true - }, - "enabled": { - "type": "bool", - "description": "Indicates whether hostname-level authenticated origin pulls is enabled. A null value voids the association.", - "description_kind": "plain", - "optional": true - }, - "hostname": { - "type": "string", - "description": "The hostname on the origin for which the client certificate uploaded will be used.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "list" - }, - "description_kind": "plain", - "required": true - }, - "hostname": { - "type": "string", - "description": "The hostname on the origin for which the client certificate uploaded will be used.", - "description_kind": "plain", - "optional": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_authenticated_origin_pulls_certificate": { - "version": 0, - "block": { - "attributes": { - "certificate": { - "type": "string", - "description": "The zone's leaf certificate.", - "description_kind": "plain", - "required": true - }, - "certificate_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "optional": true - }, - "private_key": { - "type": "string", - "description": "The zone's private key.", - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_bot_management": { - "version": 0, - "block": { - "attributes": { - "auto_update_model": { - "type": "bool", - "description": "Automatically update to the newest bot detection models created by Cloudflare as they are released. [Learn more.](https://developers.cloudflare.com/bots/reference/machine-learning-models#model-versions-and-release-notes)", - "description_kind": "plain", - "optional": true - }, - "enable_js": { - "type": "bool", - "description": "Use lightweight, invisible JavaScript detections to improve Bot Management. [Learn more about JavaScript Detections](https://developers.cloudflare.com/bots/reference/javascript-detections/).", - "description_kind": "plain", - "optional": true - }, - "fight_mode": { - "type": "bool", - "description": "Whether to enable Bot Fight Mode.", - "description_kind": "plain", - "optional": true - }, - "optimize_wordpress": { - "type": "bool", - "description": "Whether to optimize Super Bot Fight Mode protections for Wordpress.", - "description_kind": "plain", - "optional": true - }, - "sbfm_definitely_automated": { - "type": "string", - "description": "Super Bot Fight Mode (SBFM) action to take on definitely automated requests.", - "description_kind": "plain", - "optional": true - }, - "sbfm_likely_automated": { - "type": "string", - "description": "Super Bot Fight Mode (SBFM) action to take on likely automated requests.", - "description_kind": "plain", - "optional": true - }, - "sbfm_static_resource_protection": { - "type": "bool", - "description": "Super Bot Fight Mode (SBFM) to enable static resource protection.\nEnable if static resources on your application need bot protection.\nNote: Static resource protection can also result in legitimate traffic being blocked.\n", - "description_kind": "plain", - "optional": true - }, - "sbfm_verified_bots": { - "type": "string", - "description": "Super Bot Fight Mode (SBFM) action to take on verified bots requests.", - "description_kind": "plain", - "optional": true - }, - "suppress_session_score": { - "type": "bool", - "description": "Whether to disable tracking the highest bot score for a session in the Bot Management cookie.", - "description_kind": "plain", - "optional": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_byo_ip_prefix": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "asn": { - "type": "number", - "description": "Autonomous System Number (ASN) the prefix will be advertised under.", - "description_kind": "plain", - "required": true - }, - "cidr": { - "type": "string", - "description": "IP Prefix in Classless Inter-Domain Routing format.", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "computed": true - }, - "loa_document_id": { - "type": "string", - "description": "Identifier for the uploaded LOA document.", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_certificate_pack": { - "version": 0, - "block": { - "attributes": { - "certificate_pack_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_custom_hostname": { - "version": 0, - "block": { - "attributes": { - "custom_metadata": { - "nested_type": { - "attributes": { - "key": { - "type": "string", - "description": "Unique metadata for this hostname.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "These are per-hostname (customer) settings.", - "description_kind": "plain", - "optional": true - }, - "hostname": { - "type": "string", - "description": "The custom hostname that will point to your hostname via CNAME.", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "computed": true - }, - "ssl": { - "nested_type": { - "attributes": { - "bundle_method": { - "type": "string", - "description": "A ubiquitous bundle has the highest probability of being verified everywhere, even by clients using outdated or unusual trust stores. An optimal bundle uses the shortest chain and newest intermediates. And the force bundle verifies the chain, but does not otherwise modify it.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "certificate_authority": { - "type": "string", - "description": "The Certificate Authority that will issue the certificate", - "description_kind": "plain", - "optional": true - }, - "custom_certificate": { - "type": "string", - "description": "If a custom uploaded certificate is used.", - "description_kind": "plain", - "optional": true - }, - "custom_key": { - "type": "string", - "description": "The key for a custom uploaded certificate.", - "description_kind": "plain", - "optional": true - }, - "method": { - "type": "string", - "description": "Domain control validation (DCV) method used for this hostname.", - "description_kind": "plain", - "optional": true - }, - "settings": { - "nested_type": { - "attributes": { - "ciphers": { - "type": ["list", "string"], - "description": "An allowlist of ciphers for TLS termination. These ciphers must be in the BoringSSL format.", - "description_kind": "plain", - "optional": true - }, - "early_hints": { - "type": "string", - "description": "Whether or not Early Hints is enabled.", - "description_kind": "plain", - "optional": true - }, - "http2": { - "type": "string", - "description": "Whether or not HTTP2 is enabled.", - "description_kind": "plain", - "optional": true - }, - "min_tls_version": { - "type": "string", - "description": "The minimum TLS version supported.", - "description_kind": "plain", - "optional": true - }, - "tls_1_3": { - "type": "string", - "description": "Whether or not TLS 1.3 is enabled.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "SSL specific settings.", - "description_kind": "plain", - "optional": true - }, - "type": { - "type": "string", - "description": "Level of validation to be used for this hostname. Domain validation (dv) must be used.", - "description_kind": "plain", - "optional": true - }, - "wildcard": { - "type": "bool", - "description": "Indicates whether the certificate covers a wildcard.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "SSL properties used when creating the custom hostname.", - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_custom_hostname_fallback_origin": { - "version": 0, - "block": { - "attributes": { - "origin": { - "type": "string", - "description": "Your origin hostname that requests to your custom hostnames will be sent to.", - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_custom_ssl": { - "version": 0, - "block": { - "attributes": { - "bundle_method": { - "type": "string", - "description": "A ubiquitous bundle has the highest probability of being verified everywhere, even by clients using outdated or unusual trust stores. An optimal bundle uses the shortest chain and newest intermediates. And the force bundle verifies the chain, but does not otherwise modify it.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "certificate": { - "type": "string", - "description": "The zone's SSL certificate or certificate and the intermediate(s).", - "description_kind": "plain", - "required": true - }, - "custom_certificate_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "optional": true - }, - "geo_restrictions": { - "nested_type": { - "attributes": { - "label": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Specify the region where your private key can be held locally for optimal TLS performance. HTTPS connections to any excluded data center will still be fully encrypted, but will incur some latency while Keyless SSL is used to complete the handshake with the nearest allowed data center. Options allow distribution to only to U.S. data centers, only to E.U. data centers, or only to highest security data centers. Default distribution is to all Cloudflare datacenters, for optimal performance.", - "description_kind": "plain", - "optional": true - }, - "policy": { - "type": "string", - "description": "Specify the policy that determines the region where your private key will be held locally. HTTPS connections to any excluded data center will still be fully encrypted, but will incur some latency while Keyless SSL is used to complete the handshake with the nearest allowed data center. Any combination of countries, specified by their two letter country code (https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements) can be chosen, such as 'country: IN', as well as 'region: EU' which refers to the EU region. If there are too few data centers satisfying the policy, it will be rejected.", - "description_kind": "plain", - "optional": true - }, - "private_key": { - "type": "string", - "description": "The zone's private key.", - "description_kind": "plain", - "required": true - }, - "type": { - "type": "string", - "description": "The type 'legacy_custom' enables support for legacy clients which do not include SNI in the TLS handshake.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_d1_database": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Account identifier tag.", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "uuid": { - "type": "string", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_device_dex_test": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "data": { - "nested_type": { - "attributes": { - "host": { - "type": "string", - "description": "The desired endpoint to test.", - "description_kind": "plain", - "optional": true - }, - "kind": { - "type": "string", - "description": "The type of test.", - "description_kind": "plain", - "optional": true - }, - "method": { - "type": "string", - "description": "The HTTP request method type.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "The configuration object which contains the details for the WARP client to conduct the test.", - "description_kind": "plain", - "required": true - }, - "description": { - "type": "string", - "description": "Additional details about the test.", - "description_kind": "plain", - "optional": true - }, - "enabled": { - "type": "bool", - "description": "Determines whether or not the test is active.", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "The name of the DEX test. Must be unique.", - "description_kind": "plain", - "computed": true - }, - "interval": { - "type": "string", - "description": "How often the test will run.", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description": "The name of the DEX test. Must be unique.", - "description_kind": "plain", - "required": true - }, - "target_policies": { - "nested_type": { - "attributes": { - "default": { - "type": "bool", - "description": "Whether the profile is the account default", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description": "The id of the device settings profile", - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description": "The name of the device settings profile", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "list" - }, - "description": "Device settings profiles targeted by this test", - "description_kind": "plain", - "optional": true - }, - "targeted": { - "type": "bool", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_device_managed_networks": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "config": { - "nested_type": { - "attributes": { - "sha256": { - "type": "string", - "description": "The SHA-256 hash of the TLS certificate presented by the host found at tls_sockaddr. If absent, regular certificate verification (trusted roots, valid timestamp, etc) will be used to validate the certificate.", - "description_kind": "plain", - "optional": true - }, - "tls_sockaddr": { - "type": "string", - "description": "A network address of the form \"host:port\" that the WARP client will use to detect the presence of a TLS host.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description": "The configuration object containing information for the WARP client to detect the managed network.", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "API UUID.", - "description_kind": "plain", - "computed": true - }, - "name": { - "type": "string", - "description": "The name of the device managed network. This name must be unique.", - "description_kind": "plain", - "required": true - }, - "network_id": { - "type": "string", - "description": "API UUID.", - "description_kind": "plain", - "computed": true - }, - "type": { - "type": "string", - "description": "The type of device managed network.", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_device_posture_integration": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "config": { - "nested_type": { - "attributes": { - "access_client_id": { - "type": "string", - "description": "If present, this id will be passed in the `CF-Access-Client-ID` header when hitting the `api_url`", - "description_kind": "plain", - "optional": true - }, - "access_client_secret": { - "type": "string", - "description": "If present, this secret will be passed in the `CF-Access-Client-Secret` header when hitting the `api_url`", - "description_kind": "plain", - "optional": true - }, - "api_url": { - "type": "string", - "description": "The Workspace One API URL provided in the Workspace One Admin Dashboard.", - "description_kind": "plain", - "optional": true - }, - "auth_url": { - "type": "string", - "description": "The Workspace One Authorization URL depending on your region.", - "description_kind": "plain", - "optional": true - }, - "client_id": { - "type": "string", - "description": "The Workspace One client ID provided in the Workspace One Admin Dashboard.", - "description_kind": "plain", - "optional": true - }, - "client_key": { - "type": "string", - "description": "The Uptycs client secret.", - "description_kind": "plain", - "optional": true - }, - "client_secret": { - "type": "string", - "description": "The Workspace One client secret provided in the Workspace One Admin Dashboard.", - "description_kind": "plain", - "required": true - }, - "customer_id": { - "type": "string", - "description": "The Crowdstrike customer ID.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "The configuration object containing third-party integration information.", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "API UUID.", - "description_kind": "plain", - "computed": true - }, - "interval": { - "type": "string", - "description": "The interval between each posture check with the third-party API. Use `m` for minutes (e.g. `5m`) and `h` for hours (e.g. `12h`).", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description": "The name of the device posture integration.", - "description_kind": "plain", - "required": true - }, - "type": { - "type": "string", - "description": "The type of device posture integration.", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_device_posture_rule": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "description": { - "type": "string", - "description": "The description of the device posture rule.", - "description_kind": "plain", - "optional": true - }, - "expiration": { - "type": "string", - "description": "Sets the expiration time for a posture check result. If empty, the result remains valid until it is overwritten by new data from the WARP client.", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description": "API UUID.", - "description_kind": "plain", - "computed": true - }, - "input": { - "nested_type": { - "attributes": { - "active_threats": { - "type": "number", - "description": "The Number of active threats.", - "description_kind": "plain", - "optional": true - }, - "certificate_id": { - "type": "string", - "description": "UUID of Cloudflare managed certificate.", - "description_kind": "plain", - "optional": true - }, - "check_disks": { - "type": "string", - "description": "List of volume names to be checked for encryption.", - "description_kind": "plain", - "optional": true - }, - "cn": { - "type": "string", - "description": "Common Name that is protected by the certificate", - "description_kind": "plain", - "optional": true - }, - "compliance_status": { - "type": "string", - "description": "Compliance Status", - "description_kind": "plain", - "optional": true - }, - "connection_id": { - "type": "string", - "description": "Posture Integration ID.", - "description_kind": "plain", - "optional": true - }, - "count_operator": { - "type": "string", - "description": "Count Operator", - "description_kind": "plain", - "optional": true - }, - "domain": { - "type": "string", - "description": "Domain", - "description_kind": "plain", - "optional": true - }, - "eid_last_seen": { - "type": "string", - "description": "For more details on eid last seen, refer to the Tanium documentation.", - "description_kind": "plain", - "optional": true - }, - "enabled": { - "type": "bool", - "description": "Enabled", - "description_kind": "plain", - "optional": true - }, - "exists": { - "type": "bool", - "description": "Whether or not file exists", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description": "List ID.", - "description_kind": "plain", - "optional": true - }, - "infected": { - "type": "bool", - "description": "Whether device is infected.", - "description_kind": "plain", - "optional": true - }, - "is_active": { - "type": "bool", - "description": "Whether device is active.", - "description_kind": "plain", - "optional": true - }, - "issue_count": { - "type": "string", - "description": "The Number of Issues.", - "description_kind": "plain", - "optional": true - }, - "last_seen": { - "type": "string", - "description": "For more details on last seen, please refer to the Crowdstrike documentation.", - "description_kind": "plain", - "optional": true - }, - "network_status": { - "type": "string", - "description": "Network status of device.", - "description_kind": "plain", - "optional": true - }, - "operating_system": { - "type": "string", - "description": "Operating system", - "description_kind": "plain", - "optional": true - }, - "operator": { - "type": "string", - "description": "operator", - "description_kind": "plain", - "optional": true - }, - "os": { - "type": "string", - "description": "Os Version", - "description_kind": "plain", - "optional": true - }, - "os_distro_name": { - "type": "string", - "description": "Operating System Distribution Name (linux only)", - "description_kind": "plain", - "optional": true - }, - "os_distro_revision": { - "type": "string", - "description": "Version of OS Distribution (linux only)", - "description_kind": "plain", - "optional": true - }, - "os_version_extra": { - "type": "string", - "description": "Additional version data. For Mac or iOS, the Product Verison Extra. For Linux, the kernel release version. (Mac, iOS, and Linux only)", - "description_kind": "plain", - "optional": true - }, - "overall": { - "type": "string", - "description": "overall", - "description_kind": "plain", - "optional": true - }, - "path": { - "type": "string", - "description": "File path.", - "description_kind": "plain", - "optional": true - }, - "require_all": { - "type": "bool", - "description": "Whether to check all disks for encryption.", - "description_kind": "plain", - "optional": true - }, - "risk_level": { - "type": "string", - "description": "For more details on risk level, refer to the Tanium documentation.", - "description_kind": "plain", - "optional": true - }, - "score_operator": { - "type": "string", - "description": "Score Operator", - "description_kind": "plain", - "optional": true - }, - "sensor_config": { - "type": "string", - "description": "SensorConfig", - "description_kind": "plain", - "optional": true - }, - "sha256": { - "type": "string", - "description": "SHA-256.", - "description_kind": "plain", - "optional": true - }, - "state": { - "type": "string", - "description": "For more details on state, please refer to the Crowdstrike documentation.", - "description_kind": "plain", - "optional": true - }, - "thumbprint": { - "type": "string", - "description": "Signing certificate thumbprint.", - "description_kind": "plain", - "optional": true - }, - "total_score": { - "type": "number", - "description": "For more details on total score, refer to the Tanium documentation.", - "description_kind": "plain", - "optional": true - }, - "version": { - "type": "string", - "description": "Version of OS", - "description_kind": "plain", - "optional": true - }, - "version_operator": { - "type": "string", - "description": "Version Operator", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "The value to be checked against.", - "description_kind": "plain", - "optional": true - }, - "match": { - "nested_type": { - "attributes": { - "platform": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "list" - }, - "description": "The conditions that the client must match to run the rule.", - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description": "The name of the device posture rule.", - "description_kind": "plain", - "required": true - }, - "schedule": { - "type": "string", - "description": "Polling frequency for the WARP client posture check. Default: `5m` (poll every five minutes). Minimum: `1m`.", - "description_kind": "plain", - "optional": true - }, - "type": { - "type": "string", - "description": "The type of device posture rule.", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_device_settings_policy": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "allow_mode_switch": { - "type": "bool", - "description": "Whether to allow the user to switch WARP between modes.", - "description_kind": "plain", - "optional": true - }, - "allow_updates": { - "type": "bool", - "description": "Whether to receive update notifications when a new version of the client is available.", - "description_kind": "plain", - "optional": true - }, - "allowed_to_leave": { - "type": "bool", - "description": "Whether to allow devices to leave the organization.", - "description_kind": "plain", - "optional": true - }, - "auto_connect": { - "type": "number", - "description": "The amount of time in minutes to reconnect after having been disabled.", - "description_kind": "plain", - "optional": true - }, - "captive_portal": { - "type": "number", - "description": "Turn on the captive portal after the specified amount of time.", - "description_kind": "plain", - "optional": true - }, - "description": { - "type": "string", - "description": "A description of the policy.", - "description_kind": "plain", - "optional": true - }, - "disable_auto_fallback": { - "type": "bool", - "description": "If the `dns_server` field of a fallback domain is not present, the client will fall back to a best guess of the default/system DNS resolvers unless this policy option is set to `true`.", - "description_kind": "plain", - "optional": true - }, - "enabled": { - "type": "bool", - "description": "Whether the policy will be applied to matching devices.", - "description_kind": "plain", - "optional": true - }, - "exclude_office_ips": { - "type": "bool", - "description": "Whether to add Microsoft IPs to Split Tunnel exclusions.", - "description_kind": "plain", - "optional": true - }, - "lan_allow_minutes": { - "type": "number", - "description": "The amount of time in minutes a user is allowed access to their LAN. A value of 0 will allow LAN access until the next WARP reconnection, such as a reboot or a laptop waking from sleep. Note that this field is omitted from the response if null or unset.", - "description_kind": "plain", - "optional": true - }, - "lan_allow_subnet_size": { - "type": "number", - "description": "The size of the subnet for the local access network. Note that this field is omitted from the response if null or unset.", - "description_kind": "plain", - "optional": true - }, - "match": { - "type": "string", - "description": "The wirefilter expression to match devices.", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description": "The name of the device settings profile.", - "description_kind": "plain", - "required": true - }, - "policy_id": { - "type": "string", - "description": "Device ID.", - "description_kind": "plain", - "optional": true - }, - "precedence": { - "type": "number", - "description": "The precedence of the policy. Lower values indicate higher precedence. Policies will be evaluated in ascending order of this field.", - "description_kind": "plain", - "required": true - }, - "service_mode_v2": { - "nested_type": { - "attributes": { - "mode": { - "type": "string", - "description": "The mode to run the WARP client under.", - "description_kind": "plain", - "optional": true - }, - "port": { - "type": "number", - "description": "The port number when used with proxy mode.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "support_url": { - "type": "string", - "description": "The URL to launch when the Send Feedback button is clicked.", - "description_kind": "plain", - "optional": true - }, - "switch_locked": { - "type": "bool", - "description": "Whether to allow the user to turn off the WARP switch and disconnect the client.", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_dlp_custom_profile": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "profile_id": { - "type": "string", - "description": "The ID for this profile", - "description_kind": "plain", - "optional": true - }, - "profiles": { - "nested_type": { - "attributes": { - "allowed_match_count": { - "type": "number", - "description": "Related DLP policies will trigger when the match count exceeds the number set.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "context_awareness": { - "nested_type": { - "attributes": { - "enabled": { - "type": "bool", - "description": "If true, scan the context of predefined entries to only return matches surrounded by keywords.", - "description_kind": "plain", - "required": true - }, - "skip": { - "nested_type": { - "attributes": { - "files": { - "type": "bool", - "description": "If the content type is a file, skip context analysis and return all matches.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description": "Content types to exclude from context analysis and return all matches.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description": "Scan the context of predefined entries to only return matches surrounded by keywords.", - "description_kind": "plain", - "optional": true - }, - "description": { - "type": "string", - "description": "The description of the profile.", - "description_kind": "plain", - "optional": true - }, - "entries": { - "nested_type": { - "attributes": { - "enabled": { - "type": "bool", - "description": "Whether the entry is enabled or not.", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description": "The name of the entry.", - "description_kind": "plain", - "required": true - }, - "pattern": { - "nested_type": { - "attributes": { - "regex": { - "type": "string", - "description": "The regex pattern.", - "description_kind": "plain", - "required": true - }, - "validation": { - "type": "string", - "description": "Validation algorithm for the pattern. This algorithm will get run on potential matches, and if it returns false, the entry will not be matched.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "A pattern that matches an entry", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "list" - }, - "description": "The entries for this profile.", - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description": "The name of the profile.", - "description_kind": "plain", - "optional": true - }, - "ocr_enabled": { - "type": "bool", - "description": "If true, scan images via OCR to determine if any text present matches filters.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "list" - }, - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_dlp_predefined_profile": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "allowed_match_count": { - "type": "number", - "description": "Related DLP policies will trigger when the match count exceeds the number set.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "context_awareness": { - "nested_type": { - "attributes": { - "enabled": { - "type": "bool", - "description": "If true, scan the context of predefined entries to only return matches surrounded by keywords.", - "description_kind": "plain", - "required": true - }, - "skip": { - "nested_type": { - "attributes": { - "files": { - "type": "bool", - "description": "If the content type is a file, skip context analysis and return all matches.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description": "Content types to exclude from context analysis and return all matches.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description": "Scan the context of predefined entries to only return matches surrounded by keywords.", - "description_kind": "plain", - "optional": true - }, - "entries": { - "nested_type": { - "attributes": { - "enabled": { - "type": "bool", - "description": "Whether the entry is enabled or not.", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description": "The ID for this entry", - "description_kind": "plain", - "computed": true - } - }, - "nesting_mode": "list" - }, - "description": "The entries for this profile.", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description": "The ID for this profile", - "description_kind": "plain", - "required": true - }, - "ocr_enabled": { - "type": "bool", - "description": "If true, scan images via OCR to determine if any text present matches filters.", - "description_kind": "plain", - "optional": true - }, - "profile_id": { - "type": "string", - "description": "The ID for this profile", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_email_routing_address": { - "version": 0, - "block": { - "attributes": { - "account_identifier": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "email": { - "type": "string", - "description": "The contact email address of the user.", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "Destination address identifier.", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_email_routing_catch_all": { - "version": 0, - "block": { - "attributes": { - "actions": { - "nested_type": { - "attributes": { - "type": { - "type": "string", - "description": "Type of action for catch-all rule.", - "description_kind": "plain", - "required": true - }, - "value": { - "type": ["list", "string"], - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "list" - }, - "description": "List actions for the catch-all routing rule.", - "description_kind": "plain", - "required": true - }, - "enabled": { - "type": "bool", - "description": "Routing rule status.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "id": { - "type": "string", - "description": "Routing rule identifier.", - "description_kind": "plain", - "required": true - }, - "matchers": { - "nested_type": { - "attributes": { - "type": { - "type": "string", - "description": "Type of matcher. Default is 'all'.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "list" - }, - "description": "List of matchers for the catch-all routing rule.", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description": "Routing rule name.", - "description_kind": "plain", - "optional": true - }, - "zone_identifier": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_email_routing_rule": { - "version": 0, - "block": { - "attributes": { - "actions": { - "nested_type": { - "attributes": { - "type": { - "type": "string", - "description": "Type of supported action.", - "description_kind": "plain", - "required": true - }, - "value": { - "type": ["list", "string"], - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "list" - }, - "description": "List actions patterns.", - "description_kind": "plain", - "required": true - }, - "enabled": { - "type": "bool", - "description": "Routing rule status.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "id": { - "type": "string", - "description": "Routing rule identifier.", - "description_kind": "plain", - "computed": true - }, - "matchers": { - "nested_type": { - "attributes": { - "field": { - "type": "string", - "description": "Field for type matcher.", - "description_kind": "plain", - "required": true - }, - "type": { - "type": "string", - "description": "Type of matcher.", - "description_kind": "plain", - "required": true - }, - "value": { - "type": "string", - "description": "Value for matcher.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "list" - }, - "description": "Matching patterns to forward to your actions.", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description": "Routing rule name.", - "description_kind": "plain", - "optional": true - }, - "priority": { - "type": "number", - "description": "Priority of the routing rule.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "zone_identifier": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_email_routing_settings": { - "version": 0, - "block": { - "attributes": { - "id": { - "type": "string", - "description": "Email Routing settings identifier.", - "description_kind": "plain", - "required": true - }, - "zone_identifier": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_fallback_domain": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "description": { - "type": "string", - "description": "A description of the fallback domain, displayed in the client UI.", - "description_kind": "plain", - "optional": true - }, - "dns_server": { - "type": ["list", "string"], - "description": "A list of IP addresses to handle domain resolution.", - "description_kind": "plain", - "optional": true - }, - "policy_id": { - "type": "string", - "description": "Device ID.", - "description_kind": "plain", - "required": true - }, - "suffix": { - "type": "string", - "description": "The domain suffix to match when resolving locally.", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_filter": { - "version": 0, - "block": { - "attributes": { - "id": { - "type": "string", - "description": "The unique identifier of the filter.", - "description_kind": "plain", - "optional": true - }, - "zone_identifier": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_firewall_rule": { - "version": 0, - "block": { - "attributes": { - "id": { - "type": "string", - "description": "The unique identifier of the firewall rule.", - "description_kind": "plain", - "optional": true - }, - "path_id": { - "type": "string", - "description": "The unique identifier of the firewall rule.", - "description_kind": "plain", - "optional": true - }, - "zone_identifier": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_gre_tunnel": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "tunnel_identifier": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_healthcheck": { - "version": 0, - "block": { - "attributes": { - "address": { - "type": "string", - "description": "The hostname or IP address of the origin server to run health checks on.", - "description_kind": "plain", - "required": true - }, - "check_regions": { - "type": ["list", "string"], - "description": "A list of regions from which to run health checks. Null means Cloudflare will pick a default region.", - "description_kind": "plain", - "optional": true - }, - "consecutive_fails": { - "type": "number", - "description": "The number of consecutive fails required from a health check before changing the health to unhealthy.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "consecutive_successes": { - "type": "number", - "description": "The number of consecutive successes required from a health check before changing the health to healthy.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "description": { - "type": "string", - "description": "A human-readable description of the health check.", - "description_kind": "plain", - "optional": true - }, - "http_config": { - "nested_type": { - "attributes": { - "allow_insecure": { - "type": "bool", - "description": "Do not validate the certificate when the health check uses HTTPS.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "expected_body": { - "type": "string", - "description": "A case-insensitive sub-string to look for in the response body. If this string is not found, the origin will be marked as unhealthy.", - "description_kind": "plain", - "optional": true - }, - "expected_codes": { - "type": ["list", "string"], - "description": "The expected HTTP response codes (e.g. \"200\") or code ranges (e.g. \"2xx\" for all codes starting with 2) of the health check.", - "description_kind": "plain", - "optional": true - }, - "follow_redirects": { - "type": "bool", - "description": "Follow redirects if the origin returns a 3xx status code.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "header": { - "type": ["map", ["list", "string"]], - "description": "The HTTP request headers to send in the health check. It is recommended you set a Host header by default. The User-Agent header cannot be overridden.", - "description_kind": "plain", - "optional": true - }, - "method": { - "type": "string", - "description": "The HTTP method to use for the health check.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "path": { - "type": "string", - "description": "The endpoint path to health check against.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "port": { - "type": "number", - "description": "Port number to connect to for the health check. Defaults to 80 if type is HTTP or 443 if type is HTTPS.", - "description_kind": "plain", - "optional": true, - "computed": true - } - }, - "nesting_mode": "single" - }, - "description": "Parameters specific to an HTTP or HTTPS health check.", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "computed": true - }, - "interval": { - "type": "number", - "description": "The interval between each health check. Shorter intervals may give quicker notifications if the origin status changes, but will increase load on the origin as we check from multiple locations.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "name": { - "type": "string", - "description": "A short name to identify the health check. Only alphanumeric characters, hyphens and underscores are allowed.", - "description_kind": "plain", - "required": true - }, - "retries": { - "type": "number", - "description": "The number of retries to attempt in case of a timeout before marking the origin as unhealthy. Retries are attempted immediately.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "suspended": { - "type": "bool", - "description": "If suspended, no health checks are sent to the origin.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "tcp_config": { - "nested_type": { - "attributes": { - "method": { - "type": "string", - "description": "The TCP connection method to use for the health check.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "port": { - "type": "number", - "description": "Port number to connect to for the health check. Defaults to 80.", - "description_kind": "plain", - "optional": true, - "computed": true - } - }, - "nesting_mode": "single" - }, - "description": "Parameters specific to TCP health check.", - "description_kind": "plain", - "optional": true - }, - "timeout": { - "type": "number", - "description": "The timeout (in seconds) before marking the health check as failed.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "type": { - "type": "string", - "description": "The protocol to use for the health check. Currently supported protocols are 'HTTP', 'HTTPS' and 'TCP'.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_hostname_tls_setting": { - "version": 0, - "block": { - "attributes": { - "hostname": { - "type": "string", - "description": "The hostname for which the tls settings are set.", - "description_kind": "plain", - "optional": true - }, - "setting_id": { - "type": "string", - "description": "The TLS Setting name.", - "description_kind": "plain", - "required": true - }, - "value": { - "type": "number", - "description": "The tls setting value.", - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_hyperdrive_config": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "caching": { - "nested_type": { - "attributes": { - "disabled": { - "type": "bool", - "description": "When set to true, disables the caching of SQL responses. (Default: false)", - "description_kind": "plain", - "optional": true - }, - "max_age": { - "type": "number", - "description": "When present, specifies max duration for which items should persist in the cache. (Default: 60)", - "description_kind": "plain", - "optional": true - }, - "stale_while_revalidate": { - "type": "number", - "description": "When present, indicates the number of seconds cache may serve the response after it becomes stale. (Default: 15)", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "name": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "origin": { - "nested_type": { - "attributes": { - "database": { - "type": "string", - "description": "The name of your origin database.", - "description_kind": "plain", - "required": true - }, - "host": { - "type": "string", - "description": "The host (hostname or IP) of your origin database.", - "description_kind": "plain", - "required": true - }, - "port": { - "type": "number", - "description": "The port (default: 5432 for Postgres) of your origin database.", - "description_kind": "plain", - "required": true - }, - "scheme": { - "type": "string", - "description": "Specifies the URL scheme used to connect to your origin database.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "user": { - "type": "string", - "description": "The user of your origin database.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_ipsec_tunnel": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "cloudflare_endpoint": { - "type": "string", - "description": "The IP address assigned to the Cloudflare side of the IPsec tunnel.", - "description_kind": "plain", - "required": true - }, - "customer_endpoint": { - "type": "string", - "description": "The IP address assigned to the customer side of the IPsec tunnel. Not required, but must be set for proactive traceroutes to work.", - "description_kind": "plain", - "optional": true - }, - "description": { - "type": "string", - "description": "An optional description forthe IPsec tunnel.", - "description_kind": "plain", - "optional": true - }, - "health_check": { - "nested_type": { - "attributes": { - "direction": { - "type": "string", - "description": "The direction of the flow of the healthcheck. Either unidirectional, where the probe comes to you via the tunnel and the result comes back to Cloudflare via the open Internet, or bidirectional where both the probe and result come and go via the tunnel. Note in the case of bidirecitonal healthchecks, the target field in health_check is ignored as the interface_address is used to send traffic into the tunnel.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "enabled": { - "type": "bool", - "description": "Determines whether to run healthchecks for a tunnel.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "rate": { - "type": "string", - "description": "How frequent the health check is run. The default value is `mid`.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "target": { - "type": "string", - "description": "The destination address in a request type health check. After the healthcheck is decapsulated at the customer end of the tunnel, the ICMP echo will be forwarded to this address. This field defaults to `customer_gre_endpoint address`. This field is ignored for bidirectional healthchecks as the interface_address (not assigned to the Cloudflare side of the tunnel) is used as the target.", - "description_kind": "plain", - "optional": true - }, - "type": { - "type": "string", - "description": "The type of healthcheck to run, reply or request. The default value is `reply`.", - "description_kind": "plain", - "optional": true, - "computed": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "interface_address": { - "type": "string", - "description": "A 31-bit prefix (/31 in CIDR notation) supporting two hosts, one for each side of the tunnel. Select the subnet from the following private IP space: 10.0.0.0–10.255.255.255, 172.16.0.0–172.31.255.255, 192.168.0.0–192.168.255.255.", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description": "The name of the IPsec tunnel. The name cannot share a name with other tunnels.", - "description_kind": "plain", - "required": true - }, - "psk": { - "type": "string", - "description": "A randomly generated or provided string for use in the IPsec tunnel.", - "description_kind": "plain", - "optional": true - }, - "replay_protection": { - "type": "bool", - "description": "If `true`, then IPsec replay protection will be supported in the Cloudflare-to-customer direction.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "tunnel_identifier": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_keyless_certificate": { - "version": 0, - "block": { - "attributes": { - "bundle_method": { - "type": "string", - "description": "A ubiquitous bundle has the highest probability of being verified everywhere, even by clients using outdated or unusual trust stores. An optimal bundle uses the shortest chain and newest intermediates. And the force bundle verifies the chain, but does not otherwise modify it.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "certificate": { - "type": "string", - "description": "The zone's SSL certificate or SSL certificate and intermediate(s).", - "description_kind": "plain", - "required": true - }, - "host": { - "type": "string", - "description": "The keyless SSL name.", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "Keyless certificate identifier tag.", - "description_kind": "plain", - "computed": true - }, - "name": { - "type": "string", - "description": "The keyless SSL name.", - "description_kind": "plain", - "optional": true - }, - "port": { - "type": "number", - "description": "The keyless SSL port used to communicate between Cloudflare and the client's Keyless SSL server.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "tunnel": { - "nested_type": { - "attributes": { - "private_ip": { - "type": "string", - "description": "Private IP of the Key Server Host", - "description_kind": "plain", - "required": true - }, - "vnet_id": { - "type": "string", - "description": "Cloudflare Tunnel Virtual Network ID", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description": "Configuration for using Keyless SSL through a Cloudflare Tunnel", - "description_kind": "plain", - "optional": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_list": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "description": { - "type": "string", - "description": "An informative summary of the list.", - "description_kind": "plain", - "optional": true - }, - "kind": { - "type": "string", - "description": "The type of the list. Each type supports specific list items (IP addresses, ASNs, hostnames or redirects).", - "description_kind": "plain", - "required": true - }, - "list_id": { - "type": "string", - "description": "The unique ID of the list.", - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description": "An informative name for the list. Use this name in filter and rule expressions.", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_list_item": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "optional": true - }, - "account_identifier": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "optional": true - }, - "asn": { - "type": "number", - "description": "A non-negative 32 bit integer", - "description_kind": "plain", - "optional": true - }, - "comment": { - "type": "string", - "description": "An informative summary of the list item.", - "description_kind": "plain", - "optional": true - }, - "hostname": { - "nested_type": { - "attributes": { - "url_hostname": { - "type": "string", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description": "Valid characters for hostnames are ASCII(7) letters from a to z, the digits from 0 to 9, wildcards (*), and the hyphen (-).", - "description_kind": "plain", - "optional": true - }, - "ip": { - "type": "string", - "description": "An IPv4 address, an IPv4 CIDR, or an IPv6 CIDR. IPv6 CIDRs are limited to a maximum of /64.", - "description_kind": "plain", - "optional": true - }, - "item_id": { - "type": "string", - "description": "The unique ID of the item in the List.", - "description_kind": "plain", - "optional": true - }, - "list_id": { - "type": "string", - "description": "The unique ID of the list.", - "description_kind": "plain", - "required": true - }, - "redirect": { - "nested_type": { - "attributes": { - "include_subdomains": { - "type": "bool", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "preserve_path_suffix": { - "type": "bool", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "preserve_query_string": { - "type": "bool", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "source_url": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "status_code": { - "type": "number", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "subpath_matching": { - "type": "bool", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "target_url": { - "type": "string", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description": "The definition of the redirect.", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_load_balancer": { - "version": 0, - "block": { - "attributes": { - "adaptive_routing": { - "nested_type": { - "attributes": { - "failover_across_pools": { - "type": "bool", - "description": "Extends zero-downtime failover of requests to healthy origins from alternate pools, when no healthy alternate exists in the same pool, according to the failover order defined by traffic and origin steering. When set false (the default) zero-downtime failover will only occur between origins within the same pool. See `session_affinity_attributes` for control over when sessions are broken or reassigned.", - "description_kind": "plain", - "optional": true, - "computed": true - } - }, - "nesting_mode": "single" - }, - "description": "Controls features that modify the routing of requests to pools and origins in response to dynamic conditions, such as during the interval between active health monitoring requests. For example, zero-downtime failover occurs immediately when an origin becomes unavailable due to HTTP 521, 522, or 523 response codes. If there is another healthy origin in the same pool, the request is retried once against this alternate origin.", - "description_kind": "plain", - "optional": true - }, - "country_pools": { - "type": "string", - "description": "A mapping of country codes to a list of pool IDs (ordered by their failover priority) for the given country. Any country not explicitly defined will fall back to using the corresponding region_pool mapping if it exists else to default_pools.", - "description_kind": "plain", - "optional": true - }, - "default_pools": { - "type": ["list", "string"], - "description": "A list of pool IDs ordered by their failover priority. Pools defined here are used by default, or when region_pools are not configured for a given region.", - "description_kind": "plain", - "required": true - }, - "description": { - "type": "string", - "description": "Object description.", - "description_kind": "plain", - "optional": true - }, - "fallback_pool": { - "type": "string", - "description": "The pool ID to use when all other pools are detected as unhealthy.", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "location_strategy": { - "nested_type": { - "attributes": { - "mode": { - "type": "string", - "description": "Determines the authoritative location when ECS is not preferred, does not exist in the request, or its GeoIP lookup is unsuccessful.\n- `\"pop\"`: Use the Cloudflare PoP location.\n- `\"resolver_ip\"`: Use the DNS resolver GeoIP location. If the GeoIP lookup is unsuccessful, use the Cloudflare PoP location.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "prefer_ecs": { - "type": "string", - "description": "Whether the EDNS Client Subnet (ECS) GeoIP should be preferred as the authoritative location.\n- `\"always\"`: Always prefer ECS.\n- `\"never\"`: Never prefer ECS.\n- `\"proximity\"`: Prefer ECS only when `steering_policy=\"proximity\"`.\n- `\"geo\"`: Prefer ECS only when `steering_policy=\"geo\"`.", - "description_kind": "plain", - "optional": true, - "computed": true - } - }, - "nesting_mode": "single" - }, - "description": "Controls location-based steering for non-proxied requests. See `steering_policy` to learn how steering is affected.", - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description": "The DNS hostname to associate with your Load Balancer. If this hostname already exists as a DNS record in Cloudflare's DNS, the Load Balancer will take precedence and the DNS record will not be used.", - "description_kind": "plain", - "required": true - }, - "pop_pools": { - "type": "string", - "description": "(Enterprise only): A mapping of Cloudflare PoP identifiers to a list of pool IDs (ordered by their failover priority) for the PoP (datacenter). Any PoPs not explicitly defined will fall back to using the corresponding country_pool, then region_pool mapping if it exists else to default_pools.", - "description_kind": "plain", - "optional": true - }, - "proxied": { - "type": "bool", - "description": "Whether the hostname should be gray clouded (false) or orange clouded (true).", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "random_steering": { - "nested_type": { - "attributes": { - "default_weight": { - "type": "number", - "description": "The default weight for pools in the load balancer that are not specified in the pool_weights map.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "pool_weights": { - "type": "string", - "description": "A mapping of pool IDs to custom weights. The weight is relative to other pools in the load balancer.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Configures pool weights.\n- `steering_policy=\"random\"`: A random pool is selected with probability proportional to pool weights.\n- `steering_policy=\"least_outstanding_requests\"`: Use pool weights to scale each pool's outstanding requests.\n- `steering_policy=\"least_connections\"`: Use pool weights to scale each pool's open connections.", - "description_kind": "plain", - "optional": true - }, - "region_pools": { - "type": "string", - "description": "A mapping of region codes to a list of pool IDs (ordered by their failover priority) for the given region. Any regions not explicitly defined will fall back to using default_pools.", - "description_kind": "plain", - "optional": true - }, - "rules": { - "nested_type": { - "attributes": { - "condition": { - "type": "string", - "description": "The condition expressions to evaluate. If the condition evaluates to true, the overrides or fixed_response in this rule will be applied. An empty condition is always true. For more details on condition expressions, please see https://developers.cloudflare.com/load-balancing/understand-basics/load-balancing-rules/expressions.", - "description_kind": "plain", - "optional": true - }, - "disabled": { - "type": "bool", - "description": "Disable this specific rule. It will no longer be evaluated by this load balancer.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "fixed_response": { - "nested_type": { - "attributes": { - "content_type": { - "type": "string", - "description": "The http 'Content-Type' header to include in the response.", - "description_kind": "plain", - "optional": true - }, - "location": { - "type": "string", - "description": "The http 'Location' header to include in the response.", - "description_kind": "plain", - "optional": true - }, - "message_body": { - "type": "string", - "description": "Text to include as the http body.", - "description_kind": "plain", - "optional": true - }, - "status_code": { - "type": "number", - "description": "The http status code to respond with.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "A collection of fields used to directly respond to the eyeball instead of routing to a pool. If a fixed_response is supplied the rule will be marked as terminates.", - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description": "Name of this rule. Only used for human readability.", - "description_kind": "plain", - "optional": true - }, - "overrides": { - "nested_type": { - "attributes": { - "adaptive_routing": { - "nested_type": { - "attributes": { - "failover_across_pools": { - "type": "bool", - "description": "Extends zero-downtime failover of requests to healthy origins from alternate pools, when no healthy alternate exists in the same pool, according to the failover order defined by traffic and origin steering. When set false (the default) zero-downtime failover will only occur between origins within the same pool. See `session_affinity_attributes` for control over when sessions are broken or reassigned.", - "description_kind": "plain", - "optional": true, - "computed": true - } - }, - "nesting_mode": "single" - }, - "description": "Controls features that modify the routing of requests to pools and origins in response to dynamic conditions, such as during the interval between active health monitoring requests. For example, zero-downtime failover occurs immediately when an origin becomes unavailable due to HTTP 521, 522, or 523 response codes. If there is another healthy origin in the same pool, the request is retried once against this alternate origin.", - "description_kind": "plain", - "optional": true - }, - "country_pools": { - "type": "string", - "description": "A mapping of country codes to a list of pool IDs (ordered by their failover priority) for the given country. Any country not explicitly defined will fall back to using the corresponding region_pool mapping if it exists else to default_pools.", - "description_kind": "plain", - "optional": true - }, - "default_pools": { - "type": ["list", "string"], - "description": "A list of pool IDs ordered by their failover priority. Pools defined here are used by default, or when region_pools are not configured for a given region.", - "description_kind": "plain", - "optional": true - }, - "fallback_pool": { - "type": "string", - "description": "The pool ID to use when all other pools are detected as unhealthy.", - "description_kind": "plain", - "optional": true - }, - "location_strategy": { - "nested_type": { - "attributes": { - "mode": { - "type": "string", - "description": "Determines the authoritative location when ECS is not preferred, does not exist in the request, or its GeoIP lookup is unsuccessful.\n- `\"pop\"`: Use the Cloudflare PoP location.\n- `\"resolver_ip\"`: Use the DNS resolver GeoIP location. If the GeoIP lookup is unsuccessful, use the Cloudflare PoP location.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "prefer_ecs": { - "type": "string", - "description": "Whether the EDNS Client Subnet (ECS) GeoIP should be preferred as the authoritative location.\n- `\"always\"`: Always prefer ECS.\n- `\"never\"`: Never prefer ECS.\n- `\"proximity\"`: Prefer ECS only when `steering_policy=\"proximity\"`.\n- `\"geo\"`: Prefer ECS only when `steering_policy=\"geo\"`.", - "description_kind": "plain", - "optional": true, - "computed": true - } - }, - "nesting_mode": "single" - }, - "description": "Controls location-based steering for non-proxied requests. See `steering_policy` to learn how steering is affected.", - "description_kind": "plain", - "optional": true - }, - "pop_pools": { - "type": "string", - "description": "(Enterprise only): A mapping of Cloudflare PoP identifiers to a list of pool IDs (ordered by their failover priority) for the PoP (datacenter). Any PoPs not explicitly defined will fall back to using the corresponding country_pool, then region_pool mapping if it exists else to default_pools.", - "description_kind": "plain", - "optional": true - }, - "random_steering": { - "nested_type": { - "attributes": { - "default_weight": { - "type": "number", - "description": "The default weight for pools in the load balancer that are not specified in the pool_weights map.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "pool_weights": { - "type": "string", - "description": "A mapping of pool IDs to custom weights. The weight is relative to other pools in the load balancer.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Configures pool weights.\n- `steering_policy=\"random\"`: A random pool is selected with probability proportional to pool weights.\n- `steering_policy=\"least_outstanding_requests\"`: Use pool weights to scale each pool's outstanding requests.\n- `steering_policy=\"least_connections\"`: Use pool weights to scale each pool's open connections.", - "description_kind": "plain", - "optional": true - }, - "region_pools": { - "type": "string", - "description": "A mapping of region codes to a list of pool IDs (ordered by their failover priority) for the given region. Any regions not explicitly defined will fall back to using default_pools.", - "description_kind": "plain", - "optional": true - }, - "session_affinity": { - "type": "string", - "description": "Specifies the type of session affinity the load balancer should use unless specified as `\"none\"` or \"\" (default). The supported types are:\n- `\"cookie\"`: On the first request to a proxied load balancer, a cookie is generated, encoding information of which origin the request will be forwarded to. Subsequent requests, by the same client to the same load balancer, will be sent to the origin server the cookie encodes, for the duration of the cookie and as long as the origin server remains healthy. If the cookie has expired or the origin server is unhealthy, then a new origin server is calculated and used.\n- `\"ip_cookie\"`: Behaves the same as `\"cookie\"` except the initial origin selection is stable and based on the client's ip address.\n- `\"header\"`: On the first request to a proxied load balancer, a session key based on the configured HTTP headers (see `session_affinity_attributes.headers`) is generated, encoding the request headers used for storing in the load balancer session state which origin the request will be forwarded to. Subsequent requests to the load balancer with the same headers will be sent to the same origin server, for the duration of the session and as long as the origin server remains healthy. If the session has been idle for the duration of `session_affinity_ttl` seconds or the origin server is unhealthy, then a new origin server is calculated and used. See `headers` in `session_affinity_attributes` for additional required configuration.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "session_affinity_attributes": { - "nested_type": { - "attributes": { - "drain_duration": { - "type": "number", - "description": "Configures the drain duration in seconds. This field is only used when session affinity is enabled on the load balancer.", - "description_kind": "plain", - "optional": true - }, - "headers": { - "type": ["list", "string"], - "description": "Configures the names of HTTP headers to base session affinity on when header `session_affinity` is enabled. At least one HTTP header name must be provided. To specify the exact cookies to be used, include an item in the following format: `\"cookie:\u003ccookie-name-1\u003e,\u003ccookie-name-2\u003e\"` (example) where everything after the colon is a comma-separated list of cookie names. Providing only `\"cookie\"` will result in all cookies being used. The default max number of HTTP header names that can be provided depends on your plan: 5 for Enterprise, 1 for all other plans.", - "description_kind": "plain", - "optional": true - }, - "require_all_headers": { - "type": "bool", - "description": "When header `session_affinity` is enabled, this option can be used to specify how HTTP headers on load balancing requests will be used. The supported values are:\n- `\"true\"`: Load balancing requests must contain *all* of the HTTP headers specified by the `headers` session affinity attribute, otherwise sessions aren't created.\n- `\"false\"`: Load balancing requests must contain *at least one* of the HTTP headers specified by the `headers` session affinity attribute, otherwise sessions aren't created.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "samesite": { - "type": "string", - "description": "Configures the SameSite attribute on session affinity cookie. Value \"Auto\" will be translated to \"Lax\" or \"None\" depending if Always Use HTTPS is enabled. Note: when using value \"None\", the secure attribute can not be set to \"Never\".", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "secure": { - "type": "string", - "description": "Configures the Secure attribute on session affinity cookie. Value \"Always\" indicates the Secure attribute will be set in the Set-Cookie header, \"Never\" indicates the Secure attribute will not be set, and \"Auto\" will set the Secure attribute depending if Always Use HTTPS is enabled.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "zero_downtime_failover": { - "type": "string", - "description": "Configures the zero-downtime failover between origins within a pool when session affinity is enabled. This feature is currently incompatible with Argo, Tiered Cache, and Bandwidth Alliance. The supported values are:\n- `\"none\"`: No failover takes place for sessions pinned to the origin (default).\n- `\"temporary\"`: Traffic will be sent to another other healthy origin until the originally pinned origin is available; note that this can potentially result in heavy origin flapping.\n- `\"sticky\"`: The session affinity cookie is updated and subsequent requests are sent to the new origin. Note: Zero-downtime failover with sticky sessions is currently not supported for session affinity by header.", - "description_kind": "plain", - "optional": true, - "computed": true - } - }, - "nesting_mode": "single" - }, - "description": "Configures attributes for session affinity.", - "description_kind": "plain", - "optional": true - }, - "session_affinity_ttl": { - "type": "number", - "description": "Time, in seconds, until a client's session expires after being created. Once the expiry time has been reached, subsequent requests may get sent to a different origin server. The accepted ranges per `session_affinity` policy are:\n- `\"cookie\"` / `\"ip_cookie\"`: The current default of 23 hours will be used unless explicitly set. The accepted range of values is between [1800, 604800].\n- `\"header\"`: The current default of 1800 seconds will be used unless explicitly set. The accepted range of values is between [30, 3600]. Note: With session affinity by header, sessions only expire after they haven't been used for the number of seconds specified.", - "description_kind": "plain", - "optional": true - }, - "steering_policy": { - "type": "string", - "description": "Steering Policy for this load balancer.\n- `\"off\"`: Use `default_pools`.\n- `\"geo\"`: Use `region_pools`/`country_pools`/`pop_pools`. For non-proxied requests, the country for `country_pools` is determined by `location_strategy`.\n- `\"random\"`: Select a pool randomly.\n- `\"dynamic_latency\"`: Use round trip time to select the closest pool in default_pools (requires pool health checks).\n- `\"proximity\"`: Use the pools' latitude and longitude to select the closest pool using the Cloudflare PoP location for proxied requests or the location determined by `location_strategy` for non-proxied requests.\n- `\"least_outstanding_requests\"`: Select a pool by taking into consideration `random_steering` weights, as well as each pool's number of outstanding requests. Pools with more pending requests are weighted proportionately less relative to others.\n- `\"least_connections\"`: Select a pool by taking into consideration `random_steering` weights, as well as each pool's number of open connections. Pools with more open connections are weighted proportionately less relative to others. Supported for HTTP/1 and HTTP/2 connections.\n- `\"\"`: Will map to `\"geo\"` if you use `region_pools`/`country_pools`/`pop_pools` otherwise `\"off\"`.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "ttl": { - "type": "number", - "description": "Time to live (TTL) of the DNS entry for the IP address returned by this load balancer. This only applies to gray-clouded (unproxied) load balancers.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "A collection of overrides to apply to the load balancer when this rule's condition is true. All fields are optional.", - "description_kind": "plain", - "optional": true - }, - "priority": { - "type": "number", - "description": "The order in which rules should be executed in relation to each other. Lower values are executed first. Values do not need to be sequential. If no value is provided for any rule the array order of the rules field will be used to assign a priority.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "terminates": { - "type": "bool", - "description": "If this rule's condition is true, this causes rule evaluation to stop after processing this rule.", - "description_kind": "plain", - "optional": true, - "computed": true - } - }, - "nesting_mode": "list" - }, - "description": "BETA Field Not General Access: A list of rules for this load balancer to execute.", - "description_kind": "plain", - "optional": true - }, - "session_affinity": { - "type": "string", - "description": "Specifies the type of session affinity the load balancer should use unless specified as `\"none\"` or \"\" (default). The supported types are:\n- `\"cookie\"`: On the first request to a proxied load balancer, a cookie is generated, encoding information of which origin the request will be forwarded to. Subsequent requests, by the same client to the same load balancer, will be sent to the origin server the cookie encodes, for the duration of the cookie and as long as the origin server remains healthy. If the cookie has expired or the origin server is unhealthy, then a new origin server is calculated and used.\n- `\"ip_cookie\"`: Behaves the same as `\"cookie\"` except the initial origin selection is stable and based on the client's ip address.\n- `\"header\"`: On the first request to a proxied load balancer, a session key based on the configured HTTP headers (see `session_affinity_attributes.headers`) is generated, encoding the request headers used for storing in the load balancer session state which origin the request will be forwarded to. Subsequent requests to the load balancer with the same headers will be sent to the same origin server, for the duration of the session and as long as the origin server remains healthy. If the session has been idle for the duration of `session_affinity_ttl` seconds or the origin server is unhealthy, then a new origin server is calculated and used. See `headers` in `session_affinity_attributes` for additional required configuration.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "session_affinity_attributes": { - "nested_type": { - "attributes": { - "drain_duration": { - "type": "number", - "description": "Configures the drain duration in seconds. This field is only used when session affinity is enabled on the load balancer.", - "description_kind": "plain", - "optional": true - }, - "headers": { - "type": ["list", "string"], - "description": "Configures the names of HTTP headers to base session affinity on when header `session_affinity` is enabled. At least one HTTP header name must be provided. To specify the exact cookies to be used, include an item in the following format: `\"cookie:\u003ccookie-name-1\u003e,\u003ccookie-name-2\u003e\"` (example) where everything after the colon is a comma-separated list of cookie names. Providing only `\"cookie\"` will result in all cookies being used. The default max number of HTTP header names that can be provided depends on your plan: 5 for Enterprise, 1 for all other plans.", - "description_kind": "plain", - "optional": true - }, - "require_all_headers": { - "type": "bool", - "description": "When header `session_affinity` is enabled, this option can be used to specify how HTTP headers on load balancing requests will be used. The supported values are:\n- `\"true\"`: Load balancing requests must contain *all* of the HTTP headers specified by the `headers` session affinity attribute, otherwise sessions aren't created.\n- `\"false\"`: Load balancing requests must contain *at least one* of the HTTP headers specified by the `headers` session affinity attribute, otherwise sessions aren't created.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "samesite": { - "type": "string", - "description": "Configures the SameSite attribute on session affinity cookie. Value \"Auto\" will be translated to \"Lax\" or \"None\" depending if Always Use HTTPS is enabled. Note: when using value \"None\", the secure attribute can not be set to \"Never\".", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "secure": { - "type": "string", - "description": "Configures the Secure attribute on session affinity cookie. Value \"Always\" indicates the Secure attribute will be set in the Set-Cookie header, \"Never\" indicates the Secure attribute will not be set, and \"Auto\" will set the Secure attribute depending if Always Use HTTPS is enabled.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "zero_downtime_failover": { - "type": "string", - "description": "Configures the zero-downtime failover between origins within a pool when session affinity is enabled. This feature is currently incompatible with Argo, Tiered Cache, and Bandwidth Alliance. The supported values are:\n- `\"none\"`: No failover takes place for sessions pinned to the origin (default).\n- `\"temporary\"`: Traffic will be sent to another other healthy origin until the originally pinned origin is available; note that this can potentially result in heavy origin flapping.\n- `\"sticky\"`: The session affinity cookie is updated and subsequent requests are sent to the new origin. Note: Zero-downtime failover with sticky sessions is currently not supported for session affinity by header.", - "description_kind": "plain", - "optional": true, - "computed": true - } - }, - "nesting_mode": "single" - }, - "description": "Configures attributes for session affinity.", - "description_kind": "plain", - "optional": true - }, - "session_affinity_ttl": { - "type": "number", - "description": "Time, in seconds, until a client's session expires after being created. Once the expiry time has been reached, subsequent requests may get sent to a different origin server. The accepted ranges per `session_affinity` policy are:\n- `\"cookie\"` / `\"ip_cookie\"`: The current default of 23 hours will be used unless explicitly set. The accepted range of values is between [1800, 604800].\n- `\"header\"`: The current default of 1800 seconds will be used unless explicitly set. The accepted range of values is between [30, 3600]. Note: With session affinity by header, sessions only expire after they haven't been used for the number of seconds specified.", - "description_kind": "plain", - "optional": true - }, - "steering_policy": { - "type": "string", - "description": "Steering Policy for this load balancer.\n- `\"off\"`: Use `default_pools`.\n- `\"geo\"`: Use `region_pools`/`country_pools`/`pop_pools`. For non-proxied requests, the country for `country_pools` is determined by `location_strategy`.\n- `\"random\"`: Select a pool randomly.\n- `\"dynamic_latency\"`: Use round trip time to select the closest pool in default_pools (requires pool health checks).\n- `\"proximity\"`: Use the pools' latitude and longitude to select the closest pool using the Cloudflare PoP location for proxied requests or the location determined by `location_strategy` for non-proxied requests.\n- `\"least_outstanding_requests\"`: Select a pool by taking into consideration `random_steering` weights, as well as each pool's number of outstanding requests. Pools with more pending requests are weighted proportionately less relative to others.\n- `\"least_connections\"`: Select a pool by taking into consideration `random_steering` weights, as well as each pool's number of open connections. Pools with more open connections are weighted proportionately less relative to others. Supported for HTTP/1 and HTTP/2 connections.\n- `\"\"`: Will map to `\"geo\"` if you use `region_pools`/`country_pools`/`pop_pools` otherwise `\"off\"`.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "ttl": { - "type": "number", - "description": "Time to live (TTL) of the DNS entry for the IP address returned by this load balancer. This only applies to gray-clouded (unproxied) load balancers.", - "description_kind": "plain", - "optional": true - }, - "zone_id": { - "type": "string", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_load_balancer_monitor": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "allow_insecure": { - "type": "bool", - "description": "Do not validate the certificate when monitor use HTTPS. This parameter is currently only valid for HTTP and HTTPS monitors.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "consecutive_down": { - "type": "number", - "description": "To be marked unhealthy the monitored origin must fail this healthcheck N consecutive times.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "consecutive_up": { - "type": "number", - "description": "To be marked healthy the monitored origin must pass this healthcheck N consecutive times.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "description": { - "type": "string", - "description": "Object description.", - "description_kind": "plain", - "optional": true - }, - "expected_body": { - "type": "string", - "description": "A case-insensitive sub-string to look for in the response body. If this string is not found, the origin will be marked as unhealthy. This parameter is only valid for HTTP and HTTPS monitors.", - "description_kind": "plain", - "optional": true - }, - "expected_codes": { - "type": "string", - "description": "The expected HTTP response code or code range of the health check. This parameter is only valid for HTTP and HTTPS monitors.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "follow_redirects": { - "type": "bool", - "description": "Follow redirects if returned by the origin. This parameter is only valid for HTTP and HTTPS monitors.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "header": { - "type": "string", - "description": "The HTTP request headers to send in the health check. It is recommended you set a Host header by default. The User-Agent header cannot be overridden. This parameter is only valid for HTTP and HTTPS monitors.", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "interval": { - "type": "number", - "description": "The interval between each health check. Shorter intervals may improve failover time, but will increase load on the origins as we check from multiple locations.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "method": { - "type": "string", - "description": "The method to use for the health check. This defaults to 'GET' for HTTP/HTTPS based checks and 'connection_established' for TCP based health checks.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "path": { - "type": "string", - "description": "The endpoint path you want to conduct a health check against. This parameter is only valid for HTTP and HTTPS monitors.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "port": { - "type": "number", - "description": "The port number to connect to for the health check. Required for TCP, UDP, and SMTP checks. HTTP and HTTPS checks should only define the port when using a non-standard port (HTTP: default 80, HTTPS: default 443).", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "probe_zone": { - "type": "string", - "description": "Assign this monitor to emulate the specified zone while probing. This parameter is only valid for HTTP and HTTPS monitors.", - "description_kind": "plain", - "optional": true - }, - "retries": { - "type": "number", - "description": "The number of retries to attempt in case of a timeout before marking the origin as unhealthy. Retries are attempted immediately.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "timeout": { - "type": "number", - "description": "The timeout (in seconds) before marking the health check as failed.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "type": { - "type": "string", - "description": "The protocol to use for the health check. Currently supported protocols are 'HTTP','HTTPS', 'TCP', 'ICMP-PING', 'UDP-ICMP', and 'SMTP'.", - "description_kind": "plain", - "optional": true, - "computed": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_load_balancer_pool": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "description": { - "type": "string", - "description": "A human-readable description of the pool.", - "description_kind": "plain", - "optional": true - }, - "enabled": { - "type": "bool", - "description": "Whether to enable (the default) or disable this pool. Disabled pools will not receive traffic and are excluded from health checks. Disabling a pool will cause any load balancers using it to failover to the next pool (if any).", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "latitude": { - "type": "number", - "description": "The latitude of the data center containing the origins used in this pool in decimal degrees. If this is set, longitude must also be set.", - "description_kind": "plain", - "optional": true - }, - "load_shedding": { - "nested_type": { - "attributes": { - "default_percent": { - "type": "number", - "description": "The percent of traffic to shed from the pool, according to the default policy. Applies to new sessions and traffic without session affinity.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "default_policy": { - "type": "string", - "description": "The default policy to use when load shedding. A random policy randomly sheds a given percent of requests. A hash policy computes a hash over the CF-Connecting-IP address and sheds all requests originating from a percent of IPs.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "session_percent": { - "type": "number", - "description": "The percent of existing sessions to shed from the pool, according to the session policy.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "session_policy": { - "type": "string", - "description": "Only the hash policy is supported for existing sessions (to avoid exponential decay).", - "description_kind": "plain", - "optional": true, - "computed": true - } - }, - "nesting_mode": "single" - }, - "description": "Configures load shedding policies and percentages for the pool.", - "description_kind": "plain", - "optional": true - }, - "longitude": { - "type": "number", - "description": "The longitude of the data center containing the origins used in this pool in decimal degrees. If this is set, latitude must also be set.", - "description_kind": "plain", - "optional": true - }, - "minimum_origins": { - "type": "number", - "description": "The minimum number of origins that must be healthy for this pool to serve traffic. If the number of healthy origins falls below this number, the pool will be marked unhealthy and will failover to the next available pool.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "monitor": { - "type": "string", - "description": "The ID of the Monitor to use for checking the health of origins within this pool.", - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description": "A short name (tag) for the pool. Only alphanumeric characters, hyphens, and underscores are allowed.", - "description_kind": "plain", - "required": true - }, - "notification_email": { - "type": "string", - "description": "This field is now deprecated. It has been moved to Cloudflare's Centralized Notification service https://developers.cloudflare.com/fundamentals/notifications/. The email address to send health status notifications to. This can be an individual mailbox or a mailing list. Multiple emails can be supplied as a comma delimited list.", - "description_kind": "plain", - "optional": true - }, - "notification_filter": { - "nested_type": { - "attributes": { - "origin": { - "nested_type": { - "attributes": { - "disable": { - "type": "bool", - "description": "If set true, disable notifications for this type of resource (pool or origin).", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "healthy": { - "type": "bool", - "description": "If present, send notifications only for this health status (e.g. false for only DOWN events). Use null to reset (all events).", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Filter options for a particular resource type (pool or origin). Use null to reset.", - "description_kind": "plain", - "optional": true - }, - "pool": { - "nested_type": { - "attributes": { - "disable": { - "type": "bool", - "description": "If set true, disable notifications for this type of resource (pool or origin).", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "healthy": { - "type": "bool", - "description": "If present, send notifications only for this health status (e.g. false for only DOWN events). Use null to reset (all events).", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Filter options for a particular resource type (pool or origin). Use null to reset.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Filter pool and origin health notifications by resource type or health status. Use null to reset.", - "description_kind": "plain", - "optional": true - }, - "origin_steering": { - "nested_type": { - "attributes": { - "policy": { - "type": "string", - "description": "The type of origin steering policy to use.\n- `\"random\"`: Select an origin randomly.\n- `\"hash\"`: Select an origin by computing a hash over the CF-Connecting-IP address.\n- `\"least_outstanding_requests\"`: Select an origin by taking into consideration origin weights, as well as each origin's number of outstanding requests. Origins with more pending requests are weighted proportionately less relative to others.\n- `\"least_connections\"`: Select an origin by taking into consideration origin weights, as well as each origin's number of open connections. Origins with more open connections are weighted proportionately less relative to others. Supported for HTTP/1 and HTTP/2 connections.", - "description_kind": "plain", - "optional": true, - "computed": true - } - }, - "nesting_mode": "single" - }, - "description": "Configures origin steering for the pool. Controls how origins are selected for new sessions and traffic without session affinity.", - "description_kind": "plain", - "optional": true - }, - "origins": { - "nested_type": { - "attributes": { - "address": { - "type": "string", - "description": "The IP address (IPv4 or IPv6) of the origin, or its publicly addressable hostname. Hostnames entered here should resolve directly to the origin, and not be a hostname proxied by Cloudflare. To set an internal/reserved address, virtual_network_id must also be set.", - "description_kind": "plain", - "optional": true - }, - "disabled_at": { - "type": "string", - "description": "This field shows up only if the origin is disabled. This field is set with the time the origin was disabled.", - "description_kind": "plain", - "computed": true - }, - "enabled": { - "type": "bool", - "description": "Whether to enable (the default) this origin within the pool. Disabled origins will not receive traffic and are excluded from health checks. The origin will only be disabled for the current pool.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "header": { - "nested_type": { - "attributes": { - "host": { - "type": ["list", "string"], - "description": "The 'Host' header allows to override the hostname set in the HTTP request. Current support is 1 'Host' header override per origin.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "The request header is used to pass additional information with an HTTP request. Currently supported header is 'Host'.", - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description": "A human-identifiable name for the origin.", - "description_kind": "plain", - "optional": true - }, - "virtual_network_id": { - "type": "string", - "description": "The virtual network subnet ID the origin belongs in. Virtual network must also belong to the account.", - "description_kind": "plain", - "optional": true - }, - "weight": { - "type": "number", - "description": "The weight of this origin relative to other origins in the pool. Based on the configured weight the total traffic is distributed among origins within the pool.\n- `origin_steering.policy=\"least_outstanding_requests\"`: Use weight to scale the origin's outstanding requests.\n- `origin_steering.policy=\"least_connections\"`: Use weight to scale the origin's open connections.", - "description_kind": "plain", - "optional": true, - "computed": true - } - }, - "nesting_mode": "list" - }, - "description": "The list of origins within this pool. Traffic directed at this pool is balanced across all currently healthy origins, provided the pool itself is healthy.", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_logpull_retention": { - "version": 0, - "block": { - "attributes": { - "flag": { - "type": "bool", - "description": "The log retention flag for Logpull API.", - "description_kind": "plain", - "required": true - }, - "zone_identifier": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_logpush_job": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "The Account ID to use for this endpoint. Mutually exclusive with the Zone ID.", - "description_kind": "plain", - "optional": true - }, - "dataset": { - "type": "string", - "description": "Name of the dataset. A list of supported datasets can be found on the [Developer Docs](https://developers.cloudflare.com/logs/reference/log-fields/).", - "description_kind": "plain", - "optional": true - }, - "destination_conf": { - "type": "string", - "description": "Uniquely identifies a resource (such as an s3 bucket) where data will be pushed. Additional configuration parameters supported by the destination may be included.", - "description_kind": "plain", - "required": true - }, - "enabled": { - "type": "bool", - "description": "Flag that indicates if the job is enabled.", - "description_kind": "plain", - "optional": true - }, - "frequency": { - "type": "string", - "description": "This field is deprecated. Please use `max_upload_*` parameters instead. The frequency at which Cloudflare sends batches of logs to your destination. Setting frequency to high sends your logs in larger quantities of smaller files. Setting frequency to low sends logs in smaller quantities of larger files.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "id": { - "type": "number", - "description": "Unique id of the job.", - "description_kind": "plain", - "computed": true - }, - "kind": { - "type": "string", - "description": "The kind parameter (optional) is used to differentiate between Logpush and Edge Log Delivery jobs. Currently, Edge Log Delivery is only supported for the `http_requests` dataset.", - "description_kind": "plain", - "optional": true - }, - "logpull_options": { - "type": "string", - "description": "This field is deprecated. Use `output_options` instead. Configuration string. It specifies things like requested fields and timestamp formats. If migrating from the logpull api, copy the url (full url or just the query string) of your call here, and logpush will keep on making this call for you, setting start and end times appropriately.", - "description_kind": "plain", - "optional": true - }, - "max_upload_bytes": { - "type": "number", - "description": "The maximum uncompressed file size of a batch of logs. This setting value must be between `5 MB` and `1 GB`, or `0` to disable it. Note that you cannot set a minimum file size; this means that log files may be much smaller than this batch size. This parameter is not available for jobs with `edge` as its kind.", - "description_kind": "plain", - "optional": true - }, - "max_upload_interval_seconds": { - "type": "number", - "description": "The maximum interval in seconds for log batches. This setting must be between 30 and 300 seconds (5 minutes), or `0` to disable it. Note that you cannot specify a minimum interval for log batches; this means that log files may be sent in shorter intervals than this. This parameter is only used for jobs with `edge` as its kind.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "max_upload_records": { - "type": "number", - "description": "The maximum number of log lines per batch. This setting must be between 1000 and 1,000,000 lines, or `0` to disable it. Note that you cannot specify a minimum number of log lines per batch; this means that log files may contain many fewer lines than this. This parameter is not available for jobs with `edge` as its kind.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "name": { - "type": "string", - "description": "Optional human readable job name. Not unique. Cloudflare suggests that you set this to a meaningful string, like the domain name, to make it easier to identify your job.", - "description_kind": "plain", - "optional": true - }, - "output_options": { - "nested_type": { - "attributes": { - "batch_prefix": { - "type": "string", - "description": "String to be prepended before each batch.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "batch_suffix": { - "type": "string", - "description": "String to be appended after each batch.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "cve_2021_4428": { - "type": "bool", - "description": "If set to true, will cause all occurrences of `${` in the generated files to be replaced with `x{`.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "field_delimiter": { - "type": "string", - "description": "String to join fields. This field be ignored when `record_template` is set.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "field_names": { - "type": ["list", "string"], - "description": "List of field names to be included in the Logpush output. For the moment, there is no option to add all fields at once, so you must specify all the fields names you are interested in.", - "description_kind": "plain", - "optional": true - }, - "output_type": { - "type": "string", - "description": "Specifies the output type, such as `ndjson` or `csv`. This sets default values for the rest of the settings, depending on the chosen output type. Some formatting rules, like string quoting, are different between output types.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "record_delimiter": { - "type": "string", - "description": "String to be inserted in-between the records as separator.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "record_prefix": { - "type": "string", - "description": "String to be prepended before each record.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "record_suffix": { - "type": "string", - "description": "String to be appended after each record.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "record_template": { - "type": "string", - "description": "String to use as template for each record instead of the default comma-separated list. All fields used in the template must be present in `field_names` as well, otherwise they will end up as null. Format as a Go `text/template` without any standard functions, like conditionals, loops, sub-templates, etc.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "sample_rate": { - "type": "number", - "description": "Floating number to specify sampling rate. Sampling is applied on top of filtering, and regardless of the current `sample_interval` of the data.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "timestamp_format": { - "type": "string", - "description": "String to specify the format for timestamps, such as `unixnano`, `unix`, or `rfc3339`.", - "description_kind": "plain", - "optional": true, - "computed": true - } - }, - "nesting_mode": "single" - }, - "description": "The structured replacement for `logpull_options`. When including this field, the `logpull_option` field will be ignored.", - "description_kind": "plain", - "optional": true - }, - "ownership_challenge": { - "type": "string", - "description": "Ownership challenge token to prove destination ownership.", - "description_kind": "plain", - "optional": true - }, - "zone_id": { - "type": "string", - "description": "The Zone ID to use for this endpoint. Mutually exclusive with the Account ID.", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_logpush_ownership_challenge": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "The Account ID to use for this endpoint. Mutually exclusive with the Zone ID.", - "description_kind": "plain", - "optional": true - }, - "destination_conf": { - "type": "string", - "description": "Uniquely identifies a resource (such as an s3 bucket) where data will be pushed. Additional configuration parameters supported by the destination may be included.", - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "The Zone ID to use for this endpoint. Mutually exclusive with the Account ID.", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_managed_headers": { - "version": 0, - "block": { - "attributes": { - "managed_request_headers": { - "nested_type": { - "attributes": { - "enabled": { - "type": "bool", - "description": "When true, the Managed Transform is enabled.", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description": "Human-readable identifier of the Managed Transform.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "list" - }, - "description_kind": "plain", - "required": true - }, - "managed_response_headers": { - "nested_type": { - "attributes": { - "enabled": { - "type": "bool", - "description": "When true, the Managed Transform is enabled.", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description": "Human-readable identifier of the Managed Transform.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "list" - }, - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_mtls_certificate": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "ca": { - "type": "bool", - "description": "Indicates whether the certificate is a CA or leaf certificate.", - "description_kind": "plain", - "required": true - }, - "certificates": { - "type": "string", - "description": "The uploaded root CA certificate.", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description": "Optional unique name for the certificate. Only used for human readability.", - "description_kind": "plain", - "optional": true - }, - "private_key": { - "type": "string", - "description": "The private key for the certificate", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_notification_policy": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "The account id", - "description_kind": "plain", - "required": true - }, - "alert_type": { - "type": "string", - "description": "Refers to which event will trigger a Notification dispatch. You can use the endpoint to get available alert types which then will give you a list of possible values.", - "description_kind": "plain", - "required": true - }, - "description": { - "type": "string", - "description": "Optional description for the Notification policy.", - "description_kind": "plain", - "optional": true - }, - "enabled": { - "type": "bool", - "description": "Whether or not the Notification policy is enabled.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "filters": { - "nested_type": { - "attributes": { - "actions": { - "type": ["list", "string"], - "description": "Usage depends on specific alert type", - "description_kind": "plain", - "optional": true - }, - "affected_asns": { - "type": ["list", "string"], - "description": "Used for configuring radar_notification", - "description_kind": "plain", - "optional": true - }, - "affected_components": { - "type": ["list", "string"], - "description": "Used for configuring incident_alert. A list of identifiers for each component to monitor.", - "description_kind": "plain", - "optional": true - }, - "affected_locations": { - "type": ["list", "string"], - "description": "Used for configuring radar_notification", - "description_kind": "plain", - "optional": true - }, - "airport_code": { - "type": ["list", "string"], - "description": "Used for configuring maintenance_event_notification", - "description_kind": "plain", - "optional": true - }, - "alert_trigger_preferences": { - "type": ["list", "string"], - "description": "Usage depends on specific alert type", - "description_kind": "plain", - "optional": true - }, - "alert_trigger_preferences_value": { - "type": ["list", "string"], - "description": "Used for configuring magic_tunnel_health_check_event", - "description_kind": "plain", - "optional": true - }, - "enabled": { - "type": ["list", "string"], - "description": "Used for configuring load_balancing_pool_enablement_alert", - "description_kind": "plain", - "optional": true - }, - "environment": { - "type": ["list", "string"], - "description": "Used for configuring pages_event_alert", - "description_kind": "plain", - "optional": true - }, - "event": { - "type": ["list", "string"], - "description": "Used for configuring pages_event_alert", - "description_kind": "plain", - "optional": true - }, - "event_source": { - "type": ["list", "string"], - "description": "Used for configuring load_balancing_health_alert", - "description_kind": "plain", - "optional": true - }, - "event_type": { - "type": ["list", "string"], - "description": "Usage depends on specific alert type", - "description_kind": "plain", - "optional": true - }, - "group_by": { - "type": ["list", "string"], - "description": "Usage depends on specific alert type", - "description_kind": "plain", - "optional": true - }, - "health_check_id": { - "type": ["list", "string"], - "description": "Used for configuring health_check_status_notification", - "description_kind": "plain", - "optional": true - }, - "incident_impact": { - "type": ["list", "string"], - "description": "Used for configuring incident_alert", - "description_kind": "plain", - "optional": true - }, - "input_id": { - "type": ["list", "string"], - "description": "Used for configuring stream_live_notifications", - "description_kind": "plain", - "optional": true - }, - "limit": { - "type": ["list", "string"], - "description": "Used for configuring billing_usage_alert", - "description_kind": "plain", - "optional": true - }, - "logo_tag": { - "type": ["list", "string"], - "description": "Used for configuring logo_match_alert", - "description_kind": "plain", - "optional": true - }, - "megabits_per_second": { - "type": ["list", "string"], - "description": "Used for configuring advanced_ddos_attack_l4_alert", - "description_kind": "plain", - "optional": true - }, - "new_health": { - "type": ["list", "string"], - "description": "Used for configuring load_balancing_health_alert", - "description_kind": "plain", - "optional": true - }, - "new_status": { - "type": ["list", "string"], - "description": "Used for configuring tunnel_health_event", - "description_kind": "plain", - "optional": true - }, - "packets_per_second": { - "type": ["list", "string"], - "description": "Used for configuring advanced_ddos_attack_l4_alert", - "description_kind": "plain", - "optional": true - }, - "pool_id": { - "type": ["list", "string"], - "description": "Usage depends on specific alert type", - "description_kind": "plain", - "optional": true - }, - "product": { - "type": ["list", "string"], - "description": "Used for configuring billing_usage_alert", - "description_kind": "plain", - "optional": true - }, - "project_id": { - "type": ["list", "string"], - "description": "Used for configuring pages_event_alert", - "description_kind": "plain", - "optional": true - }, - "protocol": { - "type": ["list", "string"], - "description": "Used for configuring advanced_ddos_attack_l4_alert", - "description_kind": "plain", - "optional": true - }, - "query_tag": { - "type": ["list", "string"], - "description": "Usage depends on specific alert type", - "description_kind": "plain", - "optional": true - }, - "requests_per_second": { - "type": ["list", "string"], - "description": "Used for configuring advanced_ddos_attack_l7_alert", - "description_kind": "plain", - "optional": true - }, - "selectors": { - "type": ["list", "string"], - "description": "Usage depends on specific alert type", - "description_kind": "plain", - "optional": true - }, - "services": { - "type": ["list", "string"], - "description": "Used for configuring clickhouse_alert_fw_ent_anomaly", - "description_kind": "plain", - "optional": true - }, - "slo": { - "type": ["list", "string"], - "description": "Usage depends on specific alert type", - "description_kind": "plain", - "optional": true - }, - "status": { - "type": ["list", "string"], - "description": "Used for configuring health_check_status_notification", - "description_kind": "plain", - "optional": true - }, - "target_hostname": { - "type": ["list", "string"], - "description": "Used for configuring advanced_ddos_attack_l7_alert", - "description_kind": "plain", - "optional": true - }, - "target_ip": { - "type": ["list", "string"], - "description": "Used for configuring advanced_ddos_attack_l4_alert", - "description_kind": "plain", - "optional": true - }, - "target_zone_name": { - "type": ["list", "string"], - "description": "Used for configuring advanced_ddos_attack_l7_alert", - "description_kind": "plain", - "optional": true - }, - "traffic_exclusions": { - "type": ["list", "string"], - "description": "Used for configuring traffic_anomalies_alert", - "description_kind": "plain", - "optional": true - }, - "tunnel_id": { - "type": ["list", "string"], - "description": "Used for configuring tunnel_health_event", - "description_kind": "plain", - "optional": true - }, - "tunnel_name": { - "type": ["list", "string"], - "description": "Used for configuring magic_tunnel_health_check_event", - "description_kind": "plain", - "optional": true - }, - "where": { - "type": ["list", "string"], - "description": "Usage depends on specific alert type", - "description_kind": "plain", - "optional": true - }, - "zones": { - "type": ["list", "string"], - "description": "Usage depends on specific alert type", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Optional filters that allow you to be alerted only on a subset of events for that alert type based on some criteria. This is only available for select alert types. See alert type documentation for more details.", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description": "UUID", - "description_kind": "plain", - "computed": true - }, - "mechanisms": { - "type": ["map", ["list", "string"]], - "description": "List of IDs that will be used when dispatching a notification. IDs for email type will be the email address.", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description": "Name of the policy.", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_notification_policy_webhooks": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "The account id", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "UUID", - "description_kind": "plain", - "computed": true - }, - "name": { - "type": "string", - "description": "The name of the webhook destination. This will be included in the request body when you receive a webhook notification.", - "description_kind": "plain", - "required": true - }, - "secret": { - "type": "string", - "description": "Optional secret that will be passed in the `cf-webhook-auth` header when dispatching generic webhook notifications or formatted for supported destinations. Secrets are not returned in any API response body.", - "description_kind": "plain", - "optional": true - }, - "url": { - "type": "string", - "description": "The POST endpoint to call when dispatching a notification.", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_observatory_scheduled_test": { - "version": 0, - "block": { - "attributes": { - "url": { - "type": "string", - "description": "A URL.", - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_origin_ca_certificate": { - "version": 0, - "block": { - "attributes": { - "certificate_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "optional": true - }, - "csr": { - "type": "string", - "description": "The Certificate Signing Request (CSR). Must be newline-encoded.", - "description_kind": "plain", - "optional": true - }, - "hostnames": { - "type": ["list", "string"], - "description": "Array of hostnames or wildcard names (e.g., *.example.com) bound to the certificate.", - "description_kind": "plain", - "optional": true - }, - "request_type": { - "type": "string", - "description": "Signature type desired on certificate (\"origin-rsa\" (rsa), \"origin-ecc\" (ecdsa), or \"keyless-certificate\" (for Keyless SSL servers).", - "description_kind": "plain", - "optional": true - }, - "requested_validity": { - "type": "number", - "description": "The number of days for which the certificate should be valid.", - "description_kind": "plain", - "optional": true, - "computed": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_page_rule": { - "version": 0, - "block": { - "attributes": { - "actions": { - "nested_type": { - "attributes": { - "modified_on": { - "type": "string", - "description": "The timestamp of when the override was last modified.", - "description_kind": "plain", - "computed": true - }, - "name": { - "type": "string", - "description": "The type of route.", - "description_kind": "plain", - "optional": true - }, - "value": { - "nested_type": { - "attributes": { - "type": { - "type": "string", - "description": "The response type for the URL redirect.", - "description_kind": "plain", - "optional": true - }, - "url": { - "type": "string", - "description": "The URL to redirect the request to.\nNotes: ${num} refers to the position of '*' in the constraint value.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "list" - }, - "description": "The set of actions to perform if the targets of this rule match the request. Actions can redirect to another URL or override settings, but not both.", - "description_kind": "plain", - "required": true - }, - "pagerule_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "optional": true - }, - "priority": { - "type": "number", - "description": "The priority of the rule, used to define which Page Rule is processed over another. A higher number indicates a higher priority. For example, if you have a catch-all Page Rule (rule A: `/images/*`) but want a more specific Page Rule to take precedence (rule B: `/images/special/*`), specify a higher priority for rule B so it overrides rule A.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "status": { - "type": "string", - "description": "The status of the Page Rule.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "targets": { - "nested_type": { - "attributes": { - "constraint": { - "nested_type": { - "attributes": { - "operator": { - "type": "string", - "description": "The matches operator can use asterisks and pipes as wildcard and 'or' operators.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "value": { - "type": "string", - "description": "The URL pattern to match against the current request. The pattern may contain up to four asterisks ('*') as placeholders.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description": "String constraint.", - "description_kind": "plain", - "required": true - }, - "target": { - "type": "string", - "description": "A target based on the URL of the request.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "list" - }, - "description": "The rule targets to evaluate on each request.", - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_pages_domain": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "domain_name": { - "type": "string", - "description": "Name of the domain.", - "description_kind": "plain", - "optional": true - }, - "project_name": { - "type": "string", - "description": "Name of the project.", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_pages_project": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "build_config": { - "nested_type": { - "attributes": { - "build_caching": { - "type": "bool", - "description": "Enable build caching for the project.", - "description_kind": "plain", - "optional": true - }, - "build_command": { - "type": "string", - "description": "Command used to build project.", - "description_kind": "plain", - "optional": true - }, - "destination_dir": { - "type": "string", - "description": "Output directory of the build.", - "description_kind": "plain", - "optional": true - }, - "root_dir": { - "type": "string", - "description": "Directory to run the command.", - "description_kind": "plain", - "optional": true - }, - "web_analytics_tag": { - "type": "string", - "description": "The classifying tag for analytics.", - "description_kind": "plain", - "optional": true - }, - "web_analytics_token": { - "type": "string", - "description": "The auth token for analytics.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Configs for the project build process.", - "description_kind": "plain", - "optional": true - }, - "canonical_deployment": { - "nested_type": { - "attributes": { - "aliases": { - "type": ["list", "string"], - "description": "A list of alias URLs pointing to this deployment.", - "description_kind": "plain", - "computed": true - }, - "build_config": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "created_on": { - "type": "string", - "description": "When the deployment was created.", - "description_kind": "plain", - "computed": true - }, - "env_vars": { - "type": "string", - "description": "A dict of env variables to build this deploy.", - "description_kind": "plain", - "computed": true - }, - "environment": { - "type": "string", - "description": "Type of deploy.", - "description_kind": "plain", - "computed": true - }, - "id": { - "type": "string", - "description": "Id of the deployment.", - "description_kind": "plain", - "computed": true - }, - "is_skipped": { - "type": "bool", - "description": "If the deployment has been skipped.", - "description_kind": "plain", - "computed": true - }, - "latest_stage": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "modified_on": { - "type": "string", - "description": "When the deployment was last modified.", - "description_kind": "plain", - "computed": true - }, - "project_id": { - "type": "string", - "description": "Id of the project.", - "description_kind": "plain", - "computed": true - }, - "project_name": { - "type": "string", - "description": "Name of the project.", - "description_kind": "plain", - "computed": true - }, - "short_id": { - "type": "string", - "description": "Short Id (8 character) of the deployment.", - "description_kind": "plain", - "computed": true - }, - "source": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "stages": { - "nested_type": { - "attributes": { - "ended_on": { - "type": "string", - "description": "When the stage ended.", - "description_kind": "plain", - "computed": true - }, - "name": { - "type": "string", - "description": "The current build stage.", - "description_kind": "plain", - "optional": true - }, - "started_on": { - "type": "string", - "description": "When the stage started.", - "description_kind": "plain", - "computed": true - }, - "status": { - "type": "string", - "description": "State of the current stage.", - "description_kind": "plain", - "computed": true - } - }, - "nesting_mode": "list" - }, - "description": "List of past stages.", - "description_kind": "plain", - "computed": true - }, - "url": { - "type": "string", - "description": "The live URL to view this deployment.", - "description_kind": "plain", - "computed": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "deployment_configs": { - "nested_type": { - "attributes": { - "preview": { - "nested_type": { - "attributes": { - "ai_bindings": { - "nested_type": { - "attributes": { - "ai_binding": { - "nested_type": { - "attributes": { - "project_id": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "AI binding.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Constellation bindings used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "analytics_engine_datasets": { - "nested_type": { - "attributes": { - "analytics_engine_binding": { - "nested_type": { - "attributes": { - "dataset": { - "type": "string", - "description": "Name of the dataset.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Analytics Engine binding.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Analytics Engine bindings used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "browsers": { - "nested_type": { - "attributes": { - "browser": { - "type": "string", - "description": "Browser binding.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Browser bindings used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "compatibility_date": { - "type": "string", - "description": "Compatibility date used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "compatibility_flags": { - "type": ["list", "string"], - "description": "Compatibility flags used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "d1_databases": { - "nested_type": { - "attributes": { - "d1_binding": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description": "UUID of the D1 database.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "D1 binding.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "D1 databases used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "durable_object_namespaces": { - "nested_type": { - "attributes": { - "do_binding": { - "nested_type": { - "attributes": { - "namespace_id": { - "type": "string", - "description": "ID of the Durabble Object namespace.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Durabble Object binding.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Durabble Object namespaces used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "env_vars": { - "nested_type": { - "attributes": { - "environment_variable": { - "nested_type": { - "attributes": { - "type": { - "type": "string", - "description": "The type of environment variable (plain text or secret)", - "description_kind": "plain", - "optional": true - }, - "value": { - "type": "string", - "description": "Environment variable value.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Environment variable.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Environment variables for build configs.", - "description_kind": "plain", - "optional": true - }, - "hyperdrive_bindings": { - "nested_type": { - "attributes": { - "hyperdrive": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Hyperdrive binding.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Hyperdrive bindings used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "kv_namespaces": { - "nested_type": { - "attributes": { - "kv_binding": { - "nested_type": { - "attributes": { - "namespace_id": { - "type": "string", - "description": "ID of the KV namespace.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "KV binding.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "KV namespaces used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "mtls_certificates": { - "nested_type": { - "attributes": { - "mtls": { - "nested_type": { - "attributes": { - "certificate_id": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "mTLS binding.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "mTLS bindings used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "placement": { - "nested_type": { - "attributes": { - "mode": { - "type": "string", - "description": "Placement mode.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Placement setting used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "queue_producers": { - "nested_type": { - "attributes": { - "queue_producer_binding": { - "nested_type": { - "attributes": { - "name": { - "type": "string", - "description": "Name of the Queue.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Queue Producer binding.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Queue Producer bindings used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "r2_buckets": { - "nested_type": { - "attributes": { - "r2_binding": { - "nested_type": { - "attributes": { - "jurisdiction": { - "type": "string", - "description": "Jurisdiction of the R2 bucket.", - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description": "Name of the R2 bucket.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "R2 binding.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "R2 buckets used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "services": { - "nested_type": { - "attributes": { - "service_binding": { - "nested_type": { - "attributes": { - "entrypoint": { - "type": "string", - "description": "The entrypoint to bind to.", - "description_kind": "plain", - "optional": true - }, - "environment": { - "type": "string", - "description": "The Service environment.", - "description_kind": "plain", - "optional": true - }, - "service": { - "type": "string", - "description": "The Service name.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Service binding.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Services used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "vectorize_bindings": { - "nested_type": { - "attributes": { - "vectorize": { - "nested_type": { - "attributes": { - "index_name": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Vectorize binding.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Vectorize bindings used for Pages Functions.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Configs for preview deploys.", - "description_kind": "plain", - "optional": true - }, - "production": { - "nested_type": { - "attributes": { - "ai_bindings": { - "nested_type": { - "attributes": { - "ai_binding": { - "nested_type": { - "attributes": { - "project_id": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "AI binding.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Constellation bindings used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "analytics_engine_datasets": { - "nested_type": { - "attributes": { - "analytics_engine_binding": { - "nested_type": { - "attributes": { - "dataset": { - "type": "string", - "description": "Name of the dataset.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Analytics Engine binding.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Analytics Engine bindings used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "browsers": { - "nested_type": { - "attributes": { - "browser": { - "type": "string", - "description": "Browser binding.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Browser bindings used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "compatibility_date": { - "type": "string", - "description": "Compatibility date used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "compatibility_flags": { - "type": ["list", "string"], - "description": "Compatibility flags used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "d1_databases": { - "nested_type": { - "attributes": { - "d1_binding": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description": "UUID of the D1 database.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "D1 binding.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "D1 databases used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "durable_object_namespaces": { - "nested_type": { - "attributes": { - "do_binding": { - "nested_type": { - "attributes": { - "namespace_id": { - "type": "string", - "description": "ID of the Durabble Object namespace.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Durabble Object binding.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Durabble Object namespaces used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "env_vars": { - "nested_type": { - "attributes": { - "environment_variable": { - "nested_type": { - "attributes": { - "type": { - "type": "string", - "description": "The type of environment variable (plain text or secret)", - "description_kind": "plain", - "optional": true - }, - "value": { - "type": "string", - "description": "Environment variable value.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Environment variable.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Environment variables for build configs.", - "description_kind": "plain", - "optional": true - }, - "hyperdrive_bindings": { - "nested_type": { - "attributes": { - "hyperdrive": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Hyperdrive binding.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Hyperdrive bindings used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "kv_namespaces": { - "nested_type": { - "attributes": { - "kv_binding": { - "nested_type": { - "attributes": { - "namespace_id": { - "type": "string", - "description": "ID of the KV namespace.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "KV binding.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "KV namespaces used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "mtls_certificates": { - "nested_type": { - "attributes": { - "mtls": { - "nested_type": { - "attributes": { - "certificate_id": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "mTLS binding.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "mTLS bindings used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "placement": { - "nested_type": { - "attributes": { - "mode": { - "type": "string", - "description": "Placement mode.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Placement setting used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "queue_producers": { - "nested_type": { - "attributes": { - "queue_producer_binding": { - "nested_type": { - "attributes": { - "name": { - "type": "string", - "description": "Name of the Queue.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Queue Producer binding.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Queue Producer bindings used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "r2_buckets": { - "nested_type": { - "attributes": { - "r2_binding": { - "nested_type": { - "attributes": { - "jurisdiction": { - "type": "string", - "description": "Jurisdiction of the R2 bucket.", - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description": "Name of the R2 bucket.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "R2 binding.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "R2 buckets used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "services": { - "nested_type": { - "attributes": { - "service_binding": { - "nested_type": { - "attributes": { - "entrypoint": { - "type": "string", - "description": "The entrypoint to bind to.", - "description_kind": "plain", - "optional": true - }, - "environment": { - "type": "string", - "description": "The Service environment.", - "description_kind": "plain", - "optional": true - }, - "service": { - "type": "string", - "description": "The Service name.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Service binding.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Services used for Pages Functions.", - "description_kind": "plain", - "optional": true - }, - "vectorize_bindings": { - "nested_type": { - "attributes": { - "vectorize": { - "nested_type": { - "attributes": { - "index_name": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Vectorize binding.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Vectorize bindings used for Pages Functions.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Configs for production deploys.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Configs for deployments in a project.", - "description_kind": "plain", - "optional": true - }, - "latest_deployment": { - "nested_type": { - "attributes": { - "aliases": { - "type": ["list", "string"], - "description": "A list of alias URLs pointing to this deployment.", - "description_kind": "plain", - "computed": true - }, - "build_config": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "created_on": { - "type": "string", - "description": "When the deployment was created.", - "description_kind": "plain", - "computed": true - }, - "env_vars": { - "type": "string", - "description": "A dict of env variables to build this deploy.", - "description_kind": "plain", - "computed": true - }, - "environment": { - "type": "string", - "description": "Type of deploy.", - "description_kind": "plain", - "computed": true - }, - "id": { - "type": "string", - "description": "Id of the deployment.", - "description_kind": "plain", - "computed": true - }, - "is_skipped": { - "type": "bool", - "description": "If the deployment has been skipped.", - "description_kind": "plain", - "computed": true - }, - "latest_stage": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "modified_on": { - "type": "string", - "description": "When the deployment was last modified.", - "description_kind": "plain", - "computed": true - }, - "project_id": { - "type": "string", - "description": "Id of the project.", - "description_kind": "plain", - "computed": true - }, - "project_name": { - "type": "string", - "description": "Name of the project.", - "description_kind": "plain", - "computed": true - }, - "short_id": { - "type": "string", - "description": "Short Id (8 character) of the deployment.", - "description_kind": "plain", - "computed": true - }, - "source": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "stages": { - "nested_type": { - "attributes": { - "ended_on": { - "type": "string", - "description": "When the stage ended.", - "description_kind": "plain", - "computed": true - }, - "name": { - "type": "string", - "description": "The current build stage.", - "description_kind": "plain", - "optional": true - }, - "started_on": { - "type": "string", - "description": "When the stage started.", - "description_kind": "plain", - "computed": true - }, - "status": { - "type": "string", - "description": "State of the current stage.", - "description_kind": "plain", - "computed": true - } - }, - "nesting_mode": "list" - }, - "description": "List of past stages.", - "description_kind": "plain", - "computed": true - }, - "url": { - "type": "string", - "description": "The live URL to view this deployment.", - "description_kind": "plain", - "computed": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description": "Name of the project.", - "description_kind": "plain", - "optional": true - }, - "production_branch": { - "type": "string", - "description": "Production branch of the project. Used to identify production deployments.", - "description_kind": "plain", - "optional": true - }, - "project_name": { - "type": "string", - "description": "Name of the project.", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_queue": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "queue_id": { - "type": "string", - "description_kind": "plain", - "computed": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_r2_bucket": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Account ID", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "Name of the bucket", - "description_kind": "plain", - "computed": true - }, - "location_hint": { - "type": "string", - "description": "Location of the bucket", - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description": "Name of the bucket", - "description_kind": "plain", - "required": true - }, - "storage_class": { - "type": "string", - "description": "Storage class for newly uploaded objects, unless specified otherwise.", - "description_kind": "plain", - "optional": true, - "computed": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_rate_limit": { - "version": 0, - "block": { - "attributes": { - "id": { - "type": "string", - "description": "The unique identifier of the rate limit.", - "description_kind": "plain", - "optional": true - }, - "zone_identifier": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_record": { - "version": 0, - "block": { - "attributes": { - "comment": { - "type": "string", - "description": "Comments or notes about the DNS record. This field has no effect on DNS responses.", - "description_kind": "plain", - "optional": true - }, - "content": { - "type": "string", - "description": "A valid IPv4 address.", - "description_kind": "plain", - "optional": true - }, - "data": { - "nested_type": { - "attributes": { - "algorithm": { - "type": "number", - "description": "Algorithm.", - "description_kind": "plain", - "optional": true - }, - "altitude": { - "type": "number", - "description": "Altitude of location in meters.", - "description_kind": "plain", - "optional": true - }, - "certificate": { - "type": "string", - "description": "Certificate.", - "description_kind": "plain", - "optional": true - }, - "digest": { - "type": "string", - "description": "Digest.", - "description_kind": "plain", - "optional": true - }, - "digest_type": { - "type": "number", - "description": "Digest Type.", - "description_kind": "plain", - "optional": true - }, - "fingerprint": { - "type": "string", - "description": "fingerprint.", - "description_kind": "plain", - "optional": true - }, - "flags": { - "type": "string", - "description": "Flags for the CAA record.", - "description_kind": "plain", - "optional": true - }, - "key_tag": { - "type": "number", - "description": "Key Tag.", - "description_kind": "plain", - "optional": true - }, - "lat_degrees": { - "type": "number", - "description": "Degrees of latitude.", - "description_kind": "plain", - "optional": true - }, - "lat_direction": { - "type": "string", - "description": "Latitude direction.", - "description_kind": "plain", - "optional": true - }, - "lat_minutes": { - "type": "number", - "description": "Minutes of latitude.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "lat_seconds": { - "type": "number", - "description": "Seconds of latitude.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "long_degrees": { - "type": "number", - "description": "Degrees of longitude.", - "description_kind": "plain", - "optional": true - }, - "long_direction": { - "type": "string", - "description": "Longitude direction.", - "description_kind": "plain", - "optional": true - }, - "long_minutes": { - "type": "number", - "description": "Minutes of longitude.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "long_seconds": { - "type": "number", - "description": "Seconds of longitude.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "matching_type": { - "type": "number", - "description": "Matching Type.", - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description": "A valid hostname. Deprecated in favor of the regular 'name' outside the data map. This data map field represents the remainder of the full 'name' after the service and protocol.", - "description_kind": "plain", - "optional": true - }, - "order": { - "type": "number", - "description": "Order.", - "description_kind": "plain", - "optional": true - }, - "port": { - "type": "number", - "description": "The port of the service.", - "description_kind": "plain", - "optional": true - }, - "precision_horz": { - "type": "number", - "description": "Horizontal precision of location.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "precision_vert": { - "type": "number", - "description": "Vertical precision of location.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "preference": { - "type": "number", - "description": "Preference.", - "description_kind": "plain", - "optional": true - }, - "priority": { - "type": "number", - "description": "priority.", - "description_kind": "plain", - "optional": true - }, - "proto": { - "type": "string", - "description": "A valid protocol, prefixed with an underscore. Deprecated in favor of the regular 'name' outside the data map. This data map field normally represents the second label of that 'name'.", - "description_kind": "plain", - "optional": true - }, - "protocol": { - "type": "number", - "description": "Protocol.", - "description_kind": "plain", - "optional": true - }, - "public_key": { - "type": "string", - "description": "Public Key.", - "description_kind": "plain", - "optional": true - }, - "regex": { - "type": "string", - "description": "Regex.", - "description_kind": "plain", - "optional": true - }, - "replacement": { - "type": "string", - "description": "Replacement.", - "description_kind": "plain", - "optional": true - }, - "selector": { - "type": "number", - "description": "Selector.", - "description_kind": "plain", - "optional": true - }, - "service": { - "type": "string", - "description": "Service.", - "description_kind": "plain", - "optional": true - }, - "size": { - "type": "number", - "description": "Size of location in meters.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "tag": { - "type": "string", - "description": "Name of the property controlled by this record (e.g.: issue, issuewild, iodef).", - "description_kind": "plain", - "optional": true - }, - "target": { - "type": "string", - "description": "target.", - "description_kind": "plain", - "optional": true - }, - "type": { - "type": "number", - "description": "Type.", - "description_kind": "plain", - "optional": true - }, - "usage": { - "type": "number", - "description": "Usage.", - "description_kind": "plain", - "optional": true - }, - "value": { - "type": "string", - "description": "Value of the record. This field's semantics depend on the chosen tag.", - "description_kind": "plain", - "optional": true - }, - "weight": { - "type": "number", - "description": "The record weight.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Components of a CAA record.", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "computed": true - }, - "name": { - "type": "string", - "description": "DNS record name (or @ for the zone apex) in Punycode.", - "description_kind": "plain", - "required": true - }, - "priority": { - "type": "number", - "description": "Required for MX, SRV and URI records; unused by other record types. Records with lower priorities are preferred.", - "description_kind": "plain", - "optional": true - }, - "proxied": { - "type": "bool", - "description": "Whether the record is receiving the performance and security benefits of Cloudflare.", - "description_kind": "plain", - "optional": true - }, - "tags": { - "type": "string", - "description": "Custom tags for the DNS record. This field has no effect on DNS responses.", - "description_kind": "plain", - "optional": true - }, - "ttl": { - "type": "number", - "description": "Time To Live (TTL) of the DNS record in seconds. Setting to 1 means 'automatic'. Value must be between 60 and 86400, with the minimum reduced to 30 for Enterprise zones.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "type": { - "type": "string", - "description": "Record type.", - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_regional_hostname": { - "version": 0, - "block": { - "attributes": { - "hostname": { - "type": "string", - "description": "DNS hostname to be regionalized, must be a subdomain of the zone. Wildcards are supported for one level, e.g `*.example.com`", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "DNS hostname to be regionalized, must be a subdomain of the zone. Wildcards are supported for one level, e.g `*.example.com`", - "description_kind": "plain", - "computed": true - }, - "region_key": { - "type": "string", - "description": "Identifying key for the region", - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_regional_tiered_cache": { - "version": 0, - "block": { - "attributes": { - "id": { - "type": "string", - "description": "ID of the zone setting.", - "description_kind": "plain", - "required": true - }, - "value": { - "type": "string", - "description": "Value of the Regional Tiered Cache zone setting.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_ruleset": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "The Account ID to use for this endpoint. Mutually exclusive with the Zone ID.", - "description_kind": "plain", - "optional": true - }, - "description": { - "type": "string", - "description": "An informative description of the ruleset.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "id": { - "type": "string", - "description": "The unique ID of the ruleset.", - "description_kind": "plain", - "computed": true - }, - "kind": { - "type": "string", - "description": "The kind of the ruleset.", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description": "The human-readable name of the ruleset.", - "description_kind": "plain", - "required": true - }, - "phase": { - "type": "string", - "description": "The phase of the ruleset.", - "description_kind": "plain", - "required": true - }, - "rules": { - "nested_type": { - "attributes": { - "action": { - "type": "string", - "description": "The action to perform when the rule matches.", - "description_kind": "plain", - "optional": true - }, - "action_parameters": { - "nested_type": { - "attributes": { - "response": { - "nested_type": { - "attributes": { - "content": { - "type": "string", - "description": "The content to return.", - "description_kind": "plain", - "required": true - }, - "content_type": { - "type": "string", - "description": "The type of the content to return.", - "description_kind": "plain", - "required": true - }, - "status_code": { - "type": "number", - "description": "The status code to return.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description": "The response to show when the block is applied.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "The parameters configuring the rule's action.", - "description_kind": "plain", - "optional": true - }, - "categories": { - "type": "string", - "description": "The categories of the rule.", - "description_kind": "plain", - "computed": true - }, - "description": { - "type": "string", - "description": "An informative description of the rule.", - "description_kind": "plain", - "computed": true - }, - "enabled": { - "type": "bool", - "description": "Whether the rule should be executed.", - "description_kind": "plain", - "computed": true - }, - "expression": { - "type": "string", - "description": "The expression defining which traffic will match the rule.", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description": "The unique ID of the rule.", - "description_kind": "plain", - "optional": true - }, - "last_updated": { - "type": "string", - "description": "The timestamp of when the rule was last modified.", - "description_kind": "plain", - "computed": true - }, - "logging": { - "nested_type": { - "attributes": { - "enabled": { - "type": "bool", - "description": "Whether to generate a log when the rule matches.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "single" - }, - "description": "An object configuring the rule's logging behavior.", - "description_kind": "plain", - "optional": true - }, - "ref": { - "type": "string", - "description": "The reference of the rule (the rule ID by default).", - "description_kind": "plain", - "optional": true - }, - "version": { - "type": "string", - "description": "The version of the rule.", - "description_kind": "plain", - "computed": true - } - }, - "nesting_mode": "list" - }, - "description": "The list of rules in the ruleset.", - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "The Zone ID to use for this endpoint. Mutually exclusive with the Account ID.", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_spectrum_application": { - "version": 0, - "block": { - "attributes": { - "argo_smart_routing": { - "type": "bool", - "description": "Enables Argo Smart Routing for this application.\nNotes: Only available for TCP applications with traffic_type set to \"direct\".", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "dns": { - "nested_type": { - "attributes": { - "name": { - "type": "string", - "description": "The name of the DNS record associated with the application.", - "description_kind": "plain", - "optional": true - }, - "type": { - "type": "string", - "description": "The type of DNS record associated with the application.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "The name and type of DNS record for the Spectrum application.", - "description_kind": "plain", - "required": true - }, - "edge_ips": { - "nested_type": { - "attributes": { - "connectivity": { - "type": "string", - "description": "The IP versions supported for inbound connections on Spectrum anycast IPs.", - "description_kind": "plain", - "optional": true - }, - "ips": { - "type": "string", - "description": "The array of customer owned IPs we broadcast via anycast for this hostname and application.", - "description_kind": "plain", - "optional": true - }, - "type": { - "type": "string", - "description": "The type of edge IP configuration specified. Dynamically allocated edge IPs use Spectrum anycast IPs in accordance with the connectivity you specify. Only valid with CNAME DNS names.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "The anycast edge IP configuration for the hostname of this application.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "id": { - "type": "string", - "description": "Application identifier.", - "description_kind": "plain", - "computed": true - }, - "ip_firewall": { - "type": "bool", - "description": "Enables IP Access Rules for this application.\nNotes: Only available for TCP applications.", - "description_kind": "plain", - "optional": true - }, - "origin_dns": { - "nested_type": { - "attributes": { - "name": { - "type": "string", - "description": "The name of the DNS record associated with the origin.", - "description_kind": "plain", - "optional": true - }, - "ttl": { - "type": "number", - "description": "The TTL of our resolution of your DNS record in seconds.", - "description_kind": "plain", - "optional": true - }, - "type": { - "type": "string", - "description": "The type of DNS record associated with the origin. \"\" is used to specify a combination of A/AAAA records.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "The name and type of DNS record for the Spectrum application.", - "description_kind": "plain", - "required": true - }, - "origin_port": { - "type": "string", - "description": "The destination port at the origin. Only specified in conjunction with origin_dns. May use an integer to specify a single origin port, for example `1000`, or a string to specify a range of origin ports, for example `\"1000-2000\"`.\nNotes: If specifying a port range, the number of ports in the range must match the number of ports specified in the \"protocol\" field.", - "description_kind": "plain", - "required": true - }, - "protocol": { - "type": "string", - "description": "The port configuration at Cloudflare’s edge. May specify a single port, for example `\"tcp/1000\"`, or a range of ports, for example `\"tcp/1000-2000\"`.", - "description_kind": "plain", - "required": true - }, - "proxy_protocol": { - "type": "string", - "description": "Enables Proxy Protocol to the origin. Refer to [Enable Proxy protocol](https://developers.cloudflare.com/spectrum/getting-started/proxy-protocol/) for implementation details on PROXY Protocol V1, PROXY Protocol V2, and Simple Proxy Protocol.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "tls": { - "type": "string", - "description": "The type of TLS termination associated with the application.", - "description_kind": "plain", - "optional": true - }, - "traffic_type": { - "type": "string", - "description": "Determines how data travels from the edge to your origin. When set to \"direct\", Spectrum will send traffic directly to your origin, and the application's type is derived from the `protocol`. When set to \"http\" or \"https\", Spectrum will apply Cloudflare's HTTP/HTTPS features as it sends traffic to your origin, and the application type matches this property exactly.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "zone": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_static_route": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "route_identifier": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_teams_account": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "settings": { - "nested_type": { - "attributes": { - "activity_log": { - "nested_type": { - "attributes": { - "enabled": { - "type": "bool", - "description": "Enable activity logging.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Activity log settings.", - "description_kind": "plain", - "optional": true - }, - "antivirus": { - "nested_type": { - "attributes": { - "enabled_download_phase": { - "type": "bool", - "description": "Enable anti-virus scanning on downloads.", - "description_kind": "plain", - "optional": true - }, - "enabled_upload_phase": { - "type": "bool", - "description": "Enable anti-virus scanning on uploads.", - "description_kind": "plain", - "optional": true - }, - "fail_closed": { - "type": "bool", - "description": "Block requests for files that cannot be scanned.", - "description_kind": "plain", - "optional": true - }, - "notification_settings": { - "nested_type": { - "attributes": { - "enabled": { - "type": "bool", - "description": "Set notification on", - "description_kind": "plain", - "optional": true - }, - "msg": { - "type": "string", - "description": "Customize the message shown in the notification.", - "description_kind": "plain", - "optional": true - }, - "support_url": { - "type": "string", - "description": "Optional URL to direct users to additional information. If not set, the notification will open a block page.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Configure a message to display on the user's device when an antivirus search is performed.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Anti-virus settings.", - "description_kind": "plain", - "optional": true - }, - "block_page": { - "nested_type": { - "attributes": { - "background_color": { - "type": "string", - "description": "Block page background color in #rrggbb format.", - "description_kind": "plain", - "optional": true - }, - "enabled": { - "type": "bool", - "description": "Enable only cipher suites and TLS versions compliant with FIPS 140-2.", - "description_kind": "plain", - "optional": true - }, - "footer_text": { - "type": "string", - "description": "Block page footer text.", - "description_kind": "plain", - "optional": true - }, - "header_text": { - "type": "string", - "description": "Block page header text.", - "description_kind": "plain", - "optional": true - }, - "logo_path": { - "type": "string", - "description": "Full URL to the logo file.", - "description_kind": "plain", - "optional": true - }, - "mailto_address": { - "type": "string", - "description": "Admin email for users to contact.", - "description_kind": "plain", - "optional": true - }, - "mailto_subject": { - "type": "string", - "description": "Subject line for emails created from block page.", - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description": "Block page title.", - "description_kind": "plain", - "optional": true - }, - "suppress_footer": { - "type": "bool", - "description": "Suppress detailed info at the bottom of the block page.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Block page layout settings.", - "description_kind": "plain", - "optional": true - }, - "body_scanning": { - "nested_type": { - "attributes": { - "inspection_mode": { - "type": "string", - "description": "Set the inspection mode to either `deep` or `shallow`.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "DLP body scanning settings.", - "description_kind": "plain", - "optional": true - }, - "browser_isolation": { - "nested_type": { - "attributes": { - "non_identity_enabled": { - "type": "bool", - "description": "Enable non-identity onramp support for Browser Isolation.", - "description_kind": "plain", - "optional": true - }, - "url_browser_isolation_enabled": { - "type": "bool", - "description": "Enable Clientless Browser Isolation.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Browser isolation settings.", - "description_kind": "plain", - "optional": true - }, - "custom_certificate": { - "nested_type": { - "attributes": { - "binding_status": { - "type": "string", - "description": "Certificate status (internal).", - "description_kind": "plain", - "computed": true - }, - "enabled": { - "type": "bool", - "description": "Enable use of custom certificate authority for signing Gateway traffic.", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "UUID of certificate (ID from MTLS certificate store).", - "description_kind": "plain", - "optional": true - }, - "updated_at": { - "type": "string", - "description_kind": "plain", - "computed": true - } - }, - "nesting_mode": "single" - }, - "description": "Custom certificate settings for BYO-PKI.", - "description_kind": "plain", - "optional": true - }, - "extended_email_matching": { - "nested_type": { - "attributes": { - "enabled": { - "type": "bool", - "description": "Enable matching all variants of user emails (with + or . modifiers) used as criteria in Firewall policies.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Extended e-mail matching settings.", - "description_kind": "plain", - "optional": true - }, - "fips": { - "nested_type": { - "attributes": { - "tls": { - "type": "bool", - "description": "Enable only cipher suites and TLS versions compliant with FIPS 140-2.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "FIPS settings.", - "description_kind": "plain", - "optional": true - }, - "protocol_detection": { - "nested_type": { - "attributes": { - "enabled": { - "type": "bool", - "description": "Enable detecting protocol on initial bytes of client traffic.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Protocol Detection settings.", - "description_kind": "plain", - "optional": true - }, - "tls_decrypt": { - "nested_type": { - "attributes": { - "enabled": { - "type": "bool", - "description": "Enable inspecting encrypted HTTP traffic.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "TLS interception settings.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "account settings.", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_teams_list": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "description": { - "type": "string", - "description": "The description of the list.", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description": "API Resource UUID tag.", - "description_kind": "plain", - "computed": true - }, - "items": { - "nested_type": { - "attributes": { - "created_at": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "value": { - "type": "string", - "description": "The value of the item in a list.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "list" - }, - "description": "The items in the list.", - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description": "The name of the list.", - "description_kind": "plain", - "required": true - }, - "type": { - "type": "string", - "description": "The type of list.", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_teams_location": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "client_default": { - "type": "bool", - "description": "True if the location is the default location.", - "description_kind": "plain", - "optional": true - }, - "ecs_support": { - "type": "bool", - "description": "True if the location needs to resolve EDNS queries.", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "name": { - "type": "string", - "description": "The name of the location.", - "description_kind": "plain", - "required": true - }, - "networks": { - "nested_type": { - "attributes": { - "network": { - "type": "string", - "description": "The IPv4 address or IPv4 CIDR. IPv4 CIDRs are limited to a maximum of /24.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "list" - }, - "description": "A list of network ranges that requests from this location would originate from.", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_teams_proxy_endpoint": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "ips": { - "type": ["list", "string"], - "description": "A list of CIDRs to restrict ingress connections.", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description": "The name of the proxy endpoint.", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_teams_rule": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "action": { - "type": "string", - "description": "The action to preform when the associated traffic, identity, and device posture expressions are either absent or evaluate to `true`.", - "description_kind": "plain", - "required": true - }, - "description": { - "type": "string", - "description": "The description of the rule.", - "description_kind": "plain", - "optional": true - }, - "device_posture": { - "type": "string", - "description": "The wirefilter expression used for device posture check matching.", - "description_kind": "plain", - "optional": true - }, - "enabled": { - "type": "bool", - "description": "True if the rule is enabled.", - "description_kind": "plain", - "optional": true - }, - "filters": { - "type": ["list", "string"], - "description": "The protocol or layer to evaluate the traffic, identity, and device posture expressions.", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description": "The API resource UUID.", - "description_kind": "plain", - "computed": true - }, - "identity": { - "type": "string", - "description": "The wirefilter expression used for identity matching.", - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description": "The name of the rule.", - "description_kind": "plain", - "required": true - }, - "precedence": { - "type": "number", - "description": "Precedence sets the order of your rules. Lower values indicate higher precedence. At each processing phase, applicable rules are evaluated in ascending order of this value.", - "description_kind": "plain", - "optional": true - }, - "rule_settings": { - "nested_type": { - "attributes": { - "add_headers": { - "type": "string", - "description": "Add custom headers to allowed requests, in the form of key-value pairs. Keys are header names, pointing to an array with its header value(s).", - "description_kind": "plain", - "optional": true - }, - "allow_child_bypass": { - "type": "bool", - "description": "Set by parent MSP accounts to enable their children to bypass this rule.", - "description_kind": "plain", - "optional": true - }, - "audit_ssh": { - "nested_type": { - "attributes": { - "command_logging": { - "type": "bool", - "description": "Enable to turn on SSH command logging.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Settings for the Audit SSH action.", - "description_kind": "plain", - "optional": true - }, - "biso_admin_controls": { - "nested_type": { - "attributes": { - "dcp": { - "type": "bool", - "description": "Set to true to enable copy-pasting.", - "description_kind": "plain", - "optional": true - }, - "dd": { - "type": "bool", - "description": "Set to true to enable downloading.", - "description_kind": "plain", - "optional": true - }, - "dk": { - "type": "bool", - "description": "Set to true to enable keyboard usage.", - "description_kind": "plain", - "optional": true - }, - "dp": { - "type": "bool", - "description": "Set to true to enable printing.", - "description_kind": "plain", - "optional": true - }, - "du": { - "type": "bool", - "description": "Set to true to enable uploading.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Configure how browser isolation behaves.", - "description_kind": "plain", - "optional": true - }, - "block_page_enabled": { - "type": "bool", - "description": "Enable the custom block page.", - "description_kind": "plain", - "optional": true - }, - "block_reason": { - "type": "string", - "description": "The text describing why this block occurred, displayed on the custom block page (if enabled).", - "description_kind": "plain", - "optional": true - }, - "bypass_parent_rule": { - "type": "bool", - "description": "Set by children MSP accounts to bypass their parent's rules.", - "description_kind": "plain", - "optional": true - }, - "check_session": { - "nested_type": { - "attributes": { - "duration": { - "type": "string", - "description": "Configure how fresh the session needs to be to be considered valid.", - "description_kind": "plain", - "optional": true - }, - "enforce": { - "type": "bool", - "description": "Set to true to enable session enforcement.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Configure how session check behaves.", - "description_kind": "plain", - "optional": true - }, - "dns_resolvers": { - "nested_type": { - "attributes": { - "ipv4": { - "nested_type": { - "attributes": { - "ip": { - "type": "string", - "description": "IPv4 address of upstream resolver.", - "description_kind": "plain", - "required": true - }, - "port": { - "type": "number", - "description": "A port number to use for upstream resolver. Defaults to 53 if unspecified.", - "description_kind": "plain", - "optional": true - }, - "route_through_private_network": { - "type": "bool", - "description": "Whether to connect to this resolver over a private network. Must be set when vnet_id is set.", - "description_kind": "plain", - "optional": true - }, - "vnet_id": { - "type": "string", - "description": "Optionally specify a virtual network for this resolver. Uses default virtual network id if omitted.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "list" - }, - "description_kind": "plain", - "optional": true - }, - "ipv6": { - "nested_type": { - "attributes": { - "ip": { - "type": "string", - "description": "IPv6 address of upstream resolver.", - "description_kind": "plain", - "required": true - }, - "port": { - "type": "number", - "description": "A port number to use for upstream resolver. Defaults to 53 if unspecified.", - "description_kind": "plain", - "optional": true - }, - "route_through_private_network": { - "type": "bool", - "description": "Whether to connect to this resolver over a private network. Must be set when vnet_id is set.", - "description_kind": "plain", - "optional": true - }, - "vnet_id": { - "type": "string", - "description": "Optionally specify a virtual network for this resolver. Uses default virtual network id if omitted.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "list" - }, - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Add your own custom resolvers to route queries that match the resolver policy. Cannot be used when resolve_dns_through_cloudflare is set. DNS queries will route to the address closest to their origin. Only valid when a rule's action is set to 'resolve'.", - "description_kind": "plain", - "optional": true - }, - "egress": { - "nested_type": { - "attributes": { - "ipv4": { - "type": "string", - "description": "The IPv4 address to be used for egress.", - "description_kind": "plain", - "optional": true - }, - "ipv4_fallback": { - "type": "string", - "description": "The fallback IPv4 address to be used for egress in the event of an error egressing with the primary IPv4. Can be '0.0.0.0' to indicate local egress via WARP IPs.", - "description_kind": "plain", - "optional": true - }, - "ipv6": { - "type": "string", - "description": "The IPv6 range to be used for egress.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Configure how Gateway Proxy traffic egresses. You can enable this setting for rules with Egress actions and filters, or omit it to indicate local egress via WARP IPs.", - "description_kind": "plain", - "optional": true - }, - "insecure_disable_dnssec_validation": { - "type": "bool", - "description": "INSECURE - disable DNSSEC validation (for Allow actions).", - "description_kind": "plain", - "optional": true - }, - "ip_categories": { - "type": "bool", - "description": "Set to true to enable IPs in DNS resolver category blocks. By default categories only block based on domain names.", - "description_kind": "plain", - "optional": true - }, - "ip_indicator_feeds": { - "type": "bool", - "description": "Set to true to include IPs in DNS resolver indicator feed blocks. By default indicator feeds only block based on domain names.", - "description_kind": "plain", - "optional": true - }, - "l4override": { - "nested_type": { - "attributes": { - "ip": { - "type": "string", - "description": "IPv4 or IPv6 address.", - "description_kind": "plain", - "optional": true - }, - "port": { - "type": "number", - "description": "A port number to use for TCP/UDP overrides.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Send matching traffic to the supplied destination IP address and port.", - "description_kind": "plain", - "optional": true - }, - "notification_settings": { - "nested_type": { - "attributes": { - "enabled": { - "type": "bool", - "description": "Set notification on", - "description_kind": "plain", - "optional": true - }, - "msg": { - "type": "string", - "description": "Customize the message shown in the notification.", - "description_kind": "plain", - "optional": true - }, - "support_url": { - "type": "string", - "description": "Optional URL to direct users to additional information. If not set, the notification will open a block page.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Configure a notification to display on the user's device when this rule is matched.", - "description_kind": "plain", - "optional": true - }, - "override_host": { - "type": "string", - "description": "Override matching DNS queries with a hostname.", - "description_kind": "plain", - "optional": true - }, - "override_ips": { - "type": ["list", "string"], - "description": "Override matching DNS queries with an IP or set of IPs.", - "description_kind": "plain", - "optional": true - }, - "payload_log": { - "nested_type": { - "attributes": { - "enabled": { - "type": "bool", - "description": "Set to true to enable DLP payload logging for this rule.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Configure DLP payload logging.", - "description_kind": "plain", - "optional": true - }, - "resolve_dns_through_cloudflare": { - "type": "bool", - "description": "Enable to send queries that match the policy to Cloudflare's default 1.1.1.1 DNS resolver. Cannot be set when dns_resolvers are specified. Only valid when a rule's action is set to 'resolve'.", - "description_kind": "plain", - "optional": true - }, - "untrusted_cert": { - "nested_type": { - "attributes": { - "action": { - "type": "string", - "description": "The action performed when an untrusted certificate is seen. The default action is an error with HTTP code 526.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Configure behavior when an upstream cert is invalid or an SSL error occurs.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Additional settings that modify the rule's action.", - "description_kind": "plain", - "optional": true - }, - "schedule": { - "nested_type": { - "attributes": { - "fri": { - "type": "string", - "description": "The time intervals when the rule will be active on Fridays, in increasing order from 00:00-24:00. If this parameter is omitted, the rule will be deactivated on Fridays.", - "description_kind": "plain", - "optional": true - }, - "mon": { - "type": "string", - "description": "The time intervals when the rule will be active on Mondays, in increasing order from 00:00-24:00. If this parameter is omitted, the rule will be deactivated on Mondays.", - "description_kind": "plain", - "optional": true - }, - "sat": { - "type": "string", - "description": "The time intervals when the rule will be active on Saturdays, in increasing order from 00:00-24:00. If this parameter is omitted, the rule will be deactivated on Saturdays.", - "description_kind": "plain", - "optional": true - }, - "sun": { - "type": "string", - "description": "The time intervals when the rule will be active on Sundays, in increasing order from 00:00-24:00. If this parameter is omitted, the rule will be deactivated on Sundays.", - "description_kind": "plain", - "optional": true - }, - "thu": { - "type": "string", - "description": "The time intervals when the rule will be active on Thursdays, in increasing order from 00:00-24:00. If this parameter is omitted, the rule will be deactivated on Thursdays.", - "description_kind": "plain", - "optional": true - }, - "time_zone": { - "type": "string", - "description": "The time zone the rule will be evaluated against. If a [valid time zone city name](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) is provided, Gateway will always use the current time at that time zone. If this parameter is omitted, then Gateway will use the time zone inferred from the user's source IP to evaluate the rule. If Gateway cannot determine the time zone from the IP, we will fall back to the time zone of the user's connected data center.", - "description_kind": "plain", - "optional": true - }, - "tue": { - "type": "string", - "description": "The time intervals when the rule will be active on Tuesdays, in increasing order from 00:00-24:00. If this parameter is omitted, the rule will be deactivated on Tuesdays.", - "description_kind": "plain", - "optional": true - }, - "wed": { - "type": "string", - "description": "The time intervals when the rule will be active on Wednesdays, in increasing order from 00:00-24:00. If this parameter is omitted, the rule will be deactivated on Wednesdays.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "The schedule for activating DNS policies. This does not apply to HTTP or network policies.", - "description_kind": "plain", - "optional": true - }, - "traffic": { - "type": "string", - "description": "The wirefilter expression used for traffic matching.", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_tiered_cache": { - "version": 0, - "block": { - "attributes": { - "id": { - "type": "string", - "description": "The identifier of the caching setting", - "description_kind": "plain", - "required": true - }, - "value": { - "type": "string", - "description": "Enable or disable the Smart Tiered Cache", - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_total_tls": { - "version": 0, - "block": { - "attributes": { - "certificate_authority": { - "type": "string", - "description": "The Certificate Authority that Total TLS certificates will be issued through.", - "description_kind": "plain", - "optional": true - }, - "enabled": { - "type": "bool", - "description": "If enabled, Total TLS will order a hostname specific TLS certificate for any proxied A, AAAA, or CNAME record in your zone.", - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_tunnel": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Cloudflare account ID", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "UUID of the tunnel.", - "description_kind": "plain", - "computed": true - }, - "name": { - "type": "string", - "description": "A user-friendly name for a tunnel.", - "description_kind": "plain", - "required": true - }, - "tunnel_secret": { - "type": "string", - "description": "Sets the password required to run a locally-managed tunnel. Must be at least 32 bytes and encoded as a base64 string.", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_tunnel_config": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Cloudflare account ID", - "description_kind": "plain", - "required": true - }, - "config": { - "nested_type": { - "attributes": { - "ingress": { - "nested_type": { - "attributes": { - "hostname": { - "type": "string", - "description": "Public hostname for this service.", - "description_kind": "plain", - "required": true - }, - "origin_request": { - "nested_type": { - "attributes": { - "access": { - "nested_type": { - "attributes": { - "aud_tag": { - "type": ["list", "string"], - "description": "Access applications that are allowed to reach this hostname for this Tunnel. Audience tags can be identified in the dashboard or via the List Access policies API.", - "description_kind": "plain", - "required": true - }, - "required": { - "type": "bool", - "description": "Deny traffic that has not fulfilled Access authorization.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "team_name": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - } - }, - "nesting_mode": "single" - }, - "description": "For all L7 requests to this hostname, cloudflared will validate each request's Cf-Access-Jwt-Assertion request header.", - "description_kind": "plain", - "optional": true - }, - "ca_pool": { - "type": "string", - "description": "Path to the certificate authority (CA) for the certificate of your origin. This option should be used only if your certificate is not signed by Cloudflare.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "connect_timeout": { - "type": "number", - "description": "Timeout for establishing a new TCP connection to your origin server. This excludes the time taken to establish TLS, which is controlled by tlsTimeout.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "disable_chunked_encoding": { - "type": "bool", - "description": "Disables chunked transfer encoding. Useful if you are running a WSGI server.", - "description_kind": "plain", - "optional": true - }, - "http2_origin": { - "type": "bool", - "description": "Attempt to connect to origin using HTTP2. Origin must be configured as https.", - "description_kind": "plain", - "optional": true - }, - "http_host_header": { - "type": "string", - "description": "Sets the HTTP Host header on requests sent to the local service.", - "description_kind": "plain", - "optional": true - }, - "keep_alive_connections": { - "type": "number", - "description": "Maximum number of idle keepalive connections between Tunnel and your origin. This does not restrict the total number of concurrent connections.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "keep_alive_timeout": { - "type": "number", - "description": "Timeout after which an idle keepalive connection can be discarded.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "no_happy_eyeballs": { - "type": "bool", - "description": "Disable the “happy eyeballs” algorithm for IPv4/IPv6 fallback if your local network has misconfigured one of the protocols.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "no_tls_verify": { - "type": "bool", - "description": "Disables TLS verification of the certificate presented by your origin. Will allow any certificate from the origin to be accepted.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "origin_server_name": { - "type": "string", - "description": "Hostname that cloudflared should expect from your origin server certificate.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "proxy_type": { - "type": "string", - "description": "cloudflared starts a proxy server to translate HTTP traffic into TCP when proxying, for example, SSH or RDP. This configures what type of proxy will be started. Valid options are: \"\" for the regular proxy and \"socks\" for a SOCKS5 proxy.\n", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "tcp_keep_alive": { - "type": "number", - "description": "The timeout after which a TCP keepalive packet is sent on a connection between Tunnel and the origin server.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "tls_timeout": { - "type": "number", - "description": "Timeout for completing a TLS handshake to your origin server, if you have chosen to connect Tunnel to an HTTPS server.", - "description_kind": "plain", - "optional": true, - "computed": true - } - }, - "nesting_mode": "single" - }, - "description": "Configuration parameters for the public hostname specific connection settings between cloudflared and origin server.", - "description_kind": "plain", - "optional": true - }, - "path": { - "type": "string", - "description": "Requests with this path route to this public hostname.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "service": { - "type": "string", - "description": "Protocol and address of destination server. Supported protocols: http://, https://, unix://, tcp://, ssh://, rdp://, unix+tls://, smb://. Alternatively can return a HTTP status code http_status:[code] e.g. 'http_status:404'.\n", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "list" - }, - "description": "List of public hostname definitions", - "description_kind": "plain", - "optional": true - }, - "origin_request": { - "nested_type": { - "attributes": { - "access": { - "nested_type": { - "attributes": { - "aud_tag": { - "type": ["list", "string"], - "description": "Access applications that are allowed to reach this hostname for this Tunnel. Audience tags can be identified in the dashboard or via the List Access policies API.", - "description_kind": "plain", - "required": true - }, - "required": { - "type": "bool", - "description": "Deny traffic that has not fulfilled Access authorization.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "team_name": { - "type": "string", - "description_kind": "plain", - "optional": true, - "computed": true - } - }, - "nesting_mode": "single" - }, - "description": "For all L7 requests to this hostname, cloudflared will validate each request's Cf-Access-Jwt-Assertion request header.", - "description_kind": "plain", - "optional": true - }, - "ca_pool": { - "type": "string", - "description": "Path to the certificate authority (CA) for the certificate of your origin. This option should be used only if your certificate is not signed by Cloudflare.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "connect_timeout": { - "type": "number", - "description": "Timeout for establishing a new TCP connection to your origin server. This excludes the time taken to establish TLS, which is controlled by tlsTimeout.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "disable_chunked_encoding": { - "type": "bool", - "description": "Disables chunked transfer encoding. Useful if you are running a WSGI server.", - "description_kind": "plain", - "optional": true - }, - "http2_origin": { - "type": "bool", - "description": "Attempt to connect to origin using HTTP2. Origin must be configured as https.", - "description_kind": "plain", - "optional": true - }, - "http_host_header": { - "type": "string", - "description": "Sets the HTTP Host header on requests sent to the local service.", - "description_kind": "plain", - "optional": true - }, - "keep_alive_connections": { - "type": "number", - "description": "Maximum number of idle keepalive connections between Tunnel and your origin. This does not restrict the total number of concurrent connections.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "keep_alive_timeout": { - "type": "number", - "description": "Timeout after which an idle keepalive connection can be discarded.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "no_happy_eyeballs": { - "type": "bool", - "description": "Disable the “happy eyeballs” algorithm for IPv4/IPv6 fallback if your local network has misconfigured one of the protocols.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "no_tls_verify": { - "type": "bool", - "description": "Disables TLS verification of the certificate presented by your origin. Will allow any certificate from the origin to be accepted.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "origin_server_name": { - "type": "string", - "description": "Hostname that cloudflared should expect from your origin server certificate.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "proxy_type": { - "type": "string", - "description": "cloudflared starts a proxy server to translate HTTP traffic into TCP when proxying, for example, SSH or RDP. This configures what type of proxy will be started. Valid options are: \"\" for the regular proxy and \"socks\" for a SOCKS5 proxy.\n", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "tcp_keep_alive": { - "type": "number", - "description": "The timeout after which a TCP keepalive packet is sent on a connection between Tunnel and the origin server.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "tls_timeout": { - "type": "number", - "description": "Timeout for completing a TLS handshake to your origin server, if you have chosen to connect Tunnel to an HTTPS server.", - "description_kind": "plain", - "optional": true, - "computed": true - } - }, - "nesting_mode": "single" - }, - "description": "Configuration parameters for the public hostname specific connection settings between cloudflared and origin server.", - "description_kind": "plain", - "optional": true - }, - "warp_routing": { - "nested_type": { - "attributes": { - "enabled": { - "type": "bool", - "description_kind": "plain", - "optional": true, - "computed": true - } - }, - "nesting_mode": "single" - }, - "description": "Enable private network access from WARP users to private network routes", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "The tunnel configuration and ingress rules.", - "description_kind": "plain", - "optional": true - }, - "tunnel_id": { - "type": "string", - "description": "UUID of the tunnel.", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_tunnel_route": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Cloudflare account ID", - "description_kind": "plain", - "required": true - }, - "comment": { - "type": "string", - "description": "Optional remark describing the route.", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description": "UUID of the route.", - "description_kind": "plain", - "computed": true - }, - "network": { - "type": "string", - "description": "The private IPv4 or IPv6 range connected by the route, in CIDR notation.", - "description_kind": "plain", - "required": true - }, - "virtual_network_id": { - "type": "string", - "description": "UUID of the virtual network.", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_tunnel_virtual_network": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Cloudflare account ID", - "description_kind": "plain", - "required": true - }, - "comment": { - "type": "string", - "description": "Optional remark describing the virtual network.", - "description_kind": "plain", - "optional": true - }, - "is_default": { - "type": "bool", - "description": "If `true`, this virtual network is the default for the account.", - "description_kind": "plain", - "optional": true - }, - "name": { - "type": "string", - "description": "A user-friendly name for the virtual network.", - "description_kind": "plain", - "required": true - }, - "virtual_network_id": { - "type": "string", - "description": "UUID of the virtual network.", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_turnstile_widget": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "bot_fight_mode": { - "type": "bool", - "description": "If bot_fight_mode is set to `true`, Cloudflare issues computationally\nexpensive challenges in response to malicious bots (ENT only).\n", - "description_kind": "plain", - "optional": true - }, - "clearance_level": { - "type": "string", - "description": "If Turnstile is embedded on a Cloudflare site and the widget should grant challenge clearance,\nthis setting can determine the clearance level to be set\n", - "description_kind": "plain", - "optional": true - }, - "domains": { - "type": ["list", "string"], - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "Widget item identifier tag.", - "description_kind": "plain", - "computed": true - }, - "mode": { - "type": "string", - "description": "Widget Mode", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description": "Human readable widget name. Not unique. Cloudflare suggests that you\nset this to a meaningful string to make it easier to identify your\nwidget, and where it is used.\n", - "description_kind": "plain", - "required": true - }, - "offlabel": { - "type": "bool", - "description": "Do not show any Cloudflare branding on the widget (ENT only).\n", - "description_kind": "plain", - "optional": true - }, - "region": { - "type": "string", - "description": "Region where this widget can be used.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "sitekey": { - "type": "string", - "description": "Widget item identifier tag.", - "description_kind": "plain", - "computed": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_url_normalization_settings": { - "version": 0, - "block": { - "attributes": { - "scope": { - "type": "string", - "description": "The scope of the URL normalization.", - "description_kind": "plain", - "optional": true - }, - "type": { - "type": "string", - "description": "The type of URL normalization performed by Cloudflare.", - "description_kind": "plain", - "optional": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_user_agent_blocking_rule": { - "version": 0, - "block": { - "attributes": { - "id": { - "type": "string", - "description": "The unique identifier of the User Agent Blocking rule.", - "description_kind": "plain", - "optional": true - }, - "zone_identifier": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_waiting_room": { - "version": 0, - "block": { - "attributes": { - "additional_routes": { - "nested_type": { - "attributes": { - "host": { - "type": "string", - "description": "The hostname to which this waiting room will be applied (no wildcards). The hostname must be the primary domain, subdomain, or custom hostname (if using SSL for SaaS) of this zone. Please do not include the scheme (http:// or https://).", - "description_kind": "plain", - "optional": true - }, - "path": { - "type": "string", - "description": "Sets the path within the host to enable the waiting room on. The waiting room will be enabled for all subpaths as well. If there are two waiting rooms on the same subpath, the waiting room for the most specific path will be chosen. Wildcards and query parameters are not supported.", - "description_kind": "plain", - "optional": true, - "computed": true - } - }, - "nesting_mode": "list" - }, - "description": "Only available for the Waiting Room Advanced subscription. Additional hostname and path combinations to which this waiting room will be applied. There is an implied wildcard at the end of the path. The hostname and path combination must be unique to this and all other waiting rooms.", - "description_kind": "plain", - "optional": true - }, - "cookie_attributes": { - "nested_type": { - "attributes": { - "samesite": { - "type": "string", - "description": "Configures the SameSite attribute on the waiting room cookie. Value `auto` will be translated to `lax` or `none` depending if **Always Use HTTPS** is enabled. Note that when using value `none`, the secure attribute cannot be set to `never`.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "secure": { - "type": "string", - "description": "Configures the Secure attribute on the waiting room cookie. Value `always` indicates that the Secure attribute will be set in the Set-Cookie header, `never` indicates that the Secure attribute will not be set, and `auto` will set the Secure attribute depending if **Always Use HTTPS** is enabled.", - "description_kind": "plain", - "optional": true, - "computed": true - } - }, - "nesting_mode": "single" - }, - "description": "Configures cookie attributes for the waiting room cookie. This encrypted cookie stores a user's status in the waiting room, such as queue position.", - "description_kind": "plain", - "optional": true - }, - "cookie_suffix": { - "type": "string", - "description": "Appends a '_' + a custom suffix to the end of Cloudflare Waiting Room's cookie name(__cf_waitingroom). If `cookie_suffix` is \"abcd\", the cookie name will be `__cf_waitingroom_abcd`. This field is required if using `additional_routes`.", - "description_kind": "plain", - "optional": true - }, - "custom_page_html": { - "type": "string", - "description": "Only available for the Waiting Room Advanced subscription. This is a template html file that will be rendered at the edge. If no custom_page_html is provided, the default waiting room will be used. The template is based on mustache ( https://mustache.github.io/ ). There are several variables that are evaluated by the Cloudflare edge:\n1. {{`waitTimeKnown`}} Acts like a boolean value that indicates the behavior to take when wait time is not available, for instance when queue_all is **true**.\n2. {{`waitTimeFormatted`}} Estimated wait time for the user. For example, five minutes. Alternatively, you can use:\n3. {{`waitTime`}} Number of minutes of estimated wait for a user.\n4. {{`waitTimeHours`}} Number of hours of estimated wait for a user (`Math.floor(waitTime/60)`).\n5. {{`waitTimeHourMinutes`}} Number of minutes above the `waitTimeHours` value (`waitTime%60`).\n6. {{`queueIsFull`}} Changes to **true** when no more people can be added to the queue.\n\nTo view the full list of variables, look at the `cfWaitingRoom` object described under the `json_response_enabled` property in other Waiting Room API calls.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "default_template_language": { - "type": "string", - "description": "The language of the default page template. If no default_template_language is provided, then `en-US` (English) will be used.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "description": { - "type": "string", - "description": "A note that you can use to add more details about the waiting room.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "disable_session_renewal": { - "type": "bool", - "description": "Only available for the Waiting Room Advanced subscription. Disables automatic renewal of session cookies. If `true`, an accepted user will have session_duration minutes to browse the site. After that, they will have to go through the waiting room again. If `false`, a user's session cookie will be automatically renewed on every request.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "host": { - "type": "string", - "description": "The host name to which the waiting room will be applied (no wildcards). Please do not include the scheme (http:// or https://). The host and path combination must be unique.", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "json_response_enabled": { - "type": "bool", - "description": "Only available for the Waiting Room Advanced subscription. If `true`, requests to the waiting room with the header `Accept: application/json` will receive a JSON response object with information on the user's status in the waiting room as opposed to the configured static HTML page. This JSON response object has one property `cfWaitingRoom` which is an object containing the following fields:\n1. `inWaitingRoom`: Boolean indicating if the user is in the waiting room (always **true**).\n2. `waitTimeKnown`: Boolean indicating if the current estimated wait times are accurate. If **false**, they are not available.\n3. `waitTime`: Valid only when `waitTimeKnown` is **true**. Integer indicating the current estimated time in minutes the user will wait in the waiting room. When `queueingMethod` is **random**, this is set to `waitTime50Percentile`.\n4. `waitTime25Percentile`: Valid only when `queueingMethod` is **random** and `waitTimeKnown` is **true**. Integer indicating the current estimated maximum wait time for the 25% of users that gain entry the fastest (25th percentile).\n5. `waitTime50Percentile`: Valid only when `queueingMethod` is **random** and `waitTimeKnown` is **true**. Integer indicating the current estimated maximum wait time for the 50% of users that gain entry the fastest (50th percentile). In other words, half of the queued users are expected to let into the origin website before `waitTime50Percentile` and half are expected to be let in after it.\n6. `waitTime75Percentile`: Valid only when `queueingMethod` is **random** and `waitTimeKnown` is **true**. Integer indicating the current estimated maximum wait time for the 75% of users that gain entry the fastest (75th percentile).\n7. `waitTimeFormatted`: String displaying the `waitTime` formatted in English for users. If `waitTimeKnown` is **false**, `waitTimeFormatted` will display **unavailable**.\n8. `queueIsFull`: Boolean indicating if the waiting room's queue is currently full and not accepting new users at the moment.\n9. `queueAll`: Boolean indicating if all users will be queued in the waiting room and no one will be let into the origin website.\n10. `lastUpdated`: String displaying the timestamp as an ISO 8601 string of the user's last attempt to leave the waiting room and be let into the origin website. The user is able to make another attempt after `refreshIntervalSeconds` past this time. If the user makes a request too soon, it will be ignored and `lastUpdated` will not change.\n11. `refreshIntervalSeconds`: Integer indicating the number of seconds after `lastUpdated` until the user is able to make another attempt to leave the waiting room and be let into the origin website. When the `queueingMethod` is `reject`, there is no specified refresh time — it will always be **zero**.\n12. `queueingMethod`: The queueing method currently used by the waiting room. It is either **fifo**, **random**, **passthrough**, or **reject**.\n13. `isFIFOQueue`: Boolean indicating if the waiting room uses a FIFO (First-In-First-Out) queue.\n14. `isRandomQueue`: Boolean indicating if the waiting room uses a Random queue where users gain access randomly.\n15. `isPassthroughQueue`: Boolean indicating if the waiting room uses a passthrough queue. Keep in mind that when passthrough is enabled, this JSON response will only exist when `queueAll` is **true** or `isEventPrequeueing` is **true** because in all other cases requests will go directly to the origin.\n16. `isRejectQueue`: Boolean indicating if the waiting room uses a reject queue.\n17. `isEventActive`: Boolean indicating if an event is currently occurring. Events are able to change a waiting room's behavior during a specified period of time. For additional information, look at the event properties `prequeue_start_time`, `event_start_time`, and `event_end_time` in the documentation for creating waiting room events. Events are considered active between these start and end times, as well as during the prequeueing period if it exists.\n18. `isEventPrequeueing`: Valid only when `isEventActive` is **true**. Boolean indicating if an event is currently prequeueing users before it starts.\n19. `timeUntilEventStart`: Valid only when `isEventPrequeueing` is **true**. Integer indicating the number of minutes until the event starts.\n20. `timeUntilEventStartFormatted`: String displaying the `timeUntilEventStart` formatted in English for users. If `isEventPrequeueing` is **false**, `timeUntilEventStartFormatted` will display **unavailable**.\n21. `timeUntilEventEnd`: Valid only when `isEventActive` is **true**. Integer indicating the number of minutes until the event ends.\n22. `timeUntilEventEndFormatted`: String displaying the `timeUntilEventEnd` formatted in English for users. If `isEventActive` is **false**, `timeUntilEventEndFormatted` will display **unavailable**.\n23. `shuffleAtEventStart`: Valid only when `isEventActive` is **true**. Boolean indicating if the users in the prequeue are shuffled randomly when the event starts.\n\nAn example cURL to a waiting room could be:\n\n\tcurl -X GET \"https://example.com/waitingroom\" \\n\t\t-H \"Accept: application/json\"\n\nIf `json_response_enabled` is **true** and the request hits the waiting room, an example JSON response when `queueingMethod` is **fifo** and no event is active could be:\n\n\t{\n\t\t\"cfWaitingRoom\": {\n\t\t\t\"inWaitingRoom\": true,\n\t\t\t\"waitTimeKnown\": true,\n\t\t\t\"waitTime\": 10,\n\t\t\t\"waitTime25Percentile\": 0,\n\t\t\t\"waitTime50Percentile\": 0,\n\t\t\t\"waitTime75Percentile\": 0,\n\t\t\t\"waitTimeFormatted\": \"10 minutes\",\n\t\t\t\"queueIsFull\": false,\n\t\t\t\"queueAll\": false,\n\t\t\t\"lastUpdated\": \"2020-08-03T23:46:00.000Z\",\n\t\t\t\"refreshIntervalSeconds\": 20,\n\t\t\t\"queueingMethod\": \"fifo\",\n\t\t\t\"isFIFOQueue\": true,\n\t\t\t\"isRandomQueue\": false,\n\t\t\t\"isPassthroughQueue\": false,\n\t\t\t\"isRejectQueue\": false,\n\t\t\t\"isEventActive\": false,\n\t\t\t\"isEventPrequeueing\": false,\n\t\t\t\"timeUntilEventStart\": 0,\n\t\t\t\"timeUntilEventStartFormatted\": \"unavailable\",\n\t\t\t\"timeUntilEventEnd\": 0,\n\t\t\t\"timeUntilEventEndFormatted\": \"unavailable\",\n\t\t\t\"shuffleAtEventStart\": false\n\t\t}\n\t}\n\nIf `json_response_enabled` is **true** and the request hits the waiting room, an example JSON response when `queueingMethod` is **random** and an event is active could be:\n\n\t{\n\t\t\"cfWaitingRoom\": {\n\t\t\t\"inWaitingRoom\": true,\n\t\t\t\"waitTimeKnown\": true,\n\t\t\t\"waitTime\": 10,\n\t\t\t\"waitTime25Percentile\": 5,\n\t\t\t\"waitTime50Percentile\": 10,\n\t\t\t\"waitTime75Percentile\": 15,\n\t\t\t\"waitTimeFormatted\": \"5 minutes to 15 minutes\",\n\t\t\t\"queueIsFull\": false,\n\t\t\t\"queueAll\": false,\n\t\t\t\"lastUpdated\": \"2020-08-03T23:46:00.000Z\",\n\t\t\t\"refreshIntervalSeconds\": 20,\n\t\t\t\"queueingMethod\": \"random\",\n\t\t\t\"isFIFOQueue\": false,\n\t\t\t\"isRandomQueue\": true,\n\t\t\t\"isPassthroughQueue\": false,\n\t\t\t\"isRejectQueue\": false,\n\t\t\t\"isEventActive\": true,\n\t\t\t\"isEventPrequeueing\": false,\n\t\t\t\"timeUntilEventStart\": 0,\n\t\t\t\"timeUntilEventStartFormatted\": \"unavailable\",\n\t\t\t\"timeUntilEventEnd\": 15,\n\t\t\t\"timeUntilEventEndFormatted\": \"15 minutes\",\n\t\t\t\"shuffleAtEventStart\": true\n\t\t}\n\t}.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "name": { - "type": "string", - "description": "A unique name to identify the waiting room. Only alphanumeric characters, hyphens and underscores are allowed.", - "description_kind": "plain", - "required": true - }, - "new_users_per_minute": { - "type": "number", - "description": "Sets the number of new users that will be let into the route every minute. This value is used as baseline for the number of users that are let in per minute. So it is possible that there is a little more or little less traffic coming to the route based on the traffic patterns at that time around the world.", - "description_kind": "plain", - "required": true - }, - "path": { - "type": "string", - "description": "Sets the path within the host to enable the waiting room on. The waiting room will be enabled for all subpaths as well. If there are two waiting rooms on the same subpath, the waiting room for the most specific path will be chosen. Wildcards and query parameters are not supported.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "queue_all": { - "type": "bool", - "description": "If queue_all is `true`, all the traffic that is coming to a route will be sent to the waiting room. No new traffic can get to the route once this field is set and estimated time will become unavailable.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "queueing_method": { - "type": "string", - "description": "Sets the queueing method used by the waiting room. Changing this parameter from the **default** queueing method is only available for the Waiting Room Advanced subscription. Regardless of the queueing method, if `queue_all` is enabled or an event is prequeueing, users in the waiting room will not be accepted to the origin. These users will always see a waiting room page that refreshes automatically. The valid queueing methods are:\n1. `fifo` **(default)**: First-In-First-Out queue where customers gain access in the order they arrived.\n2. `random`: Random queue where customers gain access randomly, regardless of arrival time.\n3. `passthrough`: Users will pass directly through the waiting room and into the origin website. As a result, any configured limits will not be respected while this is enabled. This method can be used as an alternative to disabling a waiting room (with `suspended`) so that analytics are still reported. This can be used if you wish to allow all traffic normally, but want to restrict traffic during a waiting room event, or vice versa.\n4. `reject`: Users will be immediately rejected from the waiting room. As a result, no users will reach the origin website while this is enabled. This can be used if you wish to reject all traffic while performing maintenance, block traffic during a specified period of time (an event), or block traffic while events are not occurring. Consider a waiting room used for vaccine distribution that only allows traffic during sign-up events, and otherwise blocks all traffic. For this case, the waiting room uses `reject`, and its events override this with `fifo`, `random`, or `passthrough`. When this queueing method is enabled and neither `queueAll` is enabled nor an event is prequeueing, the waiting room page **will not refresh automatically**.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "queueing_status_code": { - "type": "number", - "description": "HTTP status code returned to a user while in the queue.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "session_duration": { - "type": "number", - "description": "Lifetime of a cookie (in minutes) set by Cloudflare for users who get access to the route. If a user is not seen by Cloudflare again in that time period, they will be treated as a new user that visits the route.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "suspended": { - "type": "bool", - "description": "Suspends or allows traffic going to the waiting room. If set to `true`, the traffic will not go to the waiting room.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "total_active_users": { - "type": "number", - "description": "Sets the total number of active user sessions on the route at a point in time. A route is a combination of host and path on which a waiting room is available. This value is used as a baseline for the total number of active user sessions on the route. It is possible to have a situation where there are more or less active users sessions on the route based on the traffic patterns at that time around the world.", - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_waiting_room_event": { - "version": 0, - "block": { - "attributes": { - "custom_page_html": { - "type": "string", - "description": "If set, the event will override the waiting room's `custom_page_html` property while it is active. If null, the event will inherit it.", - "description_kind": "plain", - "optional": true - }, - "description": { - "type": "string", - "description": "A note that you can use to add more details about the event.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "disable_session_renewal": { - "type": "bool", - "description": "If set, the event will override the waiting room's `disable_session_renewal` property while it is active. If null, the event will inherit it.", - "description_kind": "plain", - "optional": true - }, - "event_end_time": { - "type": "string", - "description": "An ISO 8601 timestamp that marks the end of the event.", - "description_kind": "plain", - "required": true - }, - "event_start_time": { - "type": "string", - "description": "An ISO 8601 timestamp that marks the start of the event. At this time, queued users will be processed with the event's configuration. The start time must be at least one minute before `event_end_time`.", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description_kind": "plain", - "computed": true - }, - "name": { - "type": "string", - "description": "A unique name to identify the event. Only alphanumeric characters, hyphens and underscores are allowed.", - "description_kind": "plain", - "required": true - }, - "new_users_per_minute": { - "type": "number", - "description": "If set, the event will override the waiting room's `new_users_per_minute` property while it is active. If null, the event will inherit it. This can only be set if the event's `total_active_users` property is also set.", - "description_kind": "plain", - "optional": true - }, - "prequeue_start_time": { - "type": "string", - "description": "An ISO 8601 timestamp that marks when to begin queueing all users before the event starts. The prequeue must start at least five minutes before `event_start_time`.", - "description_kind": "plain", - "optional": true - }, - "queueing_method": { - "type": "string", - "description": "If set, the event will override the waiting room's `queueing_method` property while it is active. If null, the event will inherit it.", - "description_kind": "plain", - "optional": true - }, - "session_duration": { - "type": "number", - "description": "If set, the event will override the waiting room's `session_duration` property while it is active. If null, the event will inherit it.", - "description_kind": "plain", - "optional": true - }, - "shuffle_at_event_start": { - "type": "bool", - "description": "If enabled, users in the prequeue will be shuffled randomly at the `event_start_time`. Requires that `prequeue_start_time` is not null. This is useful for situations when many users will join the event prequeue at the same time and you want to shuffle them to ensure fairness. Naturally, it makes the most sense to enable this feature when the `queueing_method` during the event respects ordering such as **fifo**, or else the shuffling may be unnecessary.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "suspended": { - "type": "bool", - "description": "Suspends or allows an event. If set to `true`, the event is ignored and traffic will be handled based on the waiting room configuration.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "total_active_users": { - "type": "number", - "description": "If set, the event will override the waiting room's `total_active_users` property while it is active. If null, the event will inherit it. This can only be set if the event's `new_users_per_minute` property is also set.", - "description_kind": "plain", - "optional": true - }, - "waiting_room_id": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_waiting_room_rules": { - "version": 0, - "block": { - "attributes": { - "action": { - "type": "string", - "description": "The action to take when the expression matches.", - "description_kind": "plain", - "required": true - }, - "description": { - "type": "string", - "description": "The description of the rule.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "enabled": { - "type": "bool", - "description": "When set to true, the rule is enabled.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "expression": { - "type": "string", - "description": "Criteria defining when there is a match for the current rule.", - "description_kind": "plain", - "required": true - }, - "rule_id": { - "type": "string", - "description": "The ID of the rule.", - "description_kind": "plain", - "optional": true - }, - "waiting_room_id": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_waiting_room_setting": { - "version": 0, - "block": { - "attributes": { - "search_engine_crawler_bypass": { - "type": "bool", - "description": "Whether to allow verified search engine crawlers to bypass all waiting rooms on this zone.\nVerified search engine crawlers will not be tracked or counted by the waiting room system,\nand will not appear in waiting room analytics.\n", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_web3_hostname": { - "version": 0, - "block": { - "attributes": { - "description": { - "type": "string", - "description": "An optional description of the hostname.", - "description_kind": "plain", - "optional": true - }, - "dnslink": { - "type": "string", - "description": "DNSLink value used if the target is ipfs.", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "computed": true - }, - "target": { - "type": "string", - "description": "Target gateway of the hostname.", - "description_kind": "plain", - "required": true - }, - "zone_identifier": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_web_analytics_rule": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "host": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description": "The Web Analytics rule identifier.", - "description_kind": "plain", - "computed": true - }, - "inclusive": { - "type": "bool", - "description": "Whether the rule includes or excludes traffic from being measured.", - "description_kind": "plain", - "optional": true - }, - "is_paused": { - "type": "bool", - "description": "Whether the rule is paused or not.", - "description_kind": "plain", - "optional": true - }, - "paths": { - "type": ["list", "string"], - "description_kind": "plain", - "optional": true - }, - "ruleset_id": { - "type": "string", - "description": "The Web Analytics ruleset identifier.", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_web_analytics_site": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "auto_install": { - "type": "bool", - "description": "If enabled, the JavaScript snippet is automatically injected for orange-clouded sites.", - "description_kind": "plain", - "optional": true - }, - "host": { - "type": "string", - "description": "The hostname to use for gray-clouded sites.", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description": "The Web Analytics site identifier.", - "description_kind": "plain", - "computed": true - }, - "site_tag": { - "type": "string", - "description": "The Web Analytics site identifier.", - "description_kind": "plain", - "computed": true - }, - "zone_tag": { - "type": "string", - "description": "The zone identifier.", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_worker_cron_trigger": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "script_name": { - "type": "string", - "description": "Name of the script, used in URLs and route configuration.", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_worker_domain": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description_kind": "plain", - "required": true - }, - "environment": { - "type": "string", - "description": "Worker environment associated with the zone and hostname.", - "description_kind": "plain", - "required": true - }, - "hostname": { - "type": "string", - "description": "Hostname of the Worker Domain.", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "Identifer of the Worker Domain.", - "description_kind": "plain", - "required": true - }, - "service": { - "type": "string", - "description": "Worker service associated with the zone and hostname.", - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "Identifier of the zone.", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_worker_script": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "any_part_name": { - "type": "string", - "description": "A module comprising a Worker script, often a javascript file. Multiple modules may be provided as separate named parts, but at least one module must be present and referenced in the metadata as `main_module` or `body_part` by part name. Source maps may also be included using the `application/source-map` content type.", - "description_kind": "plain", - "optional": true - }, - "id": { - "type": "string", - "description": "The id of the script in the Workers system. Usually the script name.", - "description_kind": "plain", - "required": true - }, - "message": { - "type": "string", - "description": "Rollback message to be associated with this deployment. Only parsed when query param `\"rollback_to\"` is present.", - "description_kind": "plain", - "optional": true - }, - "metadata": { - "nested_type": { - "attributes": { - "bindings": { - "type": ["list", "string"], - "description": "List of bindings available to the worker.", - "description_kind": "plain", - "optional": true - }, - "body_part": { - "type": "string", - "description": "Name of the part in the multipart request that contains the script (e.g. the file adding a listener to the `fetch` event). Indicates a `service worker syntax` Worker.", - "description_kind": "plain", - "optional": true - }, - "compatibility_date": { - "type": "string", - "description": "Date indicating targeted support in the Workers runtime. Backwards incompatible fixes to the runtime following this date will not affect this Worker.", - "description_kind": "plain", - "optional": true - }, - "compatibility_flags": { - "type": ["list", "string"], - "description": "Flags that enable or disable certain features in the Workers runtime. Used to enable upcoming features or opt in or out of specific changes not included in a `compatibility_date`.", - "description_kind": "plain", - "optional": true - }, - "keep_bindings": { - "type": ["list", "string"], - "description": "List of binding types to keep from previous_upload.", - "description_kind": "plain", - "optional": true - }, - "logpush": { - "type": "bool", - "description": "Whether Logpush is turned on for the Worker.", - "description_kind": "plain", - "optional": true - }, - "main_module": { - "type": "string", - "description": "Name of the part in the multipart request that contains the main module (e.g. the file exporting a `fetch` handler). Indicates a `module syntax` Worker.", - "description_kind": "plain", - "optional": true - }, - "migrations": { - "nested_type": { - "attributes": { - "deleted_classes": { - "type": "string", - "description": "A list of classes to delete Durable Object namespaces from.", - "description_kind": "plain", - "optional": true - }, - "new_classes": { - "type": "string", - "description": "A list of classes to create Durable Object namespaces from.", - "description_kind": "plain", - "optional": true - }, - "new_tag": { - "type": "string", - "description": "Tag to set as the latest migration tag.", - "description_kind": "plain", - "optional": true - }, - "old_tag": { - "type": "string", - "description": "Tag used to verify against the latest migration tag for this Worker. If they don't match, the upload is rejected.", - "description_kind": "plain", - "optional": true - }, - "renamed_classes": { - "nested_type": { - "attributes": { - "from": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "to": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "list" - }, - "description": "A list of classes with Durable Object namespaces that were renamed.", - "description_kind": "plain", - "optional": true - }, - "steps": { - "nested_type": { - "attributes": { - "deleted_classes": { - "type": ["list", "string"], - "description": "A list of classes to delete Durable Object namespaces from.", - "description_kind": "plain", - "optional": true - }, - "new_classes": { - "type": ["list", "string"], - "description": "A list of classes to create Durable Object namespaces from.", - "description_kind": "plain", - "optional": true - }, - "renamed_classes": { - "nested_type": { - "attributes": { - "from": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "to": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "list" - }, - "description": "A list of classes with Durable Object namespaces that were renamed.", - "description_kind": "plain", - "optional": true - }, - "transferred_classes": { - "nested_type": { - "attributes": { - "from": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "from_script": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "to": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "list" - }, - "description": "A list of transfers for Durable Object namespaces from a different Worker and class to a class defined in this Worker.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "list" - }, - "description": "Migrations to apply in order.", - "description_kind": "plain", - "optional": true - }, - "transferred_classes": { - "nested_type": { - "attributes": { - "from": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "from_script": { - "type": "string", - "description_kind": "plain", - "optional": true - }, - "to": { - "type": "string", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "list" - }, - "description": "A list of transfers for Durable Object namespaces from a different Worker and class to a class defined in this Worker.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Migrations to apply for Durable Objects associated with this Worker.", - "description_kind": "plain", - "optional": true - }, - "placement": { - "nested_type": { - "attributes": { - "mode": { - "type": "string", - "description": "Enables [Smart Placement](https://developers.cloudflare.com/workers/configuration/smart-placement). Only `\"smart\"` is currently supported", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "optional": true - }, - "tags": { - "type": ["list", "string"], - "description": "List of strings to use as tags for this Worker", - "description_kind": "plain", - "optional": true - }, - "tail_consumers": { - "nested_type": { - "attributes": { - "environment": { - "type": "string", - "description": "Optional environment if the Worker utilizes one.", - "description_kind": "plain", - "optional": true - }, - "namespace": { - "type": "string", - "description": "Optional dispatch namespace the script belongs to.", - "description_kind": "plain", - "optional": true - }, - "service": { - "type": "string", - "description": "Name of Worker that is to be the consumer.", - "description_kind": "plain", - "required": true - } - }, - "nesting_mode": "list" - }, - "description": "List of Workers that will consume logs from the attached Worker.", - "description_kind": "plain", - "optional": true - }, - "usage_model": { - "type": "string", - "description": "Usage model to apply to invocations.", - "description_kind": "plain", - "optional": true - }, - "version_tags": { - "type": "string", - "description": "Key-value pairs to use as tags for this version of this Worker", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "JSON encoded metadata about the uploaded parts and Worker configuration.", - "description_kind": "plain", - "optional": true - }, - "script_name": { - "type": "string", - "description": "Name of the script, used in URLs and route configuration.", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_worker_secret": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "dispatch_namespace": { - "type": "string", - "description": "Name of the Workers for Platforms dispatch namespace.", - "description_kind": "plain", - "required": true - }, - "name": { - "type": "string", - "description": "The name of this secret, this is what will be to access it inside the Worker.", - "description_kind": "plain", - "optional": true - }, - "script_name": { - "type": "string", - "description": "Name of the script, used in URLs and route configuration.", - "description_kind": "plain", - "required": true - }, - "text": { - "type": "string", - "description": "The value of the secret.", - "description_kind": "plain", - "optional": true - }, - "type": { - "type": "string", - "description": "The type of secret to put.", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_workers_for_platforms_namespace": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "API Resource UUID tag.", - "description_kind": "plain", - "computed": true - }, - "name": { - "type": "string", - "description": "The name of the dispatch namespace", - "description_kind": "plain", - "optional": true - }, - "namespace_id": { - "type": "string", - "description": "API Resource UUID tag.", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_workers_kv": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "key_name": { - "type": "string", - "description": "A key's name. The name may be at most 512 bytes. All printable, non-whitespace characters are valid. Use percent-encoding to define key names as part of a URL.", - "description_kind": "plain", - "required": true - }, - "metadata": { - "type": "string", - "description": "Arbitrary JSON to be associated with a key/value pair.", - "description_kind": "plain", - "required": true - }, - "namespace_id": { - "type": "string", - "description": "Namespace identifier tag.", - "description_kind": "plain", - "required": true - }, - "value": { - "type": "string", - "description": "A byte sequence to be stored, up to 25 MiB in length.", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_workers_kv_namespace": { - "version": 0, - "block": { - "attributes": { - "account_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "Namespace identifier tag.", - "description_kind": "plain", - "computed": true - }, - "title": { - "type": "string", - "description": "A human-readable string name for a Namespace.", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_zone": { - "version": 0, - "block": { - "attributes": { - "account": { - "nested_type": { - "attributes": { - "id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description_kind": "plain", - "required": true - }, - "id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "computed": true - }, - "name": { - "type": "string", - "description": "The domain name", - "description_kind": "plain", - "required": true - }, - "type": { - "type": "string", - "description": "A full zone implies that DNS is hosted with Cloudflare. A partial zone is\ntypically a partner-hosted zone or a CNAME setup.\n", - "description_kind": "plain", - "optional": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_zone_cache_reserve": { - "version": 0, - "block": { - "attributes": { - "id": { - "type": "string", - "description": "ID of the zone setting.", - "description_kind": "plain", - "required": true - }, - "value": { - "type": "string", - "description": "Value of the Cache Reserve zone setting.", - "description_kind": "plain", - "optional": true, - "computed": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_zone_cache_variants": { - "version": 0, - "block": { - "attributes": { - "id": { - "type": "string", - "description": "ID of the zone setting.", - "description_kind": "plain", - "required": true - }, - "value": { - "nested_type": { - "attributes": { - "avif": { - "type": ["list", "string"], - "description": "List of strings with the MIME types of all the variants that should be served for avif.", - "description_kind": "plain", - "optional": true - }, - "bmp": { - "type": ["list", "string"], - "description": "List of strings with the MIME types of all the variants that should be served for bmp.", - "description_kind": "plain", - "optional": true - }, - "gif": { - "type": ["list", "string"], - "description": "List of strings with the MIME types of all the variants that should be served for gif.", - "description_kind": "plain", - "optional": true - }, - "jp2": { - "type": ["list", "string"], - "description": "List of strings with the MIME types of all the variants that should be served for jp2.", - "description_kind": "plain", - "optional": true - }, - "jpeg": { - "type": ["list", "string"], - "description": "List of strings with the MIME types of all the variants that should be served for jpeg.", - "description_kind": "plain", - "optional": true - }, - "jpg": { - "type": ["list", "string"], - "description": "List of strings with the MIME types of all the variants that should be served for jpg.", - "description_kind": "plain", - "optional": true - }, - "jpg2": { - "type": ["list", "string"], - "description": "List of strings with the MIME types of all the variants that should be served for jpg2.", - "description_kind": "plain", - "optional": true - }, - "png": { - "type": ["list", "string"], - "description": "List of strings with the MIME types of all the variants that should be served for png.", - "description_kind": "plain", - "optional": true - }, - "tif": { - "type": ["list", "string"], - "description": "List of strings with the MIME types of all the variants that should be served for tif.", - "description_kind": "plain", - "optional": true - }, - "tiff": { - "type": ["list", "string"], - "description": "List of strings with the MIME types of all the variants that should be served for tiff.", - "description_kind": "plain", - "optional": true - }, - "webp": { - "type": ["list", "string"], - "description": "List of strings with the MIME types of all the variants that should be served for webp.", - "description_kind": "plain", - "optional": true - } - }, - "nesting_mode": "single" - }, - "description": "Value of the zone setting.", - "description_kind": "plain", - "required": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_zone_dnssec": { - "version": 0, - "block": { - "attributes": { - "dnssec_multi_signer": { - "type": "bool", - "description": "If true, multi-signer DNSSEC is enabled on the zone, allowing multiple\nproviders to serve a DNSSEC-signed zone at the same time.\nThis is required for DNSKEY records (except those automatically\ngenerated by Cloudflare) to be added to the zone.\n\nSee [Multi-signer DNSSEC](https://developers.cloudflare.com/dns/dnssec/multi-signer-dnssec/) for details.", - "description_kind": "plain", - "optional": true - }, - "dnssec_presigned": { - "type": "bool", - "description": "If true, allows Cloudflare to transfer in a DNSSEC-signed zone\nincluding signatures from an external provider, without requiring\nCloudflare to sign any records on the fly.\n\nNote that this feature has some limitations.\nSee [Cloudflare as Secondary](https://developers.cloudflare.com/dns/zone-setups/zone-transfers/cloudflare-as-secondary/setup/#dnssec) for details.", - "description_kind": "plain", - "optional": true - }, - "status": { - "type": "string", - "description": "Status of DNSSEC, based on user-desired state and presence of necessary records.", - "description_kind": "plain", - "optional": true - }, - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_zone_hold": { - "version": 0, - "block": { - "attributes": { - "zone_id": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - }, - "cloudflare_zone_lockdown": { - "version": 0, - "block": { - "attributes": { - "id": { - "type": "string", - "description": "The unique identifier of the Zone Lockdown rule.", - "description_kind": "plain", - "computed": true - }, - "zone_identifier": { - "type": "string", - "description": "Identifier", - "description_kind": "plain", - "required": true - } - }, - "description_kind": "plain" - } - } - } - } - } -} diff --git a/.grit/workflows/stainless/.gitignore b/.grit/workflows/stainless/.gitignore new file mode 100644 index 0000000000..017cf4294e --- /dev/null +++ b/.grit/workflows/stainless/.gitignore @@ -0,0 +1,3 @@ +*.tfrc +*.lock.hcl +workflow.js diff --git a/.grit/workflows/stainless-gritql-generator/__fixtures__/basic.after/main.tf b/.grit/workflows/stainless/__fixtures__/basic.after/main.tf similarity index 90% rename from .grit/workflows/stainless-gritql-generator/__fixtures__/basic.after/main.tf rename to .grit/workflows/stainless/__fixtures__/basic.after/main.tf index 59f1c976a2..ea9a0da499 100644 --- a/.grit/workflows/stainless-gritql-generator/__fixtures__/basic.after/main.tf +++ b/.grit/workflows/stainless/__fixtures__/basic.after/main.tf @@ -20,10 +20,8 @@ resource "cloudflare_access_application" "staging_app" { session_duration = "24h" # cors is a currently a block list - cors_headers = { - allowed_methods = "GET" + cors_headers = { allowed_methods = "GET" allowed_origins = "https://example.com" allow_credentials = true - max_age = 10 - } + max_age = 10 } } diff --git a/.grit/workflows/stainless-gritql-generator/__fixtures__/basic.before/main.tf b/.grit/workflows/stainless/__fixtures__/basic.before/main.tf similarity index 100% rename from .grit/workflows/stainless-gritql-generator/__fixtures__/basic.before/main.tf rename to .grit/workflows/stainless/__fixtures__/basic.before/main.tf diff --git a/.grit/workflows/stainless-gritql-generator/config/main.tf b/.grit/workflows/stainless/config/main.tf similarity index 100% rename from .grit/workflows/stainless-gritql-generator/config/main.tf rename to .grit/workflows/stainless/config/main.tf diff --git a/.grit/workflows/stainless-gritql-generator/old.json b/.grit/workflows/stainless/old.json similarity index 100% rename from .grit/workflows/stainless-gritql-generator/old.json rename to .grit/workflows/stainless/old.json diff --git a/.grit/workflows/stainless-gritql-generator/workflow.md b/.grit/workflows/stainless/workflow.md similarity index 82% rename from .grit/workflows/stainless-gritql-generator/workflow.md rename to .grit/workflows/stainless/workflow.md index 40fc1f0679..544d5ef042 100644 --- a/.grit/workflows/stainless-gritql-generator/workflow.md +++ b/.grit/workflows/stainless/workflow.md @@ -7,6 +7,8 @@ note: This workflow is used as input for the autogen pipeline. Use it to generat The goal of this workflow is to migrate between two Terraform provider versions for the `Cloudflare` API. Your job is to generate a GritQL migration that can handle upgrading between the two provider versions. +We will be upgrading to the `v5` workflow. The migration should be named `cloudflare_terraform_v5`. + ### 1. Attribute mapping The respective Terraform provider schema diffs have been dumped to `new.json` and `old.json`. @@ -39,9 +41,5 @@ Here is an example for the above attribute: ```grit language hcl -`resource "cloudflare_access_application" $_ { $attr }` where { - $attr <: contains bubble or { - `cors_headers { $block }` => `cors_headers = { $block }` - } -} +`cors_headers { $block }` => `cors_headers = { $block }` where { $block <: within `resource "cloudflare_access_application" $_ { $_ }` } ``` diff --git a/.grit/workflows/stainless/workflow.ts b/.grit/workflows/stainless/workflow.ts new file mode 100644 index 0000000000..6d3d65407d --- /dev/null +++ b/.grit/workflows/stainless/workflow.ts @@ -0,0 +1,103 @@ + +import * as sdk from '@getgrit/workflows-sdk'; +import type { JSONSchema7 } from 'json-schema'; +import * as grit from '@getgrit/api'; + +import fs from 'fs'; + +import { z } from "zod"; + +const BlockTypeSchema = z.object({ + nesting_mode: z.string(), +}); + +const ResourceSchema = z.object({ + block: z.object({ + block_types: z.record(BlockTypeSchema).optional(), + }) +}); + +const CloudflareSchema = z.object({ + format_version: z.string(), + provider_schemas: z.record(z.object({ + resource_schemas: z.record(ResourceSchema), + })), +}); + +interface Result { + resource: string; + attribute: string; +} + +function findListNestingModeBlockTypes(schema: z.infer): Result[] { + const results: Result[] = []; + + const cloudflareSchema = schema.provider_schemas["registry.terraform.io/cloudflare/cloudflare"]; + const resourceSchemas = cloudflareSchema.resource_schemas; + + for (const [resourceName, resourceSchema] of Object.entries(resourceSchemas)) { + const blockTypes = resourceSchema.block.block_types; + if (blockTypes) { + for (const [attributeName, blockType] of Object.entries(blockTypes)) { + if (blockType.nesting_mode === "list") { + results.push({ resource: resourceName, attribute: attributeName }); + } + } + } + } + + return results; +} + +const schema = { + $schema: 'https://json-schema.org/draft/2020-12/schema', + type: 'object' as const, + properties: { + old_schema_path: { type: 'string' }, + }, + required: ['query'], +} satisfies JSONSchema7; + +export default await sdk.defineWorkflow({ + name: 'workflow', + options: schema, + + run: async (options) => { + console.log('Running workflow'); + grit.logging.info('Generating a GritQL migration for the provided Terraform schema'); + + const oldSchemaPath = options.old_schema_path; + const oldSchemaData = await fs.promises.readFile(oldSchemaPath, 'utf-8'); + const oldSchema = CloudflareSchema.parse(JSON.parse(oldSchemaData)); + + const results = findListNestingModeBlockTypes(oldSchema); + + grit.logging.info(`Found ${results.length} resources with list nesting mode block types`); + + const subqueries = results.map(({ resource, attribute }) => + ` \`${attribute} { $block }\` => \`${attribute} = { + $block +}\` where { $block <: within \`resource "${resource}" $_ { $_ }\` }` + ).join(',\n'); + + const query = ` +language hcl + +pattern terraform_cloudflare_v5() { + or { +${subqueries} + } +}`; + + await grit.stdlib.writeFile({ + path: `.grit/patterns/terraform_cloudflare_v5.grit`, + content: query, + }, {}); + + + return { + success: true, + subqueries, + }; + } +}); \ No newline at end of file