{"name":"vercel","displayName":"Vercel","version":"4.6.0","keywords":["pulumi","vercel","category/cloud"],"license":"Apache-2.0","attribution":"This Pulumi package is based on the [`vercel` Terraform Provider](https://github.com/vercel/terraform-provider-vercel).","repository":"https://github.com/pulumiverse/pulumi-vercel","pluginDownloadURL":"github://api.github.com/pulumiverse","publisher":"Pulumiverse","meta":{"moduleFormat":"(.*)(?:/[^/]*)"},"language":{"csharp":{"packageReferences":{"Pulumi":"3.*"},"compatibility":"tfbridge20","rootNamespace":"Pulumiverse","respectSchemaVersion":true},"go":{"importBasePath":"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel","generateResourceContainerTypes":true,"generateExtraInputTypes":true,"respectSchemaVersion":true},"java":{"basePackage":"com.pulumiverse","buildFiles":"","gradleNexusPublishPluginVersion":"","gradleTest":""},"nodejs":{"packageName":"@pulumiverse/vercel","readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/vercel/terraform-provider-vercel)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-vercel` repo](https://github.com/pulumiverse/pulumi-vercel/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-vercel` repo](https://github.com/vercel/terraform-provider-vercel/issues).","devDependencies":{"@types/mime":"^2.0.0","@types/node":"^10.0.0"},"compatibility":"tfbridge20","disableUnionOutputTypes":true,"respectSchemaVersion":true},"python":{"packageName":"pulumiverse_vercel","readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/vercel/terraform-provider-vercel)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-vercel` repo](https://github.com/pulumiverse/pulumi-vercel/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-vercel` repo](https://github.com/vercel/terraform-provider-vercel/issues).","compatibility":"tfbridge20","respectSchemaVersion":true,"pyproject":{"enabled":true}}},"config":{"variables":{"apiToken":{"type":"string","description":"The Vercel API Token to use. This can also be specified with the `VERCEL_API_TOKEN` shell environment variable. Tokens can be created from your [Vercel settings](https://vercel.com/account/tokens).","secret":true},"team":{"type":"string","description":"The default Vercel Team to use when creating resources or reading data sources. This can be provided as either a team slug, or team ID. The slug and ID are both available from the Team Settings page in the Vercel dashboard."}}},"types":{"vercel:index/CustomEnvironmentBranchTracking:CustomEnvironmentBranchTracking":{"properties":{"pattern":{"type":"string","description":"The pattern of the branch name to track.\n"},"type":{"type":"string","description":"How a branch name should be matched against the pattern. Must be one of 'startsWith', 'endsWith' or 'equals'.\n"}},"type":"object","required":["pattern","type"]},"vercel:index/DeploymentProjectSettings:DeploymentProjectSettings":{"properties":{"buildCommand":{"type":"string","description":"The build command for this deployment. If omitted, this value will be taken from the project or automatically detected.\n"},"framework":{"type":"string","description":"The framework that is being used for this deployment. If omitted, no framework is selected.\n"},"installCommand":{"type":"string","description":"The install command for this deployment. If omitted, this value will be taken from the project or automatically detected.\n"},"outputDirectory":{"type":"string","description":"The output directory of the deployment. If omitted, this value will be taken from the project or automatically detected.\n"},"rootDirectory":{"type":"string","description":"The name of a directory or relative path to the source code of your project. When null is used it will default to the project root.\n"}},"type":"object"},"vercel:index/DnsRecordSrv:DnsRecordSrv":{"properties":{"port":{"type":"integer","description":"The TCP or UDP port on which the service is to be found.\n"},"priority":{"type":"integer","description":"The priority of the target host, lower value means more preferred.\n"},"target":{"type":"string","description":"The canonical hostname of the machine providing the service, ending in a dot.\n"},"weight":{"type":"integer","description":"A relative weight for records with the same priority, higher value means higher chance of getting picked.\n"}},"type":"object","required":["port","priority","target","weight"]},"vercel:index/FirewallConfigIpRules:FirewallConfigIpRules":{"properties":{"rules":{"type":"array","items":{"$ref":"#/types/vercel:index/FirewallConfigIpRulesRule:FirewallConfigIpRulesRule"}}},"type":"object"},"vercel:index/FirewallConfigIpRulesRule:FirewallConfigIpRulesRule":{"properties":{"action":{"type":"string"},"hostname":{"type":"string","description":"Hosts to apply these rules to\n"},"id":{"type":"string"},"ip":{"type":"string","description":"IP or CIDR to block\n"},"notes":{"type":"string"}},"type":"object","required":["action","hostname","ip"],"language":{"nodejs":{"requiredOutputs":["action","hostname","id","ip"]}}},"vercel:index/FirewallConfigManagedRulesets:FirewallConfigManagedRulesets":{"properties":{"aiBots":{"$ref":"#/types/vercel:index/FirewallConfigManagedRulesetsAiBots:FirewallConfigManagedRulesetsAiBots","description":"Enable the ai*bots managed ruleset and select action\n"},"botFilter":{"$ref":"#/types/vercel:index/FirewallConfigManagedRulesetsBotFilter:FirewallConfigManagedRulesetsBotFilter","description":"DEPRECATED: Use bot*protection instead. This block will be removed in a future release.\n","deprecationMessage":"The 'bot_filter' block is deprecated. Please use 'bot_protection' instead."},"botProtection":{"$ref":"#/types/vercel:index/FirewallConfigManagedRulesetsBotProtection:FirewallConfigManagedRulesetsBotProtection","description":"Enable the bot*protection managed ruleset and select action\n"},"owasp":{"$ref":"#/types/vercel:index/FirewallConfigManagedRulesetsOwasp:FirewallConfigManagedRulesetsOwasp","description":"Enable the owasp managed rulesets and select ruleset behaviors\n"}},"type":"object"},"vercel:index/FirewallConfigManagedRulesetsAiBots:FirewallConfigManagedRulesetsAiBots":{"properties":{"action":{"type":"string"},"active":{"type":"boolean"}},"type":"object"},"vercel:index/FirewallConfigManagedRulesetsBotFilter:FirewallConfigManagedRulesetsBotFilter":{"properties":{"action":{"type":"string"},"active":{"type":"boolean"}},"type":"object"},"vercel:index/FirewallConfigManagedRulesetsBotProtection:FirewallConfigManagedRulesetsBotProtection":{"properties":{"action":{"type":"string"},"active":{"type":"boolean"}},"type":"object"},"vercel:index/FirewallConfigManagedRulesetsOwasp:FirewallConfigManagedRulesetsOwasp":{"properties":{"gen":{"$ref":"#/types/vercel:index/FirewallConfigManagedRulesetsOwaspGen:FirewallConfigManagedRulesetsOwaspGen","description":"Generic Attack Detection\n"},"java":{"$ref":"#/types/vercel:index/FirewallConfigManagedRulesetsOwaspJava:FirewallConfigManagedRulesetsOwaspJava","description":"Java Attack Detection\n"},"lfi":{"$ref":"#/types/vercel:index/FirewallConfigManagedRulesetsOwaspLfi:FirewallConfigManagedRulesetsOwaspLfi","description":"Local File Inclusion Rules\n"},"ma":{"$ref":"#/types/vercel:index/FirewallConfigManagedRulesetsOwaspMa:FirewallConfigManagedRulesetsOwaspMa","description":"Multipart Rules\n"},"php":{"$ref":"#/types/vercel:index/FirewallConfigManagedRulesetsOwaspPhp:FirewallConfigManagedRulesetsOwaspPhp","description":"PHP Attack Detection\n"},"rce":{"$ref":"#/types/vercel:index/FirewallConfigManagedRulesetsOwaspRce:FirewallConfigManagedRulesetsOwaspRce","description":"Remote Code Execution Rules\n"},"rfi":{"$ref":"#/types/vercel:index/FirewallConfigManagedRulesetsOwaspRfi:FirewallConfigManagedRulesetsOwaspRfi","description":"Remote File Inclusion Rules\n"},"sd":{"$ref":"#/types/vercel:index/FirewallConfigManagedRulesetsOwaspSd:FirewallConfigManagedRulesetsOwaspSd","description":"Scanner Detection Rules\n"},"sf":{"$ref":"#/types/vercel:index/FirewallConfigManagedRulesetsOwaspSf:FirewallConfigManagedRulesetsOwaspSf","description":"Session Fixation Attack\n"},"sqli":{"$ref":"#/types/vercel:index/FirewallConfigManagedRulesetsOwaspSqli:FirewallConfigManagedRulesetsOwaspSqli","description":"SQL Injection Rules\n"},"xss":{"$ref":"#/types/vercel:index/FirewallConfigManagedRulesetsOwaspXss:FirewallConfigManagedRulesetsOwaspXss","description":"Cross Site Scripting Rules\n"}},"type":"object"},"vercel:index/FirewallConfigManagedRulesetsOwaspGen:FirewallConfigManagedRulesetsOwaspGen":{"properties":{"action":{"type":"string"},"active":{"type":"boolean"}},"type":"object","required":["action"]},"vercel:index/FirewallConfigManagedRulesetsOwaspJava:FirewallConfigManagedRulesetsOwaspJava":{"properties":{"action":{"type":"string"},"active":{"type":"boolean"}},"type":"object","required":["action"]},"vercel:index/FirewallConfigManagedRulesetsOwaspLfi:FirewallConfigManagedRulesetsOwaspLfi":{"properties":{"action":{"type":"string"},"active":{"type":"boolean"}},"type":"object","required":["action"]},"vercel:index/FirewallConfigManagedRulesetsOwaspMa:FirewallConfigManagedRulesetsOwaspMa":{"properties":{"action":{"type":"string"},"active":{"type":"boolean"}},"type":"object","required":["action"]},"vercel:index/FirewallConfigManagedRulesetsOwaspPhp:FirewallConfigManagedRulesetsOwaspPhp":{"properties":{"action":{"type":"string"},"active":{"type":"boolean"}},"type":"object","required":["action"]},"vercel:index/FirewallConfigManagedRulesetsOwaspRce:FirewallConfigManagedRulesetsOwaspRce":{"properties":{"action":{"type":"string"},"active":{"type":"boolean"}},"type":"object","required":["action"]},"vercel:index/FirewallConfigManagedRulesetsOwaspRfi:FirewallConfigManagedRulesetsOwaspRfi":{"properties":{"action":{"type":"string"},"active":{"type":"boolean"}},"type":"object","required":["action"]},"vercel:index/FirewallConfigManagedRulesetsOwaspSd:FirewallConfigManagedRulesetsOwaspSd":{"properties":{"action":{"type":"string"},"active":{"type":"boolean"}},"type":"object","required":["action"]},"vercel:index/FirewallConfigManagedRulesetsOwaspSf:FirewallConfigManagedRulesetsOwaspSf":{"properties":{"action":{"type":"string"},"active":{"type":"boolean"}},"type":"object","required":["action"]},"vercel:index/FirewallConfigManagedRulesetsOwaspSqli:FirewallConfigManagedRulesetsOwaspSqli":{"properties":{"action":{"type":"string"},"active":{"type":"boolean"}},"type":"object","required":["action"]},"vercel:index/FirewallConfigManagedRulesetsOwaspXss:FirewallConfigManagedRulesetsOwaspXss":{"properties":{"action":{"type":"string"},"active":{"type":"boolean"}},"type":"object","required":["action"]},"vercel:index/FirewallConfigRules:FirewallConfigRules":{"properties":{"rules":{"type":"array","items":{"$ref":"#/types/vercel:index/FirewallConfigRulesRule:FirewallConfigRulesRule"}}},"type":"object"},"vercel:index/FirewallConfigRulesRule:FirewallConfigRulesRule":{"properties":{"action":{"$ref":"#/types/vercel:index/FirewallConfigRulesRuleAction:FirewallConfigRulesRuleAction","description":"Actions to take when the condition groups match a request\n"},"active":{"type":"boolean","description":"Rule is active or disabled\n"},"conditionGroups":{"type":"array","items":{"$ref":"#/types/vercel:index/FirewallConfigRulesRuleConditionGroup:FirewallConfigRulesRuleConditionGroup"},"description":"Sets of conditions that may match a request\n"},"description":{"type":"string"},"id":{"type":"string"},"name":{"type":"string","description":"Name to identify the rule\n"}},"type":"object","required":["action","conditionGroups","name"],"language":{"nodejs":{"requiredOutputs":["action","conditionGroups","id","name"]}}},"vercel:index/FirewallConfigRulesRuleAction:FirewallConfigRulesRuleAction":{"properties":{"action":{"type":"string","description":"Base action\n"},"actionDuration":{"type":"string","description":"Forward persistence of a rule action\n"},"rateLimit":{"$ref":"#/types/vercel:index/FirewallConfigRulesRuleActionRateLimit:FirewallConfigRulesRuleActionRateLimit","description":"Behavior or a rate limiting action. Required if action is rate*limit\n"},"redirect":{"$ref":"#/types/vercel:index/FirewallConfigRulesRuleActionRedirect:FirewallConfigRulesRuleActionRedirect","description":"How to redirect a request. Required if action is redirect\n"}},"type":"object","required":["action"]},"vercel:index/FirewallConfigRulesRuleActionRateLimit:FirewallConfigRulesRuleActionRateLimit":{"properties":{"action":{"type":"string","description":"Action to take when rate limit is exceeded\n"},"algo":{"type":"string","description":"Rate limiting algorithm\n"},"keys":{"type":"array","items":{"type":"string"},"description":"Keys used to bucket an individual client\n"},"limit":{"type":"integer","description":"number of requests allowed in the window\n"},"window":{"type":"integer","description":"Time window in seconds\n"}},"type":"object","required":["action","algo","keys","limit","window"]},"vercel:index/FirewallConfigRulesRuleActionRedirect:FirewallConfigRulesRuleActionRedirect":{"properties":{"location":{"type":"string"},"permanent":{"type":"boolean"}},"type":"object","required":["location","permanent"]},"vercel:index/FirewallConfigRulesRuleConditionGroup:FirewallConfigRulesRuleConditionGroup":{"properties":{"conditions":{"type":"array","items":{"$ref":"#/types/vercel:index/FirewallConfigRulesRuleConditionGroupCondition:FirewallConfigRulesRuleConditionGroupCondition"},"description":"Conditions that must all match within a group\n"}},"type":"object","required":["conditions"]},"vercel:index/FirewallConfigRulesRuleConditionGroupCondition:FirewallConfigRulesRuleConditionGroupCondition":{"properties":{"key":{"type":"string","description":"Key within type to match against\n"},"neg":{"type":"boolean","description":"Negate the condition\n"},"op":{"type":"string","description":"Operator to use for comparison. Options: \u003cspan pulumi-lang-nodejs=\"`re`\" pulumi-lang-dotnet=\"`Re`\" pulumi-lang-go=\"`re`\" pulumi-lang-python=\"`re`\" pulumi-lang-yaml=\"`re`\" pulumi-lang-java=\"`re`\"\u003e`re`\u003c/span\u003e (regex), \u003cspan pulumi-lang-nodejs=\"`eq`\" pulumi-lang-dotnet=\"`Eq`\" pulumi-lang-go=\"`eq`\" pulumi-lang-python=\"`eq`\" pulumi-lang-yaml=\"`eq`\" pulumi-lang-java=\"`eq`\"\u003e`eq`\u003c/span\u003e (equals), \u003cspan pulumi-lang-nodejs=\"`neq`\" pulumi-lang-dotnet=\"`Neq`\" pulumi-lang-go=\"`neq`\" pulumi-lang-python=\"`neq`\" pulumi-lang-yaml=\"`neq`\" pulumi-lang-java=\"`neq`\"\u003e`neq`\u003c/span\u003e (not equals), \u003cspan pulumi-lang-nodejs=\"`ex`\" pulumi-lang-dotnet=\"`Ex`\" pulumi-lang-go=\"`ex`\" pulumi-lang-python=\"`ex`\" pulumi-lang-yaml=\"`ex`\" pulumi-lang-java=\"`ex`\"\u003e`ex`\u003c/span\u003e (exists), \u003cspan pulumi-lang-nodejs=\"`nex`\" pulumi-lang-dotnet=\"`Nex`\" pulumi-lang-go=\"`nex`\" pulumi-lang-python=\"`nex`\" pulumi-lang-yaml=\"`nex`\" pulumi-lang-java=\"`nex`\"\u003e`nex`\u003c/span\u003e (not exists), \u003cspan pulumi-lang-nodejs=\"`inc`\" pulumi-lang-dotnet=\"`Inc`\" pulumi-lang-go=\"`inc`\" pulumi-lang-python=\"`inc`\" pulumi-lang-yaml=\"`inc`\" pulumi-lang-java=\"`inc`\"\u003e`inc`\u003c/span\u003e (includes), \u003cspan pulumi-lang-nodejs=\"`ninc`\" pulumi-lang-dotnet=\"`Ninc`\" pulumi-lang-go=\"`ninc`\" pulumi-lang-python=\"`ninc`\" pulumi-lang-yaml=\"`ninc`\" pulumi-lang-java=\"`ninc`\"\u003e`ninc`\u003c/span\u003e (not includes), \u003cspan pulumi-lang-nodejs=\"`pre`\" pulumi-lang-dotnet=\"`Pre`\" pulumi-lang-go=\"`pre`\" pulumi-lang-python=\"`pre`\" pulumi-lang-yaml=\"`pre`\" pulumi-lang-java=\"`pre`\"\u003e`pre`\u003c/span\u003e (prefix), \u003cspan pulumi-lang-nodejs=\"`suf`\" pulumi-lang-dotnet=\"`Suf`\" pulumi-lang-go=\"`suf`\" pulumi-lang-python=\"`suf`\" pulumi-lang-yaml=\"`suf`\" pulumi-lang-java=\"`suf`\"\u003e`suf`\u003c/span\u003e (suffix), \u003cspan pulumi-lang-nodejs=\"`sub`\" pulumi-lang-dotnet=\"`Sub`\" pulumi-lang-go=\"`sub`\" pulumi-lang-python=\"`sub`\" pulumi-lang-yaml=\"`sub`\" pulumi-lang-java=\"`sub`\"\u003e`sub`\u003c/span\u003e (substring), \u003cspan pulumi-lang-nodejs=\"`gt`\" pulumi-lang-dotnet=\"`Gt`\" pulumi-lang-go=\"`gt`\" pulumi-lang-python=\"`gt`\" pulumi-lang-yaml=\"`gt`\" pulumi-lang-java=\"`gt`\"\u003e`gt`\u003c/span\u003e (greater than), \u003cspan pulumi-lang-nodejs=\"`gte`\" pulumi-lang-dotnet=\"`Gte`\" pulumi-lang-go=\"`gte`\" pulumi-lang-python=\"`gte`\" pulumi-lang-yaml=\"`gte`\" pulumi-lang-java=\"`gte`\"\u003e`gte`\u003c/span\u003e (greater than or equal), \u003cspan pulumi-lang-nodejs=\"`lt`\" pulumi-lang-dotnet=\"`Lt`\" pulumi-lang-go=\"`lt`\" pulumi-lang-python=\"`lt`\" pulumi-lang-yaml=\"`lt`\" pulumi-lang-java=\"`lt`\"\u003e`lt`\u003c/span\u003e (less than), \u003cspan pulumi-lang-nodejs=\"`lte`\" pulumi-lang-dotnet=\"`Lte`\" pulumi-lang-go=\"`lte`\" pulumi-lang-python=\"`lte`\" pulumi-lang-yaml=\"`lte`\" pulumi-lang-java=\"`lte`\"\u003e`lte`\u003c/span\u003e (less than or equal). Note: \u003cspan pulumi-lang-nodejs=\"`ex`\" pulumi-lang-dotnet=\"`Ex`\" pulumi-lang-go=\"`ex`\" pulumi-lang-python=\"`ex`\" pulumi-lang-yaml=\"`ex`\" pulumi-lang-java=\"`ex`\"\u003e`ex`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`nex`\" pulumi-lang-dotnet=\"`Nex`\" pulumi-lang-go=\"`nex`\" pulumi-lang-python=\"`nex`\" pulumi-lang-yaml=\"`nex`\" pulumi-lang-java=\"`nex`\"\u003e`nex`\u003c/span\u003e don't require a \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e field, only \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e.\n"},"type":{"type":"string","description":"Request key type to match against\n"},"value":{"type":"string","description":"Value to match against. Not required for existence operators (\u003cspan pulumi-lang-nodejs=\"`ex`\" pulumi-lang-dotnet=\"`Ex`\" pulumi-lang-go=\"`ex`\" pulumi-lang-python=\"`ex`\" pulumi-lang-yaml=\"`ex`\" pulumi-lang-java=\"`ex`\"\u003e`ex`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nex`\" pulumi-lang-dotnet=\"`Nex`\" pulumi-lang-go=\"`nex`\" pulumi-lang-python=\"`nex`\" pulumi-lang-yaml=\"`nex`\" pulumi-lang-java=\"`nex`\"\u003e`nex`\u003c/span\u003e). Use \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e instead for \u003cspan pulumi-lang-nodejs=\"`inc`\" pulumi-lang-dotnet=\"`Inc`\" pulumi-lang-go=\"`inc`\" pulumi-lang-python=\"`inc`\" pulumi-lang-yaml=\"`inc`\" pulumi-lang-java=\"`inc`\"\u003e`inc`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ninc`\" pulumi-lang-dotnet=\"`Ninc`\" pulumi-lang-go=\"`ninc`\" pulumi-lang-python=\"`ninc`\" pulumi-lang-yaml=\"`ninc`\" pulumi-lang-java=\"`ninc`\"\u003e`ninc`\u003c/span\u003e operators.\n"},"values":{"type":"array","items":{"type":"string"},"description":"Values to match against if op is inc, ninc\n"}},"type":"object","required":["op","type"]},"vercel:index/MicrofrontendGroupDefaultApp:MicrofrontendGroupDefaultApp":{"properties":{"defaultRoute":{"type":"string","description":"The default route for the project. Used for the screenshot of deployments.\n"},"id":{"type":"string","description":"The unique identifier for this resource. Format: team*id/microfrontend*group_id.\n"},"projectId":{"type":"string","description":"The ID of the project.\n"}},"type":"object","required":["projectId"],"language":{"nodejs":{"requiredOutputs":["defaultRoute","id","projectId"]}}},"vercel:index/NetworkTimeouts:NetworkTimeouts":{"properties":{"create":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"}},"type":"object"},"vercel:index/ProjectEnvironment:ProjectEnvironment":{"properties":{"comment":{"type":"string","description":"A comment explaining what the environment variable is for.\n"},"customEnvironmentIds":{"type":"array","items":{"type":"string"},"description":"The IDs of Custom Environments that the Environment Variable should be present on. At least one of \u003cspan pulumi-lang-nodejs=\"`target`\" pulumi-lang-dotnet=\"`Target`\" pulumi-lang-go=\"`target`\" pulumi-lang-python=\"`target`\" pulumi-lang-yaml=\"`target`\" pulumi-lang-java=\"`target`\"\u003e`target`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`customEnvironmentIds`\" pulumi-lang-dotnet=\"`CustomEnvironmentIds`\" pulumi-lang-go=\"`customEnvironmentIds`\" pulumi-lang-python=\"`custom_environment_ids`\" pulumi-lang-yaml=\"`customEnvironmentIds`\" pulumi-lang-java=\"`customEnvironmentIds`\"\u003e`custom_environment_ids`\u003c/span\u003e must be set.\n"},"gitBranch":{"type":"string","description":"The git branch of the Environment Variable.\n"},"id":{"type":"string","description":"The ID of the Environment Variable.\n"},"key":{"type":"string","description":"The name of the Environment Variable.\n"},"sensitive":{"type":"boolean","description":"Whether the Environment Variable is sensitive or not. (May be affected by a [team-wide environment variable policy](https://vercel.com/docs/projects/environment-variables/sensitive-environment-variables#environment-variables-policy))\n"},"targets":{"type":"array","items":{"type":"string"},"description":"The environments that the Environment Variable should be present on. Valid targets are either \u003cspan pulumi-lang-nodejs=\"`production`\" pulumi-lang-dotnet=\"`Production`\" pulumi-lang-go=\"`production`\" pulumi-lang-python=\"`production`\" pulumi-lang-yaml=\"`production`\" pulumi-lang-java=\"`production`\"\u003e`production`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`preview`\" pulumi-lang-dotnet=\"`Preview`\" pulumi-lang-go=\"`preview`\" pulumi-lang-python=\"`preview`\" pulumi-lang-yaml=\"`preview`\" pulumi-lang-java=\"`preview`\"\u003e`preview`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`development`\" pulumi-lang-dotnet=\"`Development`\" pulumi-lang-go=\"`development`\" pulumi-lang-python=\"`development`\" pulumi-lang-yaml=\"`development`\" pulumi-lang-java=\"`development`\"\u003e`development`\u003c/span\u003e. At least one of \u003cspan pulumi-lang-nodejs=\"`target`\" pulumi-lang-dotnet=\"`Target`\" pulumi-lang-go=\"`target`\" pulumi-lang-python=\"`target`\" pulumi-lang-yaml=\"`target`\" pulumi-lang-java=\"`target`\"\u003e`target`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`customEnvironmentIds`\" pulumi-lang-dotnet=\"`CustomEnvironmentIds`\" pulumi-lang-go=\"`customEnvironmentIds`\" pulumi-lang-python=\"`custom_environment_ids`\" pulumi-lang-yaml=\"`customEnvironmentIds`\" pulumi-lang-java=\"`customEnvironmentIds`\"\u003e`custom_environment_ids`\u003c/span\u003e must be set.\n"},"value":{"type":"string","description":"The value of the Environment Variable.\n","secret":true}},"type":"object","required":["key","value"],"language":{"nodejs":{"requiredOutputs":["comment","customEnvironmentIds","id","key","sensitive","targets","value"]}}},"vercel:index/ProjectEnvironmentVariablesVariable:ProjectEnvironmentVariablesVariable":{"properties":{"comment":{"type":"string","description":"A comment explaining what the environment variable is for.\n"},"customEnvironmentIds":{"type":"array","items":{"type":"string"},"description":"The IDs of Custom Environments that the Environment Variable should be present on. At least one of \u003cspan pulumi-lang-nodejs=\"`target`\" pulumi-lang-dotnet=\"`Target`\" pulumi-lang-go=\"`target`\" pulumi-lang-python=\"`target`\" pulumi-lang-yaml=\"`target`\" pulumi-lang-java=\"`target`\"\u003e`target`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`customEnvironmentIds`\" pulumi-lang-dotnet=\"`CustomEnvironmentIds`\" pulumi-lang-go=\"`customEnvironmentIds`\" pulumi-lang-python=\"`custom_environment_ids`\" pulumi-lang-yaml=\"`customEnvironmentIds`\" pulumi-lang-java=\"`customEnvironmentIds`\"\u003e`custom_environment_ids`\u003c/span\u003e must be set.\n"},"gitBranch":{"type":"string","description":"The git branch of the Environment Variable.\n"},"id":{"type":"string","description":"The ID of the Environment Variable.\n"},"key":{"type":"string","description":"The name of the Environment Variable.\n"},"sensitive":{"type":"boolean","description":"Whether the Environment Variable is sensitive or not.\n"},"targets":{"type":"array","items":{"type":"string"},"description":"The environments that the Environment Variable should be present on. Valid targets are either \u003cspan pulumi-lang-nodejs=\"`production`\" pulumi-lang-dotnet=\"`Production`\" pulumi-lang-go=\"`production`\" pulumi-lang-python=\"`production`\" pulumi-lang-yaml=\"`production`\" pulumi-lang-java=\"`production`\"\u003e`production`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`preview`\" pulumi-lang-dotnet=\"`Preview`\" pulumi-lang-go=\"`preview`\" pulumi-lang-python=\"`preview`\" pulumi-lang-yaml=\"`preview`\" pulumi-lang-java=\"`preview`\"\u003e`preview`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`development`\" pulumi-lang-dotnet=\"`Development`\" pulumi-lang-go=\"`development`\" pulumi-lang-python=\"`development`\" pulumi-lang-yaml=\"`development`\" pulumi-lang-java=\"`development`\"\u003e`development`\u003c/span\u003e. At least one of \u003cspan pulumi-lang-nodejs=\"`target`\" pulumi-lang-dotnet=\"`Target`\" pulumi-lang-go=\"`target`\" pulumi-lang-python=\"`target`\" pulumi-lang-yaml=\"`target`\" pulumi-lang-java=\"`target`\"\u003e`target`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`customEnvironmentIds`\" pulumi-lang-dotnet=\"`CustomEnvironmentIds`\" pulumi-lang-go=\"`customEnvironmentIds`\" pulumi-lang-python=\"`custom_environment_ids`\" pulumi-lang-yaml=\"`customEnvironmentIds`\" pulumi-lang-java=\"`customEnvironmentIds`\"\u003e`custom_environment_ids`\u003c/span\u003e must be set.\n"},"value":{"type":"string","description":"The value of the Environment Variable.\n","secret":true}},"type":"object","required":["key","value"],"language":{"nodejs":{"requiredOutputs":["comment","customEnvironmentIds","id","key","sensitive","targets","value"]}}},"vercel:index/ProjectGitComments:ProjectGitComments":{"properties":{"onCommit":{"type":"boolean","description":"Whether Commit comments are enabled\n"},"onPullRequest":{"type":"boolean","description":"Whether Pull Request comments are enabled\n"}},"type":"object","required":["onCommit","onPullRequest"]},"vercel:index/ProjectGitProviderOptions:ProjectGitProviderOptions":{"properties":{"createDeployments":{"type":"boolean","description":"Whether to create deployments\n"},"repositoryDispatchEvents":{"type":"boolean","description":"Whether to enable repository dispatch events\n"},"requireVerifiedCommits":{"type":"boolean","description":"Whether to require verified commits\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["createDeployments","repositoryDispatchEvents","requireVerifiedCommits"]}}},"vercel:index/ProjectGitRepository:ProjectGitRepository":{"properties":{"deployHooks":{"type":"array","items":{"$ref":"#/types/vercel:index/ProjectGitRepositoryDeployHook:ProjectGitRepositoryDeployHook"},"description":"Deploy hooks are unique URLs that allow you to trigger a deployment of a given branch. See https://vercel.com/docs/deployments/deploy-hooks for full information.\n"},"productionBranch":{"type":"string","description":"By default, every commit pushed to the main branch will trigger a Production Deployment instead of the usual Preview Deployment. You can switch to a different branch here.\n"},"repo":{"type":"string","description":"The name of the git repository. For example: `vercel/next.js`.\n"},"type":{"type":"string","description":"The git provider of the repository. Must be either \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e.\n"}},"type":"object","required":["repo","type"],"language":{"nodejs":{"requiredOutputs":["productionBranch","repo","type"]}}},"vercel:index/ProjectGitRepositoryDeployHook:ProjectGitRepositoryDeployHook":{"properties":{"id":{"type":"string","description":"The ID of the deploy hook.\n"},"name":{"type":"string","description":"The name of the deploy hook.\n"},"ref":{"type":"string","description":"The branch or commit hash that should be deployed.\n"},"url":{"type":"string","description":"A URL that, when a POST request is made to, will trigger a new deployment.\n","secret":true}},"type":"object","required":["name","ref"],"language":{"nodejs":{"requiredOutputs":["id","name","ref","url"]}}},"vercel:index/ProjectMembersMember:ProjectMembersMember":{"properties":{"email":{"type":"string","description":"The email of the user to add to the project. Exactly one of \u003cspan pulumi-lang-nodejs=\"`userId`\" pulumi-lang-dotnet=\"`UserId`\" pulumi-lang-go=\"`userId`\" pulumi-lang-python=\"`user_id`\" pulumi-lang-yaml=\"`userId`\" pulumi-lang-java=\"`userId`\"\u003e`user_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`email`\" pulumi-lang-dotnet=\"`Email`\" pulumi-lang-go=\"`email`\" pulumi-lang-python=\"`email`\" pulumi-lang-yaml=\"`email`\" pulumi-lang-java=\"`email`\"\u003e`email`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`username`\" pulumi-lang-dotnet=\"`Username`\" pulumi-lang-go=\"`username`\" pulumi-lang-python=\"`username`\" pulumi-lang-yaml=\"`username`\" pulumi-lang-java=\"`username`\"\u003e`username`\u003c/span\u003e must be specified.\n"},"role":{"type":"string","description":"The role that the user should have in the project. One of 'ADMIN', 'PROJECT*DEVELOPER', or 'PROJECT*VIEWER'.\n"},"userId":{"type":"string","description":"The ID of the user to add to the project. Exactly one of \u003cspan pulumi-lang-nodejs=\"`userId`\" pulumi-lang-dotnet=\"`UserId`\" pulumi-lang-go=\"`userId`\" pulumi-lang-python=\"`user_id`\" pulumi-lang-yaml=\"`userId`\" pulumi-lang-java=\"`userId`\"\u003e`user_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`email`\" pulumi-lang-dotnet=\"`Email`\" pulumi-lang-go=\"`email`\" pulumi-lang-python=\"`email`\" pulumi-lang-yaml=\"`email`\" pulumi-lang-java=\"`email`\"\u003e`email`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`username`\" pulumi-lang-dotnet=\"`Username`\" pulumi-lang-go=\"`username`\" pulumi-lang-python=\"`username`\" pulumi-lang-yaml=\"`username`\" pulumi-lang-java=\"`username`\"\u003e`username`\u003c/span\u003e must be specified.\n"},"username":{"type":"string","description":"The username of the user to add to the project. Exactly one of \u003cspan pulumi-lang-nodejs=\"`userId`\" pulumi-lang-dotnet=\"`UserId`\" pulumi-lang-go=\"`userId`\" pulumi-lang-python=\"`user_id`\" pulumi-lang-yaml=\"`userId`\" pulumi-lang-java=\"`userId`\"\u003e`user_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`email`\" pulumi-lang-dotnet=\"`Email`\" pulumi-lang-go=\"`email`\" pulumi-lang-python=\"`email`\" pulumi-lang-yaml=\"`email`\" pulumi-lang-java=\"`email`\"\u003e`email`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`username`\" pulumi-lang-dotnet=\"`Username`\" pulumi-lang-go=\"`username`\" pulumi-lang-python=\"`username`\" pulumi-lang-yaml=\"`username`\" pulumi-lang-java=\"`username`\"\u003e`username`\u003c/span\u003e must be specified.\n"}},"type":"object","required":["role"],"language":{"nodejs":{"requiredOutputs":["email","role","userId","username"]}}},"vercel:index/ProjectOidcTokenConfig:ProjectOidcTokenConfig":{"properties":{"issuerMode":{"type":"string","description":"Configures the URL of the \u003cspan pulumi-lang-nodejs=\"`iss`\" pulumi-lang-dotnet=\"`Iss`\" pulumi-lang-go=\"`iss`\" pulumi-lang-python=\"`iss`\" pulumi-lang-yaml=\"`iss`\" pulumi-lang-java=\"`iss`\"\u003e`iss`\u003c/span\u003e claim. \u003cspan pulumi-lang-nodejs=\"`team`\" pulumi-lang-dotnet=\"`Team`\" pulumi-lang-go=\"`team`\" pulumi-lang-python=\"`team`\" pulumi-lang-yaml=\"`team`\" pulumi-lang-java=\"`team`\"\u003e`team`\u003c/span\u003e = `https://oidc.vercel.com/\u003cspan pulumi-lang-nodejs=\"[teamSlug]\" pulumi-lang-dotnet=\"[TeamSlug]\" pulumi-lang-go=\"[teamSlug]\" pulumi-lang-python=\"[team_slug]\" pulumi-lang-yaml=\"[teamSlug]\" pulumi-lang-java=\"[teamSlug]\"\u003e[team_slug]\u003c/span\u003e` \u003cspan pulumi-lang-nodejs=\"`global`\" pulumi-lang-dotnet=\"`Global`\" pulumi-lang-go=\"`global`\" pulumi-lang-python=\"`global`\" pulumi-lang-yaml=\"`global`\" pulumi-lang-java=\"`global`\"\u003e`global`\u003c/span\u003e = `https://oidc.vercel.com`\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["issuerMode"]}}},"vercel:index/ProjectOptionsAllowlist:ProjectOptionsAllowlist":{"properties":{"paths":{"type":"array","items":{"$ref":"#/types/vercel:index/ProjectOptionsAllowlistPath:ProjectOptionsAllowlistPath"},"description":"The allowed paths for the OPTIONS Allowlist. Incoming requests will bypass Deployment Protection if they have the method `OPTIONS` and **start with** one of the path values.\n"}},"type":"object","required":["paths"]},"vercel:index/ProjectOptionsAllowlistPath:ProjectOptionsAllowlistPath":{"properties":{"value":{"type":"string","description":"The path prefix to compare with the incoming request path.\n"}},"type":"object","required":["value"]},"vercel:index/ProjectPasswordProtection:ProjectPasswordProtection":{"properties":{"deploymentType":{"type":"string","description":"The deployment environment to protect. Must be one of \u003cspan pulumi-lang-nodejs=\"`standardProtectionNew`\" pulumi-lang-dotnet=\"`StandardProtectionNew`\" pulumi-lang-go=\"`standardProtectionNew`\" pulumi-lang-python=\"`standard_protection_new`\" pulumi-lang-yaml=\"`standardProtectionNew`\" pulumi-lang-java=\"`standardProtectionNew`\"\u003e`standard_protection_new`\u003c/span\u003e (Standard Protection), \u003cspan pulumi-lang-nodejs=\"`standardProtection`\" pulumi-lang-dotnet=\"`StandardProtection`\" pulumi-lang-go=\"`standardProtection`\" pulumi-lang-python=\"`standard_protection`\" pulumi-lang-yaml=\"`standardProtection`\" pulumi-lang-java=\"`standardProtection`\"\u003e`standard_protection`\u003c/span\u003e (Legacy Standard Protection), \u003cspan pulumi-lang-nodejs=\"`allDeployments`\" pulumi-lang-dotnet=\"`AllDeployments`\" pulumi-lang-go=\"`allDeployments`\" pulumi-lang-python=\"`all_deployments`\" pulumi-lang-yaml=\"`allDeployments`\" pulumi-lang-java=\"`allDeployments`\"\u003e`all_deployments`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`onlyPreviewDeployments`\" pulumi-lang-dotnet=\"`OnlyPreviewDeployments`\" pulumi-lang-go=\"`onlyPreviewDeployments`\" pulumi-lang-python=\"`only_preview_deployments`\" pulumi-lang-yaml=\"`onlyPreviewDeployments`\" pulumi-lang-java=\"`onlyPreviewDeployments`\"\u003e`only_preview_deployments`\u003c/span\u003e.\n"},"password":{"type":"string","description":"The password that visitors must enter to gain access to your Preview Deployments. Drift detection is not possible for this field.\n","secret":true}},"type":"object","required":["deploymentType","password"]},"vercel:index/ProjectResourceConfig:ProjectResourceConfig":{"properties":{"fluid":{"type":"boolean","description":"Enable fluid compute for your Vercel Functions to automatically manage concurrency and optimize performance. Vercel will handle the defaults to ensure the best experience for your workload.\n"},"functionDefaultCpuType":{"type":"string","description":"The amount of CPU available to your Serverless Functions. Should be one of 'standard_legacy' (0.6vCPU), 'standard' (1vCPU) or 'performance' (1.7vCPUs).\n"},"functionDefaultRegions":{"type":"array","items":{"type":"string"},"description":"The default regions for Serverless Functions. Must be an array of valid region identifiers.\n"},"functionDefaultTimeout":{"type":"integer","description":"The default timeout for Serverless Functions.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["fluid","functionDefaultCpuType","functionDefaultRegions","functionDefaultTimeout"]}}},"vercel:index/ProjectRollingReleaseStage:ProjectRollingReleaseStage":{"properties":{"duration":{"type":"integer","description":"The duration in minutes to wait before advancing to the next stage. Required for automatic advancement type.\n"},"targetPercentage":{"type":"integer","description":"The percentage of traffic to route to this stage.\n"}},"type":"object","required":["targetPercentage"]},"vercel:index/ProjectTrustedIps:ProjectTrustedIps":{"properties":{"addresses":{"type":"array","items":{"$ref":"#/types/vercel:index/ProjectTrustedIpsAddress:ProjectTrustedIpsAddress"},"description":"The allowed IP addressses and CIDR ranges with optional descriptions.\n"},"deploymentType":{"type":"string","description":"The deployment environment to protect. Must be one of \u003cspan pulumi-lang-nodejs=\"`standardProtectionNew`\" pulumi-lang-dotnet=\"`StandardProtectionNew`\" pulumi-lang-go=\"`standardProtectionNew`\" pulumi-lang-python=\"`standard_protection_new`\" pulumi-lang-yaml=\"`standardProtectionNew`\" pulumi-lang-java=\"`standardProtectionNew`\"\u003e`standard_protection_new`\u003c/span\u003e (Standard Protection), \u003cspan pulumi-lang-nodejs=\"`standardProtection`\" pulumi-lang-dotnet=\"`StandardProtection`\" pulumi-lang-go=\"`standardProtection`\" pulumi-lang-python=\"`standard_protection`\" pulumi-lang-yaml=\"`standardProtection`\" pulumi-lang-java=\"`standardProtection`\"\u003e`standard_protection`\u003c/span\u003e (Legacy Standard Protection), \u003cspan pulumi-lang-nodejs=\"`allDeployments`\" pulumi-lang-dotnet=\"`AllDeployments`\" pulumi-lang-go=\"`allDeployments`\" pulumi-lang-python=\"`all_deployments`\" pulumi-lang-yaml=\"`allDeployments`\" pulumi-lang-java=\"`allDeployments`\"\u003e`all_deployments`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`onlyProductionDeployments`\" pulumi-lang-dotnet=\"`OnlyProductionDeployments`\" pulumi-lang-go=\"`onlyProductionDeployments`\" pulumi-lang-python=\"`only_production_deployments`\" pulumi-lang-yaml=\"`onlyProductionDeployments`\" pulumi-lang-java=\"`onlyProductionDeployments`\"\u003e`only_production_deployments`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`onlyPreviewDeployments`\" pulumi-lang-dotnet=\"`OnlyPreviewDeployments`\" pulumi-lang-go=\"`onlyPreviewDeployments`\" pulumi-lang-python=\"`only_preview_deployments`\" pulumi-lang-yaml=\"`onlyPreviewDeployments`\" pulumi-lang-java=\"`onlyPreviewDeployments`\"\u003e`only_preview_deployments`\u003c/span\u003e.\n"},"protectionMode":{"type":"string","description":"Whether or not Trusted IPs is optional to access a deployment. Must be either \u003cspan pulumi-lang-nodejs=\"`trustedIpRequired`\" pulumi-lang-dotnet=\"`TrustedIpRequired`\" pulumi-lang-go=\"`trustedIpRequired`\" pulumi-lang-python=\"`trusted_ip_required`\" pulumi-lang-yaml=\"`trustedIpRequired`\" pulumi-lang-java=\"`trustedIpRequired`\"\u003e`trusted_ip_required`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`trustedIpOptional`\" pulumi-lang-dotnet=\"`TrustedIpOptional`\" pulumi-lang-go=\"`trustedIpOptional`\" pulumi-lang-python=\"`trusted_ip_optional`\" pulumi-lang-yaml=\"`trustedIpOptional`\" pulumi-lang-java=\"`trustedIpOptional`\"\u003e`trusted_ip_optional`\u003c/span\u003e. \u003cspan pulumi-lang-nodejs=\"`trustedIpOptional`\" pulumi-lang-dotnet=\"`TrustedIpOptional`\" pulumi-lang-go=\"`trustedIpOptional`\" pulumi-lang-python=\"`trusted_ip_optional`\" pulumi-lang-yaml=\"`trustedIpOptional`\" pulumi-lang-java=\"`trustedIpOptional`\"\u003e`trusted_ip_optional`\u003c/span\u003e is only available with Standalone Trusted IPs.\n"}},"type":"object","required":["addresses","deploymentType"],"language":{"nodejs":{"requiredOutputs":["addresses","deploymentType","protectionMode"]}}},"vercel:index/ProjectTrustedIpsAddress:ProjectTrustedIpsAddress":{"properties":{"note":{"type":"string","description":"A description for the value\n"},"value":{"type":"string","description":"The address or CIDR range that can access deployments.\n","secret":true}},"type":"object","required":["value"]},"vercel:index/ProjectVercelAuthentication:ProjectVercelAuthentication":{"properties":{"deploymentType":{"type":"string","description":"The deployment environment to protect. The default value is \u003cspan pulumi-lang-nodejs=\"`standardProtectionNew`\" pulumi-lang-dotnet=\"`StandardProtectionNew`\" pulumi-lang-go=\"`standardProtectionNew`\" pulumi-lang-python=\"`standard_protection_new`\" pulumi-lang-yaml=\"`standardProtectionNew`\" pulumi-lang-java=\"`standardProtectionNew`\"\u003e`standard_protection_new`\u003c/span\u003e (Standard Protection). Must be one of \u003cspan pulumi-lang-nodejs=\"`standardProtectionNew`\" pulumi-lang-dotnet=\"`StandardProtectionNew`\" pulumi-lang-go=\"`standardProtectionNew`\" pulumi-lang-python=\"`standard_protection_new`\" pulumi-lang-yaml=\"`standardProtectionNew`\" pulumi-lang-java=\"`standardProtectionNew`\"\u003e`standard_protection_new`\u003c/span\u003e (Standard Protection), \u003cspan pulumi-lang-nodejs=\"`standardProtection`\" pulumi-lang-dotnet=\"`StandardProtection`\" pulumi-lang-go=\"`standardProtection`\" pulumi-lang-python=\"`standard_protection`\" pulumi-lang-yaml=\"`standardProtection`\" pulumi-lang-java=\"`standardProtection`\"\u003e`standard_protection`\u003c/span\u003e (Legacy Standard Protection), \u003cspan pulumi-lang-nodejs=\"`allDeployments`\" pulumi-lang-dotnet=\"`AllDeployments`\" pulumi-lang-go=\"`allDeployments`\" pulumi-lang-python=\"`all_deployments`\" pulumi-lang-yaml=\"`allDeployments`\" pulumi-lang-java=\"`allDeployments`\"\u003e`all_deployments`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`onlyPreviewDeployments`\" pulumi-lang-dotnet=\"`OnlyPreviewDeployments`\" pulumi-lang-go=\"`onlyPreviewDeployments`\" pulumi-lang-python=\"`only_preview_deployments`\" pulumi-lang-yaml=\"`onlyPreviewDeployments`\" pulumi-lang-java=\"`onlyPreviewDeployments`\"\u003e`only_preview_deployments`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["deploymentType"]}}},"vercel:index/TeamConfigRemoteCaching:TeamConfigRemoteCaching":{"properties":{"enabled":{"type":"boolean","description":"Indicates if Remote Caching is enabled.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["enabled"]}}},"vercel:index/TeamConfigSaml:TeamConfigSaml":{"properties":{"enforced":{"type":"boolean","description":"Indicates if SAML is enforced for the team.\n"},"roles":{"type":"object","additionalProperties":{"$ref":"#/types/vercel:index/TeamConfigSamlRoles:TeamConfigSamlRoles"},"description":"Directory groups to role or access group mappings. For each directory group, specify either a role or access group id.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["enforced","roles"]}}},"vercel:index/TeamConfigSamlRoles:TeamConfigSamlRoles":{"properties":{"accessGroupId":{"type":"string","description":"The access group id to assign to the user.\n"},"role":{"type":"string","description":"The team level role to assign to the user. One of 'MEMBER', 'OWNER', 'VIEWER', 'DEVELOPER', 'BILLING' or 'CONTRIBUTOR'.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["accessGroupId","role"]}}},"vercel:index/TeamMemberProject:TeamMemberProject":{"properties":{"projectId":{"type":"string","description":"The ID of the project that the user should be granted access to.\n"},"role":{"type":"string","description":"The role that the user should have in the project.\n"}},"type":"object","required":["projectId","role"]},"vercel:index/getCustomEnvironmentBranchTracking:getCustomEnvironmentBranchTracking":{"properties":{"pattern":{"type":"string","description":"The pattern of the branch name to track.\n"},"type":{"type":"string","description":"How a branch name should be matched against the pattern. Must be one of 'startsWith', 'endsWith' or 'equals'.\n"}},"type":"object","required":["pattern","type"],"language":{"nodejs":{"requiredInputs":[]}}},"vercel:index/getDsyncGroupsList:getDsyncGroupsList":{"properties":{"id":{"type":"string","description":"The ID of the group on Vercel.\n"},"name":{"type":"string","description":"The name of the group on the Identity Provider.\n"}},"type":"object","required":["id","name"],"language":{"nodejs":{"requiredInputs":[]}}},"vercel:index/getMicrofrontendGroupDefaultApp:getMicrofrontendGroupDefaultApp":{"properties":{"defaultRoute":{"type":"string","description":"The default route for the project. Used for the screenshot of deployments.\n"},"id":{"type":"string","description":"The unique identifier for this resource. Format: team*id/microfrontend*group_id.\n"},"projectId":{"type":"string","description":"The ID of the project.\n"}},"type":"object","required":["defaultRoute","id","projectId"],"language":{"nodejs":{"requiredInputs":[]}}},"vercel:index/getProjectEnvironment:getProjectEnvironment":{"properties":{"comment":{"type":"string","description":"A comment explaining what the environment variable is for.\n"},"customEnvironmentIds":{"type":"array","items":{"type":"string"},"description":"The IDs of Custom Environments that the Environment Variable should be present on.\n"},"gitBranch":{"type":"string","description":"The git branch of the environment variable.\n"},"id":{"type":"string","description":"The ID of the environment variable\n"},"key":{"type":"string","description":"The name of the environment variable.\n"},"sensitive":{"type":"boolean","description":"Whether the Environment Variable is sensitive or not. Note that the value will be \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e for sensitive environment variables.\n"},"targets":{"type":"array","items":{"type":"string"},"description":"The environments that the environment variable should be present on. Valid targets are either \u003cspan pulumi-lang-nodejs=\"`production`\" pulumi-lang-dotnet=\"`Production`\" pulumi-lang-go=\"`production`\" pulumi-lang-python=\"`production`\" pulumi-lang-yaml=\"`production`\" pulumi-lang-java=\"`production`\"\u003e`production`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`preview`\" pulumi-lang-dotnet=\"`Preview`\" pulumi-lang-go=\"`preview`\" pulumi-lang-python=\"`preview`\" pulumi-lang-yaml=\"`preview`\" pulumi-lang-java=\"`preview`\"\u003e`preview`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`development`\" pulumi-lang-dotnet=\"`Development`\" pulumi-lang-go=\"`development`\" pulumi-lang-python=\"`development`\" pulumi-lang-yaml=\"`development`\" pulumi-lang-java=\"`development`\"\u003e`development`\u003c/span\u003e.\n"},"value":{"type":"string","description":"The value of the environment variable.\n"}},"type":"object","required":["comment","customEnvironmentIds","gitBranch","id","key","sensitive","targets","value"],"language":{"nodejs":{"requiredInputs":[]}}},"vercel:index/getProjectGitComments:getProjectGitComments":{"properties":{"onCommit":{"type":"boolean","description":"Whether Commit comments are enabled\n"},"onPullRequest":{"type":"boolean","description":"Whether Pull Request comments are enabled\n"}},"type":"object","required":["onCommit","onPullRequest"],"language":{"nodejs":{"requiredInputs":[]}}},"vercel:index/getProjectGitProviderOptions:getProjectGitProviderOptions":{"properties":{"createDeployments":{"type":"boolean","description":"Whether to create deployments.\n"},"repositoryDispatchEvents":{"type":"boolean","description":"Whether repository dispatch events are enabled.\n"},"requireVerifiedCommits":{"type":"boolean","description":"Whether to require verified commits.\n"}},"type":"object","required":["createDeployments","repositoryDispatchEvents","requireVerifiedCommits"],"language":{"nodejs":{"requiredInputs":[]}}},"vercel:index/getProjectGitRepository:getProjectGitRepository":{"properties":{"deployHooks":{"type":"array","items":{"$ref":"#/types/vercel:index/getProjectGitRepositoryDeployHook:getProjectGitRepositoryDeployHook"},"description":"Deploy hooks are unique URLs that allow you to trigger a deployment of a given branch. See https://vercel.com/docs/deployments/deploy-hooks for full information.\n"},"productionBranch":{"type":"string","description":"By default, every commit pushed to the main branch will trigger a Production Deployment instead of the usual Preview Deployment. You can switch to a different branch here.\n"},"repo":{"type":"string","description":"The name of the git repository. For example: `vercel/next.js`.\n"},"type":{"type":"string","description":"The git provider of the repository. Must be either \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e.\n"}},"type":"object","required":["deployHooks","productionBranch","repo","type"],"language":{"nodejs":{"requiredInputs":[]}}},"vercel:index/getProjectGitRepositoryDeployHook:getProjectGitRepositoryDeployHook":{"properties":{"id":{"type":"string","description":"The ID of the deploy hook.\n"},"name":{"type":"string","description":"The name of the deploy hook.\n"},"ref":{"type":"string","description":"The branch or commit hash that should be deployed.\n"},"url":{"type":"string","description":"A URL that, when a POST request is made to, will trigger a new deployment.\n","secret":true}},"type":"object","required":["id","name","ref","url"],"language":{"nodejs":{"requiredInputs":[]}}},"vercel:index/getProjectMembersMember:getProjectMembersMember":{"properties":{"email":{"type":"string","description":"The email of the user.\n"},"role":{"type":"string","description":"The role of the user in the project. One of 'ADMIN', 'PROJECT*DEVELOPER', or 'PROJECT*VIEWER'.\n"},"userId":{"type":"string","description":"The ID of the user.\n"},"username":{"type":"string","description":"The username of the user.\n"}},"type":"object","required":["email","role","userId","username"],"language":{"nodejs":{"requiredInputs":[]}}},"vercel:index/getProjectOidcTokenConfig:getProjectOidcTokenConfig":{"properties":{"issuerMode":{"type":"string","description":"Configures the URL of the \u003cspan pulumi-lang-nodejs=\"`iss`\" pulumi-lang-dotnet=\"`Iss`\" pulumi-lang-go=\"`iss`\" pulumi-lang-python=\"`iss`\" pulumi-lang-yaml=\"`iss`\" pulumi-lang-java=\"`iss`\"\u003e`iss`\u003c/span\u003e claim. \u003cspan pulumi-lang-nodejs=\"`team`\" pulumi-lang-dotnet=\"`Team`\" pulumi-lang-go=\"`team`\" pulumi-lang-python=\"`team`\" pulumi-lang-yaml=\"`team`\" pulumi-lang-java=\"`team`\"\u003e`team`\u003c/span\u003e = `https://oidc.vercel.com/\u003cspan pulumi-lang-nodejs=\"[teamSlug]\" pulumi-lang-dotnet=\"[TeamSlug]\" pulumi-lang-go=\"[teamSlug]\" pulumi-lang-python=\"[team_slug]\" pulumi-lang-yaml=\"[teamSlug]\" pulumi-lang-java=\"[teamSlug]\"\u003e[team_slug]\u003c/span\u003e` \u003cspan pulumi-lang-nodejs=\"`global`\" pulumi-lang-dotnet=\"`Global`\" pulumi-lang-go=\"`global`\" pulumi-lang-python=\"`global`\" pulumi-lang-yaml=\"`global`\" pulumi-lang-java=\"`global`\"\u003e`global`\u003c/span\u003e = `https://oidc.vercel.com`\n"}},"type":"object","required":["issuerMode"],"language":{"nodejs":{"requiredInputs":[]}}},"vercel:index/getProjectOptionsAllowlist:getProjectOptionsAllowlist":{"properties":{"paths":{"type":"array","items":{"$ref":"#/types/vercel:index/getProjectOptionsAllowlistPath:getProjectOptionsAllowlistPath"},"description":"The allowed paths for the OPTIONS Allowlist. Incoming requests will bypass Deployment Protection if they have the method `OPTIONS` and **start with** one of the path values.\n"}},"type":"object","required":["paths"],"language":{"nodejs":{"requiredInputs":[]}}},"vercel:index/getProjectOptionsAllowlistPath:getProjectOptionsAllowlistPath":{"properties":{"value":{"type":"string"}},"type":"object","required":["value"],"language":{"nodejs":{"requiredInputs":[]}}},"vercel:index/getProjectPasswordProtection:getProjectPasswordProtection":{"properties":{"deploymentType":{"type":"string","description":"The deployment environment that will be protected.\n"}},"type":"object","required":["deploymentType"],"language":{"nodejs":{"requiredInputs":[]}}},"vercel:index/getProjectResourceConfig:getProjectResourceConfig":{"properties":{"fluid":{"type":"boolean","description":"Enable fluid compute for your Vercel Functions to automatically manage concurrency and optimize performance. Vercel will handle the defaults to ensure the best experience for your workload.\n"},"functionDefaultCpuType":{"type":"string","description":"The amount of CPU available to your Serverless Functions. Should be one of 'standard_legacy' (0.6vCPU), 'standard' (1vCPU) or 'performance' (1.7vCPUs).\n"},"functionDefaultRegions":{"type":"array","items":{"type":"string"},"description":"The default regions for Serverless Functions.\n"},"functionDefaultTimeout":{"type":"integer","description":"The default timeout for Serverless Functions.\n"}},"type":"object","required":["fluid","functionDefaultCpuType","functionDefaultRegions","functionDefaultTimeout"],"language":{"nodejs":{"requiredInputs":[]}}},"vercel:index/getProjectRollingReleaseStage:getProjectRollingReleaseStage":{"properties":{"duration":{"type":"integer","description":"The duration in minutes to wait before advancing to the next stage. Present for automatic advancement type.\n"},"targetPercentage":{"type":"integer","description":"The percentage of traffic to route to this stage.\n"}},"type":"object","required":["duration","targetPercentage"],"language":{"nodejs":{"requiredInputs":[]}}},"vercel:index/getProjectTrustedIps:getProjectTrustedIps":{"properties":{"addresses":{"type":"array","items":{"$ref":"#/types/vercel:index/getProjectTrustedIpsAddress:getProjectTrustedIpsAddress"},"description":"The allowed IP addressses and CIDR ranges with optional descriptions.\n"},"deploymentType":{"type":"string","description":"The deployment environment that will be protected.\n"},"protectionMode":{"type":"string","description":"Whether or not Trusted IPs is required or optional to access a deployment.\n"}},"type":"object","required":["addresses","deploymentType","protectionMode"],"language":{"nodejs":{"requiredInputs":[]}}},"vercel:index/getProjectTrustedIpsAddress:getProjectTrustedIpsAddress":{"properties":{"note":{"type":"string"},"value":{"type":"string"}},"type":"object","required":["note","value"],"language":{"nodejs":{"requiredInputs":[]}}},"vercel:index/getProjectVercelAuthentication:getProjectVercelAuthentication":{"properties":{"deploymentType":{"type":"string","description":"The deployment environment that will be protected.\n"}},"type":"object","required":["deploymentType"],"language":{"nodejs":{"requiredInputs":[]}}},"vercel:index/getTeamConfigRemoteCaching:getTeamConfigRemoteCaching":{"properties":{"enabled":{"type":"boolean","description":"Indicates if Remote Caching is enabled.\n"}},"type":"object","required":["enabled"],"language":{"nodejs":{"requiredInputs":[]}}},"vercel:index/getTeamConfigSaml:getTeamConfigSaml":{"properties":{"enforced":{"type":"boolean","description":"Indicates if SAML is enforced for the team.\n"},"roles":{"type":"object","additionalProperties":{"$ref":"#/types/vercel:index/getTeamConfigSamlRoles:getTeamConfigSamlRoles"},"description":"Directory groups to role or access group mappings. For each directory group, either a role or access group id is specified.\n"}},"type":"object","required":["enforced","roles"],"language":{"nodejs":{"requiredInputs":[]}}},"vercel:index/getTeamConfigSamlRoles:getTeamConfigSamlRoles":{"properties":{"accessGroupId":{"type":"string","description":"The access group the assign is assigned to.\n"},"role":{"type":"string","description":"The team level role the user is assigned. One of 'MEMBER', 'OWNER', 'VIEWER', 'DEVELOPER', 'BILLING' or 'CONTRIBUTOR'.\n"}},"type":"object","required":["accessGroupId","role"],"language":{"nodejs":{"requiredInputs":[]}}},"vercel:index/getTeamMemberProject:getTeamMemberProject":{"properties":{"projectId":{"type":"string","description":"The ID of the project that the user should be granted access to.\n"},"role":{"type":"string","description":"The role that the user should have in the project.\n"}},"type":"object","required":["projectId","role"],"language":{"nodejs":{"requiredInputs":[]}}}},"provider":{"description":"The provider type for the vercel package. By default, resources use package-wide configuration\nsettings, however an explicit `Provider` instance may be created and passed during resource\nconstruction to achieve fine-grained programmatic control over provider settings. See the\n[documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information.\n","properties":{"apiToken":{"type":"string","description":"The Vercel API Token to use. This can also be specified with the `VERCEL_API_TOKEN` shell environment variable. Tokens can be created from your [Vercel settings](https://vercel.com/account/tokens).","secret":true},"team":{"type":"string","description":"The default Vercel Team to use when creating resources or reading data sources. This can be provided as either a team slug, or team ID. The slug and ID are both available from the Team Settings page in the Vercel dashboard."}},"inputProperties":{"apiToken":{"type":"string","description":"The Vercel API Token to use. This can also be specified with the `VERCEL_API_TOKEN` shell environment variable. Tokens can be created from your [Vercel settings](https://vercel.com/account/tokens).","secret":true},"team":{"type":"string","description":"The default Vercel Team to use when creating resources or reading data sources. This can be provided as either a team slug, or team ID. The slug and ID are both available from the Team Settings page in the Vercel dashboard."}},"methods":{"terraformConfig":"pulumi:providers:vercel/terraformConfig"}},"resources":{"vercel:index/accessGroup:AccessGroup":{"description":"Provides an Access Group Resource.\n\nAccess Groups provide a way to manage groups of Vercel users across projects on your team. They are a set of project role assignations, a combination of Vercel users and the projects they work on.\n\nFor more detailed information, please see the [Vercel documentation](https://vercel.com/docs/accounts/team-members-and-roles/access-groups).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = new vercel.AccessGroup(\"example\", {name: \"example-access-group\"});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.AccessGroup(\"example\", name=\"example-access-group\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Vercel.AccessGroup(\"example\", new()\n    {\n        Name = \"example-access-group\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.NewAccessGroup(ctx, \"example\", \u0026vercel.AccessGroupArgs{\n\t\t\tName: pulumi.String(\"example-access-group\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.vercel.AccessGroup;\nimport com.pulumiverse.vercel.AccessGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new AccessGroup(\"example\", AccessGroupArgs.builder()\n            .name(\"example-access-group\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:AccessGroup\n    properties:\n      name: example-access-group\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIf importing into a personal account, or with a team configured on\n\nthe provider, simply use the access_group_id.\n\n```sh\n$ pulumi import vercel:index/accessGroup:AccessGroup example ag_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nIf importing to a team, use the team_id and access_group_id.\n\n```sh\n$ pulumi import vercel:index/accessGroup:AccessGroup example team_xxxxxxxxxxxxxxxxxxxxxxxx/ag_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n","properties":{"name":{"type":"string","description":"The name of the Access Group\n"},"teamId":{"type":"string","description":"The ID of the team the Access Group should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"required":["name","teamId"],"inputProperties":{"name":{"type":"string","description":"The name of the Access Group\n"},"teamId":{"type":"string","description":"The ID of the team the Access Group should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering AccessGroup resources.\n","properties":{"name":{"type":"string","description":"The name of the Access Group\n"},"teamId":{"type":"string","description":"The ID of the team the Access Group should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object"}},"vercel:index/accessGroupProject:AccessGroupProject":{"description":"Provides an Access Group Project Resource.\n\nAn Access Group Project resource defines the relationship between a \u003cspan pulumi-lang-nodejs=\"`vercel.AccessGroup`\" pulumi-lang-dotnet=\"`vercel.AccessGroup`\" pulumi-lang-go=\"`AccessGroup`\" pulumi-lang-python=\"`AccessGroup`\" pulumi-lang-yaml=\"`vercel.AccessGroup`\" pulumi-lang-java=\"`vercel.AccessGroup`\"\u003e`vercel.AccessGroup`\u003c/span\u003e and a \u003cspan pulumi-lang-nodejs=\"`vercel.Project`\" pulumi-lang-dotnet=\"`vercel.Project`\" pulumi-lang-go=\"`Project`\" pulumi-lang-python=\"`Project`\" pulumi-lang-yaml=\"`vercel.Project`\" pulumi-lang-java=\"`vercel.Project`\"\u003e`vercel.Project`\u003c/span\u003e.\n\nFor more detailed information, please see the [Vercel documentation](https://vercel.com/docs/accounts/team-members-and-roles/access-groups).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = new vercel.Project(\"example\", {name: \"example-project\"});\nconst exampleAccessGroup = new vercel.AccessGroup(\"example\", {name: \"example-access-group\"});\nconst exampleAccessGroupProject = new vercel.AccessGroupProject(\"example\", {\n    projectId: example.id,\n    accessGroupId: exampleAccessGroup.id,\n    role: \"ADMIN\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.Project(\"example\", name=\"example-project\")\nexample_access_group = vercel.AccessGroup(\"example\", name=\"example-access-group\")\nexample_access_group_project = vercel.AccessGroupProject(\"example\",\n    project_id=example.id,\n    access_group_id=example_access_group.id,\n    role=\"ADMIN\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Vercel.Project(\"example\", new()\n    {\n        Name = \"example-project\",\n    });\n\n    var exampleAccessGroup = new Vercel.AccessGroup(\"example\", new()\n    {\n        Name = \"example-access-group\",\n    });\n\n    var exampleAccessGroupProject = new Vercel.AccessGroupProject(\"example\", new()\n    {\n        ProjectId = example.Id,\n        AccessGroupId = exampleAccessGroup.Id,\n        Role = \"ADMIN\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := vercel.NewProject(ctx, \"example\", \u0026vercel.ProjectArgs{\n\t\t\tName: pulumi.String(\"example-project\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleAccessGroup, err := vercel.NewAccessGroup(ctx, \"example\", \u0026vercel.AccessGroupArgs{\n\t\t\tName: pulumi.String(\"example-access-group\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewAccessGroupProject(ctx, \"example\", \u0026vercel.AccessGroupProjectArgs{\n\t\t\tProjectId:     example.ID(),\n\t\t\tAccessGroupId: exampleAccessGroup.ID(),\n\t\t\tRole:          pulumi.String(\"ADMIN\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.vercel.Project;\nimport com.pulumiverse.vercel.ProjectArgs;\nimport com.pulumiverse.vercel.AccessGroup;\nimport com.pulumiverse.vercel.AccessGroupArgs;\nimport com.pulumiverse.vercel.AccessGroupProject;\nimport com.pulumiverse.vercel.AccessGroupProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Project(\"example\", ProjectArgs.builder()\n            .name(\"example-project\")\n            .build());\n\n        var exampleAccessGroup = new AccessGroup(\"exampleAccessGroup\", AccessGroupArgs.builder()\n            .name(\"example-access-group\")\n            .build());\n\n        var exampleAccessGroupProject = new AccessGroupProject(\"exampleAccessGroupProject\", AccessGroupProjectArgs.builder()\n            .projectId(example.id())\n            .accessGroupId(exampleAccessGroup.id())\n            .role(\"ADMIN\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:Project\n    properties:\n      name: example-project\n  exampleAccessGroup:\n    type: vercel:AccessGroup\n    name: example\n    properties:\n      name: example-access-group\n  exampleAccessGroupProject:\n    type: vercel:AccessGroupProject\n    name: example\n    properties:\n      projectId: ${example.id}\n      accessGroupId: ${exampleAccessGroup.id}\n      role: ADMIN\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIf importing into a personal account, or with a team configured on\n\nthe provider, use the access_group_id and project_id.\n\n```sh\n$ pulumi import vercel:index/accessGroupProject:AccessGroupProject example ag_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nIf importing to a team, use the team_id, access_group_id and project_id.\n\n```sh\n$ pulumi import vercel:index/accessGroupProject:AccessGroupProject example team_xxxxxxxxxxxxxxxxxxxxxxxx/ag_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n","properties":{"accessGroupId":{"type":"string","description":"The ID of the Access Group.\n"},"projectId":{"type":"string","description":"The Project ID to assign to the access group.\n"},"role":{"type":"string","description":"The project role to assign to the access group. Must be either `ADMIN`, `PROJECT_DEVELOPER`, or `PROJECT_VIEWER`.\n"},"teamId":{"type":"string","description":"The ID of the team the access group project should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"required":["accessGroupId","projectId","role","teamId"],"inputProperties":{"accessGroupId":{"type":"string","description":"The ID of the Access Group.\n"},"projectId":{"type":"string","description":"The Project ID to assign to the access group.\n"},"role":{"type":"string","description":"The project role to assign to the access group. Must be either `ADMIN`, `PROJECT_DEVELOPER`, or `PROJECT_VIEWER`.\n"},"teamId":{"type":"string","description":"The ID of the team the access group project should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"requiredInputs":["accessGroupId","projectId","role"],"stateInputs":{"description":"Input properties used for looking up and filtering AccessGroupProject resources.\n","properties":{"accessGroupId":{"type":"string","description":"The ID of the Access Group.\n"},"projectId":{"type":"string","description":"The Project ID to assign to the access group.\n"},"role":{"type":"string","description":"The project role to assign to the access group. Must be either `ADMIN`, `PROJECT_DEVELOPER`, or `PROJECT_VIEWER`.\n"},"teamId":{"type":"string","description":"The ID of the team the access group project should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object"}},"vercel:index/alias:Alias":{"description":"Provides an Alias resource.\n\nAn Alias allows a \u003cspan pulumi-lang-nodejs=\"`vercel.Deployment`\" pulumi-lang-dotnet=\"`vercel.Deployment`\" pulumi-lang-go=\"`Deployment`\" pulumi-lang-python=\"`Deployment`\" pulumi-lang-yaml=\"`vercel.Deployment`\" pulumi-lang-java=\"`vercel.Deployment`\"\u003e`vercel.Deployment`\u003c/span\u003e to be accessed through a different URL.\n","properties":{"alias":{"type":"string","description":"The Alias we want to assign to the deployment defined in the URL.\n","language":{"csharp":{"name":"DeploymentAlias"}}},"deploymentId":{"type":"string","description":"The id of the Deployment the Alias should be associated with.\n"},"teamId":{"type":"string","description":"The ID of the team the Alias and Deployment exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"required":["alias","deploymentId","teamId"],"inputProperties":{"alias":{"type":"string","description":"The Alias we want to assign to the deployment defined in the URL.\n","language":{"csharp":{"name":"DeploymentAlias"}}},"deploymentId":{"type":"string","description":"The id of the Deployment the Alias should be associated with.\n"},"teamId":{"type":"string","description":"The ID of the team the Alias and Deployment exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"requiredInputs":["alias","deploymentId"],"stateInputs":{"description":"Input properties used for looking up and filtering Alias resources.\n","properties":{"alias":{"type":"string","description":"The Alias we want to assign to the deployment defined in the URL.\n","language":{"csharp":{"name":"DeploymentAlias"}}},"deploymentId":{"type":"string","description":"The id of the Deployment the Alias should be associated with.\n"},"teamId":{"type":"string","description":"The ID of the team the Alias and Deployment exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object"}},"vercel:index/attackChallengeMode:AttackChallengeMode":{"description":"Provides an Attack Challenge Mode resource.\n\nAttack Challenge Mode prevent malicious traffic by showing a verification challenge for every visitor.\n\nNote: When\u003cspan pulumi-lang-nodejs=\" attackModeActiveUntil \" pulumi-lang-dotnet=\" AttackModeActiveUntil \" pulumi-lang-go=\" attackModeActiveUntil \" pulumi-lang-python=\" attack_mode_active_until \" pulumi-lang-yaml=\" attackModeActiveUntil \" pulumi-lang-java=\" attackModeActiveUntil \"\u003e attack_mode_active_until \u003c/span\u003eis reached, Vercel automatically disables Attack Challenge Mode. This will cause enabled to drift to false.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = new vercel.Project(\"example\", {name: \"example-project\"});\nconst exampleAttackChallengeMode = new vercel.AttackChallengeMode(\"example\", {\n    projectId: example.id,\n    enabled: true,\n    attackModeActiveUntil: attackModeActiveUntil,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.Project(\"example\", name=\"example-project\")\nexample_attack_challenge_mode = vercel.AttackChallengeMode(\"example\",\n    project_id=example.id,\n    enabled=True,\n    attack_mode_active_until=attack_mode_active_until)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Vercel.Project(\"example\", new()\n    {\n        Name = \"example-project\",\n    });\n\n    var exampleAttackChallengeMode = new Vercel.AttackChallengeMode(\"example\", new()\n    {\n        ProjectId = example.Id,\n        Enabled = true,\n        AttackModeActiveUntil = attackModeActiveUntil,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := vercel.NewProject(ctx, \"example\", \u0026vercel.ProjectArgs{\n\t\t\tName: pulumi.String(\"example-project\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewAttackChallengeMode(ctx, \"example\", \u0026vercel.AttackChallengeModeArgs{\n\t\t\tProjectId:             example.ID(),\n\t\t\tEnabled:               pulumi.Bool(true),\n\t\t\tAttackModeActiveUntil: pulumi.Any(attackModeActiveUntil),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.vercel.Project;\nimport com.pulumiverse.vercel.ProjectArgs;\nimport com.pulumiverse.vercel.AttackChallengeMode;\nimport com.pulumiverse.vercel.AttackChallengeModeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Project(\"example\", ProjectArgs.builder()\n            .name(\"example-project\")\n            .build());\n\n        var exampleAttackChallengeMode = new AttackChallengeMode(\"exampleAttackChallengeMode\", AttackChallengeModeArgs.builder()\n            .projectId(example.id())\n            .enabled(true)\n            .attackModeActiveUntil(attackModeActiveUntil)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:Project\n    properties:\n      name: example-project\n  exampleAttackChallengeMode:\n    type: vercel:AttackChallengeMode\n    name: example\n    properties:\n      projectId: ${example.id}\n      enabled: true\n      attackModeActiveUntil: ${attackModeActiveUntil}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nYou can import via the team_id and project_id.\n\n- team_id can be found in the team `settings` tab in the Vercel UI.\n\n- project_id can be found in the project `settings` tab in the Vercel UI.\n\n```sh\n$ pulumi import vercel:index/attackChallengeMode:AttackChallengeMode example team_xxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n","properties":{"attackModeActiveUntil":{"type":"integer","description":"Unix timestamp in milliseconds (like Date.now()) until which Attack Challenge Mode stays active.\n"},"enabled":{"type":"boolean","description":"Whether Attack Challenge Mode is enabled or not.\n"},"projectId":{"type":"string","description":"The ID of the Project to toggle Attack Challenge Mode on.\n"},"teamId":{"type":"string","description":"The ID of the team the Project exists under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"required":["attackModeActiveUntil","enabled","projectId","teamId"],"inputProperties":{"attackModeActiveUntil":{"type":"integer","description":"Unix timestamp in milliseconds (like Date.now()) until which Attack Challenge Mode stays active.\n"},"enabled":{"type":"boolean","description":"Whether Attack Challenge Mode is enabled or not.\n"},"projectId":{"type":"string","description":"The ID of the Project to toggle Attack Challenge Mode on.\n"},"teamId":{"type":"string","description":"The ID of the team the Project exists under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"requiredInputs":["attackModeActiveUntil","enabled","projectId"],"stateInputs":{"description":"Input properties used for looking up and filtering AttackChallengeMode resources.\n","properties":{"attackModeActiveUntil":{"type":"integer","description":"Unix timestamp in milliseconds (like Date.now()) until which Attack Challenge Mode stays active.\n"},"enabled":{"type":"boolean","description":"Whether Attack Challenge Mode is enabled or not.\n"},"projectId":{"type":"string","description":"The ID of the Project to toggle Attack Challenge Mode on.\n"},"teamId":{"type":"string","description":"The ID of the team the Project exists under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object"}},"vercel:index/customCertificate:CustomCertificate":{"description":"Provides a Custom Certificate Resource, allowing Custom Certificates to be uploaded to Vercel.\n\nBy default, Vercel provides all domains with a custom SSL certificates. However, Enterprise teams can upload their own custom SSL certificate.\n\nFor more detailed information, please see the [Vercel documentation](https://vercel.com/docs/domains/custom-SSL-certificate).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as std from \"@pulumi/std\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = new vercel.CustomCertificate(\"example\", {\n    privateKey: std.index.file({\n        input: \"private.key\",\n    }).result,\n    certificate: std.index.file({\n        input: \"certificate.crt\",\n    }).result,\n    certificateAuthorityCertificate: std.index.file({\n        input: \"ca.crt\",\n    }).result,\n});\n```\n```python\nimport pulumi\nimport pulumi_std as std\nimport pulumiverse_vercel as vercel\n\nexample = vercel.CustomCertificate(\"example\",\n    private_key=std.index.file(input=\"private.key\")[\"result\"],\n    certificate=std.index.file(input=\"certificate.crt\")[\"result\"],\n    certificate_authority_certificate=std.index.file(input=\"ca.crt\")[\"result\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Std = Pulumi.Std;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Vercel.CustomCertificate(\"example\", new()\n    {\n        PrivateKey = Std.Index.File.Invoke(new()\n        {\n            Input = \"private.key\",\n        }).Result,\n        Certificate = Std.Index.File.Invoke(new()\n        {\n            Input = \"certificate.crt\",\n        }).Result,\n        CertificateAuthorityCertificate = Std.Index.File.Invoke(new()\n        {\n            Input = \"ca.crt\",\n        }).Result,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, map[string]interface{}{\n\t\t\t\"input\": \"private.key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, map[string]interface{}{\n\t\t\t\"input\": \"certificate.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile2, err := std.File(ctx, map[string]interface{}{\n\t\t\t\"input\": \"ca.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewCustomCertificate(ctx, \"example\", \u0026vercel.CustomCertificateArgs{\n\t\t\tPrivateKey:                      invokeFile.Result,\n\t\t\tCertificate:                     invokeFile1.Result,\n\t\t\tCertificateAuthorityCertificate: invokeFile2.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.vercel.CustomCertificate;\nimport com.pulumiverse.vercel.CustomCertificateArgs;\nimport com.pulumi.std.StdFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new CustomCertificate(\"example\", CustomCertificateArgs.builder()\n            .privateKey(StdFunctions.file(Map.of(\"input\", \"private.key\")).result())\n            .certificate(StdFunctions.file(Map.of(\"input\", \"certificate.crt\")).result())\n            .certificateAuthorityCertificate(StdFunctions.file(Map.of(\"input\", \"ca.crt\")).result())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:CustomCertificate\n    properties:\n      privateKey:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: private.key\n          return: result\n      certificate:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: certificate.crt\n          return: result\n      certificateAuthorityCertificate:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: ca.crt\n          return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"certificate":{"type":"string","description":"The certificate itself. Should be in PEM format.\n"},"certificateAuthorityCertificate":{"type":"string","description":"The Certificate Authority root certificate such as one of Let's Encrypt's ISRG root certificates. This will be provided by your certificate issuer and is different to the core certificate. This may be included in their download process or available for download on their website. Should be in PEM format.\n"},"privateKey":{"type":"string","description":"The private key of the Certificate. Should be in PEM format.\n","secret":true},"teamId":{"type":"string","description":"The ID of the team the Custom Certificate should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"required":["certificate","certificateAuthorityCertificate","privateKey","teamId"],"inputProperties":{"certificate":{"type":"string","description":"The certificate itself. Should be in PEM format.\n"},"certificateAuthorityCertificate":{"type":"string","description":"The Certificate Authority root certificate such as one of Let's Encrypt's ISRG root certificates. This will be provided by your certificate issuer and is different to the core certificate. This may be included in their download process or available for download on their website. Should be in PEM format.\n"},"privateKey":{"type":"string","description":"The private key of the Certificate. Should be in PEM format.\n","secret":true},"teamId":{"type":"string","description":"The ID of the team the Custom Certificate should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"requiredInputs":["certificate","certificateAuthorityCertificate","privateKey"],"stateInputs":{"description":"Input properties used for looking up and filtering CustomCertificate resources.\n","properties":{"certificate":{"type":"string","description":"The certificate itself. Should be in PEM format.\n"},"certificateAuthorityCertificate":{"type":"string","description":"The Certificate Authority root certificate such as one of Let's Encrypt's ISRG root certificates. This will be provided by your certificate issuer and is different to the core certificate. This may be included in their download process or available for download on their website. Should be in PEM format.\n"},"privateKey":{"type":"string","description":"The private key of the Certificate. Should be in PEM format.\n","secret":true},"teamId":{"type":"string","description":"The ID of the team the Custom Certificate should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object"}},"vercel:index/customEnvironment:CustomEnvironment":{"description":"Environments help manage the deployment lifecycle on the Vercel platform.\n\nBy default, all teams use three environments when developing their project: Production, Preview, and Development. However, teams can also create custom environments to suit their needs. To learn more about the limits for each plan, see limits.\n\nCustom environments allow you to configure customized, pre-production environments for your project, such as staging or QA, with branch rules that will automatically deploy your branch when the branch name matches the rule. With custom environments you can also attach a domain to your environment, set environment variables, or import environment variables from another environment.\n\nCustom environments are designed as pre-production environments intended for long-running use. This contrasts with regular preview environments, which are designed for creating ephemeral, short-lived deployments.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = new vercel.Project(\"example\", {name: \"example-project-with-custom-env\"});\nconst exampleCustomEnvironment = new vercel.CustomEnvironment(\"example\", {\n    projectId: example.id,\n    name: \"example-custom-env\",\n    description: \"A description of the custom environment\",\n    branchTracking: {\n        pattern: \"staging-\",\n        type: \"startsWith\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.Project(\"example\", name=\"example-project-with-custom-env\")\nexample_custom_environment = vercel.CustomEnvironment(\"example\",\n    project_id=example.id,\n    name=\"example-custom-env\",\n    description=\"A description of the custom environment\",\n    branch_tracking={\n        \"pattern\": \"staging-\",\n        \"type\": \"startsWith\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Vercel.Project(\"example\", new()\n    {\n        Name = \"example-project-with-custom-env\",\n    });\n\n    var exampleCustomEnvironment = new Vercel.CustomEnvironment(\"example\", new()\n    {\n        ProjectId = example.Id,\n        Name = \"example-custom-env\",\n        Description = \"A description of the custom environment\",\n        BranchTracking = new Vercel.Inputs.CustomEnvironmentBranchTrackingArgs\n        {\n            Pattern = \"staging-\",\n            Type = \"startsWith\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := vercel.NewProject(ctx, \"example\", \u0026vercel.ProjectArgs{\n\t\t\tName: pulumi.String(\"example-project-with-custom-env\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewCustomEnvironment(ctx, \"example\", \u0026vercel.CustomEnvironmentArgs{\n\t\t\tProjectId:   example.ID(),\n\t\t\tName:        pulumi.String(\"example-custom-env\"),\n\t\t\tDescription: pulumi.String(\"A description of the custom environment\"),\n\t\t\tBranchTracking: \u0026vercel.CustomEnvironmentBranchTrackingArgs{\n\t\t\t\tPattern: pulumi.String(\"staging-\"),\n\t\t\t\tType:    pulumi.String(\"startsWith\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.vercel.Project;\nimport com.pulumiverse.vercel.ProjectArgs;\nimport com.pulumiverse.vercel.CustomEnvironment;\nimport com.pulumiverse.vercel.CustomEnvironmentArgs;\nimport com.pulumi.vercel.inputs.CustomEnvironmentBranchTrackingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Project(\"example\", ProjectArgs.builder()\n            .name(\"example-project-with-custom-env\")\n            .build());\n\n        var exampleCustomEnvironment = new CustomEnvironment(\"exampleCustomEnvironment\", CustomEnvironmentArgs.builder()\n            .projectId(example.id())\n            .name(\"example-custom-env\")\n            .description(\"A description of the custom environment\")\n            .branchTracking(CustomEnvironmentBranchTrackingArgs.builder()\n                .pattern(\"staging-\")\n                .type(\"startsWith\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:Project\n    properties:\n      name: example-project-with-custom-env\n  exampleCustomEnvironment:\n    type: vercel:CustomEnvironment\n    name: example\n    properties:\n      projectId: ${example.id}\n      name: example-custom-env\n      description: A description of the custom environment\n      branchTracking:\n        pattern: staging-\n        type: startsWith\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIf importing into a personal account, or with a team configured on\n\nthe provider, simply use the project_id and custom environment name.\n\n- project_id can be found in the project `settings` tab in the Vercel UI.\n\n```sh\n$ pulumi import vercel:index/customEnvironment:CustomEnvironment example prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/example-custom-env\n```\n\nAlternatively, you can import via the team_id, project_id and environment variable id.\n\n- team_id can be found in the team `settings` tab in the Vercel UI.\n\n- project_id can be found in the project `settings` tab in the Vercel UI.\n\nNote also, that the value field for sensitive environment variables will be imported as `null`.\n\n```sh\n$ pulumi import vercel:index/customEnvironment:CustomEnvironment example team_xxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/example-custom-env\n```\n\n","properties":{"branchTracking":{"$ref":"#/types/vercel:index/CustomEnvironmentBranchTracking:CustomEnvironmentBranchTracking","description":"The branch tracking configuration for the environment. When enabled, each qualifying merge will generate a deployment.\n"},"description":{"type":"string","description":"A description of what the environment is.\n"},"name":{"type":"string","description":"The name of the environment.\n"},"projectId":{"type":"string","description":"The ID of the existing Vercel Project.\n"},"teamId":{"type":"string","description":"The team ID to add the project to. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"required":["branchTracking","description","name","projectId","teamId"],"inputProperties":{"branchTracking":{"$ref":"#/types/vercel:index/CustomEnvironmentBranchTracking:CustomEnvironmentBranchTracking","description":"The branch tracking configuration for the environment. When enabled, each qualifying merge will generate a deployment.\n"},"description":{"type":"string","description":"A description of what the environment is.\n"},"name":{"type":"string","description":"The name of the environment.\n"},"projectId":{"type":"string","description":"The ID of the existing Vercel Project.\n"},"teamId":{"type":"string","description":"The team ID to add the project to. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"requiredInputs":["projectId"],"stateInputs":{"description":"Input properties used for looking up and filtering CustomEnvironment resources.\n","properties":{"branchTracking":{"$ref":"#/types/vercel:index/CustomEnvironmentBranchTracking:CustomEnvironmentBranchTracking","description":"The branch tracking configuration for the environment. When enabled, each qualifying merge will generate a deployment.\n"},"description":{"type":"string","description":"A description of what the environment is.\n"},"name":{"type":"string","description":"The name of the environment.\n"},"projectId":{"type":"string","description":"The ID of the existing Vercel Project.\n"},"teamId":{"type":"string","description":"The team ID to add the project to. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object"}},"vercel:index/deployment:Deployment":{"properties":{"customEnvironmentId":{"type":"string","description":"The ID of the Custom Environment to deploy to. If not specified, the deployment will use the standard environments (production/preview).\n"},"deleteOnDestroy":{"type":"boolean"},"domains":{"type":"array","items":{"type":"string"},"description":"A list of all the domains (default domains, staging domains and production domains) that were assigned upon deployment creation.\n"},"environment":{"type":"object","additionalProperties":{"type":"string"},"description":"A map of environment variable names to values. These are specific to a Deployment, and can also be configured on the \u003cspan pulumi-lang-nodejs=\"`vercel.Project`\" pulumi-lang-dotnet=\"`vercel.Project`\" pulumi-lang-go=\"`Project`\" pulumi-lang-python=\"`Project`\" pulumi-lang-yaml=\"`vercel.Project`\" pulumi-lang-java=\"`vercel.Project`\"\u003e`vercel.Project`\u003c/span\u003e resource.\n","secret":true},"files":{"type":"object","additionalProperties":{"type":"string"},"description":"A map of files to be uploaded for the deployment. This should be provided by a \u003cspan pulumi-lang-nodejs=\"`vercel.getProjectDirectory`\" pulumi-lang-dotnet=\"`vercel.getProjectDirectory`\" pulumi-lang-go=\"`getProjectDirectory`\" pulumi-lang-python=\"`get_project_directory`\" pulumi-lang-yaml=\"`vercel.getProjectDirectory`\" pulumi-lang-java=\"`vercel.getProjectDirectory`\"\u003e`vercel.getProjectDirectory`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vercel.getFile`\" pulumi-lang-dotnet=\"`vercel.getFile`\" pulumi-lang-go=\"`getFile`\" pulumi-lang-python=\"`get_file`\" pulumi-lang-yaml=\"`vercel.getFile`\" pulumi-lang-java=\"`vercel.getFile`\"\u003e`vercel.getFile`\u003c/span\u003e data source. Required if \u003cspan pulumi-lang-nodejs=\"`gitSource`\" pulumi-lang-dotnet=\"`GitSource`\" pulumi-lang-go=\"`gitSource`\" pulumi-lang-python=\"`git_source`\" pulumi-lang-yaml=\"`gitSource`\" pulumi-lang-java=\"`gitSource`\"\u003e`git_source`\u003c/span\u003e is not set.\n"},"meta":{"type":"object","additionalProperties":{"type":"string"},"description":"Arbitrary key/value metadata to attach to the deployment (equivalent to the Vercel CLI --meta flags).\n"},"pathPrefix":{"type":"string","description":"If specified then the \u003cspan pulumi-lang-nodejs=\"`pathPrefix`\" pulumi-lang-dotnet=\"`PathPrefix`\" pulumi-lang-go=\"`pathPrefix`\" pulumi-lang-python=\"`path_prefix`\" pulumi-lang-yaml=\"`pathPrefix`\" pulumi-lang-java=\"`pathPrefix`\"\u003e`path_prefix`\u003c/span\u003e will be stripped from the start of file paths as they are uploaded to Vercel. If this is omitted, then any leading `../`s will be stripped.\n"},"production":{"type":"boolean","description":"true if the deployment is a production deployment, meaning production aliases will be assigned.\n"},"projectId":{"type":"string","description":"The project ID to add the deployment to.\n"},"projectSettings":{"$ref":"#/types/vercel:index/DeploymentProjectSettings:DeploymentProjectSettings","description":"Project settings that will be applied to the deployment.\n"},"ref":{"type":"string","description":"The branch or commit hash that should be deployed. Note this will only work if the project is configured to use a Git repository. Required if \u003cspan pulumi-lang-nodejs=\"`files`\" pulumi-lang-dotnet=\"`Files`\" pulumi-lang-go=\"`files`\" pulumi-lang-python=\"`files`\" pulumi-lang-yaml=\"`files`\" pulumi-lang-java=\"`files`\"\u003e`files`\u003c/span\u003e is not set.\n"},"teamId":{"type":"string","description":"The team ID to add the deployment to. Required when configuring a team resource if a default team has not been set in the provider.\n"},"url":{"type":"string","description":"A unique URL that is automatically generated for a deployment.\n"}},"required":["domains","meta","production","projectId","teamId","url"],"inputProperties":{"customEnvironmentId":{"type":"string","description":"The ID of the Custom Environment to deploy to. If not specified, the deployment will use the standard environments (production/preview).\n"},"deleteOnDestroy":{"type":"boolean"},"environment":{"type":"object","additionalProperties":{"type":"string"},"description":"A map of environment variable names to values. These are specific to a Deployment, and can also be configured on the \u003cspan pulumi-lang-nodejs=\"`vercel.Project`\" pulumi-lang-dotnet=\"`vercel.Project`\" pulumi-lang-go=\"`Project`\" pulumi-lang-python=\"`Project`\" pulumi-lang-yaml=\"`vercel.Project`\" pulumi-lang-java=\"`vercel.Project`\"\u003e`vercel.Project`\u003c/span\u003e resource.\n","secret":true},"files":{"type":"object","additionalProperties":{"type":"string"},"description":"A map of files to be uploaded for the deployment. This should be provided by a \u003cspan pulumi-lang-nodejs=\"`vercel.getProjectDirectory`\" pulumi-lang-dotnet=\"`vercel.getProjectDirectory`\" pulumi-lang-go=\"`getProjectDirectory`\" pulumi-lang-python=\"`get_project_directory`\" pulumi-lang-yaml=\"`vercel.getProjectDirectory`\" pulumi-lang-java=\"`vercel.getProjectDirectory`\"\u003e`vercel.getProjectDirectory`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vercel.getFile`\" pulumi-lang-dotnet=\"`vercel.getFile`\" pulumi-lang-go=\"`getFile`\" pulumi-lang-python=\"`get_file`\" pulumi-lang-yaml=\"`vercel.getFile`\" pulumi-lang-java=\"`vercel.getFile`\"\u003e`vercel.getFile`\u003c/span\u003e data source. Required if \u003cspan pulumi-lang-nodejs=\"`gitSource`\" pulumi-lang-dotnet=\"`GitSource`\" pulumi-lang-go=\"`gitSource`\" pulumi-lang-python=\"`git_source`\" pulumi-lang-yaml=\"`gitSource`\" pulumi-lang-java=\"`gitSource`\"\u003e`git_source`\u003c/span\u003e is not set.\n"},"meta":{"type":"object","additionalProperties":{"type":"string"},"description":"Arbitrary key/value metadata to attach to the deployment (equivalent to the Vercel CLI --meta flags).\n"},"pathPrefix":{"type":"string","description":"If specified then the \u003cspan pulumi-lang-nodejs=\"`pathPrefix`\" pulumi-lang-dotnet=\"`PathPrefix`\" pulumi-lang-go=\"`pathPrefix`\" pulumi-lang-python=\"`path_prefix`\" pulumi-lang-yaml=\"`pathPrefix`\" pulumi-lang-java=\"`pathPrefix`\"\u003e`path_prefix`\u003c/span\u003e will be stripped from the start of file paths as they are uploaded to Vercel. If this is omitted, then any leading `../`s will be stripped.\n"},"production":{"type":"boolean","description":"true if the deployment is a production deployment, meaning production aliases will be assigned.\n"},"projectId":{"type":"string","description":"The project ID to add the deployment to.\n"},"projectSettings":{"$ref":"#/types/vercel:index/DeploymentProjectSettings:DeploymentProjectSettings","description":"Project settings that will be applied to the deployment.\n"},"ref":{"type":"string","description":"The branch or commit hash that should be deployed. Note this will only work if the project is configured to use a Git repository. Required if \u003cspan pulumi-lang-nodejs=\"`files`\" pulumi-lang-dotnet=\"`Files`\" pulumi-lang-go=\"`files`\" pulumi-lang-python=\"`files`\" pulumi-lang-yaml=\"`files`\" pulumi-lang-java=\"`files`\"\u003e`files`\u003c/span\u003e is not set.\n"},"teamId":{"type":"string","description":"The team ID to add the deployment to. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"requiredInputs":["projectId"],"stateInputs":{"description":"Input properties used for looking up and filtering Deployment resources.\n","properties":{"customEnvironmentId":{"type":"string","description":"The ID of the Custom Environment to deploy to. If not specified, the deployment will use the standard environments (production/preview).\n"},"deleteOnDestroy":{"type":"boolean"},"domains":{"type":"array","items":{"type":"string"},"description":"A list of all the domains (default domains, staging domains and production domains) that were assigned upon deployment creation.\n"},"environment":{"type":"object","additionalProperties":{"type":"string"},"description":"A map of environment variable names to values. These are specific to a Deployment, and can also be configured on the \u003cspan pulumi-lang-nodejs=\"`vercel.Project`\" pulumi-lang-dotnet=\"`vercel.Project`\" pulumi-lang-go=\"`Project`\" pulumi-lang-python=\"`Project`\" pulumi-lang-yaml=\"`vercel.Project`\" pulumi-lang-java=\"`vercel.Project`\"\u003e`vercel.Project`\u003c/span\u003e resource.\n","secret":true},"files":{"type":"object","additionalProperties":{"type":"string"},"description":"A map of files to be uploaded for the deployment. This should be provided by a \u003cspan pulumi-lang-nodejs=\"`vercel.getProjectDirectory`\" pulumi-lang-dotnet=\"`vercel.getProjectDirectory`\" pulumi-lang-go=\"`getProjectDirectory`\" pulumi-lang-python=\"`get_project_directory`\" pulumi-lang-yaml=\"`vercel.getProjectDirectory`\" pulumi-lang-java=\"`vercel.getProjectDirectory`\"\u003e`vercel.getProjectDirectory`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vercel.getFile`\" pulumi-lang-dotnet=\"`vercel.getFile`\" pulumi-lang-go=\"`getFile`\" pulumi-lang-python=\"`get_file`\" pulumi-lang-yaml=\"`vercel.getFile`\" pulumi-lang-java=\"`vercel.getFile`\"\u003e`vercel.getFile`\u003c/span\u003e data source. Required if \u003cspan pulumi-lang-nodejs=\"`gitSource`\" pulumi-lang-dotnet=\"`GitSource`\" pulumi-lang-go=\"`gitSource`\" pulumi-lang-python=\"`git_source`\" pulumi-lang-yaml=\"`gitSource`\" pulumi-lang-java=\"`gitSource`\"\u003e`git_source`\u003c/span\u003e is not set.\n"},"meta":{"type":"object","additionalProperties":{"type":"string"},"description":"Arbitrary key/value metadata to attach to the deployment (equivalent to the Vercel CLI --meta flags).\n"},"pathPrefix":{"type":"string","description":"If specified then the \u003cspan pulumi-lang-nodejs=\"`pathPrefix`\" pulumi-lang-dotnet=\"`PathPrefix`\" pulumi-lang-go=\"`pathPrefix`\" pulumi-lang-python=\"`path_prefix`\" pulumi-lang-yaml=\"`pathPrefix`\" pulumi-lang-java=\"`pathPrefix`\"\u003e`path_prefix`\u003c/span\u003e will be stripped from the start of file paths as they are uploaded to Vercel. If this is omitted, then any leading `../`s will be stripped.\n"},"production":{"type":"boolean","description":"true if the deployment is a production deployment, meaning production aliases will be assigned.\n"},"projectId":{"type":"string","description":"The project ID to add the deployment to.\n"},"projectSettings":{"$ref":"#/types/vercel:index/DeploymentProjectSettings:DeploymentProjectSettings","description":"Project settings that will be applied to the deployment.\n"},"ref":{"type":"string","description":"The branch or commit hash that should be deployed. Note this will only work if the project is configured to use a Git repository. Required if \u003cspan pulumi-lang-nodejs=\"`files`\" pulumi-lang-dotnet=\"`Files`\" pulumi-lang-go=\"`files`\" pulumi-lang-python=\"`files`\" pulumi-lang-yaml=\"`files`\" pulumi-lang-java=\"`files`\"\u003e`files`\u003c/span\u003e is not set.\n"},"teamId":{"type":"string","description":"The team ID to add the deployment to. Required when configuring a team resource if a default team has not been set in the provider.\n"},"url":{"type":"string","description":"A unique URL that is automatically generated for a deployment.\n"}},"type":"object"}},"vercel:index/dnsRecord:DnsRecord":{"description":"Provides a DNS Record resource.\n\nDNS records are instructions that live in authoritative DNS servers and provide information about a domain.\n\n\u003e The \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e field must be specified on all DNS record types except `SRV`. When using `SRV` DNS records, the \u003cspan pulumi-lang-nodejs=\"`srv`\" pulumi-lang-dotnet=\"`Srv`\" pulumi-lang-go=\"`srv`\" pulumi-lang-python=\"`srv`\" pulumi-lang-yaml=\"`srv`\" pulumi-lang-java=\"`srv`\"\u003e`srv`\u003c/span\u003e field must be specified.\n\nFor more detailed information, please see the [Vercel documentation](https://vercel.com/docs/concepts/projects/custom-domains#dns-records)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst a = new vercel.DnsRecord(\"a\", {\n    domain: \"example.com\",\n    name: \"subdomain\",\n    type: \"A\",\n    ttl: 60,\n    value: \"192.168.0.1\",\n});\nconst aaaa = new vercel.DnsRecord(\"aaaa\", {\n    domain: \"example.com\",\n    name: \"subdomain\",\n    type: \"AAAA\",\n    ttl: 60,\n    value: \"::0\",\n});\nconst alias = new vercel.DnsRecord(\"alias\", {\n    domain: \"example.com\",\n    name: \"subdomain\",\n    type: \"ALIAS\",\n    ttl: 60,\n    value: \"example2.com.\",\n});\nconst caa = new vercel.DnsRecord(\"caa\", {\n    domain: \"example.com\",\n    name: \"subdomain\",\n    type: \"CAA\",\n    ttl: 60,\n    value: \"1 issue \\\"letsencrypt.org\\\"\",\n});\nconst cname = new vercel.DnsRecord(\"cname\", {\n    domain: \"example.com\",\n    name: \"subdomain\",\n    type: \"CNAME\",\n    ttl: 60,\n    value: \"example2.com.\",\n});\nconst mx = new vercel.DnsRecord(\"mx\", {\n    domain: \"example.com\",\n    name: \"subdomain\",\n    type: \"MX\",\n    ttl: 60,\n    mxPriority: 333,\n    value: \"example2.com.\",\n});\nconst srv = new vercel.DnsRecord(\"srv\", {\n    domain: \"example.com\",\n    name: \"subdomain\",\n    type: \"SRV\",\n    ttl: 60,\n    srv: {\n        port: 6000,\n        weight: 60,\n        priority: 127,\n        target: \"example2.com.\",\n    },\n});\nconst txt = new vercel.DnsRecord(\"txt\", {\n    domain: \"example.com\",\n    name: \"subdomain\",\n    type: \"TXT\",\n    ttl: 60,\n    value: \"some text value\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\na = vercel.DnsRecord(\"a\",\n    domain=\"example.com\",\n    name=\"subdomain\",\n    type=\"A\",\n    ttl=60,\n    value=\"192.168.0.1\")\naaaa = vercel.DnsRecord(\"aaaa\",\n    domain=\"example.com\",\n    name=\"subdomain\",\n    type=\"AAAA\",\n    ttl=60,\n    value=\"::0\")\nalias = vercel.DnsRecord(\"alias\",\n    domain=\"example.com\",\n    name=\"subdomain\",\n    type=\"ALIAS\",\n    ttl=60,\n    value=\"example2.com.\")\ncaa = vercel.DnsRecord(\"caa\",\n    domain=\"example.com\",\n    name=\"subdomain\",\n    type=\"CAA\",\n    ttl=60,\n    value=\"1 issue \\\"letsencrypt.org\\\"\")\ncname = vercel.DnsRecord(\"cname\",\n    domain=\"example.com\",\n    name=\"subdomain\",\n    type=\"CNAME\",\n    ttl=60,\n    value=\"example2.com.\")\nmx = vercel.DnsRecord(\"mx\",\n    domain=\"example.com\",\n    name=\"subdomain\",\n    type=\"MX\",\n    ttl=60,\n    mx_priority=333,\n    value=\"example2.com.\")\nsrv = vercel.DnsRecord(\"srv\",\n    domain=\"example.com\",\n    name=\"subdomain\",\n    type=\"SRV\",\n    ttl=60,\n    srv={\n        \"port\": 6000,\n        \"weight\": 60,\n        \"priority\": 127,\n        \"target\": \"example2.com.\",\n    })\ntxt = vercel.DnsRecord(\"txt\",\n    domain=\"example.com\",\n    name=\"subdomain\",\n    type=\"TXT\",\n    ttl=60,\n    value=\"some text value\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var a = new Vercel.DnsRecord(\"a\", new()\n    {\n        Domain = \"example.com\",\n        Name = \"subdomain\",\n        Type = \"A\",\n        Ttl = 60,\n        Value = \"192.168.0.1\",\n    });\n\n    var aaaa = new Vercel.DnsRecord(\"aaaa\", new()\n    {\n        Domain = \"example.com\",\n        Name = \"subdomain\",\n        Type = \"AAAA\",\n        Ttl = 60,\n        Value = \"::0\",\n    });\n\n    var @alias = new Vercel.DnsRecord(\"alias\", new()\n    {\n        Domain = \"example.com\",\n        Name = \"subdomain\",\n        Type = \"ALIAS\",\n        Ttl = 60,\n        Value = \"example2.com.\",\n    });\n\n    var caa = new Vercel.DnsRecord(\"caa\", new()\n    {\n        Domain = \"example.com\",\n        Name = \"subdomain\",\n        Type = \"CAA\",\n        Ttl = 60,\n        Value = \"1 issue \\\"letsencrypt.org\\\"\",\n    });\n\n    var cname = new Vercel.DnsRecord(\"cname\", new()\n    {\n        Domain = \"example.com\",\n        Name = \"subdomain\",\n        Type = \"CNAME\",\n        Ttl = 60,\n        Value = \"example2.com.\",\n    });\n\n    var mx = new Vercel.DnsRecord(\"mx\", new()\n    {\n        Domain = \"example.com\",\n        Name = \"subdomain\",\n        Type = \"MX\",\n        Ttl = 60,\n        MxPriority = 333,\n        Value = \"example2.com.\",\n    });\n\n    var srv = new Vercel.DnsRecord(\"srv\", new()\n    {\n        Domain = \"example.com\",\n        Name = \"subdomain\",\n        Type = \"SRV\",\n        Ttl = 60,\n        Srv = new Vercel.Inputs.DnsRecordSrvArgs\n        {\n            Port = 6000,\n            Weight = 60,\n            Priority = 127,\n            Target = \"example2.com.\",\n        },\n    });\n\n    var txt = new Vercel.DnsRecord(\"txt\", new()\n    {\n        Domain = \"example.com\",\n        Name = \"subdomain\",\n        Type = \"TXT\",\n        Ttl = 60,\n        Value = \"some text value\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.NewDnsRecord(ctx, \"a\", \u0026vercel.DnsRecordArgs{\n\t\t\tDomain: pulumi.String(\"example.com\"),\n\t\t\tName:   pulumi.String(\"subdomain\"),\n\t\t\tType:   pulumi.String(\"A\"),\n\t\t\tTtl:    pulumi.Int(60),\n\t\t\tValue:  pulumi.String(\"192.168.0.1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewDnsRecord(ctx, \"aaaa\", \u0026vercel.DnsRecordArgs{\n\t\t\tDomain: pulumi.String(\"example.com\"),\n\t\t\tName:   pulumi.String(\"subdomain\"),\n\t\t\tType:   pulumi.String(\"AAAA\"),\n\t\t\tTtl:    pulumi.Int(60),\n\t\t\tValue:  pulumi.String(\"::0\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewDnsRecord(ctx, \"alias\", \u0026vercel.DnsRecordArgs{\n\t\t\tDomain: pulumi.String(\"example.com\"),\n\t\t\tName:   pulumi.String(\"subdomain\"),\n\t\t\tType:   pulumi.String(\"ALIAS\"),\n\t\t\tTtl:    pulumi.Int(60),\n\t\t\tValue:  pulumi.String(\"example2.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewDnsRecord(ctx, \"caa\", \u0026vercel.DnsRecordArgs{\n\t\t\tDomain: pulumi.String(\"example.com\"),\n\t\t\tName:   pulumi.String(\"subdomain\"),\n\t\t\tType:   pulumi.String(\"CAA\"),\n\t\t\tTtl:    pulumi.Int(60),\n\t\t\tValue:  pulumi.String(\"1 issue \\\"letsencrypt.org\\\"\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewDnsRecord(ctx, \"cname\", \u0026vercel.DnsRecordArgs{\n\t\t\tDomain: pulumi.String(\"example.com\"),\n\t\t\tName:   pulumi.String(\"subdomain\"),\n\t\t\tType:   pulumi.String(\"CNAME\"),\n\t\t\tTtl:    pulumi.Int(60),\n\t\t\tValue:  pulumi.String(\"example2.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewDnsRecord(ctx, \"mx\", \u0026vercel.DnsRecordArgs{\n\t\t\tDomain:     pulumi.String(\"example.com\"),\n\t\t\tName:       pulumi.String(\"subdomain\"),\n\t\t\tType:       pulumi.String(\"MX\"),\n\t\t\tTtl:        pulumi.Int(60),\n\t\t\tMxPriority: pulumi.Int(333),\n\t\t\tValue:      pulumi.String(\"example2.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewDnsRecord(ctx, \"srv\", \u0026vercel.DnsRecordArgs{\n\t\t\tDomain: pulumi.String(\"example.com\"),\n\t\t\tName:   pulumi.String(\"subdomain\"),\n\t\t\tType:   pulumi.String(\"SRV\"),\n\t\t\tTtl:    pulumi.Int(60),\n\t\t\tSrv: \u0026vercel.DnsRecordSrvArgs{\n\t\t\t\tPort:     pulumi.Int(6000),\n\t\t\t\tWeight:   pulumi.Int(60),\n\t\t\t\tPriority: pulumi.Int(127),\n\t\t\t\tTarget:   pulumi.String(\"example2.com.\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewDnsRecord(ctx, \"txt\", \u0026vercel.DnsRecordArgs{\n\t\t\tDomain: pulumi.String(\"example.com\"),\n\t\t\tName:   pulumi.String(\"subdomain\"),\n\t\t\tType:   pulumi.String(\"TXT\"),\n\t\t\tTtl:    pulumi.Int(60),\n\t\t\tValue:  pulumi.String(\"some text value\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.vercel.DnsRecord;\nimport com.pulumiverse.vercel.DnsRecordArgs;\nimport com.pulumi.vercel.inputs.DnsRecordSrvArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var a = new DnsRecord(\"a\", DnsRecordArgs.builder()\n            .domain(\"example.com\")\n            .name(\"subdomain\")\n            .type(\"A\")\n            .ttl(60)\n            .value(\"192.168.0.1\")\n            .build());\n\n        var aaaa = new DnsRecord(\"aaaa\", DnsRecordArgs.builder()\n            .domain(\"example.com\")\n            .name(\"subdomain\")\n            .type(\"AAAA\")\n            .ttl(60)\n            .value(\"::0\")\n            .build());\n\n        var alias = new DnsRecord(\"alias\", DnsRecordArgs.builder()\n            .domain(\"example.com\")\n            .name(\"subdomain\")\n            .type(\"ALIAS\")\n            .ttl(60)\n            .value(\"example2.com.\")\n            .build());\n\n        var caa = new DnsRecord(\"caa\", DnsRecordArgs.builder()\n            .domain(\"example.com\")\n            .name(\"subdomain\")\n            .type(\"CAA\")\n            .ttl(60)\n            .value(\"1 issue \\\"letsencrypt.org\\\"\")\n            .build());\n\n        var cname = new DnsRecord(\"cname\", DnsRecordArgs.builder()\n            .domain(\"example.com\")\n            .name(\"subdomain\")\n            .type(\"CNAME\")\n            .ttl(60)\n            .value(\"example2.com.\")\n            .build());\n\n        var mx = new DnsRecord(\"mx\", DnsRecordArgs.builder()\n            .domain(\"example.com\")\n            .name(\"subdomain\")\n            .type(\"MX\")\n            .ttl(60)\n            .mxPriority(333)\n            .value(\"example2.com.\")\n            .build());\n\n        var srv = new DnsRecord(\"srv\", DnsRecordArgs.builder()\n            .domain(\"example.com\")\n            .name(\"subdomain\")\n            .type(\"SRV\")\n            .ttl(60)\n            .srv(DnsRecordSrvArgs.builder()\n                .port(6000)\n                .weight(60)\n                .priority(127)\n                .target(\"example2.com.\")\n                .build())\n            .build());\n\n        var txt = new DnsRecord(\"txt\", DnsRecordArgs.builder()\n            .domain(\"example.com\")\n            .name(\"subdomain\")\n            .type(\"TXT\")\n            .ttl(60)\n            .value(\"some text value\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  a:\n    type: vercel:DnsRecord\n    properties:\n      domain: example.com\n      name: subdomain\n      type: A\n      ttl: 60\n      value: 192.168.0.1\n  aaaa:\n    type: vercel:DnsRecord\n    properties:\n      domain: example.com\n      name: subdomain\n      type: AAAA\n      ttl: 60\n      value: ::0\n  alias:\n    type: vercel:DnsRecord\n    properties:\n      domain: example.com\n      name: subdomain\n      type: ALIAS\n      ttl: 60\n      value: example2.com.\n  caa:\n    type: vercel:DnsRecord\n    properties:\n      domain: example.com\n      name: subdomain\n      type: CAA\n      ttl: 60\n      value: 1 issue \"letsencrypt.org\"\n  cname:\n    type: vercel:DnsRecord\n    properties:\n      domain: example.com\n      name: subdomain\n      type: CNAME\n      ttl: 60\n      value: example2.com.\n  mx:\n    type: vercel:DnsRecord\n    properties:\n      domain: example.com\n      name: subdomain\n      type: MX\n      ttl: 60\n      mxPriority: 333\n      value: example2.com.\n  srv:\n    type: vercel:DnsRecord\n    properties:\n      domain: example.com\n      name: subdomain\n      type: SRV\n      ttl: 60\n      srv:\n        port: 6000\n        weight: 60\n        priority: 127\n        target: example2.com.\n  txt:\n    type: vercel:DnsRecord\n    properties:\n      domain: example.com\n      name: subdomain\n      type: TXT\n      ttl: 60\n      value: some text value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIf importing into a personal account, or with a team configured on\n\nthe provider, simply use the record id.\n\n- record_id can be taken from the network tab inside developer tools, while you are on the domains page,\n\nor can be queried from the Vercel API directly (https://vercel.com/docs/rest-api/endpoints/dns#list-existing-dns-records).\n\n```sh\n$ pulumi import vercel:index/dnsRecord:DnsRecord example rec_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nAlternatively, you can import via the team_id and record_id.\n\n- team_id can be found in the team `settings` tab in the Vercel UI.\n\n- record_id can be taken from the network tab inside developer tools, while you are on the domains page,\n\nor can be queried from the Vercel API directly (https://vercel.com/docs/rest-api/endpoints/dns#list-existing-dns-records).\n\n```sh\n$ pulumi import vercel:index/dnsRecord:DnsRecord example team_xxxxxxxxxxxxxxxxxxxxxxxx/rec_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n","properties":{"comment":{"type":"string","description":"A comment explaining what the DNS record is for.\n"},"domain":{"type":"string","description":"The domain name, or zone, that the DNS record should be created beneath.\n"},"mxPriority":{"type":"integer","description":"The priority of the MX record. The priority specifies the sequence that an email server receives emails. A smaller value indicates a higher priority.\n"},"name":{"type":"string","description":"The subdomain name of the record. This should be an empty string if the rercord is for the root domain.\n"},"srv":{"$ref":"#/types/vercel:index/DnsRecordSrv:DnsRecordSrv","description":"Settings for an SRV record.\n"},"teamId":{"type":"string","description":"The team ID that the domain and DNS records belong to. Required when configuring a team resource if a default team has not been set in the provider.\n"},"ttl":{"type":"integer","description":"The TTL value in seconds. Must be a number between 60 and 2147483647. If unspecified, it will default to 60 seconds.\n"},"type":{"type":"string","description":"The type of DNS record. Available types: `A`, `AAAA`, `ALIAS`, `CAA`, `CNAME`, `MX`, `NS`, `SRV`, `TXT`.\n"},"value":{"type":"string","description":"The value of the DNS record. The format depends on the 'type' property.\nFor an 'A' record, this should be a valid IPv4 address.\nFor an 'AAAA' record, this should be an IPv6 address.\nFor 'ALIAS' records, this should be a hostname.\nFor 'CAA' records, this should specify specify which Certificate Authorities (CAs) are allowed to issue certificates for the domain.\nFor 'CNAME' records, this should be a different domain name.\nFor 'MX' records, this should specify the mail server responsible for accepting messages on behalf of the domain name.\nFor 'TXT' records, this can contain arbitrary text.\n"}},"required":["comment","domain","name","teamId","ttl","type"],"inputProperties":{"comment":{"type":"string","description":"A comment explaining what the DNS record is for.\n"},"domain":{"type":"string","description":"The domain name, or zone, that the DNS record should be created beneath.\n"},"mxPriority":{"type":"integer","description":"The priority of the MX record. The priority specifies the sequence that an email server receives emails. A smaller value indicates a higher priority.\n"},"name":{"type":"string","description":"The subdomain name of the record. This should be an empty string if the rercord is for the root domain.\n"},"srv":{"$ref":"#/types/vercel:index/DnsRecordSrv:DnsRecordSrv","description":"Settings for an SRV record.\n"},"teamId":{"type":"string","description":"The team ID that the domain and DNS records belong to. Required when configuring a team resource if a default team has not been set in the provider.\n"},"ttl":{"type":"integer","description":"The TTL value in seconds. Must be a number between 60 and 2147483647. If unspecified, it will default to 60 seconds.\n"},"type":{"type":"string","description":"The type of DNS record. Available types: `A`, `AAAA`, `ALIAS`, `CAA`, `CNAME`, `MX`, `NS`, `SRV`, `TXT`.\n"},"value":{"type":"string","description":"The value of the DNS record. The format depends on the 'type' property.\nFor an 'A' record, this should be a valid IPv4 address.\nFor an 'AAAA' record, this should be an IPv6 address.\nFor 'ALIAS' records, this should be a hostname.\nFor 'CAA' records, this should specify specify which Certificate Authorities (CAs) are allowed to issue certificates for the domain.\nFor 'CNAME' records, this should be a different domain name.\nFor 'MX' records, this should specify the mail server responsible for accepting messages on behalf of the domain name.\nFor 'TXT' records, this can contain arbitrary text.\n"}},"requiredInputs":["domain","type"],"stateInputs":{"description":"Input properties used for looking up and filtering DnsRecord resources.\n","properties":{"comment":{"type":"string","description":"A comment explaining what the DNS record is for.\n"},"domain":{"type":"string","description":"The domain name, or zone, that the DNS record should be created beneath.\n"},"mxPriority":{"type":"integer","description":"The priority of the MX record. The priority specifies the sequence that an email server receives emails. A smaller value indicates a higher priority.\n"},"name":{"type":"string","description":"The subdomain name of the record. This should be an empty string if the rercord is for the root domain.\n"},"srv":{"$ref":"#/types/vercel:index/DnsRecordSrv:DnsRecordSrv","description":"Settings for an SRV record.\n"},"teamId":{"type":"string","description":"The team ID that the domain and DNS records belong to. Required when configuring a team resource if a default team has not been set in the provider.\n"},"ttl":{"type":"integer","description":"The TTL value in seconds. Must be a number between 60 and 2147483647. If unspecified, it will default to 60 seconds.\n"},"type":{"type":"string","description":"The type of DNS record. Available types: `A`, `AAAA`, `ALIAS`, `CAA`, `CNAME`, `MX`, `NS`, `SRV`, `TXT`.\n"},"value":{"type":"string","description":"The value of the DNS record. The format depends on the 'type' property.\nFor an 'A' record, this should be a valid IPv4 address.\nFor an 'AAAA' record, this should be an IPv6 address.\nFor 'ALIAS' records, this should be a hostname.\nFor 'CAA' records, this should specify specify which Certificate Authorities (CAs) are allowed to issue certificates for the domain.\nFor 'CNAME' records, this should be a different domain name.\nFor 'MX' records, this should specify the mail server responsible for accepting messages on behalf of the domain name.\nFor 'TXT' records, this can contain arbitrary text.\n"}},"type":"object"}},"vercel:index/edgeConfig:EdgeConfig":{"description":"Provides an Edge Config resource.\n\nAn Edge Config is a global data store that enables experimentation with feature flags, A/B testing, critical redirects, and more.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = new vercel.EdgeConfig(\"example\", {name: \"example\"});\nconst exampleProject = new vercel.Project(\"example\", {name: \"edge-config-example\"});\nconst exampleEdgeConfigToken = new vercel.EdgeConfigToken(\"example\", {\n    edgeConfigId: example.id,\n    label: \"example token\",\n});\nconst exampleProjectEnvironmentVariable = new vercel.ProjectEnvironmentVariable(\"example\", {\n    projectId: exampleProject.id,\n    targets: [\n        \"production\",\n        \"preview\",\n        \"development\",\n    ],\n    key: \"EDGE_CONFIG\",\n    value: exampleEdgeConfigToken.connectionString,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.EdgeConfig(\"example\", name=\"example\")\nexample_project = vercel.Project(\"example\", name=\"edge-config-example\")\nexample_edge_config_token = vercel.EdgeConfigToken(\"example\",\n    edge_config_id=example.id,\n    label=\"example token\")\nexample_project_environment_variable = vercel.ProjectEnvironmentVariable(\"example\",\n    project_id=example_project.id,\n    targets=[\n        \"production\",\n        \"preview\",\n        \"development\",\n    ],\n    key=\"EDGE_CONFIG\",\n    value=example_edge_config_token.connection_string)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Vercel.EdgeConfig(\"example\", new()\n    {\n        Name = \"example\",\n    });\n\n    var exampleProject = new Vercel.Project(\"example\", new()\n    {\n        Name = \"edge-config-example\",\n    });\n\n    var exampleEdgeConfigToken = new Vercel.EdgeConfigToken(\"example\", new()\n    {\n        EdgeConfigId = example.Id,\n        Label = \"example token\",\n    });\n\n    var exampleProjectEnvironmentVariable = new Vercel.ProjectEnvironmentVariable(\"example\", new()\n    {\n        ProjectId = exampleProject.Id,\n        Targets = new[]\n        {\n            \"production\",\n            \"preview\",\n            \"development\",\n        },\n        Key = \"EDGE_CONFIG\",\n        Value = exampleEdgeConfigToken.ConnectionString,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := vercel.NewEdgeConfig(ctx, \"example\", \u0026vercel.EdgeConfigArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleProject, err := vercel.NewProject(ctx, \"example\", \u0026vercel.ProjectArgs{\n\t\t\tName: pulumi.String(\"edge-config-example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleEdgeConfigToken, err := vercel.NewEdgeConfigToken(ctx, \"example\", \u0026vercel.EdgeConfigTokenArgs{\n\t\t\tEdgeConfigId: example.ID(),\n\t\t\tLabel:        pulumi.String(\"example token\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewProjectEnvironmentVariable(ctx, \"example\", \u0026vercel.ProjectEnvironmentVariableArgs{\n\t\t\tProjectId: exampleProject.ID(),\n\t\t\tTargets: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"production\"),\n\t\t\t\tpulumi.String(\"preview\"),\n\t\t\t\tpulumi.String(\"development\"),\n\t\t\t},\n\t\t\tKey:   pulumi.String(\"EDGE_CONFIG\"),\n\t\t\tValue: exampleEdgeConfigToken.ConnectionString,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.vercel.EdgeConfig;\nimport com.pulumiverse.vercel.EdgeConfigArgs;\nimport com.pulumiverse.vercel.Project;\nimport com.pulumiverse.vercel.ProjectArgs;\nimport com.pulumiverse.vercel.EdgeConfigToken;\nimport com.pulumiverse.vercel.EdgeConfigTokenArgs;\nimport com.pulumiverse.vercel.ProjectEnvironmentVariable;\nimport com.pulumiverse.vercel.ProjectEnvironmentVariableArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new EdgeConfig(\"example\", EdgeConfigArgs.builder()\n            .name(\"example\")\n            .build());\n\n        var exampleProject = new Project(\"exampleProject\", ProjectArgs.builder()\n            .name(\"edge-config-example\")\n            .build());\n\n        var exampleEdgeConfigToken = new EdgeConfigToken(\"exampleEdgeConfigToken\", EdgeConfigTokenArgs.builder()\n            .edgeConfigId(example.id())\n            .label(\"example token\")\n            .build());\n\n        var exampleProjectEnvironmentVariable = new ProjectEnvironmentVariable(\"exampleProjectEnvironmentVariable\", ProjectEnvironmentVariableArgs.builder()\n            .projectId(exampleProject.id())\n            .targets(            \n                \"production\",\n                \"preview\",\n                \"development\")\n            .key(\"EDGE_CONFIG\")\n            .value(exampleEdgeConfigToken.connectionString())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:EdgeConfig\n    properties:\n      name: example\n  exampleProject:\n    type: vercel:Project\n    name: example\n    properties:\n      name: edge-config-example\n  exampleEdgeConfigToken:\n    type: vercel:EdgeConfigToken\n    name: example\n    properties:\n      edgeConfigId: ${example.id}\n      label: example token\n  exampleProjectEnvironmentVariable:\n    type: vercel:ProjectEnvironmentVariable\n    name: example\n    properties:\n      projectId: ${exampleProject.id}\n      targets:\n        - production\n        - preview\n        - development\n      key: EDGE_CONFIG\n      value: ${exampleEdgeConfigToken.connectionString}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIf importing into a personal account, or with a team configured on\n\nthe provider, simply use the edge config id.\n\n- edge_config_id can be found by navigating to the Edge Config in the Vercel UI. It should begin with `ecfg_`.\n\n```sh\n$ pulumi import vercel:index/edgeConfig:EdgeConfig example ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nAlternatively, you can import via the team_id and edge_config_id.\n\n- team_id can be found in the team `settings` tab in the Vercel UI.\n\n- edge_config_id can be found by navigating to the Edge Config in the Vercel UI. It should begin with `ecfg_`.\n\n```sh\n$ pulumi import vercel:index/edgeConfig:EdgeConfig example team_xxxxxxxxxxxxxxxxxxxxxxxx/ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n","properties":{"name":{"type":"string","description":"The name/slug of the Edge Config.\n"},"teamId":{"type":"string","description":"The ID of the team the Edge Config should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"required":["name","teamId"],"inputProperties":{"name":{"type":"string","description":"The name/slug of the Edge Config.\n"},"teamId":{"type":"string","description":"The ID of the team the Edge Config should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering EdgeConfig resources.\n","properties":{"name":{"type":"string","description":"The name/slug of the Edge Config.\n"},"teamId":{"type":"string","description":"The ID of the team the Edge Config should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object"}},"vercel:index/edgeConfigItem:EdgeConfigItem":{"description":"Provides an Edge Config Item.\n\nAn Edge Config is a global data store that enables experimentation with feature flags, A/B testing, critical redirects, and more.\n\nAn Edge Config Item is a value within an Edge Config.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = new vercel.EdgeConfig(\"example\", {name: \"example\"});\nconst exampleEdgeConfigItem = new vercel.EdgeConfigItem(\"example\", {\n    edgeConfigId: example.id,\n    key: \"flags\",\n    valueJson: {\n        featureA: true,\n        nested: {\n            a: 1,\n            b: [\n                1,\n                2,\n                3,\n            ],\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.EdgeConfig(\"example\", name=\"example\")\nexample_edge_config_item = vercel.EdgeConfigItem(\"example\",\n    edge_config_id=example.id,\n    key=\"flags\",\n    value_json={\n        \"featureA\": True,\n        \"nested\": {\n            \"a\": 1,\n            \"b\": [\n                1,\n                2,\n                3,\n            ],\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Vercel.EdgeConfig(\"example\", new()\n    {\n        Name = \"example\",\n    });\n\n    var exampleEdgeConfigItem = new Vercel.EdgeConfigItem(\"example\", new()\n    {\n        EdgeConfigId = example.Id,\n        Key = \"flags\",\n        ValueJson = new Dictionary\u003cstring, object?\u003e\n        {\n            [\"featureA\"] = true,\n            [\"nested\"] = new Dictionary\u003cstring, object?\u003e\n            {\n                [\"a\"] = 1,\n                [\"b\"] = new object?[]\n                {\n                    1,\n                    2,\n                    3,\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := vercel.NewEdgeConfig(ctx, \"example\", \u0026vercel.EdgeConfigArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewEdgeConfigItem(ctx, \"example\", \u0026vercel.EdgeConfigItemArgs{\n\t\t\tEdgeConfigId: example.ID(),\n\t\t\tKey:          pulumi.String(\"flags\"),\n\t\t\tValueJson: pulumi.Any(map[string]interface{}{\n\t\t\t\t\"featureA\": true,\n\t\t\t\t\"nested\": map[string]interface{}{\n\t\t\t\t\t\"a\": 1,\n\t\t\t\t\t\"b\": []float64{\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t2,\n\t\t\t\t\t\t3,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.vercel.EdgeConfig;\nimport com.pulumiverse.vercel.EdgeConfigArgs;\nimport com.pulumiverse.vercel.EdgeConfigItem;\nimport com.pulumiverse.vercel.EdgeConfigItemArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new EdgeConfig(\"example\", EdgeConfigArgs.builder()\n            .name(\"example\")\n            .build());\n\n        var exampleEdgeConfigItem = new EdgeConfigItem(\"exampleEdgeConfigItem\", EdgeConfigItemArgs.builder()\n            .edgeConfigId(example.id())\n            .key(\"flags\")\n            .valueJson(Map.ofEntries(\n                Map.entry(\"featureA\", true),\n                Map.entry(\"nested\", Map.ofEntries(\n                    Map.entry(\"a\", 1),\n                    Map.entry(\"b\",                     \n                        1,\n                        2,\n                        3)\n                ))\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:EdgeConfig\n    properties:\n      name: example\n  exampleEdgeConfigItem:\n    type: vercel:EdgeConfigItem\n    name: example\n    properties:\n      edgeConfigId: ${example.id}\n      key: flags\n      valueJson:\n        featureA: true\n        nested:\n          a: 1\n          b:\n            - 1\n            - 2\n            - 3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIf importing into a personal account, or with a team configured on\n\nthe provider, simply use the edge config id and the key of the item to import.\n\n- edge_config_id can be found by navigating to the Edge Config in the Vercel UI. It should begin with `ecfg_`.\n\n- key is the key of teh item to import.\n\n```sh\n$ pulumi import vercel:index/edgeConfigItem:EdgeConfigItem example ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/example_key\n```\n\nAlternatively, you can import via the team_id, edge_config_id and the key of the item to import.\n\n- team_id can be found in the team `settings` tab in the Vercel UI.\n\n- edge_config_id can be found by navigating to the Edge Config in the Vercel UI. It should begin with `ecfg_`.\n\n- key is the key of the item to import.\n\n```sh\n$ pulumi import vercel:index/edgeConfigItem:EdgeConfigItem example team_xxxxxxxxxxxxxxxxxxxxxxxx/ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/example_key\n```\n\n","properties":{"edgeConfigId":{"type":"string","description":"The ID of the Edge Config store.\n"},"key":{"type":"string","description":"The name of the key you want to add to or update within your Edge Config.\n"},"teamId":{"type":"string","description":"The ID of the team the Edge Config should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"},"value":{"type":"string","description":"The value you want to assign to the key when using a string.\n"},"valueJson":{"$ref":"pulumi.json#/Any","description":"Structured JSON value to assign to the key (object/array/number/bool/null).\n"}},"required":["edgeConfigId","key","teamId","value","valueJson"],"inputProperties":{"edgeConfigId":{"type":"string","description":"The ID of the Edge Config store.\n"},"key":{"type":"string","description":"The name of the key you want to add to or update within your Edge Config.\n"},"teamId":{"type":"string","description":"The ID of the team the Edge Config should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"},"value":{"type":"string","description":"The value you want to assign to the key when using a string.\n"},"valueJson":{"$ref":"pulumi.json#/Any","description":"Structured JSON value to assign to the key (object/array/number/bool/null).\n"}},"requiredInputs":["edgeConfigId","key"],"stateInputs":{"description":"Input properties used for looking up and filtering EdgeConfigItem resources.\n","properties":{"edgeConfigId":{"type":"string","description":"The ID of the Edge Config store.\n"},"key":{"type":"string","description":"The name of the key you want to add to or update within your Edge Config.\n"},"teamId":{"type":"string","description":"The ID of the team the Edge Config should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"},"value":{"type":"string","description":"The value you want to assign to the key when using a string.\n"},"valueJson":{"$ref":"pulumi.json#/Any","description":"Structured JSON value to assign to the key (object/array/number/bool/null).\n"}},"type":"object"}},"vercel:index/edgeConfigSchema:EdgeConfigSchema":{"description":"An Edge Config Schema provides an existing Edge Config with a JSON schema. Use schema protection to prevent unexpected updates that may cause bugs or downtime.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = new vercel.EdgeConfig(\"example\", {name: \"example\"});\nconst exampleEdgeConfigSchema = new vercel.EdgeConfigSchema(\"example\", {\n    id: example.id,\n    definition: `{\n  \\\\\"title\\\\\": \\\\\"Greeting\\\\\",\n  \\\\\"type\\\\\": \\\\\"object\\\\\",\n  \\\\\"properties\\\\\": {\n    \\\\\"greeting\\\\\": {\n      \\\\\"description\\\\\": \\\\\"A friendly greeting\\\\\",\n      \\\\\"type\\\\\": \\\\\"string\\\\\"\n    }\n  }\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.EdgeConfig(\"example\", name=\"example\")\nexample_edge_config_schema = vercel.EdgeConfigSchema(\"example\",\n    id=example.id,\n    definition=\"\"\"{\n  \\\"title\\\": \\\"Greeting\\\",\n  \\\"type\\\": \\\"object\\\",\n  \\\"properties\\\": {\n    \\\"greeting\\\": {\n      \\\"description\\\": \\\"A friendly greeting\\\",\n      \\\"type\\\": \\\"string\\\"\n    }\n  }\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Vercel.EdgeConfig(\"example\", new()\n    {\n        Name = \"example\",\n    });\n\n    var exampleEdgeConfigSchema = new Vercel.EdgeConfigSchema(\"example\", new()\n    {\n        Id = example.Id,\n        Definition = @\"{\n  \\\"\"title\\\"\": \\\"\"Greeting\\\"\",\n  \\\"\"type\\\"\": \\\"\"object\\\"\",\n  \\\"\"properties\\\"\": {\n    \\\"\"greeting\\\"\": {\n      \\\"\"description\\\"\": \\\"\"A friendly greeting\\\"\",\n      \\\"\"type\\\"\": \\\"\"string\\\"\"\n    }\n  }\n}\n\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := vercel.NewEdgeConfig(ctx, \"example\", \u0026vercel.EdgeConfigArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewEdgeConfigSchema(ctx, \"example\", \u0026vercel.EdgeConfigSchemaArgs{\n\t\t\tId: example.ID(),\n\t\t\tDefinition: pulumi.String(`{\n  \\\"title\\\": \\\"Greeting\\\",\n  \\\"type\\\": \\\"object\\\",\n  \\\"properties\\\": {\n    \\\"greeting\\\": {\n      \\\"description\\\": \\\"A friendly greeting\\\",\n      \\\"type\\\": \\\"string\\\"\n    }\n  }\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.vercel.EdgeConfig;\nimport com.pulumiverse.vercel.EdgeConfigArgs;\nimport com.pulumiverse.vercel.EdgeConfigSchema;\nimport com.pulumiverse.vercel.EdgeConfigSchemaArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new EdgeConfig(\"example\", EdgeConfigArgs.builder()\n            .name(\"example\")\n            .build());\n\n        var exampleEdgeConfigSchema = new EdgeConfigSchema(\"exampleEdgeConfigSchema\", EdgeConfigSchemaArgs.builder()\n            .id(example.id())\n            .definition(\"\"\"\n{\n  \\\"title\\\": \\\"Greeting\\\",\n  \\\"type\\\": \\\"object\\\",\n  \\\"properties\\\": {\n    \\\"greeting\\\": {\n      \\\"description\\\": \\\"A friendly greeting\\\",\n      \\\"type\\\": \\\"string\\\"\n    }\n  }\n}\n            \"\"\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:EdgeConfig\n    properties:\n      name: example\n  exampleEdgeConfigSchema:\n    type: vercel:EdgeConfigSchema\n    name: example\n    properties:\n      id: ${example.id}\n      definition: |\n        {\n          \\\"title\\\": \\\"Greeting\\\",\n          \\\"type\\\": \\\"object\\\",\n          \\\"properties\\\": {\n            \\\"greeting\\\": {\n              \\\"description\\\": \\\"A friendly greeting\\\",\n              \\\"type\\\": \\\"string\\\"\n            }\n          }\n        }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIf importing into a personal account, or with a team configured on\n\nthe provider, simply use the edge config id.\n\n- edge_config_id can be found by navigating to the Edge Config in the Vercel UI. It should begin with `ecfg_`.\n\n```sh\n$ pulumi import vercel:index/edgeConfigSchema:EdgeConfigSchema example ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nAlternatively, you can import via the team_id and edge_config_id.\n\n- team_id can be found in the team `settings` tab in the Vercel UI.\n\n- edge_config_id can be found by navigating to the Edge Config in the Vercel UI. It should begin with `ecfg_`.\n\n```sh\n$ pulumi import vercel:index/edgeConfigSchema:EdgeConfigSchema example team_xxxxxxxxxxxxxxxxxxxxxxxx/ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n","properties":{"definition":{"type":"string","description":"A JSON schema that will be used to validate data in the Edge Config.\n"},"teamId":{"type":"string","description":"The ID of the team the Edge Config should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"required":["definition","teamId"],"inputProperties":{"definition":{"type":"string","description":"A JSON schema that will be used to validate data in the Edge Config.\n"},"teamId":{"type":"string","description":"The ID of the team the Edge Config should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"requiredInputs":["definition"],"stateInputs":{"description":"Input properties used for looking up and filtering EdgeConfigSchema resources.\n","properties":{"definition":{"type":"string","description":"A JSON schema that will be used to validate data in the Edge Config.\n"},"teamId":{"type":"string","description":"The ID of the team the Edge Config should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object"}},"vercel:index/edgeConfigToken:EdgeConfigToken":{"description":"Provides an Edge Config Token resource.\n\nAn Edge Config is a global data store that enables experimentation with feature flags, A/B testing, critical redirects, and more.\n\nAn Edge Config token is used to authenticate against an Edge Config's endpoint.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = new vercel.EdgeConfig(\"example\", {name: \"example\"});\nconst exampleProject = new vercel.Project(\"example\", {name: \"edge-config-example\"});\nconst exampleEdgeConfigToken = new vercel.EdgeConfigToken(\"example\", {\n    edgeConfigId: example.id,\n    label: \"example token\",\n});\nconst exampleProjectEnvironmentVariable = new vercel.ProjectEnvironmentVariable(\"example\", {\n    projectId: exampleProject.id,\n    targets: [\n        \"production\",\n        \"preview\",\n        \"development\",\n    ],\n    key: \"EDGE_CONFIG\",\n    value: exampleEdgeConfigToken.connectionString,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.EdgeConfig(\"example\", name=\"example\")\nexample_project = vercel.Project(\"example\", name=\"edge-config-example\")\nexample_edge_config_token = vercel.EdgeConfigToken(\"example\",\n    edge_config_id=example.id,\n    label=\"example token\")\nexample_project_environment_variable = vercel.ProjectEnvironmentVariable(\"example\",\n    project_id=example_project.id,\n    targets=[\n        \"production\",\n        \"preview\",\n        \"development\",\n    ],\n    key=\"EDGE_CONFIG\",\n    value=example_edge_config_token.connection_string)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Vercel.EdgeConfig(\"example\", new()\n    {\n        Name = \"example\",\n    });\n\n    var exampleProject = new Vercel.Project(\"example\", new()\n    {\n        Name = \"edge-config-example\",\n    });\n\n    var exampleEdgeConfigToken = new Vercel.EdgeConfigToken(\"example\", new()\n    {\n        EdgeConfigId = example.Id,\n        Label = \"example token\",\n    });\n\n    var exampleProjectEnvironmentVariable = new Vercel.ProjectEnvironmentVariable(\"example\", new()\n    {\n        ProjectId = exampleProject.Id,\n        Targets = new[]\n        {\n            \"production\",\n            \"preview\",\n            \"development\",\n        },\n        Key = \"EDGE_CONFIG\",\n        Value = exampleEdgeConfigToken.ConnectionString,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := vercel.NewEdgeConfig(ctx, \"example\", \u0026vercel.EdgeConfigArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleProject, err := vercel.NewProject(ctx, \"example\", \u0026vercel.ProjectArgs{\n\t\t\tName: pulumi.String(\"edge-config-example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleEdgeConfigToken, err := vercel.NewEdgeConfigToken(ctx, \"example\", \u0026vercel.EdgeConfigTokenArgs{\n\t\t\tEdgeConfigId: example.ID(),\n\t\t\tLabel:        pulumi.String(\"example token\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewProjectEnvironmentVariable(ctx, \"example\", \u0026vercel.ProjectEnvironmentVariableArgs{\n\t\t\tProjectId: exampleProject.ID(),\n\t\t\tTargets: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"production\"),\n\t\t\t\tpulumi.String(\"preview\"),\n\t\t\t\tpulumi.String(\"development\"),\n\t\t\t},\n\t\t\tKey:   pulumi.String(\"EDGE_CONFIG\"),\n\t\t\tValue: exampleEdgeConfigToken.ConnectionString,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.vercel.EdgeConfig;\nimport com.pulumiverse.vercel.EdgeConfigArgs;\nimport com.pulumiverse.vercel.Project;\nimport com.pulumiverse.vercel.ProjectArgs;\nimport com.pulumiverse.vercel.EdgeConfigToken;\nimport com.pulumiverse.vercel.EdgeConfigTokenArgs;\nimport com.pulumiverse.vercel.ProjectEnvironmentVariable;\nimport com.pulumiverse.vercel.ProjectEnvironmentVariableArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new EdgeConfig(\"example\", EdgeConfigArgs.builder()\n            .name(\"example\")\n            .build());\n\n        var exampleProject = new Project(\"exampleProject\", ProjectArgs.builder()\n            .name(\"edge-config-example\")\n            .build());\n\n        var exampleEdgeConfigToken = new EdgeConfigToken(\"exampleEdgeConfigToken\", EdgeConfigTokenArgs.builder()\n            .edgeConfigId(example.id())\n            .label(\"example token\")\n            .build());\n\n        var exampleProjectEnvironmentVariable = new ProjectEnvironmentVariable(\"exampleProjectEnvironmentVariable\", ProjectEnvironmentVariableArgs.builder()\n            .projectId(exampleProject.id())\n            .targets(            \n                \"production\",\n                \"preview\",\n                \"development\")\n            .key(\"EDGE_CONFIG\")\n            .value(exampleEdgeConfigToken.connectionString())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:EdgeConfig\n    properties:\n      name: example\n  exampleProject:\n    type: vercel:Project\n    name: example\n    properties:\n      name: edge-config-example\n  exampleEdgeConfigToken:\n    type: vercel:EdgeConfigToken\n    name: example\n    properties:\n      edgeConfigId: ${example.id}\n      label: example token\n  exampleProjectEnvironmentVariable:\n    type: vercel:ProjectEnvironmentVariable\n    name: example\n    properties:\n      projectId: ${exampleProject.id}\n      targets:\n        - production\n        - preview\n        - development\n      key: EDGE_CONFIG\n      value: ${exampleEdgeConfigToken.connectionString}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIf importing into a personal account, or with a team configured on\n\nthe provider, simply use the edge config id and token value.\n\n- edge_config_id can be found by navigating to the Edge Config in the Vercel UI. It should begin with `ecfg_`.\n\n- token can be found in the Vercel UI under Storage, Edge Config, the specific Edge Config, Tokens.\n\n```sh\n$ pulumi import vercel:index/edgeConfigToken:EdgeConfigToken example ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n```\n\nAlternatively, you can import via the team_id and edge_config_id.\n\n- team_id can be found in the team `settings` tab in the Vercel UI.\n\n- edge_config_id can be found by navigating to the Edge Config in the Vercel UI. It should begin with `ecfg_`.\n\n- token can be found in the Vercel UI under Storage, Edge Config, the specific Edge Config, Tokens.\n\n```sh\n$ pulumi import vercel:index/edgeConfigToken:EdgeConfigToken example team_xxxxxxxxxxxxxxxxxxxxxxxx/ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n```\n\n","properties":{"connectionString":{"type":"string","description":"A connection string is a URL that connects a project to an Edge Config. The variable can be called anything, but our Edge Config client SDK will search for process.env.EDGE_CONFIG by default.\n","secret":true},"edgeConfigId":{"type":"string","description":"The ID of the Edge Config store.\n"},"label":{"type":"string","description":"The label of the Edge Config Token.\n"},"teamId":{"type":"string","description":"The ID of the team the Edge Config should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"},"token":{"type":"string","description":"A read access token used for authenticating against the Edge Config's endpoint for high volume, low-latency requests.\n","secret":true}},"required":["connectionString","edgeConfigId","label","teamId","token"],"inputProperties":{"edgeConfigId":{"type":"string","description":"The ID of the Edge Config store.\n"},"label":{"type":"string","description":"The label of the Edge Config Token.\n"},"teamId":{"type":"string","description":"The ID of the team the Edge Config should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"requiredInputs":["edgeConfigId","label"],"stateInputs":{"description":"Input properties used for looking up and filtering EdgeConfigToken resources.\n","properties":{"connectionString":{"type":"string","description":"A connection string is a URL that connects a project to an Edge Config. The variable can be called anything, but our Edge Config client SDK will search for process.env.EDGE_CONFIG by default.\n","secret":true},"edgeConfigId":{"type":"string","description":"The ID of the Edge Config store.\n"},"label":{"type":"string","description":"The label of the Edge Config Token.\n"},"teamId":{"type":"string","description":"The ID of the team the Edge Config should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"},"token":{"type":"string","description":"A read access token used for authenticating against the Edge Config's endpoint for high volume, low-latency requests.\n","secret":true}},"type":"object"}},"vercel:index/firewallBypass:FirewallBypass":{"description":"Provides a Firewall Bypass Rule\n\nFirewall Bypass Rules configure sets of domains and ip address to prevent bypass Vercel's system mitigations for.  The hosts used in a bypass rule must be a production domain assigned to the associated project.  Requests that bypass system mitigations will incur usage.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = new vercel.Project(\"example\", {name: \"firewall-bypass-example\"});\nconst bypassTargeted = new vercel.FirewallBypass(\"bypass_targeted\", {\n    projectId: example.id,\n    sourceIp: \"5.6.7.8\",\n    domain: \"my-production-domain.com\",\n    note: \"Bypass rule for specific IP\",\n});\nconst bypassCidr = new vercel.FirewallBypass(\"bypass_cidr\", {\n    projectId: example.id,\n    sourceIp: \"52.33.44.0/24\",\n    domain: \"my-production-domain.com\",\n    note: \"Bypass rule for CIDR range\",\n});\nconst bypassAll = new vercel.FirewallBypass(\"bypass_all\", {\n    projectId: example.id,\n    sourceIp: \"52.33.44.0/24\",\n    domain: \"*\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.Project(\"example\", name=\"firewall-bypass-example\")\nbypass_targeted = vercel.FirewallBypass(\"bypass_targeted\",\n    project_id=example.id,\n    source_ip=\"5.6.7.8\",\n    domain=\"my-production-domain.com\",\n    note=\"Bypass rule for specific IP\")\nbypass_cidr = vercel.FirewallBypass(\"bypass_cidr\",\n    project_id=example.id,\n    source_ip=\"52.33.44.0/24\",\n    domain=\"my-production-domain.com\",\n    note=\"Bypass rule for CIDR range\")\nbypass_all = vercel.FirewallBypass(\"bypass_all\",\n    project_id=example.id,\n    source_ip=\"52.33.44.0/24\",\n    domain=\"*\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Vercel.Project(\"example\", new()\n    {\n        Name = \"firewall-bypass-example\",\n    });\n\n    var bypassTargeted = new Vercel.FirewallBypass(\"bypass_targeted\", new()\n    {\n        ProjectId = example.Id,\n        SourceIp = \"5.6.7.8\",\n        Domain = \"my-production-domain.com\",\n        Note = \"Bypass rule for specific IP\",\n    });\n\n    var bypassCidr = new Vercel.FirewallBypass(\"bypass_cidr\", new()\n    {\n        ProjectId = example.Id,\n        SourceIp = \"52.33.44.0/24\",\n        Domain = \"my-production-domain.com\",\n        Note = \"Bypass rule for CIDR range\",\n    });\n\n    var bypassAll = new Vercel.FirewallBypass(\"bypass_all\", new()\n    {\n        ProjectId = example.Id,\n        SourceIp = \"52.33.44.0/24\",\n        Domain = \"*\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := vercel.NewProject(ctx, \"example\", \u0026vercel.ProjectArgs{\n\t\t\tName: pulumi.String(\"firewall-bypass-example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewFirewallBypass(ctx, \"bypass_targeted\", \u0026vercel.FirewallBypassArgs{\n\t\t\tProjectId: example.ID(),\n\t\t\tSourceIp:  pulumi.String(\"5.6.7.8\"),\n\t\t\tDomain:    pulumi.String(\"my-production-domain.com\"),\n\t\t\tNote:      pulumi.String(\"Bypass rule for specific IP\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewFirewallBypass(ctx, \"bypass_cidr\", \u0026vercel.FirewallBypassArgs{\n\t\t\tProjectId: example.ID(),\n\t\t\tSourceIp:  pulumi.String(\"52.33.44.0/24\"),\n\t\t\tDomain:    pulumi.String(\"my-production-domain.com\"),\n\t\t\tNote:      pulumi.String(\"Bypass rule for CIDR range\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewFirewallBypass(ctx, \"bypass_all\", \u0026vercel.FirewallBypassArgs{\n\t\t\tProjectId: example.ID(),\n\t\t\tSourceIp:  pulumi.String(\"52.33.44.0/24\"),\n\t\t\tDomain:    pulumi.String(\"*\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.vercel.Project;\nimport com.pulumiverse.vercel.ProjectArgs;\nimport com.pulumiverse.vercel.FirewallBypass;\nimport com.pulumiverse.vercel.FirewallBypassArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Project(\"example\", ProjectArgs.builder()\n            .name(\"firewall-bypass-example\")\n            .build());\n\n        var bypassTargeted = new FirewallBypass(\"bypassTargeted\", FirewallBypassArgs.builder()\n            .projectId(example.id())\n            .sourceIp(\"5.6.7.8\")\n            .domain(\"my-production-domain.com\")\n            .note(\"Bypass rule for specific IP\")\n            .build());\n\n        var bypassCidr = new FirewallBypass(\"bypassCidr\", FirewallBypassArgs.builder()\n            .projectId(example.id())\n            .sourceIp(\"52.33.44.0/24\")\n            .domain(\"my-production-domain.com\")\n            .note(\"Bypass rule for CIDR range\")\n            .build());\n\n        var bypassAll = new FirewallBypass(\"bypassAll\", FirewallBypassArgs.builder()\n            .projectId(example.id())\n            .sourceIp(\"52.33.44.0/24\")\n            .domain(\"*\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:Project\n    properties:\n      name: firewall-bypass-example\n  bypassTargeted:\n    type: vercel:FirewallBypass\n    name: bypass_targeted\n    properties:\n      projectId: ${example.id}\n      sourceIp: 5.6.7.8\n      domain: my-production-domain.com\n      note: Bypass rule for specific IP\n  bypassCidr:\n    type: vercel:FirewallBypass\n    name: bypass_cidr\n    properties:\n      projectId: ${example.id}\n      sourceIp: 52.33.44.0/24\n      domain: my-production-domain.com\n      note: Bypass rule for CIDR range\n  bypassAll:\n    type: vercel:FirewallBypass\n    name: bypass_all\n    properties:\n      projectId: ${example.id}\n      sourceIp: 52.33.44.0/24\n      domain: '*'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n```sh\n$ pulumi import vercel:index/firewallBypass:FirewallBypass example team_xxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx#mybypasshost.com#3.4.5.0/24\n```\n\n```sh\n$ pulumi import vercel:index/firewallBypass:FirewallBypass example team_xxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx#3.4.5.0/24\n```\n\n","properties":{"domain":{"type":"string","description":"The domain to configure the bypass rule for.\n"},"note":{"type":"string","description":"A note to describe the bypass rule. Maximum length is 500 characters.\n"},"projectId":{"type":"string","description":"The ID of the Project to assign the bypass rule to\n"},"sourceIp":{"type":"string","description":"The source IP address to configure the bypass rule for.\n"},"teamId":{"type":"string","description":"The ID of the team the Project exists under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"required":["domain","projectId","sourceIp","teamId"],"inputProperties":{"domain":{"type":"string","description":"The domain to configure the bypass rule for.\n"},"note":{"type":"string","description":"A note to describe the bypass rule. Maximum length is 500 characters.\n"},"projectId":{"type":"string","description":"The ID of the Project to assign the bypass rule to\n"},"sourceIp":{"type":"string","description":"The source IP address to configure the bypass rule for.\n"},"teamId":{"type":"string","description":"The ID of the team the Project exists under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"requiredInputs":["domain","projectId","sourceIp"],"stateInputs":{"description":"Input properties used for looking up and filtering FirewallBypass resources.\n","properties":{"domain":{"type":"string","description":"The domain to configure the bypass rule for.\n"},"note":{"type":"string","description":"A note to describe the bypass rule. Maximum length is 500 characters.\n"},"projectId":{"type":"string","description":"The ID of the Project to assign the bypass rule to\n"},"sourceIp":{"type":"string","description":"The source IP address to configure the bypass rule for.\n"},"teamId":{"type":"string","description":"The ID of the team the Project exists under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object"}},"vercel:index/firewallConfig:FirewallConfig":{"description":"Define Custom Rules to shape the way your traffic is handled by the Vercel Edge Network.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = new vercel.Project(\"example\", {name: \"firewall-config-example\"});\nconst exampleFirewallConfig = new vercel.FirewallConfig(\"example\", {\n    projectId: example.id,\n    rules: {\n        rules: [\n            {\n                name: \"Bypass Known request\",\n                description: \"Bypass requests using internal bearer tokens\",\n                conditionGroups: [\n                    {\n                        conditions: [{\n                            type: \"header\",\n                            key: \"Authorization\",\n                            op: \"eq\",\n                            value: \"Bearer internaltoken\",\n                        }],\n                    },\n                    {\n                        conditions: [{\n                            type: \"header\",\n                            key: \"Authorization\",\n                            op: \"eq\",\n                            value: \"Bearer internaltoken2\",\n                        }],\n                    },\n                ],\n                action: {\n                    action: \"bypass\",\n                },\n            },\n            {\n                name: \"Challenge curl\",\n                description: \"Challenge user agents containing 'curl'\",\n                conditionGroups: [{\n                    conditions: [{\n                        type: \"user_agent\",\n                        op: \"sub\",\n                        value: \"curl\",\n                    }],\n                }],\n                action: {\n                    action: \"challenge\",\n                },\n            },\n            {\n                name: \"Deny cookieless requests\",\n                description: \"requests to /api that are missing a session cookie\",\n                conditionGroups: [{\n                    conditions: [\n                        {\n                            type: \"path\",\n                            op: \"eq\",\n                            value: \"/api\",\n                        },\n                        {\n                            type: \"cookie\",\n                            key: \"_session\",\n                            neg: true,\n                            op: \"ex\",\n                        },\n                    ],\n                }],\n                action: {\n                    action: \"challenge\",\n                },\n            },\n            {\n                name: \"Require Authorization header\",\n                description: \"Block requests without Authorization header\",\n                conditionGroups: [{\n                    conditions: [{\n                        type: \"header\",\n                        key: \"Authorization\",\n                        op: \"nex\",\n                    }],\n                }],\n                action: {\n                    action: \"deny\",\n                },\n            },\n            {\n                name: \"Log requests with custom header\",\n                description: \"Log requests that have X-Custom-Header present\",\n                conditionGroups: [{\n                    conditions: [{\n                        type: \"header\",\n                        key: \"X-Custom-Header\",\n                        op: \"ex\",\n                    }],\n                }],\n                action: {\n                    action: \"log\",\n                },\n            },\n            {\n                name: \"Rate limit API\",\n                description: \"apply ratelimit to requests under /api\",\n                conditionGroups: [{\n                    conditions: [{\n                        type: \"path\",\n                        op: \"pre\",\n                        value: \"/api\",\n                    }],\n                }],\n                action: {\n                    action: \"rate_limit\",\n                    rateLimit: {\n                        limit: 100,\n                        window: 300,\n                        keys: [\n                            \"ip\",\n                            \"ja4\",\n                        ],\n                        algo: \"fixed_window\",\n                        action: \"deny\",\n                    },\n                    actionDuration: \"5m\",\n                },\n            },\n            {\n                name: \"Known clients\",\n                description: \"Match known keys in header\",\n                conditionGroups: [{\n                    conditions: [{\n                        type: \"header\",\n                        key: \"Authorization\",\n                        op: \"inc\",\n                        values: [\n                            \"key1\",\n                            \"key2\",\n                        ],\n                    }],\n                }],\n                action: {\n                    action: \"rate_limit\",\n                    rateLimit: {\n                        limit: 100,\n                        window: 300,\n                        keys: [\n                            \"ip\",\n                            \"ja4\",\n                        ],\n                        algo: \"fixed_window\",\n                        action: \"deny\",\n                    },\n                    actionDuration: \"5m\",\n                },\n            },\n        ],\n    },\n});\nconst managedExample = new vercel.Project(\"managed_example\", {name: \"firewall-managed-rule-example\"});\nconst managed = new vercel.FirewallConfig(\"managed\", {\n    projectId: managedVercelProject.id,\n    managedRulesets: {\n        owasp: {\n            xss: {\n                action: \"deny\",\n            },\n            sqli: {\n                action: \"deny\",\n            },\n            rce: {\n                action: \"deny\",\n            },\n            php: {\n                action: \"deny\",\n            },\n            java: {\n                action: \"deny\",\n            },\n            lfi: {\n                action: \"deny\",\n            },\n            rfi: {\n                action: \"deny\",\n            },\n            gen: {\n                action: \"deny\",\n            },\n        },\n        botProtection: {\n            action: \"log\",\n            active: true,\n        },\n        aiBots: {\n            action: \"log\",\n            active: true,\n        },\n    },\n});\nconst ipExample = new vercel.Project(\"ip_example\", {name: \"firewall-ip-blocking-example\"});\nconst ip_blocking = new vercel.FirewallConfig(\"ip-blocking\", {\n    projectId: ipExample.id,\n    ipRules: {\n        rules: [\n            {\n                action: \"deny\",\n                ip: \"51.85.0.0/16\",\n                hostname: \"*\",\n            },\n            {\n                action: \"challenge\",\n                ip: \"1.2.3.4\",\n                hostname: \"example.com\",\n            },\n        ],\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.Project(\"example\", name=\"firewall-config-example\")\nexample_firewall_config = vercel.FirewallConfig(\"example\",\n    project_id=example.id,\n    rules={\n        \"rules\": [\n            {\n                \"name\": \"Bypass Known request\",\n                \"description\": \"Bypass requests using internal bearer tokens\",\n                \"condition_groups\": [\n                    {\n                        \"conditions\": [{\n                            \"type\": \"header\",\n                            \"key\": \"Authorization\",\n                            \"op\": \"eq\",\n                            \"value\": \"Bearer internaltoken\",\n                        }],\n                    },\n                    {\n                        \"conditions\": [{\n                            \"type\": \"header\",\n                            \"key\": \"Authorization\",\n                            \"op\": \"eq\",\n                            \"value\": \"Bearer internaltoken2\",\n                        }],\n                    },\n                ],\n                \"action\": {\n                    \"action\": \"bypass\",\n                },\n            },\n            {\n                \"name\": \"Challenge curl\",\n                \"description\": \"Challenge user agents containing 'curl'\",\n                \"condition_groups\": [{\n                    \"conditions\": [{\n                        \"type\": \"user_agent\",\n                        \"op\": \"sub\",\n                        \"value\": \"curl\",\n                    }],\n                }],\n                \"action\": {\n                    \"action\": \"challenge\",\n                },\n            },\n            {\n                \"name\": \"Deny cookieless requests\",\n                \"description\": \"requests to /api that are missing a session cookie\",\n                \"condition_groups\": [{\n                    \"conditions\": [\n                        {\n                            \"type\": \"path\",\n                            \"op\": \"eq\",\n                            \"value\": \"/api\",\n                        },\n                        {\n                            \"type\": \"cookie\",\n                            \"key\": \"_session\",\n                            \"neg\": True,\n                            \"op\": \"ex\",\n                        },\n                    ],\n                }],\n                \"action\": {\n                    \"action\": \"challenge\",\n                },\n            },\n            {\n                \"name\": \"Require Authorization header\",\n                \"description\": \"Block requests without Authorization header\",\n                \"condition_groups\": [{\n                    \"conditions\": [{\n                        \"type\": \"header\",\n                        \"key\": \"Authorization\",\n                        \"op\": \"nex\",\n                    }],\n                }],\n                \"action\": {\n                    \"action\": \"deny\",\n                },\n            },\n            {\n                \"name\": \"Log requests with custom header\",\n                \"description\": \"Log requests that have X-Custom-Header present\",\n                \"condition_groups\": [{\n                    \"conditions\": [{\n                        \"type\": \"header\",\n                        \"key\": \"X-Custom-Header\",\n                        \"op\": \"ex\",\n                    }],\n                }],\n                \"action\": {\n                    \"action\": \"log\",\n                },\n            },\n            {\n                \"name\": \"Rate limit API\",\n                \"description\": \"apply ratelimit to requests under /api\",\n                \"condition_groups\": [{\n                    \"conditions\": [{\n                        \"type\": \"path\",\n                        \"op\": \"pre\",\n                        \"value\": \"/api\",\n                    }],\n                }],\n                \"action\": {\n                    \"action\": \"rate_limit\",\n                    \"rate_limit\": {\n                        \"limit\": 100,\n                        \"window\": 300,\n                        \"keys\": [\n                            \"ip\",\n                            \"ja4\",\n                        ],\n                        \"algo\": \"fixed_window\",\n                        \"action\": \"deny\",\n                    },\n                    \"action_duration\": \"5m\",\n                },\n            },\n            {\n                \"name\": \"Known clients\",\n                \"description\": \"Match known keys in header\",\n                \"condition_groups\": [{\n                    \"conditions\": [{\n                        \"type\": \"header\",\n                        \"key\": \"Authorization\",\n                        \"op\": \"inc\",\n                        \"values\": [\n                            \"key1\",\n                            \"key2\",\n                        ],\n                    }],\n                }],\n                \"action\": {\n                    \"action\": \"rate_limit\",\n                    \"rate_limit\": {\n                        \"limit\": 100,\n                        \"window\": 300,\n                        \"keys\": [\n                            \"ip\",\n                            \"ja4\",\n                        ],\n                        \"algo\": \"fixed_window\",\n                        \"action\": \"deny\",\n                    },\n                    \"action_duration\": \"5m\",\n                },\n            },\n        ],\n    })\nmanaged_example = vercel.Project(\"managed_example\", name=\"firewall-managed-rule-example\")\nmanaged = vercel.FirewallConfig(\"managed\",\n    project_id=managed_vercel_project[\"id\"],\n    managed_rulesets={\n        \"owasp\": {\n            \"xss\": {\n                \"action\": \"deny\",\n            },\n            \"sqli\": {\n                \"action\": \"deny\",\n            },\n            \"rce\": {\n                \"action\": \"deny\",\n            },\n            \"php\": {\n                \"action\": \"deny\",\n            },\n            \"java\": {\n                \"action\": \"deny\",\n            },\n            \"lfi\": {\n                \"action\": \"deny\",\n            },\n            \"rfi\": {\n                \"action\": \"deny\",\n            },\n            \"gen\": {\n                \"action\": \"deny\",\n            },\n        },\n        \"bot_protection\": {\n            \"action\": \"log\",\n            \"active\": True,\n        },\n        \"ai_bots\": {\n            \"action\": \"log\",\n            \"active\": True,\n        },\n    })\nip_example = vercel.Project(\"ip_example\", name=\"firewall-ip-blocking-example\")\nip_blocking = vercel.FirewallConfig(\"ip-blocking\",\n    project_id=ip_example.id,\n    ip_rules={\n        \"rules\": [\n            {\n                \"action\": \"deny\",\n                \"ip\": \"51.85.0.0/16\",\n                \"hostname\": \"*\",\n            },\n            {\n                \"action\": \"challenge\",\n                \"ip\": \"1.2.3.4\",\n                \"hostname\": \"example.com\",\n            },\n        ],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Vercel.Project(\"example\", new()\n    {\n        Name = \"firewall-config-example\",\n    });\n\n    var exampleFirewallConfig = new Vercel.FirewallConfig(\"example\", new()\n    {\n        ProjectId = example.Id,\n        Rules = new Vercel.Inputs.FirewallConfigRulesArgs\n        {\n            Rules = new[]\n            {\n                new Vercel.Inputs.FirewallConfigRulesRuleArgs\n                {\n                    Name = \"Bypass Known request\",\n                    Description = \"Bypass requests using internal bearer tokens\",\n                    ConditionGroups = new[]\n                    {\n                        new Vercel.Inputs.FirewallConfigRulesRuleConditionGroupArgs\n                        {\n                            Conditions = new[]\n                            {\n                                new Vercel.Inputs.FirewallConfigRulesRuleConditionGroupConditionArgs\n                                {\n                                    Type = \"header\",\n                                    Key = \"Authorization\",\n                                    Op = \"eq\",\n                                    Value = \"Bearer internaltoken\",\n                                },\n                            },\n                        },\n                        new Vercel.Inputs.FirewallConfigRulesRuleConditionGroupArgs\n                        {\n                            Conditions = new[]\n                            {\n                                new Vercel.Inputs.FirewallConfigRulesRuleConditionGroupConditionArgs\n                                {\n                                    Type = \"header\",\n                                    Key = \"Authorization\",\n                                    Op = \"eq\",\n                                    Value = \"Bearer internaltoken2\",\n                                },\n                            },\n                        },\n                    },\n                    Action = new Vercel.Inputs.FirewallConfigRulesRuleActionArgs\n                    {\n                        Action = \"bypass\",\n                    },\n                },\n                new Vercel.Inputs.FirewallConfigRulesRuleArgs\n                {\n                    Name = \"Challenge curl\",\n                    Description = \"Challenge user agents containing 'curl'\",\n                    ConditionGroups = new[]\n                    {\n                        new Vercel.Inputs.FirewallConfigRulesRuleConditionGroupArgs\n                        {\n                            Conditions = new[]\n                            {\n                                new Vercel.Inputs.FirewallConfigRulesRuleConditionGroupConditionArgs\n                                {\n                                    Type = \"user_agent\",\n                                    Op = \"sub\",\n                                    Value = \"curl\",\n                                },\n                            },\n                        },\n                    },\n                    Action = new Vercel.Inputs.FirewallConfigRulesRuleActionArgs\n                    {\n                        Action = \"challenge\",\n                    },\n                },\n                new Vercel.Inputs.FirewallConfigRulesRuleArgs\n                {\n                    Name = \"Deny cookieless requests\",\n                    Description = \"requests to /api that are missing a session cookie\",\n                    ConditionGroups = new[]\n                    {\n                        new Vercel.Inputs.FirewallConfigRulesRuleConditionGroupArgs\n                        {\n                            Conditions = new[]\n                            {\n                                new Vercel.Inputs.FirewallConfigRulesRuleConditionGroupConditionArgs\n                                {\n                                    Type = \"path\",\n                                    Op = \"eq\",\n                                    Value = \"/api\",\n                                },\n                                new Vercel.Inputs.FirewallConfigRulesRuleConditionGroupConditionArgs\n                                {\n                                    Type = \"cookie\",\n                                    Key = \"_session\",\n                                    Neg = true,\n                                    Op = \"ex\",\n                                },\n                            },\n                        },\n                    },\n                    Action = new Vercel.Inputs.FirewallConfigRulesRuleActionArgs\n                    {\n                        Action = \"challenge\",\n                    },\n                },\n                new Vercel.Inputs.FirewallConfigRulesRuleArgs\n                {\n                    Name = \"Require Authorization header\",\n                    Description = \"Block requests without Authorization header\",\n                    ConditionGroups = new[]\n                    {\n                        new Vercel.Inputs.FirewallConfigRulesRuleConditionGroupArgs\n                        {\n                            Conditions = new[]\n                            {\n                                new Vercel.Inputs.FirewallConfigRulesRuleConditionGroupConditionArgs\n                                {\n                                    Type = \"header\",\n                                    Key = \"Authorization\",\n                                    Op = \"nex\",\n                                },\n                            },\n                        },\n                    },\n                    Action = new Vercel.Inputs.FirewallConfigRulesRuleActionArgs\n                    {\n                        Action = \"deny\",\n                    },\n                },\n                new Vercel.Inputs.FirewallConfigRulesRuleArgs\n                {\n                    Name = \"Log requests with custom header\",\n                    Description = \"Log requests that have X-Custom-Header present\",\n                    ConditionGroups = new[]\n                    {\n                        new Vercel.Inputs.FirewallConfigRulesRuleConditionGroupArgs\n                        {\n                            Conditions = new[]\n                            {\n                                new Vercel.Inputs.FirewallConfigRulesRuleConditionGroupConditionArgs\n                                {\n                                    Type = \"header\",\n                                    Key = \"X-Custom-Header\",\n                                    Op = \"ex\",\n                                },\n                            },\n                        },\n                    },\n                    Action = new Vercel.Inputs.FirewallConfigRulesRuleActionArgs\n                    {\n                        Action = \"log\",\n                    },\n                },\n                new Vercel.Inputs.FirewallConfigRulesRuleArgs\n                {\n                    Name = \"Rate limit API\",\n                    Description = \"apply ratelimit to requests under /api\",\n                    ConditionGroups = new[]\n                    {\n                        new Vercel.Inputs.FirewallConfigRulesRuleConditionGroupArgs\n                        {\n                            Conditions = new[]\n                            {\n                                new Vercel.Inputs.FirewallConfigRulesRuleConditionGroupConditionArgs\n                                {\n                                    Type = \"path\",\n                                    Op = \"pre\",\n                                    Value = \"/api\",\n                                },\n                            },\n                        },\n                    },\n                    Action = new Vercel.Inputs.FirewallConfigRulesRuleActionArgs\n                    {\n                        Action = \"rate_limit\",\n                        RateLimit = new Vercel.Inputs.FirewallConfigRulesRuleActionRateLimitArgs\n                        {\n                            Limit = 100,\n                            Window = 300,\n                            Keys = new[]\n                            {\n                                \"ip\",\n                                \"ja4\",\n                            },\n                            Algo = \"fixed_window\",\n                            Action = \"deny\",\n                        },\n                        ActionDuration = \"5m\",\n                    },\n                },\n                new Vercel.Inputs.FirewallConfigRulesRuleArgs\n                {\n                    Name = \"Known clients\",\n                    Description = \"Match known keys in header\",\n                    ConditionGroups = new[]\n                    {\n                        new Vercel.Inputs.FirewallConfigRulesRuleConditionGroupArgs\n                        {\n                            Conditions = new[]\n                            {\n                                new Vercel.Inputs.FirewallConfigRulesRuleConditionGroupConditionArgs\n                                {\n                                    Type = \"header\",\n                                    Key = \"Authorization\",\n                                    Op = \"inc\",\n                                    Values = new[]\n                                    {\n                                        \"key1\",\n                                        \"key2\",\n                                    },\n                                },\n                            },\n                        },\n                    },\n                    Action = new Vercel.Inputs.FirewallConfigRulesRuleActionArgs\n                    {\n                        Action = \"rate_limit\",\n                        RateLimit = new Vercel.Inputs.FirewallConfigRulesRuleActionRateLimitArgs\n                        {\n                            Limit = 100,\n                            Window = 300,\n                            Keys = new[]\n                            {\n                                \"ip\",\n                                \"ja4\",\n                            },\n                            Algo = \"fixed_window\",\n                            Action = \"deny\",\n                        },\n                        ActionDuration = \"5m\",\n                    },\n                },\n            },\n        },\n    });\n\n    var managedExample = new Vercel.Project(\"managed_example\", new()\n    {\n        Name = \"firewall-managed-rule-example\",\n    });\n\n    var managed = new Vercel.FirewallConfig(\"managed\", new()\n    {\n        ProjectId = managedVercelProject.Id,\n        ManagedRulesets = new Vercel.Inputs.FirewallConfigManagedRulesetsArgs\n        {\n            Owasp = new Vercel.Inputs.FirewallConfigManagedRulesetsOwaspArgs\n            {\n                Xss = new Vercel.Inputs.FirewallConfigManagedRulesetsOwaspXssArgs\n                {\n                    Action = \"deny\",\n                },\n                Sqli = new Vercel.Inputs.FirewallConfigManagedRulesetsOwaspSqliArgs\n                {\n                    Action = \"deny\",\n                },\n                Rce = new Vercel.Inputs.FirewallConfigManagedRulesetsOwaspRceArgs\n                {\n                    Action = \"deny\",\n                },\n                Php = new Vercel.Inputs.FirewallConfigManagedRulesetsOwaspPhpArgs\n                {\n                    Action = \"deny\",\n                },\n                Java = new Vercel.Inputs.FirewallConfigManagedRulesetsOwaspJavaArgs\n                {\n                    Action = \"deny\",\n                },\n                Lfi = new Vercel.Inputs.FirewallConfigManagedRulesetsOwaspLfiArgs\n                {\n                    Action = \"deny\",\n                },\n                Rfi = new Vercel.Inputs.FirewallConfigManagedRulesetsOwaspRfiArgs\n                {\n                    Action = \"deny\",\n                },\n                Gen = new Vercel.Inputs.FirewallConfigManagedRulesetsOwaspGenArgs\n                {\n                    Action = \"deny\",\n                },\n            },\n            BotProtection = new Vercel.Inputs.FirewallConfigManagedRulesetsBotProtectionArgs\n            {\n                Action = \"log\",\n                Active = true,\n            },\n            AiBots = new Vercel.Inputs.FirewallConfigManagedRulesetsAiBotsArgs\n            {\n                Action = \"log\",\n                Active = true,\n            },\n        },\n    });\n\n    var ipExample = new Vercel.Project(\"ip_example\", new()\n    {\n        Name = \"firewall-ip-blocking-example\",\n    });\n\n    var ip_blocking = new Vercel.FirewallConfig(\"ip-blocking\", new()\n    {\n        ProjectId = ipExample.Id,\n        IpRules = new Vercel.Inputs.FirewallConfigIpRulesArgs\n        {\n            Rules = new[]\n            {\n                new Vercel.Inputs.FirewallConfigIpRulesRuleArgs\n                {\n                    Action = \"deny\",\n                    Ip = \"51.85.0.0/16\",\n                    Hostname = \"*\",\n                },\n                new Vercel.Inputs.FirewallConfigIpRulesRuleArgs\n                {\n                    Action = \"challenge\",\n                    Ip = \"1.2.3.4\",\n                    Hostname = \"example.com\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := vercel.NewProject(ctx, \"example\", \u0026vercel.ProjectArgs{\n\t\t\tName: pulumi.String(\"firewall-config-example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewFirewallConfig(ctx, \"example\", \u0026vercel.FirewallConfigArgs{\n\t\t\tProjectId: example.ID(),\n\t\t\tRules: \u0026vercel.FirewallConfigRulesArgs{\n\t\t\t\tRules: vercel.FirewallConfigRulesRuleArray{\n\t\t\t\t\t\u0026vercel.FirewallConfigRulesRuleArgs{\n\t\t\t\t\t\tName:        pulumi.String(\"Bypass Known request\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"Bypass requests using internal bearer tokens\"),\n\t\t\t\t\t\tConditionGroups: vercel.FirewallConfigRulesRuleConditionGroupArray{\n\t\t\t\t\t\t\t\u0026vercel.FirewallConfigRulesRuleConditionGroupArgs{\n\t\t\t\t\t\t\t\tConditions: vercel.FirewallConfigRulesRuleConditionGroupConditionArray{\n\t\t\t\t\t\t\t\t\t\u0026vercel.FirewallConfigRulesRuleConditionGroupConditionArgs{\n\t\t\t\t\t\t\t\t\t\tType:  pulumi.String(\"header\"),\n\t\t\t\t\t\t\t\t\t\tKey:   pulumi.String(\"Authorization\"),\n\t\t\t\t\t\t\t\t\t\tOp:    pulumi.String(\"eq\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"Bearer internaltoken\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026vercel.FirewallConfigRulesRuleConditionGroupArgs{\n\t\t\t\t\t\t\t\tConditions: vercel.FirewallConfigRulesRuleConditionGroupConditionArray{\n\t\t\t\t\t\t\t\t\t\u0026vercel.FirewallConfigRulesRuleConditionGroupConditionArgs{\n\t\t\t\t\t\t\t\t\t\tType:  pulumi.String(\"header\"),\n\t\t\t\t\t\t\t\t\t\tKey:   pulumi.String(\"Authorization\"),\n\t\t\t\t\t\t\t\t\t\tOp:    pulumi.String(\"eq\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"Bearer internaltoken2\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAction: \u0026vercel.FirewallConfigRulesRuleActionArgs{\n\t\t\t\t\t\t\tAction: pulumi.String(\"bypass\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026vercel.FirewallConfigRulesRuleArgs{\n\t\t\t\t\t\tName:        pulumi.String(\"Challenge curl\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"Challenge user agents containing 'curl'\"),\n\t\t\t\t\t\tConditionGroups: vercel.FirewallConfigRulesRuleConditionGroupArray{\n\t\t\t\t\t\t\t\u0026vercel.FirewallConfigRulesRuleConditionGroupArgs{\n\t\t\t\t\t\t\t\tConditions: vercel.FirewallConfigRulesRuleConditionGroupConditionArray{\n\t\t\t\t\t\t\t\t\t\u0026vercel.FirewallConfigRulesRuleConditionGroupConditionArgs{\n\t\t\t\t\t\t\t\t\t\tType:  pulumi.String(\"user_agent\"),\n\t\t\t\t\t\t\t\t\t\tOp:    pulumi.String(\"sub\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"curl\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAction: \u0026vercel.FirewallConfigRulesRuleActionArgs{\n\t\t\t\t\t\t\tAction: pulumi.String(\"challenge\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026vercel.FirewallConfigRulesRuleArgs{\n\t\t\t\t\t\tName:        pulumi.String(\"Deny cookieless requests\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"requests to /api that are missing a session cookie\"),\n\t\t\t\t\t\tConditionGroups: vercel.FirewallConfigRulesRuleConditionGroupArray{\n\t\t\t\t\t\t\t\u0026vercel.FirewallConfigRulesRuleConditionGroupArgs{\n\t\t\t\t\t\t\t\tConditions: vercel.FirewallConfigRulesRuleConditionGroupConditionArray{\n\t\t\t\t\t\t\t\t\t\u0026vercel.FirewallConfigRulesRuleConditionGroupConditionArgs{\n\t\t\t\t\t\t\t\t\t\tType:  pulumi.String(\"path\"),\n\t\t\t\t\t\t\t\t\t\tOp:    pulumi.String(\"eq\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"/api\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026vercel.FirewallConfigRulesRuleConditionGroupConditionArgs{\n\t\t\t\t\t\t\t\t\t\tType: pulumi.String(\"cookie\"),\n\t\t\t\t\t\t\t\t\t\tKey:  pulumi.String(\"_session\"),\n\t\t\t\t\t\t\t\t\t\tNeg:  pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\tOp:   pulumi.String(\"ex\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAction: \u0026vercel.FirewallConfigRulesRuleActionArgs{\n\t\t\t\t\t\t\tAction: pulumi.String(\"challenge\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026vercel.FirewallConfigRulesRuleArgs{\n\t\t\t\t\t\tName:        pulumi.String(\"Require Authorization header\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"Block requests without Authorization header\"),\n\t\t\t\t\t\tConditionGroups: vercel.FirewallConfigRulesRuleConditionGroupArray{\n\t\t\t\t\t\t\t\u0026vercel.FirewallConfigRulesRuleConditionGroupArgs{\n\t\t\t\t\t\t\t\tConditions: vercel.FirewallConfigRulesRuleConditionGroupConditionArray{\n\t\t\t\t\t\t\t\t\t\u0026vercel.FirewallConfigRulesRuleConditionGroupConditionArgs{\n\t\t\t\t\t\t\t\t\t\tType: pulumi.String(\"header\"),\n\t\t\t\t\t\t\t\t\t\tKey:  pulumi.String(\"Authorization\"),\n\t\t\t\t\t\t\t\t\t\tOp:   pulumi.String(\"nex\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAction: \u0026vercel.FirewallConfigRulesRuleActionArgs{\n\t\t\t\t\t\t\tAction: pulumi.String(\"deny\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026vercel.FirewallConfigRulesRuleArgs{\n\t\t\t\t\t\tName:        pulumi.String(\"Log requests with custom header\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"Log requests that have X-Custom-Header present\"),\n\t\t\t\t\t\tConditionGroups: vercel.FirewallConfigRulesRuleConditionGroupArray{\n\t\t\t\t\t\t\t\u0026vercel.FirewallConfigRulesRuleConditionGroupArgs{\n\t\t\t\t\t\t\t\tConditions: vercel.FirewallConfigRulesRuleConditionGroupConditionArray{\n\t\t\t\t\t\t\t\t\t\u0026vercel.FirewallConfigRulesRuleConditionGroupConditionArgs{\n\t\t\t\t\t\t\t\t\t\tType: pulumi.String(\"header\"),\n\t\t\t\t\t\t\t\t\t\tKey:  pulumi.String(\"X-Custom-Header\"),\n\t\t\t\t\t\t\t\t\t\tOp:   pulumi.String(\"ex\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAction: \u0026vercel.FirewallConfigRulesRuleActionArgs{\n\t\t\t\t\t\t\tAction: pulumi.String(\"log\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026vercel.FirewallConfigRulesRuleArgs{\n\t\t\t\t\t\tName:        pulumi.String(\"Rate limit API\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"apply ratelimit to requests under /api\"),\n\t\t\t\t\t\tConditionGroups: vercel.FirewallConfigRulesRuleConditionGroupArray{\n\t\t\t\t\t\t\t\u0026vercel.FirewallConfigRulesRuleConditionGroupArgs{\n\t\t\t\t\t\t\t\tConditions: vercel.FirewallConfigRulesRuleConditionGroupConditionArray{\n\t\t\t\t\t\t\t\t\t\u0026vercel.FirewallConfigRulesRuleConditionGroupConditionArgs{\n\t\t\t\t\t\t\t\t\t\tType:  pulumi.String(\"path\"),\n\t\t\t\t\t\t\t\t\t\tOp:    pulumi.String(\"pre\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"/api\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAction: \u0026vercel.FirewallConfigRulesRuleActionArgs{\n\t\t\t\t\t\t\tAction: pulumi.String(\"rate_limit\"),\n\t\t\t\t\t\t\tRateLimit: \u0026vercel.FirewallConfigRulesRuleActionRateLimitArgs{\n\t\t\t\t\t\t\t\tLimit:  pulumi.Int(100),\n\t\t\t\t\t\t\t\tWindow: pulumi.Int(300),\n\t\t\t\t\t\t\t\tKeys: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"ip\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"ja4\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tAlgo:   pulumi.String(\"fixed_window\"),\n\t\t\t\t\t\t\t\tAction: pulumi.String(\"deny\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tActionDuration: pulumi.String(\"5m\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026vercel.FirewallConfigRulesRuleArgs{\n\t\t\t\t\t\tName:        pulumi.String(\"Known clients\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"Match known keys in header\"),\n\t\t\t\t\t\tConditionGroups: vercel.FirewallConfigRulesRuleConditionGroupArray{\n\t\t\t\t\t\t\t\u0026vercel.FirewallConfigRulesRuleConditionGroupArgs{\n\t\t\t\t\t\t\t\tConditions: vercel.FirewallConfigRulesRuleConditionGroupConditionArray{\n\t\t\t\t\t\t\t\t\t\u0026vercel.FirewallConfigRulesRuleConditionGroupConditionArgs{\n\t\t\t\t\t\t\t\t\t\tType: pulumi.String(\"header\"),\n\t\t\t\t\t\t\t\t\t\tKey:  pulumi.String(\"Authorization\"),\n\t\t\t\t\t\t\t\t\t\tOp:   pulumi.String(\"inc\"),\n\t\t\t\t\t\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"key1\"),\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"key2\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAction: \u0026vercel.FirewallConfigRulesRuleActionArgs{\n\t\t\t\t\t\t\tAction: pulumi.String(\"rate_limit\"),\n\t\t\t\t\t\t\tRateLimit: \u0026vercel.FirewallConfigRulesRuleActionRateLimitArgs{\n\t\t\t\t\t\t\t\tLimit:  pulumi.Int(100),\n\t\t\t\t\t\t\t\tWindow: pulumi.Int(300),\n\t\t\t\t\t\t\t\tKeys: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"ip\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"ja4\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tAlgo:   pulumi.String(\"fixed_window\"),\n\t\t\t\t\t\t\t\tAction: pulumi.String(\"deny\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tActionDuration: pulumi.String(\"5m\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewProject(ctx, \"managed_example\", \u0026vercel.ProjectArgs{\n\t\t\tName: pulumi.String(\"firewall-managed-rule-example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewFirewallConfig(ctx, \"managed\", \u0026vercel.FirewallConfigArgs{\n\t\t\tProjectId: pulumi.Any(managedVercelProject.Id),\n\t\t\tManagedRulesets: \u0026vercel.FirewallConfigManagedRulesetsArgs{\n\t\t\t\tOwasp: \u0026vercel.FirewallConfigManagedRulesetsOwaspArgs{\n\t\t\t\t\tXss: \u0026vercel.FirewallConfigManagedRulesetsOwaspXssArgs{\n\t\t\t\t\t\tAction: pulumi.String(\"deny\"),\n\t\t\t\t\t},\n\t\t\t\t\tSqli: \u0026vercel.FirewallConfigManagedRulesetsOwaspSqliArgs{\n\t\t\t\t\t\tAction: pulumi.String(\"deny\"),\n\t\t\t\t\t},\n\t\t\t\t\tRce: \u0026vercel.FirewallConfigManagedRulesetsOwaspRceArgs{\n\t\t\t\t\t\tAction: pulumi.String(\"deny\"),\n\t\t\t\t\t},\n\t\t\t\t\tPhp: \u0026vercel.FirewallConfigManagedRulesetsOwaspPhpArgs{\n\t\t\t\t\t\tAction: pulumi.String(\"deny\"),\n\t\t\t\t\t},\n\t\t\t\t\tJava: \u0026vercel.FirewallConfigManagedRulesetsOwaspJavaArgs{\n\t\t\t\t\t\tAction: pulumi.String(\"deny\"),\n\t\t\t\t\t},\n\t\t\t\t\tLfi: \u0026vercel.FirewallConfigManagedRulesetsOwaspLfiArgs{\n\t\t\t\t\t\tAction: pulumi.String(\"deny\"),\n\t\t\t\t\t},\n\t\t\t\t\tRfi: \u0026vercel.FirewallConfigManagedRulesetsOwaspRfiArgs{\n\t\t\t\t\t\tAction: pulumi.String(\"deny\"),\n\t\t\t\t\t},\n\t\t\t\t\tGen: \u0026vercel.FirewallConfigManagedRulesetsOwaspGenArgs{\n\t\t\t\t\t\tAction: pulumi.String(\"deny\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tBotProtection: \u0026vercel.FirewallConfigManagedRulesetsBotProtectionArgs{\n\t\t\t\t\tAction: pulumi.String(\"log\"),\n\t\t\t\t\tActive: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tAiBots: \u0026vercel.FirewallConfigManagedRulesetsAiBotsArgs{\n\t\t\t\t\tAction: pulumi.String(\"log\"),\n\t\t\t\t\tActive: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tipExample, err := vercel.NewProject(ctx, \"ip_example\", \u0026vercel.ProjectArgs{\n\t\t\tName: pulumi.String(\"firewall-ip-blocking-example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewFirewallConfig(ctx, \"ip-blocking\", \u0026vercel.FirewallConfigArgs{\n\t\t\tProjectId: ipExample.ID(),\n\t\t\tIpRules: \u0026vercel.FirewallConfigIpRulesArgs{\n\t\t\t\tRules: vercel.FirewallConfigIpRulesRuleArray{\n\t\t\t\t\t\u0026vercel.FirewallConfigIpRulesRuleArgs{\n\t\t\t\t\t\tAction:   pulumi.String(\"deny\"),\n\t\t\t\t\t\tIp:       pulumi.String(\"51.85.0.0/16\"),\n\t\t\t\t\t\tHostname: pulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026vercel.FirewallConfigIpRulesRuleArgs{\n\t\t\t\t\t\tAction:   pulumi.String(\"challenge\"),\n\t\t\t\t\t\tIp:       pulumi.String(\"1.2.3.4\"),\n\t\t\t\t\t\tHostname: pulumi.String(\"example.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.vercel.Project;\nimport com.pulumiverse.vercel.ProjectArgs;\nimport com.pulumiverse.vercel.FirewallConfig;\nimport com.pulumiverse.vercel.FirewallConfigArgs;\nimport com.pulumi.vercel.inputs.FirewallConfigRulesArgs;\nimport com.pulumi.vercel.inputs.FirewallConfigManagedRulesetsArgs;\nimport com.pulumi.vercel.inputs.FirewallConfigManagedRulesetsOwaspArgs;\nimport com.pulumi.vercel.inputs.FirewallConfigManagedRulesetsOwaspXssArgs;\nimport com.pulumi.vercel.inputs.FirewallConfigManagedRulesetsOwaspSqliArgs;\nimport com.pulumi.vercel.inputs.FirewallConfigManagedRulesetsOwaspRceArgs;\nimport com.pulumi.vercel.inputs.FirewallConfigManagedRulesetsOwaspPhpArgs;\nimport com.pulumi.vercel.inputs.FirewallConfigManagedRulesetsOwaspJavaArgs;\nimport com.pulumi.vercel.inputs.FirewallConfigManagedRulesetsOwaspLfiArgs;\nimport com.pulumi.vercel.inputs.FirewallConfigManagedRulesetsOwaspRfiArgs;\nimport com.pulumi.vercel.inputs.FirewallConfigManagedRulesetsOwaspGenArgs;\nimport com.pulumi.vercel.inputs.FirewallConfigManagedRulesetsBotProtectionArgs;\nimport com.pulumi.vercel.inputs.FirewallConfigManagedRulesetsAiBotsArgs;\nimport com.pulumi.vercel.inputs.FirewallConfigIpRulesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Project(\"example\", ProjectArgs.builder()\n            .name(\"firewall-config-example\")\n            .build());\n\n        var exampleFirewallConfig = new FirewallConfig(\"exampleFirewallConfig\", FirewallConfigArgs.builder()\n            .projectId(example.id())\n            .rules(FirewallConfigRulesArgs.builder()\n                .rules(                \n                    FirewallConfigRulesRuleArgs.builder()\n                        .name(\"Bypass Known request\")\n                        .description(\"Bypass requests using internal bearer tokens\")\n                        .conditionGroups(                        \n                            FirewallConfigRulesRuleConditionGroupArgs.builder()\n                                .conditions(FirewallConfigRulesRuleConditionGroupConditionArgs.builder()\n                                    .type(\"header\")\n                                    .key(\"Authorization\")\n                                    .op(\"eq\")\n                                    .value(\"Bearer internaltoken\")\n                                    .build())\n                                .build(),\n                            FirewallConfigRulesRuleConditionGroupArgs.builder()\n                                .conditions(FirewallConfigRulesRuleConditionGroupConditionArgs.builder()\n                                    .type(\"header\")\n                                    .key(\"Authorization\")\n                                    .op(\"eq\")\n                                    .value(\"Bearer internaltoken2\")\n                                    .build())\n                                .build())\n                        .action(FirewallConfigRulesRuleActionArgs.builder()\n                            .action(\"bypass\")\n                            .build())\n                        .build(),\n                    FirewallConfigRulesRuleArgs.builder()\n                        .name(\"Challenge curl\")\n                        .description(\"Challenge user agents containing 'curl'\")\n                        .conditionGroups(FirewallConfigRulesRuleConditionGroupArgs.builder()\n                            .conditions(FirewallConfigRulesRuleConditionGroupConditionArgs.builder()\n                                .type(\"user_agent\")\n                                .op(\"sub\")\n                                .value(\"curl\")\n                                .build())\n                            .build())\n                        .action(FirewallConfigRulesRuleActionArgs.builder()\n                            .action(\"challenge\")\n                            .build())\n                        .build(),\n                    FirewallConfigRulesRuleArgs.builder()\n                        .name(\"Deny cookieless requests\")\n                        .description(\"requests to /api that are missing a session cookie\")\n                        .conditionGroups(FirewallConfigRulesRuleConditionGroupArgs.builder()\n                            .conditions(                            \n                                FirewallConfigRulesRuleConditionGroupConditionArgs.builder()\n                                    .type(\"path\")\n                                    .op(\"eq\")\n                                    .value(\"/api\")\n                                    .build(),\n                                FirewallConfigRulesRuleConditionGroupConditionArgs.builder()\n                                    .type(\"cookie\")\n                                    .key(\"_session\")\n                                    .neg(true)\n                                    .op(\"ex\")\n                                    .build())\n                            .build())\n                        .action(FirewallConfigRulesRuleActionArgs.builder()\n                            .action(\"challenge\")\n                            .build())\n                        .build(),\n                    FirewallConfigRulesRuleArgs.builder()\n                        .name(\"Require Authorization header\")\n                        .description(\"Block requests without Authorization header\")\n                        .conditionGroups(FirewallConfigRulesRuleConditionGroupArgs.builder()\n                            .conditions(FirewallConfigRulesRuleConditionGroupConditionArgs.builder()\n                                .type(\"header\")\n                                .key(\"Authorization\")\n                                .op(\"nex\")\n                                .build())\n                            .build())\n                        .action(FirewallConfigRulesRuleActionArgs.builder()\n                            .action(\"deny\")\n                            .build())\n                        .build(),\n                    FirewallConfigRulesRuleArgs.builder()\n                        .name(\"Log requests with custom header\")\n                        .description(\"Log requests that have X-Custom-Header present\")\n                        .conditionGroups(FirewallConfigRulesRuleConditionGroupArgs.builder()\n                            .conditions(FirewallConfigRulesRuleConditionGroupConditionArgs.builder()\n                                .type(\"header\")\n                                .key(\"X-Custom-Header\")\n                                .op(\"ex\")\n                                .build())\n                            .build())\n                        .action(FirewallConfigRulesRuleActionArgs.builder()\n                            .action(\"log\")\n                            .build())\n                        .build(),\n                    FirewallConfigRulesRuleArgs.builder()\n                        .name(\"Rate limit API\")\n                        .description(\"apply ratelimit to requests under /api\")\n                        .conditionGroups(FirewallConfigRulesRuleConditionGroupArgs.builder()\n                            .conditions(FirewallConfigRulesRuleConditionGroupConditionArgs.builder()\n                                .type(\"path\")\n                                .op(\"pre\")\n                                .value(\"/api\")\n                                .build())\n                            .build())\n                        .action(FirewallConfigRulesRuleActionArgs.builder()\n                            .action(\"rate_limit\")\n                            .rateLimit(FirewallConfigRulesRuleActionRateLimitArgs.builder()\n                                .limit(100)\n                                .window(300)\n                                .keys(                                \n                                    \"ip\",\n                                    \"ja4\")\n                                .algo(\"fixed_window\")\n                                .action(\"deny\")\n                                .build())\n                            .actionDuration(\"5m\")\n                            .build())\n                        .build(),\n                    FirewallConfigRulesRuleArgs.builder()\n                        .name(\"Known clients\")\n                        .description(\"Match known keys in header\")\n                        .conditionGroups(FirewallConfigRulesRuleConditionGroupArgs.builder()\n                            .conditions(FirewallConfigRulesRuleConditionGroupConditionArgs.builder()\n                                .type(\"header\")\n                                .key(\"Authorization\")\n                                .op(\"inc\")\n                                .values(                                \n                                    \"key1\",\n                                    \"key2\")\n                                .build())\n                            .build())\n                        .action(FirewallConfigRulesRuleActionArgs.builder()\n                            .action(\"rate_limit\")\n                            .rateLimit(FirewallConfigRulesRuleActionRateLimitArgs.builder()\n                                .limit(100)\n                                .window(300)\n                                .keys(                                \n                                    \"ip\",\n                                    \"ja4\")\n                                .algo(\"fixed_window\")\n                                .action(\"deny\")\n                                .build())\n                            .actionDuration(\"5m\")\n                            .build())\n                        .build())\n                .build())\n            .build());\n\n        var managedExample = new Project(\"managedExample\", ProjectArgs.builder()\n            .name(\"firewall-managed-rule-example\")\n            .build());\n\n        var managed = new FirewallConfig(\"managed\", FirewallConfigArgs.builder()\n            .projectId(managedVercelProject.id())\n            .managedRulesets(FirewallConfigManagedRulesetsArgs.builder()\n                .owasp(FirewallConfigManagedRulesetsOwaspArgs.builder()\n                    .xss(FirewallConfigManagedRulesetsOwaspXssArgs.builder()\n                        .action(\"deny\")\n                        .build())\n                    .sqli(FirewallConfigManagedRulesetsOwaspSqliArgs.builder()\n                        .action(\"deny\")\n                        .build())\n                    .rce(FirewallConfigManagedRulesetsOwaspRceArgs.builder()\n                        .action(\"deny\")\n                        .build())\n                    .php(FirewallConfigManagedRulesetsOwaspPhpArgs.builder()\n                        .action(\"deny\")\n                        .build())\n                    .java(FirewallConfigManagedRulesetsOwaspJavaArgs.builder()\n                        .action(\"deny\")\n                        .build())\n                    .lfi(FirewallConfigManagedRulesetsOwaspLfiArgs.builder()\n                        .action(\"deny\")\n                        .build())\n                    .rfi(FirewallConfigManagedRulesetsOwaspRfiArgs.builder()\n                        .action(\"deny\")\n                        .build())\n                    .gen(FirewallConfigManagedRulesetsOwaspGenArgs.builder()\n                        .action(\"deny\")\n                        .build())\n                    .build())\n                .botProtection(FirewallConfigManagedRulesetsBotProtectionArgs.builder()\n                    .action(\"log\")\n                    .active(true)\n                    .build())\n                .aiBots(FirewallConfigManagedRulesetsAiBotsArgs.builder()\n                    .action(\"log\")\n                    .active(true)\n                    .build())\n                .build())\n            .build());\n\n        var ipExample = new Project(\"ipExample\", ProjectArgs.builder()\n            .name(\"firewall-ip-blocking-example\")\n            .build());\n\n        var ip_blocking = new FirewallConfig(\"ip-blocking\", FirewallConfigArgs.builder()\n            .projectId(ipExample.id())\n            .ipRules(FirewallConfigIpRulesArgs.builder()\n                .rules(                \n                    FirewallConfigIpRulesRuleArgs.builder()\n                        .action(\"deny\")\n                        .ip(\"51.85.0.0/16\")\n                        .hostname(\"*\")\n                        .build(),\n                    FirewallConfigIpRulesRuleArgs.builder()\n                        .action(\"challenge\")\n                        .ip(\"1.2.3.4\")\n                        .hostname(\"example.com\")\n                        .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:Project\n    properties:\n      name: firewall-config-example\n  exampleFirewallConfig:\n    type: vercel:FirewallConfig\n    name: example\n    properties:\n      projectId: ${example.id}\n      rules:\n        rules:\n          - name: Bypass Known request\n            description: Bypass requests using internal bearer tokens\n            conditionGroups:\n              - conditions:\n                  - type: header\n                    key: Authorization\n                    op: eq\n                    value: Bearer internaltoken\n              - conditions:\n                  - type: header\n                    key: Authorization\n                    op: eq\n                    value: Bearer internaltoken2\n            action:\n              action: bypass\n          - name: Challenge curl\n            description: Challenge user agents containing 'curl'\n            conditionGroups:\n              - conditions:\n                  - type: user_agent\n                    op: sub\n                    value: curl\n            action:\n              action: challenge\n          - name: Deny cookieless requests\n            description: requests to /api that are missing a session cookie\n            conditionGroups:\n              - conditions:\n                  - type: path\n                    op: eq\n                    value: /api\n                  - type: cookie\n                    key: _session\n                    neg: true\n                    op: ex\n            action:\n              action: challenge\n          - name: Require Authorization header\n            description: Block requests without Authorization header\n            conditionGroups:\n              - conditions:\n                  - type: header\n                    key: Authorization\n                    op: nex\n            action:\n              action: deny\n          - name: Log requests with custom header\n            description: Log requests that have X-Custom-Header present\n            conditionGroups:\n              - conditions:\n                  - type: header\n                    key: X-Custom-Header\n                    op: ex\n            action:\n              action: log\n          - name: Rate limit API\n            description: apply ratelimit to requests under /api\n            conditionGroups:\n              - conditions:\n                  - type: path\n                    op: pre\n                    value: /api\n            action:\n              action: rate_limit\n              rateLimit:\n                limit: 100\n                window: 300\n                keys:\n                  - ip\n                  - ja4\n                algo: fixed_window\n                action: deny\n              actionDuration: 5m\n          - name: Known clients\n            description: Match known keys in header\n            conditionGroups:\n              - conditions:\n                  - type: header\n                    key: Authorization\n                    op: inc\n                    values:\n                      - key1\n                      - key2\n            action:\n              action: rate_limit\n              rateLimit:\n                limit: 100\n                window: 300\n                keys:\n                  - ip\n                  - ja4\n                algo: fixed_window\n                action: deny\n              actionDuration: 5m\n  managedExample:\n    type: vercel:Project\n    name: managed_example\n    properties:\n      name: firewall-managed-rule-example\n  managed:\n    type: vercel:FirewallConfig\n    properties:\n      projectId: ${managedVercelProject.id}\n      managedRulesets:\n        owasp:\n          xss:\n            action: deny\n          sqli:\n            action: deny\n          rce:\n            action: deny\n          php:\n            action: deny\n          java:\n            action: deny\n          lfi:\n            action: deny\n          rfi:\n            action: deny\n          gen:\n            action: deny\n        botProtection:\n          action: log\n          active: true\n        aiBots:\n          action: log\n          active: true\n  ipExample:\n    type: vercel:Project\n    name: ip_example\n    properties:\n      name: firewall-ip-blocking-example\n  ip-blocking:\n    type: vercel:FirewallConfig\n    properties:\n      projectId: ${ipExample.id}\n      ipRules:\n        rules:\n          - action: deny\n            ip: 51.85.0.0/16\n            hostname: '*'\n          - action: challenge\n            ip: 1.2.3.4\n            hostname: example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n```sh\n$ pulumi import vercel:index/firewallConfig:FirewallConfig example team_xxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n","properties":{"enabled":{"type":"boolean","description":"Whether firewall is enabled or not.\n"},"ipRules":{"$ref":"#/types/vercel:index/FirewallConfigIpRules:FirewallConfigIpRules","description":"IP rules to apply to the project.\n"},"managedRulesets":{"$ref":"#/types/vercel:index/FirewallConfigManagedRulesets:FirewallConfigManagedRulesets","description":"The managed rulesets that are enabled.\n"},"projectId":{"type":"string","description":"The ID of the project this configuration belongs to.\n"},"rules":{"$ref":"#/types/vercel:index/FirewallConfigRules:FirewallConfigRules","description":"Custom rules to apply to the project\n"},"teamId":{"type":"string","description":"The ID of the team this project belongs to.\n"}},"required":["enabled","projectId","teamId"],"inputProperties":{"enabled":{"type":"boolean","description":"Whether firewall is enabled or not.\n"},"ipRules":{"$ref":"#/types/vercel:index/FirewallConfigIpRules:FirewallConfigIpRules","description":"IP rules to apply to the project.\n"},"managedRulesets":{"$ref":"#/types/vercel:index/FirewallConfigManagedRulesets:FirewallConfigManagedRulesets","description":"The managed rulesets that are enabled.\n"},"projectId":{"type":"string","description":"The ID of the project this configuration belongs to.\n"},"rules":{"$ref":"#/types/vercel:index/FirewallConfigRules:FirewallConfigRules","description":"Custom rules to apply to the project\n"},"teamId":{"type":"string","description":"The ID of the team this project belongs to.\n"}},"requiredInputs":["projectId"],"stateInputs":{"description":"Input properties used for looking up and filtering FirewallConfig resources.\n","properties":{"enabled":{"type":"boolean","description":"Whether firewall is enabled or not.\n"},"ipRules":{"$ref":"#/types/vercel:index/FirewallConfigIpRules:FirewallConfigIpRules","description":"IP rules to apply to the project.\n"},"managedRulesets":{"$ref":"#/types/vercel:index/FirewallConfigManagedRulesets:FirewallConfigManagedRulesets","description":"The managed rulesets that are enabled.\n"},"projectId":{"type":"string","description":"The ID of the project this configuration belongs to.\n"},"rules":{"$ref":"#/types/vercel:index/FirewallConfigRules:FirewallConfigRules","description":"Custom rules to apply to the project\n"},"teamId":{"type":"string","description":"The ID of the team this project belongs to.\n"}},"type":"object"}},"vercel:index/integrationProjectAccess:IntegrationProjectAccess":{"description":"Provides Project access to an existing Integration. This requires the integration already exists and is already configured for Specific Project access.\n","properties":{"integrationId":{"type":"string","description":"The ID of the integration.\n"},"projectId":{"type":"string","description":"The ID of the Vercel project.\n"},"teamId":{"type":"string","description":"The ID of the Vercel team.Required when configuring a team resource if a default team has not been set in the provider.\n"}},"required":["integrationId","projectId","teamId"],"inputProperties":{"integrationId":{"type":"string","description":"The ID of the integration.\n"},"projectId":{"type":"string","description":"The ID of the Vercel project.\n"},"teamId":{"type":"string","description":"The ID of the Vercel team.Required when configuring a team resource if a default team has not been set in the provider.\n"}},"requiredInputs":["integrationId","projectId"],"stateInputs":{"description":"Input properties used for looking up and filtering IntegrationProjectAccess resources.\n","properties":{"integrationId":{"type":"string","description":"The ID of the integration.\n"},"projectId":{"type":"string","description":"The ID of the Vercel project.\n"},"teamId":{"type":"string","description":"The ID of the Vercel team.Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object"}},"vercel:index/logDrain:LogDrain":{"description":"Provides a Configurable Log Drain resource.\n\n\u003e For Log Drain integrations, please see the [Integration Log Drain docs](https://vercel.com/docs/observability/log-drains#log-drains-integration).\n\nLog Drains collect all of your logs using a service specializing in storing app logs.\n\nTeams on Pro and Enterprise plans can subscribe to log drains that are generic and configurable from the Vercel dashboard without creating an integration. This allows you to use a HTTP service to receive logs through Vercel's log drains.\n\n\u003e Only Pro and Enterprise teams can create Configurable Log Drains.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\n// Use the vercel_endpoint_verification data source to work out the verification code needed to\n// verify the log drain endpoint.\nconst example = vercel.getEndpointVerification({});\nconst exampleProject = new vercel.Project(\"example\", {name: \"example\"});\nconst exampleLogDrain = new vercel.LogDrain(\"example\", {\n    deliveryFormat: \"json\",\n    environments: [\"production\"],\n    headers: {\n        \"some-key\": \"some-value\",\n    },\n    projectIds: [exampleProject.id],\n    samplingRate: 0.8,\n    secret: \"a_very_long_and_very_well_specified_secret\",\n    sources: [\"static\"],\n    endpoint: \"https://example.com/my-log-drain-endpoint\",\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\nimport pulumiverse_vercel as vercel\n\n# Use the vercel_endpoint_verification data source to work out the verification code needed to\n# verify the log drain endpoint.\nexample = vercel.get_endpoint_verification()\nexample_project = vercel.Project(\"example\", name=\"example\")\nexample_log_drain = vercel.LogDrain(\"example\",\n    delivery_format=\"json\",\n    environments=[\"production\"],\n    headers={\n        \"some-key\": \"some-value\",\n    },\n    project_ids=[example_project.id],\n    sampling_rate=0.8,\n    secret=\"a_very_long_and_very_well_specified_secret\",\n    sources=[\"static\"],\n    endpoint=\"https://example.com/my-log-drain-endpoint\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Use the vercel_endpoint_verification data source to work out the verification code needed to\n    // verify the log drain endpoint.\n    var example = Vercel.GetEndpointVerification.Invoke();\n\n    var exampleProject = new Vercel.Project(\"example\", new()\n    {\n        Name = \"example\",\n    });\n\n    var exampleLogDrain = new Vercel.LogDrain(\"example\", new()\n    {\n        DeliveryFormat = \"json\",\n        Environments = new[]\n        {\n            \"production\",\n        },\n        Headers = \n        {\n            { \"some-key\", \"some-value\" },\n        },\n        ProjectIds = new[]\n        {\n            exampleProject.Id,\n        },\n        SamplingRate = 0.8,\n        Secret = \"a_very_long_and_very_well_specified_secret\",\n        Sources = new[]\n        {\n            \"static\",\n        },\n        Endpoint = \"https://example.com/my-log-drain-endpoint\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Use the vercel_endpoint_verification data source to work out the verification code needed to\n\t\t// verify the log drain endpoint.\n\t\t_, err := vercel.GetEndpointVerification(ctx, \u0026vercel.GetEndpointVerificationArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleProject, err := vercel.NewProject(ctx, \"example\", \u0026vercel.ProjectArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewLogDrain(ctx, \"example\", \u0026vercel.LogDrainArgs{\n\t\t\tDeliveryFormat: pulumi.String(\"json\"),\n\t\t\tEnvironments: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"production\"),\n\t\t\t},\n\t\t\tHeaders: pulumi.StringMap{\n\t\t\t\t\"some-key\": pulumi.String(\"some-value\"),\n\t\t\t},\n\t\t\tProjectIds: pulumi.StringArray{\n\t\t\t\texampleProject.ID(),\n\t\t\t},\n\t\t\tSamplingRate: pulumi.Float64(0.8),\n\t\t\tSecret:       pulumi.String(\"a_very_long_and_very_well_specified_secret\"),\n\t\t\tSources: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"static\"),\n\t\t\t},\n\t\t\tEndpoint: pulumi.String(\"https://example.com/my-log-drain-endpoint\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetEndpointVerificationArgs;\nimport com.pulumiverse.vercel.Project;\nimport com.pulumiverse.vercel.ProjectArgs;\nimport com.pulumiverse.vercel.LogDrain;\nimport com.pulumiverse.vercel.LogDrainArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Use the vercel_endpoint_verification data source to work out the verification code needed to\n        // verify the log drain endpoint.\n        final var example = VercelFunctions.getEndpointVerification(GetEndpointVerificationArgs.builder()\n            .build());\n\n        var exampleProject = new Project(\"exampleProject\", ProjectArgs.builder()\n            .name(\"example\")\n            .build());\n\n        var exampleLogDrain = new LogDrain(\"exampleLogDrain\", LogDrainArgs.builder()\n            .deliveryFormat(\"json\")\n            .environments(\"production\")\n            .headers(Map.of(\"some-key\", \"some-value\"))\n            .projectIds(exampleProject.id())\n            .samplingRate(0.8)\n            .secret(\"a_very_long_and_very_well_specified_secret\")\n            .sources(\"static\")\n            .endpoint(\"https://example.com/my-log-drain-endpoint\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleLogDrain:\n    type: vercel:LogDrain\n    name: example\n    properties:\n      deliveryFormat: json\n      environments:\n        - production\n      headers:\n        some-key: some-value\n      projectIds:\n        - ${exampleProject.id}\n      samplingRate: 0.8\n      secret: a_very_long_and_very_well_specified_secret\n      sources:\n        - static\n      endpoint: https://example.com/my-log-drain-endpoint\n  exampleProject:\n    type: vercel:Project\n    name: example\n    properties:\n      name: example\nvariables:\n  # Use the vercel_endpoint_verification data source to work out the verification code needed to\n  # // verify the log drain endpoint.\n  example:\n    fn::invoke:\n      function: vercel:getEndpointVerification\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIf importing into a personal account, or with a team configured on\n\nthe provider, simply use the log_drain_id.\n\n- log_drain_id can be found by querying the Vercel REST API (https://vercel.com/docs/rest-api/endpoints/logDrains#retrieves-a-list-of-all-the-log-drains).\n\n```sh\n$ pulumi import vercel:index/logDrain:LogDrain example ld_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nAlternatively, you can import via the team_id and edge_config_id.\n\n- team_id can be found in the team `settings` tab in the Vercel UI.\n\n- log_drain_id can be found by querying the Vercel REST API (https://vercel.com/docs/rest-api/endpoints/logDrains#retrieves-a-list-of-all-the-log-drains).\n\n```sh\n$ pulumi import vercel:index/logDrain:LogDrain example team_xxxxxxxxxxxxxxxxxxxxxxxx/ld_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n","properties":{"deliveryFormat":{"type":"string","description":"The format log data should be delivered in. Can be \u003cspan pulumi-lang-nodejs=\"`json`\" pulumi-lang-dotnet=\"`Json`\" pulumi-lang-go=\"`json`\" pulumi-lang-python=\"`json`\" pulumi-lang-yaml=\"`json`\" pulumi-lang-java=\"`json`\"\u003e`json`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ndjson`\" pulumi-lang-dotnet=\"`Ndjson`\" pulumi-lang-go=\"`ndjson`\" pulumi-lang-python=\"`ndjson`\" pulumi-lang-yaml=\"`ndjson`\" pulumi-lang-java=\"`ndjson`\"\u003e`ndjson`\u003c/span\u003e.\n"},"endpoint":{"type":"string","description":"Logs will be sent as POST requests to this URL. The endpoint will be verified, and must return a \u003cspan pulumi-lang-nodejs=\"`200`\" pulumi-lang-dotnet=\"`200`\" pulumi-lang-go=\"`200`\" pulumi-lang-python=\"`200`\" pulumi-lang-yaml=\"`200`\" pulumi-lang-java=\"`200`\"\u003e`200`\u003c/span\u003e status code and an `x-vercel-verify` header taken from the\u003cspan pulumi-lang-nodejs=\" endpointVerification \" pulumi-lang-dotnet=\" EndpointVerification \" pulumi-lang-go=\" endpointVerification \" pulumi-lang-python=\" endpoint_verification \" pulumi-lang-yaml=\" endpointVerification \" pulumi-lang-java=\" endpointVerification \"\u003e endpoint_verification \u003c/span\u003edata source. The value the `x-vercel-verify` header should be can be read from the \u003cspan pulumi-lang-nodejs=\"`vercelEndpointVerificationCode`\" pulumi-lang-dotnet=\"`VercelEndpointVerificationCode`\" pulumi-lang-go=\"`vercelEndpointVerificationCode`\" pulumi-lang-python=\"`vercel_endpoint_verification_code`\" pulumi-lang-yaml=\"`vercelEndpointVerificationCode`\" pulumi-lang-java=\"`vercelEndpointVerificationCode`\"\u003e`vercel_endpoint_verification_code`\u003c/span\u003e data source.\n"},"environments":{"type":"array","items":{"type":"string"},"description":"Logs from the selected environments will be forwarded to your webhook. At least one must be present.\n"},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom headers to include in requests to the log drain endpoint.\n","secret":true},"name":{"type":"string","description":"A human-readable name for the log drain.\n"},"projectIds":{"type":"array","items":{"type":"string"},"description":"A list of project IDs that the log drain should be associated with. Logs from these projects will be sent log events to the specified endpoint. If omitted, logs will be sent for all projects.\n"},"samplingRate":{"type":"number","description":"A ratio of logs matching the sampling rate will be sent to your log drain. Should be a value between 0 and 1. If unspecified, all logs are sent.\n"},"secret":{"type":"string","description":"A custom secret to be used for signing log events. You can use this secret to verify that log events are coming from Vercel and are not tampered with. See https://vercel.com/docs/observability/log-drains/log-drains-reference#secure-log-drains for full info.\n","secret":true},"sources":{"type":"array","items":{"type":"string"},"description":"A set of sources that the log drain should send logs for. Valid values are \u003cspan pulumi-lang-nodejs=\"`static`\" pulumi-lang-dotnet=\"`Static`\" pulumi-lang-go=\"`static`\" pulumi-lang-python=\"`static`\" pulumi-lang-yaml=\"`static`\" pulumi-lang-java=\"`static`\"\u003e`static`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`edge`\" pulumi-lang-dotnet=\"`Edge`\" pulumi-lang-go=\"`edge`\" pulumi-lang-python=\"`edge`\" pulumi-lang-yaml=\"`edge`\" pulumi-lang-java=\"`edge`\"\u003e`edge`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`external`\" pulumi-lang-dotnet=\"`External`\" pulumi-lang-go=\"`external`\" pulumi-lang-python=\"`external`\" pulumi-lang-yaml=\"`external`\" pulumi-lang-java=\"`external`\"\u003e`external`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`build`\" pulumi-lang-dotnet=\"`Build`\" pulumi-lang-go=\"`build`\" pulumi-lang-python=\"`build`\" pulumi-lang-yaml=\"`build`\" pulumi-lang-java=\"`build`\"\u003e`build`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`lambda`\" pulumi-lang-dotnet=\"`Lambda`\" pulumi-lang-go=\"`lambda`\" pulumi-lang-python=\"`lambda`\" pulumi-lang-yaml=\"`lambda`\" pulumi-lang-java=\"`lambda`\"\u003e`lambda`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`firewall`\" pulumi-lang-dotnet=\"`Firewall`\" pulumi-lang-go=\"`firewall`\" pulumi-lang-python=\"`firewall`\" pulumi-lang-yaml=\"`firewall`\" pulumi-lang-java=\"`firewall`\"\u003e`firewall`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`redirect`\" pulumi-lang-dotnet=\"`Redirect`\" pulumi-lang-go=\"`redirect`\" pulumi-lang-python=\"`redirect`\" pulumi-lang-yaml=\"`redirect`\" pulumi-lang-java=\"`redirect`\"\u003e`redirect`\u003c/span\u003e.\n"},"teamId":{"type":"string","description":"The ID of the team the Log Drain should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"required":["deliveryFormat","endpoint","environments","name","secret","sources","teamId"],"inputProperties":{"deliveryFormat":{"type":"string","description":"The format log data should be delivered in. Can be \u003cspan pulumi-lang-nodejs=\"`json`\" pulumi-lang-dotnet=\"`Json`\" pulumi-lang-go=\"`json`\" pulumi-lang-python=\"`json`\" pulumi-lang-yaml=\"`json`\" pulumi-lang-java=\"`json`\"\u003e`json`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ndjson`\" pulumi-lang-dotnet=\"`Ndjson`\" pulumi-lang-go=\"`ndjson`\" pulumi-lang-python=\"`ndjson`\" pulumi-lang-yaml=\"`ndjson`\" pulumi-lang-java=\"`ndjson`\"\u003e`ndjson`\u003c/span\u003e.\n"},"endpoint":{"type":"string","description":"Logs will be sent as POST requests to this URL. The endpoint will be verified, and must return a \u003cspan pulumi-lang-nodejs=\"`200`\" pulumi-lang-dotnet=\"`200`\" pulumi-lang-go=\"`200`\" pulumi-lang-python=\"`200`\" pulumi-lang-yaml=\"`200`\" pulumi-lang-java=\"`200`\"\u003e`200`\u003c/span\u003e status code and an `x-vercel-verify` header taken from the\u003cspan pulumi-lang-nodejs=\" endpointVerification \" pulumi-lang-dotnet=\" EndpointVerification \" pulumi-lang-go=\" endpointVerification \" pulumi-lang-python=\" endpoint_verification \" pulumi-lang-yaml=\" endpointVerification \" pulumi-lang-java=\" endpointVerification \"\u003e endpoint_verification \u003c/span\u003edata source. The value the `x-vercel-verify` header should be can be read from the \u003cspan pulumi-lang-nodejs=\"`vercelEndpointVerificationCode`\" pulumi-lang-dotnet=\"`VercelEndpointVerificationCode`\" pulumi-lang-go=\"`vercelEndpointVerificationCode`\" pulumi-lang-python=\"`vercel_endpoint_verification_code`\" pulumi-lang-yaml=\"`vercelEndpointVerificationCode`\" pulumi-lang-java=\"`vercelEndpointVerificationCode`\"\u003e`vercel_endpoint_verification_code`\u003c/span\u003e data source.\n"},"environments":{"type":"array","items":{"type":"string"},"description":"Logs from the selected environments will be forwarded to your webhook. At least one must be present.\n"},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom headers to include in requests to the log drain endpoint.\n","secret":true},"name":{"type":"string","description":"A human-readable name for the log drain.\n"},"projectIds":{"type":"array","items":{"type":"string"},"description":"A list of project IDs that the log drain should be associated with. Logs from these projects will be sent log events to the specified endpoint. If omitted, logs will be sent for all projects.\n"},"samplingRate":{"type":"number","description":"A ratio of logs matching the sampling rate will be sent to your log drain. Should be a value between 0 and 1. If unspecified, all logs are sent.\n"},"secret":{"type":"string","description":"A custom secret to be used for signing log events. You can use this secret to verify that log events are coming from Vercel and are not tampered with. See https://vercel.com/docs/observability/log-drains/log-drains-reference#secure-log-drains for full info.\n","secret":true},"sources":{"type":"array","items":{"type":"string"},"description":"A set of sources that the log drain should send logs for. Valid values are \u003cspan pulumi-lang-nodejs=\"`static`\" pulumi-lang-dotnet=\"`Static`\" pulumi-lang-go=\"`static`\" pulumi-lang-python=\"`static`\" pulumi-lang-yaml=\"`static`\" pulumi-lang-java=\"`static`\"\u003e`static`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`edge`\" pulumi-lang-dotnet=\"`Edge`\" pulumi-lang-go=\"`edge`\" pulumi-lang-python=\"`edge`\" pulumi-lang-yaml=\"`edge`\" pulumi-lang-java=\"`edge`\"\u003e`edge`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`external`\" pulumi-lang-dotnet=\"`External`\" pulumi-lang-go=\"`external`\" pulumi-lang-python=\"`external`\" pulumi-lang-yaml=\"`external`\" pulumi-lang-java=\"`external`\"\u003e`external`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`build`\" pulumi-lang-dotnet=\"`Build`\" pulumi-lang-go=\"`build`\" pulumi-lang-python=\"`build`\" pulumi-lang-yaml=\"`build`\" pulumi-lang-java=\"`build`\"\u003e`build`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`lambda`\" pulumi-lang-dotnet=\"`Lambda`\" pulumi-lang-go=\"`lambda`\" pulumi-lang-python=\"`lambda`\" pulumi-lang-yaml=\"`lambda`\" pulumi-lang-java=\"`lambda`\"\u003e`lambda`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`firewall`\" pulumi-lang-dotnet=\"`Firewall`\" pulumi-lang-go=\"`firewall`\" pulumi-lang-python=\"`firewall`\" pulumi-lang-yaml=\"`firewall`\" pulumi-lang-java=\"`firewall`\"\u003e`firewall`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`redirect`\" pulumi-lang-dotnet=\"`Redirect`\" pulumi-lang-go=\"`redirect`\" pulumi-lang-python=\"`redirect`\" pulumi-lang-yaml=\"`redirect`\" pulumi-lang-java=\"`redirect`\"\u003e`redirect`\u003c/span\u003e.\n"},"teamId":{"type":"string","description":"The ID of the team the Log Drain should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"requiredInputs":["deliveryFormat","endpoint","environments","sources"],"stateInputs":{"description":"Input properties used for looking up and filtering LogDrain resources.\n","properties":{"deliveryFormat":{"type":"string","description":"The format log data should be delivered in. Can be \u003cspan pulumi-lang-nodejs=\"`json`\" pulumi-lang-dotnet=\"`Json`\" pulumi-lang-go=\"`json`\" pulumi-lang-python=\"`json`\" pulumi-lang-yaml=\"`json`\" pulumi-lang-java=\"`json`\"\u003e`json`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ndjson`\" pulumi-lang-dotnet=\"`Ndjson`\" pulumi-lang-go=\"`ndjson`\" pulumi-lang-python=\"`ndjson`\" pulumi-lang-yaml=\"`ndjson`\" pulumi-lang-java=\"`ndjson`\"\u003e`ndjson`\u003c/span\u003e.\n"},"endpoint":{"type":"string","description":"Logs will be sent as POST requests to this URL. The endpoint will be verified, and must return a \u003cspan pulumi-lang-nodejs=\"`200`\" pulumi-lang-dotnet=\"`200`\" pulumi-lang-go=\"`200`\" pulumi-lang-python=\"`200`\" pulumi-lang-yaml=\"`200`\" pulumi-lang-java=\"`200`\"\u003e`200`\u003c/span\u003e status code and an `x-vercel-verify` header taken from the\u003cspan pulumi-lang-nodejs=\" endpointVerification \" pulumi-lang-dotnet=\" EndpointVerification \" pulumi-lang-go=\" endpointVerification \" pulumi-lang-python=\" endpoint_verification \" pulumi-lang-yaml=\" endpointVerification \" pulumi-lang-java=\" endpointVerification \"\u003e endpoint_verification \u003c/span\u003edata source. The value the `x-vercel-verify` header should be can be read from the \u003cspan pulumi-lang-nodejs=\"`vercelEndpointVerificationCode`\" pulumi-lang-dotnet=\"`VercelEndpointVerificationCode`\" pulumi-lang-go=\"`vercelEndpointVerificationCode`\" pulumi-lang-python=\"`vercel_endpoint_verification_code`\" pulumi-lang-yaml=\"`vercelEndpointVerificationCode`\" pulumi-lang-java=\"`vercelEndpointVerificationCode`\"\u003e`vercel_endpoint_verification_code`\u003c/span\u003e data source.\n"},"environments":{"type":"array","items":{"type":"string"},"description":"Logs from the selected environments will be forwarded to your webhook. At least one must be present.\n"},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom headers to include in requests to the log drain endpoint.\n","secret":true},"name":{"type":"string","description":"A human-readable name for the log drain.\n"},"projectIds":{"type":"array","items":{"type":"string"},"description":"A list of project IDs that the log drain should be associated with. Logs from these projects will be sent log events to the specified endpoint. If omitted, logs will be sent for all projects.\n"},"samplingRate":{"type":"number","description":"A ratio of logs matching the sampling rate will be sent to your log drain. Should be a value between 0 and 1. If unspecified, all logs are sent.\n"},"secret":{"type":"string","description":"A custom secret to be used for signing log events. You can use this secret to verify that log events are coming from Vercel and are not tampered with. See https://vercel.com/docs/observability/log-drains/log-drains-reference#secure-log-drains for full info.\n","secret":true},"sources":{"type":"array","items":{"type":"string"},"description":"A set of sources that the log drain should send logs for. Valid values are \u003cspan pulumi-lang-nodejs=\"`static`\" pulumi-lang-dotnet=\"`Static`\" pulumi-lang-go=\"`static`\" pulumi-lang-python=\"`static`\" pulumi-lang-yaml=\"`static`\" pulumi-lang-java=\"`static`\"\u003e`static`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`edge`\" pulumi-lang-dotnet=\"`Edge`\" pulumi-lang-go=\"`edge`\" pulumi-lang-python=\"`edge`\" pulumi-lang-yaml=\"`edge`\" pulumi-lang-java=\"`edge`\"\u003e`edge`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`external`\" pulumi-lang-dotnet=\"`External`\" pulumi-lang-go=\"`external`\" pulumi-lang-python=\"`external`\" pulumi-lang-yaml=\"`external`\" pulumi-lang-java=\"`external`\"\u003e`external`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`build`\" pulumi-lang-dotnet=\"`Build`\" pulumi-lang-go=\"`build`\" pulumi-lang-python=\"`build`\" pulumi-lang-yaml=\"`build`\" pulumi-lang-java=\"`build`\"\u003e`build`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`lambda`\" pulumi-lang-dotnet=\"`Lambda`\" pulumi-lang-go=\"`lambda`\" pulumi-lang-python=\"`lambda`\" pulumi-lang-yaml=\"`lambda`\" pulumi-lang-java=\"`lambda`\"\u003e`lambda`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`firewall`\" pulumi-lang-dotnet=\"`Firewall`\" pulumi-lang-go=\"`firewall`\" pulumi-lang-python=\"`firewall`\" pulumi-lang-yaml=\"`firewall`\" pulumi-lang-java=\"`firewall`\"\u003e`firewall`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`redirect`\" pulumi-lang-dotnet=\"`Redirect`\" pulumi-lang-go=\"`redirect`\" pulumi-lang-python=\"`redirect`\" pulumi-lang-yaml=\"`redirect`\" pulumi-lang-java=\"`redirect`\"\u003e`redirect`\u003c/span\u003e.\n"},"teamId":{"type":"string","description":"The ID of the team the Log Drain should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object"}},"vercel:index/microfrontendGroup:MicrofrontendGroup":{"description":"Provides a Microfrontend Group resource.\n\nA Microfrontend Group is a definition of a microfrontend belonging to a Vercel Team.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst parentMfeProject = vercel.getProject({\n    name: \"my parent project\",\n});\nconst childMfeProject = vercel.getProject({\n    name: \"my child project\",\n});\nconst exampleMfeGroup = new vercel.MicrofrontendGroup(\"example_mfe_group\", {\n    name: \"my mfe\",\n    defaultApp: {\n        projectId: parentMfeProject.then(parentMfeProject =\u003e parentMfeProject.id),\n    },\n});\nconst childMfeProjectMfeMembership = new vercel.MicrofrontendGroupMembership(\"child_mfe_project_mfe_membership\", {\n    projectId: childMfeProjectVercelProject.id,\n    microfrontendGroupId: exampleMfeGroup.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\nimport pulumiverse_vercel as vercel\n\nparent_mfe_project = vercel.get_project(name=\"my parent project\")\nchild_mfe_project = vercel.get_project(name=\"my child project\")\nexample_mfe_group = vercel.MicrofrontendGroup(\"example_mfe_group\",\n    name=\"my mfe\",\n    default_app={\n        \"project_id\": parent_mfe_project.id,\n    })\nchild_mfe_project_mfe_membership = vercel.MicrofrontendGroupMembership(\"child_mfe_project_mfe_membership\",\n    project_id=child_mfe_project_vercel_project[\"id\"],\n    microfrontend_group_id=example_mfe_group.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var parentMfeProject = Vercel.GetProject.Invoke(new()\n    {\n        Name = \"my parent project\",\n    });\n\n    var childMfeProject = Vercel.GetProject.Invoke(new()\n    {\n        Name = \"my child project\",\n    });\n\n    var exampleMfeGroup = new Vercel.MicrofrontendGroup(\"example_mfe_group\", new()\n    {\n        Name = \"my mfe\",\n        DefaultApp = new Vercel.Inputs.MicrofrontendGroupDefaultAppArgs\n        {\n            ProjectId = parentMfeProject.Apply(getProjectResult =\u003e getProjectResult.Id),\n        },\n    });\n\n    var childMfeProjectMfeMembership = new Vercel.MicrofrontendGroupMembership(\"child_mfe_project_mfe_membership\", new()\n    {\n        ProjectId = childMfeProjectVercelProject.Id,\n        MicrofrontendGroupId = exampleMfeGroup.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tparentMfeProject, err := vercel.LookupProject(ctx, \u0026vercel.LookupProjectArgs{\n\t\t\tName: \"my parent project\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.LookupProject(ctx, \u0026vercel.LookupProjectArgs{\n\t\t\tName: \"my child project\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleMfeGroup, err := vercel.NewMicrofrontendGroup(ctx, \"example_mfe_group\", \u0026vercel.MicrofrontendGroupArgs{\n\t\t\tName: pulumi.String(\"my mfe\"),\n\t\t\tDefaultApp: \u0026vercel.MicrofrontendGroupDefaultAppArgs{\n\t\t\t\tProjectId: pulumi.String(parentMfeProject.Id),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewMicrofrontendGroupMembership(ctx, \"child_mfe_project_mfe_membership\", \u0026vercel.MicrofrontendGroupMembershipArgs{\n\t\t\tProjectId:            pulumi.Any(childMfeProjectVercelProject.Id),\n\t\t\tMicrofrontendGroupId: exampleMfeGroup.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetProjectArgs;\nimport com.pulumiverse.vercel.MicrofrontendGroup;\nimport com.pulumiverse.vercel.MicrofrontendGroupArgs;\nimport com.pulumi.vercel.inputs.MicrofrontendGroupDefaultAppArgs;\nimport com.pulumiverse.vercel.MicrofrontendGroupMembership;\nimport com.pulumiverse.vercel.MicrofrontendGroupMembershipArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var parentMfeProject = VercelFunctions.getProject(GetProjectArgs.builder()\n            .name(\"my parent project\")\n            .build());\n\n        final var childMfeProject = VercelFunctions.getProject(GetProjectArgs.builder()\n            .name(\"my child project\")\n            .build());\n\n        var exampleMfeGroup = new MicrofrontendGroup(\"exampleMfeGroup\", MicrofrontendGroupArgs.builder()\n            .name(\"my mfe\")\n            .defaultApp(MicrofrontendGroupDefaultAppArgs.builder()\n                .projectId(parentMfeProject.id())\n                .build())\n            .build());\n\n        var childMfeProjectMfeMembership = new MicrofrontendGroupMembership(\"childMfeProjectMfeMembership\", MicrofrontendGroupMembershipArgs.builder()\n            .projectId(childMfeProjectVercelProject.id())\n            .microfrontendGroupId(exampleMfeGroup.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleMfeGroup:\n    type: vercel:MicrofrontendGroup\n    name: example_mfe_group\n    properties:\n      name: my mfe\n      defaultApp:\n        projectId: ${parentMfeProject.id}\n  childMfeProjectMfeMembership:\n    type: vercel:MicrofrontendGroupMembership\n    name: child_mfe_project_mfe_membership\n    properties:\n      projectId: ${childMfeProjectVercelProject.id}\n      microfrontendGroupId: ${exampleMfeGroup.id}\nvariables:\n  parentMfeProject:\n    fn::invoke:\n      function: vercel:getProject\n      arguments:\n        name: my parent project\n  childMfeProject:\n    fn::invoke:\n      function: vercel:getProject\n      arguments:\n        name: my child project\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIf importing into a personal account, or with a team configured on the provider, simply use the record id.\n\n- the microfrontend ID can be taken from the microfrontend settings page\n\n```sh\n$ pulumi import vercel:index/microfrontendGroup:MicrofrontendGroup example mfe_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nAlternatively, you can import via the team_id and microfrontend_id.\n\n- team_id can be found in the team `settings` tab in the Vercel UI.\n\n- the microfrontend ID can be taken from the microfrontend settings page\n\n```sh\n$ pulumi import vercel:index/microfrontendGroup:MicrofrontendGroup example team_xxxxxxxxxxxxxxxxxxxxxxxx/mfe_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n","properties":{"defaultApp":{"$ref":"#/types/vercel:index/MicrofrontendGroupDefaultApp:MicrofrontendGroupDefaultApp","description":"The default app for the project. Used as the entry point for the microfrontend.\n"},"name":{"type":"string","description":"A human readable name for the microfrontends group.\n"},"slug":{"type":"string","description":"A slugified version of the name.\n"},"teamId":{"type":"string","description":"The team ID to add the microfrontend group to. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"required":["defaultApp","name","slug","teamId"],"inputProperties":{"defaultApp":{"$ref":"#/types/vercel:index/MicrofrontendGroupDefaultApp:MicrofrontendGroupDefaultApp","description":"The default app for the project. Used as the entry point for the microfrontend.\n"},"name":{"type":"string","description":"A human readable name for the microfrontends group.\n"},"teamId":{"type":"string","description":"The team ID to add the microfrontend group to. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"requiredInputs":["defaultApp"],"stateInputs":{"description":"Input properties used for looking up and filtering MicrofrontendGroup resources.\n","properties":{"defaultApp":{"$ref":"#/types/vercel:index/MicrofrontendGroupDefaultApp:MicrofrontendGroupDefaultApp","description":"The default app for the project. Used as the entry point for the microfrontend.\n"},"name":{"type":"string","description":"A human readable name for the microfrontends group.\n"},"slug":{"type":"string","description":"A slugified version of the name.\n"},"teamId":{"type":"string","description":"The team ID to add the microfrontend group to. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object"}},"vercel:index/microfrontendGroupMembership:MicrofrontendGroupMembership":{"description":"Provides a Microfrontend Group Membership resource.\n\nA Microfrontend Group Membership is a definition of a Vercel Project being a part of a Microfrontend Group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst parentMfeProject = vercel.getProject({\n    name: \"my parent project\",\n});\nconst childMfeProject = vercel.getProject({\n    name: \"my child project\",\n});\nconst exampleMfeGroup = new vercel.MicrofrontendGroup(\"example_mfe_group\", {\n    name: \"my mfe\",\n    defaultApp: {\n        projectId: parentMfeProject.then(parentMfeProject =\u003e parentMfeProject.id),\n    },\n});\nconst childMfeProjectMfeMembership = new vercel.MicrofrontendGroupMembership(\"child_mfe_project_mfe_membership\", {\n    projectId: childMfeProjectVercelProject.id,\n    microfrontendGroupId: exampleMfeGroup.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\nimport pulumiverse_vercel as vercel\n\nparent_mfe_project = vercel.get_project(name=\"my parent project\")\nchild_mfe_project = vercel.get_project(name=\"my child project\")\nexample_mfe_group = vercel.MicrofrontendGroup(\"example_mfe_group\",\n    name=\"my mfe\",\n    default_app={\n        \"project_id\": parent_mfe_project.id,\n    })\nchild_mfe_project_mfe_membership = vercel.MicrofrontendGroupMembership(\"child_mfe_project_mfe_membership\",\n    project_id=child_mfe_project_vercel_project[\"id\"],\n    microfrontend_group_id=example_mfe_group.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var parentMfeProject = Vercel.GetProject.Invoke(new()\n    {\n        Name = \"my parent project\",\n    });\n\n    var childMfeProject = Vercel.GetProject.Invoke(new()\n    {\n        Name = \"my child project\",\n    });\n\n    var exampleMfeGroup = new Vercel.MicrofrontendGroup(\"example_mfe_group\", new()\n    {\n        Name = \"my mfe\",\n        DefaultApp = new Vercel.Inputs.MicrofrontendGroupDefaultAppArgs\n        {\n            ProjectId = parentMfeProject.Apply(getProjectResult =\u003e getProjectResult.Id),\n        },\n    });\n\n    var childMfeProjectMfeMembership = new Vercel.MicrofrontendGroupMembership(\"child_mfe_project_mfe_membership\", new()\n    {\n        ProjectId = childMfeProjectVercelProject.Id,\n        MicrofrontendGroupId = exampleMfeGroup.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tparentMfeProject, err := vercel.LookupProject(ctx, \u0026vercel.LookupProjectArgs{\n\t\t\tName: \"my parent project\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.LookupProject(ctx, \u0026vercel.LookupProjectArgs{\n\t\t\tName: \"my child project\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleMfeGroup, err := vercel.NewMicrofrontendGroup(ctx, \"example_mfe_group\", \u0026vercel.MicrofrontendGroupArgs{\n\t\t\tName: pulumi.String(\"my mfe\"),\n\t\t\tDefaultApp: \u0026vercel.MicrofrontendGroupDefaultAppArgs{\n\t\t\t\tProjectId: pulumi.String(parentMfeProject.Id),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewMicrofrontendGroupMembership(ctx, \"child_mfe_project_mfe_membership\", \u0026vercel.MicrofrontendGroupMembershipArgs{\n\t\t\tProjectId:            pulumi.Any(childMfeProjectVercelProject.Id),\n\t\t\tMicrofrontendGroupId: exampleMfeGroup.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetProjectArgs;\nimport com.pulumiverse.vercel.MicrofrontendGroup;\nimport com.pulumiverse.vercel.MicrofrontendGroupArgs;\nimport com.pulumi.vercel.inputs.MicrofrontendGroupDefaultAppArgs;\nimport com.pulumiverse.vercel.MicrofrontendGroupMembership;\nimport com.pulumiverse.vercel.MicrofrontendGroupMembershipArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var parentMfeProject = VercelFunctions.getProject(GetProjectArgs.builder()\n            .name(\"my parent project\")\n            .build());\n\n        final var childMfeProject = VercelFunctions.getProject(GetProjectArgs.builder()\n            .name(\"my child project\")\n            .build());\n\n        var exampleMfeGroup = new MicrofrontendGroup(\"exampleMfeGroup\", MicrofrontendGroupArgs.builder()\n            .name(\"my mfe\")\n            .defaultApp(MicrofrontendGroupDefaultAppArgs.builder()\n                .projectId(parentMfeProject.id())\n                .build())\n            .build());\n\n        var childMfeProjectMfeMembership = new MicrofrontendGroupMembership(\"childMfeProjectMfeMembership\", MicrofrontendGroupMembershipArgs.builder()\n            .projectId(childMfeProjectVercelProject.id())\n            .microfrontendGroupId(exampleMfeGroup.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleMfeGroup:\n    type: vercel:MicrofrontendGroup\n    name: example_mfe_group\n    properties:\n      name: my mfe\n      defaultApp:\n        projectId: ${parentMfeProject.id}\n  childMfeProjectMfeMembership:\n    type: vercel:MicrofrontendGroupMembership\n    name: child_mfe_project_mfe_membership\n    properties:\n      projectId: ${childMfeProjectVercelProject.id}\n      microfrontendGroupId: ${exampleMfeGroup.id}\nvariables:\n  parentMfeProject:\n    fn::invoke:\n      function: vercel:getProject\n      arguments:\n        name: my parent project\n  childMfeProject:\n    fn::invoke:\n      function: vercel:getProject\n      arguments:\n        name: my child project\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIf importing into a personal account, or with a team configured on the provider, simply use the record id.\n\n- the microfrontend ID can be taken from the microfrontend settings page\n\n- the project ID can be taken from the project settings page\n\n```sh\n$ pulumi import vercel:index/microfrontendGroupMembership:MicrofrontendGroupMembership example mfe_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/pid_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nAlternatively, you can import via the team_id and microfrontend_id.\n\n- team_id can be found in the team `settings` tab in the Vercel UI.\n\n- the microfrontend ID can be taken from the microfrontend settings page\n\n- the project ID can be taken from the project settings page\n\n```sh\n$ pulumi import vercel:index/microfrontendGroupMembership:MicrofrontendGroupMembership example team_xxxxxxxxxxxxxxxxxxxxxxxx/mfe_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/pid_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n","properties":{"defaultRoute":{"type":"string","description":"The default route for the project. Used for the screenshot of deployments.\n"},"microfrontendGroupId":{"type":"string","description":"The ID of the microfrontend group.\n"},"projectId":{"type":"string","description":"The ID of the project.\n"},"routeObservabilityToThisProject":{"type":"boolean","description":"Whether the project is route observability for this project. If dalse, the project will be route observability for all projects to the default project.\n"},"teamId":{"type":"string","description":"The team ID to add the microfrontend group to. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"required":["defaultRoute","microfrontendGroupId","projectId","routeObservabilityToThisProject","teamId"],"inputProperties":{"defaultRoute":{"type":"string","description":"The default route for the project. Used for the screenshot of deployments.\n"},"microfrontendGroupId":{"type":"string","description":"The ID of the microfrontend group.\n"},"projectId":{"type":"string","description":"The ID of the project.\n"},"routeObservabilityToThisProject":{"type":"boolean","description":"Whether the project is route observability for this project. If dalse, the project will be route observability for all projects to the default project.\n"},"teamId":{"type":"string","description":"The team ID to add the microfrontend group to. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"requiredInputs":["microfrontendGroupId","projectId"],"stateInputs":{"description":"Input properties used for looking up and filtering MicrofrontendGroupMembership resources.\n","properties":{"defaultRoute":{"type":"string","description":"The default route for the project. Used for the screenshot of deployments.\n"},"microfrontendGroupId":{"type":"string","description":"The ID of the microfrontend group.\n"},"projectId":{"type":"string","description":"The ID of the project.\n"},"routeObservabilityToThisProject":{"type":"boolean","description":"Whether the project is route observability for this project. If dalse, the project will be route observability for all projects to the default project.\n"},"teamId":{"type":"string","description":"The team ID to add the microfrontend group to. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object"}},"vercel:index/network:Network":{"description":"Provides a Network resource.\n","properties":{"awsAccountId":{"type":"string","description":"The ID of the AWS Account in which the network exists.\n"},"awsAvailabilityZoneIds":{"type":"array","items":{"type":"string"},"description":"The IDs of the AWS Availability Zones in which the network exists, if specified during creation.\n"},"awsRegion":{"type":"string","description":"The AWS Region in which the network exists.\n"},"cidr":{"type":"string","description":"The CIDR range of the Network.\n"},"egressIpAddresses":{"type":"array","items":{"type":"string"},"description":"The egress IP addresses of the Network.\n"},"name":{"type":"string","description":"The name of the network.\n"},"region":{"type":"string","description":"The Vercel region in which the Network exists.\n"},"status":{"type":"string","description":"The status of the Network.\n"},"teamId":{"type":"string","description":"The unique identifier of the Team that owns the Network. Required when configuring a team resource if a default team has not been set in the provider.\n"},"timeouts":{"$ref":"#/types/vercel:index/NetworkTimeouts:NetworkTimeouts"},"vpcId":{"type":"string","description":"The ID of the AWS VPC which hosts the network.\n"}},"required":["awsAccountId","awsAvailabilityZoneIds","awsRegion","cidr","egressIpAddresses","name","region","status","teamId","vpcId"],"inputProperties":{"awsAvailabilityZoneIds":{"type":"array","items":{"type":"string"},"description":"The IDs of the AWS Availability Zones in which the network exists, if specified during creation.\n"},"cidr":{"type":"string","description":"The CIDR range of the Network.\n"},"name":{"type":"string","description":"The name of the network.\n"},"region":{"type":"string","description":"The Vercel region in which the Network exists.\n"},"teamId":{"type":"string","description":"The unique identifier of the Team that owns the Network. Required when configuring a team resource if a default team has not been set in the provider.\n"},"timeouts":{"$ref":"#/types/vercel:index/NetworkTimeouts:NetworkTimeouts"}},"requiredInputs":["cidr","region"],"stateInputs":{"description":"Input properties used for looking up and filtering Network resources.\n","properties":{"awsAccountId":{"type":"string","description":"The ID of the AWS Account in which the network exists.\n"},"awsAvailabilityZoneIds":{"type":"array","items":{"type":"string"},"description":"The IDs of the AWS Availability Zones in which the network exists, if specified during creation.\n"},"awsRegion":{"type":"string","description":"The AWS Region in which the network exists.\n"},"cidr":{"type":"string","description":"The CIDR range of the Network.\n"},"egressIpAddresses":{"type":"array","items":{"type":"string"},"description":"The egress IP addresses of the Network.\n"},"name":{"type":"string","description":"The name of the network.\n"},"region":{"type":"string","description":"The Vercel region in which the Network exists.\n"},"status":{"type":"string","description":"The status of the Network.\n"},"teamId":{"type":"string","description":"The unique identifier of the Team that owns the Network. Required when configuring a team resource if a default team has not been set in the provider.\n"},"timeouts":{"$ref":"#/types/vercel:index/NetworkTimeouts:NetworkTimeouts"},"vpcId":{"type":"string","description":"The ID of the AWS VPC which hosts the network.\n"}},"type":"object"}},"vercel:index/project:Project":{"description":"## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\n// A project that is connected to a git repository.\n// Deployments will be created automatically\n// on every branch push and merges onto the Production Branch.\nconst withGit = new vercel.Project(\"with_git\", {\n    name: \"example-project-with-git\",\n    framework: \"nextjs\",\n    gitRepository: {\n        type: \"github\",\n        repo: \"vercel/some-repo\",\n    },\n});\n// A project that is not connected to a git repository.\n// Deployments will need to be created manually through\n// terraform, or via the vercel CLI.\nconst example = new vercel.Project(\"example\", {\n    name: \"example-project\",\n    framework: \"nextjs\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\n# A project that is connected to a git repository.\n# Deployments will be created automatically\n# on every branch push and merges onto the Production Branch.\nwith_git = vercel.Project(\"with_git\",\n    name=\"example-project-with-git\",\n    framework=\"nextjs\",\n    git_repository={\n        \"type\": \"github\",\n        \"repo\": \"vercel/some-repo\",\n    })\n# A project that is not connected to a git repository.\n# Deployments will need to be created manually through\n# terraform, or via the vercel CLI.\nexample = vercel.Project(\"example\",\n    name=\"example-project\",\n    framework=\"nextjs\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // A project that is connected to a git repository.\n    // Deployments will be created automatically\n    // on every branch push and merges onto the Production Branch.\n    var withGit = new Vercel.Project(\"with_git\", new()\n    {\n        Name = \"example-project-with-git\",\n        Framework = \"nextjs\",\n        GitRepository = new Vercel.Inputs.ProjectGitRepositoryArgs\n        {\n            Type = \"github\",\n            Repo = \"vercel/some-repo\",\n        },\n    });\n\n    // A project that is not connected to a git repository.\n    // Deployments will need to be created manually through\n    // terraform, or via the vercel CLI.\n    var example = new Vercel.Project(\"example\", new()\n    {\n        Name = \"example-project\",\n        Framework = \"nextjs\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// A project that is connected to a git repository.\n\t\t// Deployments will be created automatically\n\t\t// on every branch push and merges onto the Production Branch.\n\t\t_, err := vercel.NewProject(ctx, \"with_git\", \u0026vercel.ProjectArgs{\n\t\t\tName:      pulumi.String(\"example-project-with-git\"),\n\t\t\tFramework: pulumi.String(\"nextjs\"),\n\t\t\tGitRepository: \u0026vercel.ProjectGitRepositoryArgs{\n\t\t\t\tType: pulumi.String(\"github\"),\n\t\t\t\tRepo: pulumi.String(\"vercel/some-repo\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// A project that is not connected to a git repository.\n\t\t// Deployments will need to be created manually through\n\t\t// terraform, or via the vercel CLI.\n\t\t_, err = vercel.NewProject(ctx, \"example\", \u0026vercel.ProjectArgs{\n\t\t\tName:      pulumi.String(\"example-project\"),\n\t\t\tFramework: pulumi.String(\"nextjs\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.vercel.Project;\nimport com.pulumiverse.vercel.ProjectArgs;\nimport com.pulumi.vercel.inputs.ProjectGitRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // A project that is connected to a git repository.\n        // Deployments will be created automatically\n        // on every branch push and merges onto the Production Branch.\n        var withGit = new Project(\"withGit\", ProjectArgs.builder()\n            .name(\"example-project-with-git\")\n            .framework(\"nextjs\")\n            .gitRepository(ProjectGitRepositoryArgs.builder()\n                .type(\"github\")\n                .repo(\"vercel/some-repo\")\n                .build())\n            .build());\n\n        // A project that is not connected to a git repository.\n        // Deployments will need to be created manually through\n        // terraform, or via the vercel CLI.\n        var example = new Project(\"example\", ProjectArgs.builder()\n            .name(\"example-project\")\n            .framework(\"nextjs\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # A project that is connected to a git repository.\n  # Deployments will be created automatically\n  # on every branch push and merges onto the Production Branch.\n  withGit:\n    type: vercel:Project\n    name: with_git\n    properties:\n      name: example-project-with-git\n      framework: nextjs\n      gitRepository:\n        type: github\n        repo: vercel/some-repo\n  # A project that is not connected to a git repository.\n  # Deployments will need to be created manually through\n  # terraform, or via the vercel CLI.\n  example:\n    type: vercel:Project\n    properties:\n      name: example-project\n      framework: nextjs\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIf importing into a personal account, or with a team configured on\n\nthe provider, simply use the project ID.\n\n- project_id can be found in the project `settings` tab in the Vercel UI.\n\n```sh\n$ pulumi import vercel:index/project:Project example prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nAlternatively, you can import via the team_id and project_id.\n\n- team_id can be found in the team `settings` tab in the Vercel UI.\n\n- project_id can be found in the project `settings` tab in the Vercel UI.\n\n```sh\n$ pulumi import vercel:index/project:Project example team_xxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n","properties":{"autoAssignCustomDomains":{"type":"boolean","description":"Automatically assign custom production domains after each Production deployment via merge to the production branch or Vercel CLI deploy with --prod. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e\n"},"automaticallyExposeSystemEnvironmentVariables":{"type":"boolean","description":"Vercel provides a set of Environment Variables that are automatically populated by the System, such as the URL of the Deployment or the name of the Git branch deployed. To expose them to your Deployments, enable this field\n"},"buildCommand":{"type":"string","description":"The build command for this project. If omitted, this value will be automatically detected.\n"},"buildMachineType":{"type":"string","description":"The build machine type to use for this project. Must be one of \"enhanced\" or \"turbo\".\n"},"customerSuccessCodeVisibility":{"type":"boolean","description":"Allows Vercel Customer Support to inspect all Deployments' source code in this project to assist with debugging.\n"},"devCommand":{"type":"string","description":"The dev command for this project. If omitted, this value will be automatically detected.\n"},"directoryListing":{"type":"boolean","description":"If no index file is present within a directory, the directory contents will be displayed.\n"},"enableAffectedProjectsDeployments":{"type":"boolean","description":"When enabled, Vercel will automatically deploy all projects that are affected by a change to this project.\n"},"enablePreviewFeedback":{"type":"boolean","description":"Enables the Vercel Toolbar on your preview deployments.\n"},"enableProductionFeedback":{"type":"boolean","description":"Enables the Vercel Toolbar on your production deployments: one of on, off or default.\n"},"environments":{"type":"array","items":{"$ref":"#/types/vercel:index/ProjectEnvironment:ProjectEnvironment"},"description":"A set of Environment Variables that should be configured for the project.\n"},"framework":{"type":"string","description":"The framework that is being used for this project. If omitted, no framework is selected.\n"},"functionFailover":{"type":"boolean","description":"Automatically failover Serverless Functions to the nearest region. You can customize regions through vercel.json. A new Deployment is required for your changes to take effect.\n"},"gitComments":{"$ref":"#/types/vercel:index/ProjectGitComments:ProjectGitComments","description":"Configuration for Git Comments.\n"},"gitForkProtection":{"type":"boolean","description":"Ensures that pull requests targeting your Git repository must be authorized by a member of your Team before deploying if your Project has Environment Variables or if the pull request includes a change to vercel.json. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"gitLfs":{"type":"boolean","description":"Enables Git LFS support. Git LFS replaces large files such as audio samples, videos, datasets, and graphics with text pointers inside Git, while storing the file contents on a remote server like GitHub.com or GitHub Enterprise.\n"},"gitProviderOptions":{"$ref":"#/types/vercel:index/ProjectGitProviderOptions:ProjectGitProviderOptions","description":"Git provider options\n"},"gitRepository":{"$ref":"#/types/vercel:index/ProjectGitRepository:ProjectGitRepository","description":"The Git Repository that will be connected to the project. When this is defined, any pushes to the specified connected Git Repository will be automatically deployed. This requires the corresponding Vercel for [Github](https://vercel.com/docs/concepts/git/vercel-for-github), [Gitlab](https://vercel.com/docs/concepts/git/vercel-for-gitlab) or [Bitbucket](https://vercel.com/docs/concepts/git/vercel-for-bitbucket) plugins to be installed.\n"},"ignoreCommand":{"type":"string","description":"When a commit is pushed to the Git repository that is connected with your Project, its SHA will determine if a new Build has to be issued. If the SHA was deployed before, no new Build will be issued. You can customize this behavior with a command that exits with code 1 (new Build needed) or code 0.\n"},"installCommand":{"type":"string","description":"The install command for this project. If omitted, this value will be automatically detected.\n"},"name":{"type":"string","description":"The desired name for the project.\n"},"nodeVersion":{"type":"string","description":"The version of Node.js that is used in the Build Step and for Serverless Functions. A new Deployment is required for your changes to take effect.\n"},"oidcTokenConfig":{"$ref":"#/types/vercel:index/ProjectOidcTokenConfig:ProjectOidcTokenConfig","description":"Configuration for OpenID Connect (OIDC) tokens.\n"},"onDemandConcurrentBuilds":{"type":"boolean","description":"Instantly scale build capacity to skip the queue, even if all build slots are in use. You can also choose a larger build machine; charges apply per minute if it exceeds your team's default.\n"},"optionsAllowlist":{"$ref":"#/types/vercel:index/ProjectOptionsAllowlist:ProjectOptionsAllowlist","description":"Disable Deployment Protection for CORS preflight `OPTIONS` requests for a list of paths.\n"},"outputDirectory":{"type":"string","description":"The output directory of the project. If omitted, this value will be automatically detected.\n"},"passwordProtection":{"$ref":"#/types/vercel:index/ProjectPasswordProtection:ProjectPasswordProtection","description":"Ensures visitors of your Preview Deployments must enter a password in order to gain access.\n"},"previewComments":{"type":"boolean","description":"Enables the Vercel Toolbar on your preview deployments.\n","deprecationMessage":"Use \u003cspan pulumi-lang-nodejs=\"`enablePreviewFeedback`\" pulumi-lang-dotnet=\"`EnablePreviewFeedback`\" pulumi-lang-go=\"`enablePreviewFeedback`\" pulumi-lang-python=\"`enable_preview_feedback`\" pulumi-lang-yaml=\"`enablePreviewFeedback`\" pulumi-lang-java=\"`enablePreviewFeedback`\"\u003e`enable_preview_feedback`\u003c/span\u003e instead. This attribute will be removed in a future version."},"previewDeploymentSuffix":{"type":"string","description":"The preview deployment suffix to apply to preview deployment URLs for this project. If not set, Vercel's default suffix will be used.\n"},"previewDeploymentsDisabled":{"type":"boolean","description":"Disable creation of Preview Deployments for this project.\n"},"prioritiseProductionBuilds":{"type":"boolean","description":"If enabled, builds for the Production environment will be prioritized over Preview environments.\n"},"protectionBypassForAutomation":{"type":"boolean","description":"Allow automation services to bypass Deployment Protection on this project when using an HTTP header named `x-vercel-protection-bypass` with a value of the \u003cspan pulumi-lang-nodejs=\"`protectionBypassForAutomationSecret`\" pulumi-lang-dotnet=\"`ProtectionBypassForAutomationSecret`\" pulumi-lang-go=\"`protectionBypassForAutomationSecret`\" pulumi-lang-python=\"`protection_bypass_for_automation_secret`\" pulumi-lang-yaml=\"`protectionBypassForAutomationSecret`\" pulumi-lang-java=\"`protectionBypassForAutomationSecret`\"\u003e`protection_bypass_for_automation_secret`\u003c/span\u003e field.\n"},"protectionBypassForAutomationSecret":{"type":"string","description":"If \u003cspan pulumi-lang-nodejs=\"`protectionBypassForAutomation`\" pulumi-lang-dotnet=\"`ProtectionBypassForAutomation`\" pulumi-lang-go=\"`protectionBypassForAutomation`\" pulumi-lang-python=\"`protection_bypass_for_automation`\" pulumi-lang-yaml=\"`protectionBypassForAutomation`\" pulumi-lang-java=\"`protectionBypassForAutomation`\"\u003e`protection_bypass_for_automation`\u003c/span\u003e is enabled, optionally set this value to specify a 32 character secret, otherwise a secret will be generated.\n","secret":true},"publicSource":{"type":"boolean","description":"By default, visitors to the `/_logs` and `/_src` paths of your Production and Preview Deployments must log in with Vercel (requires being a member of your team) to see the Source, Logs and Deployment Status of your project. Setting \u003cspan pulumi-lang-nodejs=\"`publicSource`\" pulumi-lang-dotnet=\"`PublicSource`\" pulumi-lang-go=\"`publicSource`\" pulumi-lang-python=\"`public_source`\" pulumi-lang-yaml=\"`publicSource`\" pulumi-lang-java=\"`publicSource`\"\u003e`public_source`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e disables this behaviour, meaning the Source, Logs and Deployment Status can be publicly viewed.\n"},"resourceConfig":{"$ref":"#/types/vercel:index/ProjectResourceConfig:ProjectResourceConfig","description":"Resource Configuration for the project.\n"},"rootDirectory":{"type":"string","description":"The name of a directory or relative path to the source code of your project. If omitted, it will default to the project root.\n"},"serverlessFunctionRegion":{"type":"string","description":"The region on Vercel's network to which your Serverless Functions are deployed. It should be close to any data source your Serverless Function might depend on. A new Deployment is required for your changes to take effect. Please see [Vercel's documentation](https://vercel.com/docs/concepts/edge-network/regions) for a full list of regions.\n","deprecationMessage":"This attribute is deprecated. Please use resource_config.function_default_regions instead."},"skewProtection":{"type":"string","description":"Ensures that outdated clients always fetch the correct version for a given deployment. This value defines how long Vercel keeps Skew Protection active.\n"},"teamId":{"type":"string","description":"The team ID to add the project to. Required when configuring a team resource if a default team has not been set in the provider.\n"},"trustedIps":{"$ref":"#/types/vercel:index/ProjectTrustedIps:ProjectTrustedIps","description":"Ensures only visitors from an allowed IP address can access your deployment.\n"},"vercelAuthentication":{"$ref":"#/types/vercel:index/ProjectVercelAuthentication:ProjectVercelAuthentication","description":"Ensures visitors to your Preview Deployments are logged into Vercel and have a minimum of Viewer access on your team.\n"}},"required":["autoAssignCustomDomains","automaticallyExposeSystemEnvironmentVariables","buildMachineType","customerSuccessCodeVisibility","directoryListing","enableAffectedProjectsDeployments","enablePreviewFeedback","enableProductionFeedback","functionFailover","gitForkProtection","gitLfs","gitProviderOptions","name","nodeVersion","oidcTokenConfig","onDemandConcurrentBuilds","previewComments","previewDeploymentsDisabled","prioritiseProductionBuilds","protectionBypassForAutomationSecret","resourceConfig","serverlessFunctionRegion","teamId","vercelAuthentication"],"inputProperties":{"autoAssignCustomDomains":{"type":"boolean","description":"Automatically assign custom production domains after each Production deployment via merge to the production branch or Vercel CLI deploy with --prod. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e\n"},"automaticallyExposeSystemEnvironmentVariables":{"type":"boolean","description":"Vercel provides a set of Environment Variables that are automatically populated by the System, such as the URL of the Deployment or the name of the Git branch deployed. To expose them to your Deployments, enable this field\n"},"buildCommand":{"type":"string","description":"The build command for this project. If omitted, this value will be automatically detected.\n"},"buildMachineType":{"type":"string","description":"The build machine type to use for this project. Must be one of \"enhanced\" or \"turbo\".\n"},"customerSuccessCodeVisibility":{"type":"boolean","description":"Allows Vercel Customer Support to inspect all Deployments' source code in this project to assist with debugging.\n"},"devCommand":{"type":"string","description":"The dev command for this project. If omitted, this value will be automatically detected.\n"},"directoryListing":{"type":"boolean","description":"If no index file is present within a directory, the directory contents will be displayed.\n"},"enableAffectedProjectsDeployments":{"type":"boolean","description":"When enabled, Vercel will automatically deploy all projects that are affected by a change to this project.\n"},"enablePreviewFeedback":{"type":"boolean","description":"Enables the Vercel Toolbar on your preview deployments.\n"},"enableProductionFeedback":{"type":"boolean","description":"Enables the Vercel Toolbar on your production deployments: one of on, off or default.\n"},"environments":{"type":"array","items":{"$ref":"#/types/vercel:index/ProjectEnvironment:ProjectEnvironment"},"description":"A set of Environment Variables that should be configured for the project.\n"},"framework":{"type":"string","description":"The framework that is being used for this project. If omitted, no framework is selected.\n"},"functionFailover":{"type":"boolean","description":"Automatically failover Serverless Functions to the nearest region. You can customize regions through vercel.json. A new Deployment is required for your changes to take effect.\n"},"gitComments":{"$ref":"#/types/vercel:index/ProjectGitComments:ProjectGitComments","description":"Configuration for Git Comments.\n"},"gitForkProtection":{"type":"boolean","description":"Ensures that pull requests targeting your Git repository must be authorized by a member of your Team before deploying if your Project has Environment Variables or if the pull request includes a change to vercel.json. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"gitLfs":{"type":"boolean","description":"Enables Git LFS support. Git LFS replaces large files such as audio samples, videos, datasets, and graphics with text pointers inside Git, while storing the file contents on a remote server like GitHub.com or GitHub Enterprise.\n"},"gitProviderOptions":{"$ref":"#/types/vercel:index/ProjectGitProviderOptions:ProjectGitProviderOptions","description":"Git provider options\n"},"gitRepository":{"$ref":"#/types/vercel:index/ProjectGitRepository:ProjectGitRepository","description":"The Git Repository that will be connected to the project. When this is defined, any pushes to the specified connected Git Repository will be automatically deployed. This requires the corresponding Vercel for [Github](https://vercel.com/docs/concepts/git/vercel-for-github), [Gitlab](https://vercel.com/docs/concepts/git/vercel-for-gitlab) or [Bitbucket](https://vercel.com/docs/concepts/git/vercel-for-bitbucket) plugins to be installed.\n"},"ignoreCommand":{"type":"string","description":"When a commit is pushed to the Git repository that is connected with your Project, its SHA will determine if a new Build has to be issued. If the SHA was deployed before, no new Build will be issued. You can customize this behavior with a command that exits with code 1 (new Build needed) or code 0.\n"},"installCommand":{"type":"string","description":"The install command for this project. If omitted, this value will be automatically detected.\n"},"name":{"type":"string","description":"The desired name for the project.\n"},"nodeVersion":{"type":"string","description":"The version of Node.js that is used in the Build Step and for Serverless Functions. A new Deployment is required for your changes to take effect.\n"},"oidcTokenConfig":{"$ref":"#/types/vercel:index/ProjectOidcTokenConfig:ProjectOidcTokenConfig","description":"Configuration for OpenID Connect (OIDC) tokens.\n"},"onDemandConcurrentBuilds":{"type":"boolean","description":"Instantly scale build capacity to skip the queue, even if all build slots are in use. You can also choose a larger build machine; charges apply per minute if it exceeds your team's default.\n"},"optionsAllowlist":{"$ref":"#/types/vercel:index/ProjectOptionsAllowlist:ProjectOptionsAllowlist","description":"Disable Deployment Protection for CORS preflight `OPTIONS` requests for a list of paths.\n"},"outputDirectory":{"type":"string","description":"The output directory of the project. If omitted, this value will be automatically detected.\n"},"passwordProtection":{"$ref":"#/types/vercel:index/ProjectPasswordProtection:ProjectPasswordProtection","description":"Ensures visitors of your Preview Deployments must enter a password in order to gain access.\n"},"previewComments":{"type":"boolean","description":"Enables the Vercel Toolbar on your preview deployments.\n","deprecationMessage":"Use \u003cspan pulumi-lang-nodejs=\"`enablePreviewFeedback`\" pulumi-lang-dotnet=\"`EnablePreviewFeedback`\" pulumi-lang-go=\"`enablePreviewFeedback`\" pulumi-lang-python=\"`enable_preview_feedback`\" pulumi-lang-yaml=\"`enablePreviewFeedback`\" pulumi-lang-java=\"`enablePreviewFeedback`\"\u003e`enable_preview_feedback`\u003c/span\u003e instead. This attribute will be removed in a future version."},"previewDeploymentSuffix":{"type":"string","description":"The preview deployment suffix to apply to preview deployment URLs for this project. If not set, Vercel's default suffix will be used.\n"},"previewDeploymentsDisabled":{"type":"boolean","description":"Disable creation of Preview Deployments for this project.\n"},"prioritiseProductionBuilds":{"type":"boolean","description":"If enabled, builds for the Production environment will be prioritized over Preview environments.\n"},"protectionBypassForAutomation":{"type":"boolean","description":"Allow automation services to bypass Deployment Protection on this project when using an HTTP header named `x-vercel-protection-bypass` with a value of the \u003cspan pulumi-lang-nodejs=\"`protectionBypassForAutomationSecret`\" pulumi-lang-dotnet=\"`ProtectionBypassForAutomationSecret`\" pulumi-lang-go=\"`protectionBypassForAutomationSecret`\" pulumi-lang-python=\"`protection_bypass_for_automation_secret`\" pulumi-lang-yaml=\"`protectionBypassForAutomationSecret`\" pulumi-lang-java=\"`protectionBypassForAutomationSecret`\"\u003e`protection_bypass_for_automation_secret`\u003c/span\u003e field.\n"},"protectionBypassForAutomationSecret":{"type":"string","description":"If \u003cspan pulumi-lang-nodejs=\"`protectionBypassForAutomation`\" pulumi-lang-dotnet=\"`ProtectionBypassForAutomation`\" pulumi-lang-go=\"`protectionBypassForAutomation`\" pulumi-lang-python=\"`protection_bypass_for_automation`\" pulumi-lang-yaml=\"`protectionBypassForAutomation`\" pulumi-lang-java=\"`protectionBypassForAutomation`\"\u003e`protection_bypass_for_automation`\u003c/span\u003e is enabled, optionally set this value to specify a 32 character secret, otherwise a secret will be generated.\n","secret":true},"publicSource":{"type":"boolean","description":"By default, visitors to the `/_logs` and `/_src` paths of your Production and Preview Deployments must log in with Vercel (requires being a member of your team) to see the Source, Logs and Deployment Status of your project. Setting \u003cspan pulumi-lang-nodejs=\"`publicSource`\" pulumi-lang-dotnet=\"`PublicSource`\" pulumi-lang-go=\"`publicSource`\" pulumi-lang-python=\"`public_source`\" pulumi-lang-yaml=\"`publicSource`\" pulumi-lang-java=\"`publicSource`\"\u003e`public_source`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e disables this behaviour, meaning the Source, Logs and Deployment Status can be publicly viewed.\n"},"resourceConfig":{"$ref":"#/types/vercel:index/ProjectResourceConfig:ProjectResourceConfig","description":"Resource Configuration for the project.\n"},"rootDirectory":{"type":"string","description":"The name of a directory or relative path to the source code of your project. If omitted, it will default to the project root.\n"},"serverlessFunctionRegion":{"type":"string","description":"The region on Vercel's network to which your Serverless Functions are deployed. It should be close to any data source your Serverless Function might depend on. A new Deployment is required for your changes to take effect. Please see [Vercel's documentation](https://vercel.com/docs/concepts/edge-network/regions) for a full list of regions.\n","deprecationMessage":"This attribute is deprecated. Please use resource_config.function_default_regions instead."},"skewProtection":{"type":"string","description":"Ensures that outdated clients always fetch the correct version for a given deployment. This value defines how long Vercel keeps Skew Protection active.\n"},"teamId":{"type":"string","description":"The team ID to add the project to. Required when configuring a team resource if a default team has not been set in the provider.\n"},"trustedIps":{"$ref":"#/types/vercel:index/ProjectTrustedIps:ProjectTrustedIps","description":"Ensures only visitors from an allowed IP address can access your deployment.\n"},"vercelAuthentication":{"$ref":"#/types/vercel:index/ProjectVercelAuthentication:ProjectVercelAuthentication","description":"Ensures visitors to your Preview Deployments are logged into Vercel and have a minimum of Viewer access on your team.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering Project resources.\n","properties":{"autoAssignCustomDomains":{"type":"boolean","description":"Automatically assign custom production domains after each Production deployment via merge to the production branch or Vercel CLI deploy with --prod. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e\n"},"automaticallyExposeSystemEnvironmentVariables":{"type":"boolean","description":"Vercel provides a set of Environment Variables that are automatically populated by the System, such as the URL of the Deployment or the name of the Git branch deployed. To expose them to your Deployments, enable this field\n"},"buildCommand":{"type":"string","description":"The build command for this project. If omitted, this value will be automatically detected.\n"},"buildMachineType":{"type":"string","description":"The build machine type to use for this project. Must be one of \"enhanced\" or \"turbo\".\n"},"customerSuccessCodeVisibility":{"type":"boolean","description":"Allows Vercel Customer Support to inspect all Deployments' source code in this project to assist with debugging.\n"},"devCommand":{"type":"string","description":"The dev command for this project. If omitted, this value will be automatically detected.\n"},"directoryListing":{"type":"boolean","description":"If no index file is present within a directory, the directory contents will be displayed.\n"},"enableAffectedProjectsDeployments":{"type":"boolean","description":"When enabled, Vercel will automatically deploy all projects that are affected by a change to this project.\n"},"enablePreviewFeedback":{"type":"boolean","description":"Enables the Vercel Toolbar on your preview deployments.\n"},"enableProductionFeedback":{"type":"boolean","description":"Enables the Vercel Toolbar on your production deployments: one of on, off or default.\n"},"environments":{"type":"array","items":{"$ref":"#/types/vercel:index/ProjectEnvironment:ProjectEnvironment"},"description":"A set of Environment Variables that should be configured for the project.\n"},"framework":{"type":"string","description":"The framework that is being used for this project. If omitted, no framework is selected.\n"},"functionFailover":{"type":"boolean","description":"Automatically failover Serverless Functions to the nearest region. You can customize regions through vercel.json. A new Deployment is required for your changes to take effect.\n"},"gitComments":{"$ref":"#/types/vercel:index/ProjectGitComments:ProjectGitComments","description":"Configuration for Git Comments.\n"},"gitForkProtection":{"type":"boolean","description":"Ensures that pull requests targeting your Git repository must be authorized by a member of your Team before deploying if your Project has Environment Variables or if the pull request includes a change to vercel.json. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"gitLfs":{"type":"boolean","description":"Enables Git LFS support. Git LFS replaces large files such as audio samples, videos, datasets, and graphics with text pointers inside Git, while storing the file contents on a remote server like GitHub.com or GitHub Enterprise.\n"},"gitProviderOptions":{"$ref":"#/types/vercel:index/ProjectGitProviderOptions:ProjectGitProviderOptions","description":"Git provider options\n"},"gitRepository":{"$ref":"#/types/vercel:index/ProjectGitRepository:ProjectGitRepository","description":"The Git Repository that will be connected to the project. When this is defined, any pushes to the specified connected Git Repository will be automatically deployed. This requires the corresponding Vercel for [Github](https://vercel.com/docs/concepts/git/vercel-for-github), [Gitlab](https://vercel.com/docs/concepts/git/vercel-for-gitlab) or [Bitbucket](https://vercel.com/docs/concepts/git/vercel-for-bitbucket) plugins to be installed.\n"},"ignoreCommand":{"type":"string","description":"When a commit is pushed to the Git repository that is connected with your Project, its SHA will determine if a new Build has to be issued. If the SHA was deployed before, no new Build will be issued. You can customize this behavior with a command that exits with code 1 (new Build needed) or code 0.\n"},"installCommand":{"type":"string","description":"The install command for this project. If omitted, this value will be automatically detected.\n"},"name":{"type":"string","description":"The desired name for the project.\n"},"nodeVersion":{"type":"string","description":"The version of Node.js that is used in the Build Step and for Serverless Functions. A new Deployment is required for your changes to take effect.\n"},"oidcTokenConfig":{"$ref":"#/types/vercel:index/ProjectOidcTokenConfig:ProjectOidcTokenConfig","description":"Configuration for OpenID Connect (OIDC) tokens.\n"},"onDemandConcurrentBuilds":{"type":"boolean","description":"Instantly scale build capacity to skip the queue, even if all build slots are in use. You can also choose a larger build machine; charges apply per minute if it exceeds your team's default.\n"},"optionsAllowlist":{"$ref":"#/types/vercel:index/ProjectOptionsAllowlist:ProjectOptionsAllowlist","description":"Disable Deployment Protection for CORS preflight `OPTIONS` requests for a list of paths.\n"},"outputDirectory":{"type":"string","description":"The output directory of the project. If omitted, this value will be automatically detected.\n"},"passwordProtection":{"$ref":"#/types/vercel:index/ProjectPasswordProtection:ProjectPasswordProtection","description":"Ensures visitors of your Preview Deployments must enter a password in order to gain access.\n"},"previewComments":{"type":"boolean","description":"Enables the Vercel Toolbar on your preview deployments.\n","deprecationMessage":"Use \u003cspan pulumi-lang-nodejs=\"`enablePreviewFeedback`\" pulumi-lang-dotnet=\"`EnablePreviewFeedback`\" pulumi-lang-go=\"`enablePreviewFeedback`\" pulumi-lang-python=\"`enable_preview_feedback`\" pulumi-lang-yaml=\"`enablePreviewFeedback`\" pulumi-lang-java=\"`enablePreviewFeedback`\"\u003e`enable_preview_feedback`\u003c/span\u003e instead. This attribute will be removed in a future version."},"previewDeploymentSuffix":{"type":"string","description":"The preview deployment suffix to apply to preview deployment URLs for this project. If not set, Vercel's default suffix will be used.\n"},"previewDeploymentsDisabled":{"type":"boolean","description":"Disable creation of Preview Deployments for this project.\n"},"prioritiseProductionBuilds":{"type":"boolean","description":"If enabled, builds for the Production environment will be prioritized over Preview environments.\n"},"protectionBypassForAutomation":{"type":"boolean","description":"Allow automation services to bypass Deployment Protection on this project when using an HTTP header named `x-vercel-protection-bypass` with a value of the \u003cspan pulumi-lang-nodejs=\"`protectionBypassForAutomationSecret`\" pulumi-lang-dotnet=\"`ProtectionBypassForAutomationSecret`\" pulumi-lang-go=\"`protectionBypassForAutomationSecret`\" pulumi-lang-python=\"`protection_bypass_for_automation_secret`\" pulumi-lang-yaml=\"`protectionBypassForAutomationSecret`\" pulumi-lang-java=\"`protectionBypassForAutomationSecret`\"\u003e`protection_bypass_for_automation_secret`\u003c/span\u003e field.\n"},"protectionBypassForAutomationSecret":{"type":"string","description":"If \u003cspan pulumi-lang-nodejs=\"`protectionBypassForAutomation`\" pulumi-lang-dotnet=\"`ProtectionBypassForAutomation`\" pulumi-lang-go=\"`protectionBypassForAutomation`\" pulumi-lang-python=\"`protection_bypass_for_automation`\" pulumi-lang-yaml=\"`protectionBypassForAutomation`\" pulumi-lang-java=\"`protectionBypassForAutomation`\"\u003e`protection_bypass_for_automation`\u003c/span\u003e is enabled, optionally set this value to specify a 32 character secret, otherwise a secret will be generated.\n","secret":true},"publicSource":{"type":"boolean","description":"By default, visitors to the `/_logs` and `/_src` paths of your Production and Preview Deployments must log in with Vercel (requires being a member of your team) to see the Source, Logs and Deployment Status of your project. Setting \u003cspan pulumi-lang-nodejs=\"`publicSource`\" pulumi-lang-dotnet=\"`PublicSource`\" pulumi-lang-go=\"`publicSource`\" pulumi-lang-python=\"`public_source`\" pulumi-lang-yaml=\"`publicSource`\" pulumi-lang-java=\"`publicSource`\"\u003e`public_source`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e disables this behaviour, meaning the Source, Logs and Deployment Status can be publicly viewed.\n"},"resourceConfig":{"$ref":"#/types/vercel:index/ProjectResourceConfig:ProjectResourceConfig","description":"Resource Configuration for the project.\n"},"rootDirectory":{"type":"string","description":"The name of a directory or relative path to the source code of your project. If omitted, it will default to the project root.\n"},"serverlessFunctionRegion":{"type":"string","description":"The region on Vercel's network to which your Serverless Functions are deployed. It should be close to any data source your Serverless Function might depend on. A new Deployment is required for your changes to take effect. Please see [Vercel's documentation](https://vercel.com/docs/concepts/edge-network/regions) for a full list of regions.\n","deprecationMessage":"This attribute is deprecated. Please use resource_config.function_default_regions instead."},"skewProtection":{"type":"string","description":"Ensures that outdated clients always fetch the correct version for a given deployment. This value defines how long Vercel keeps Skew Protection active.\n"},"teamId":{"type":"string","description":"The team ID to add the project to. Required when configuring a team resource if a default team has not been set in the provider.\n"},"trustedIps":{"$ref":"#/types/vercel:index/ProjectTrustedIps:ProjectTrustedIps","description":"Ensures only visitors from an allowed IP address can access your deployment.\n"},"vercelAuthentication":{"$ref":"#/types/vercel:index/ProjectVercelAuthentication:ProjectVercelAuthentication","description":"Ensures visitors to your Preview Deployments are logged into Vercel and have a minimum of Viewer access on your team.\n"}},"type":"object"}},"vercel:index/projectCrons:ProjectCrons":{"description":"Provides a Project Crons resource.\n\nThe resource toggles whether crons are enabled for a Vercel project.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = new vercel.Project(\"example\", {\n    name: \"example-project\",\n    framework: \"nextjs\",\n    gitRepository: {\n        type: \"github\",\n        repo: \"vercel/some-repo\",\n    },\n});\nconst exampleProjectCrons = new vercel.ProjectCrons(\"example\", {\n    projectId: example.id,\n    enabled: true,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.Project(\"example\",\n    name=\"example-project\",\n    framework=\"nextjs\",\n    git_repository={\n        \"type\": \"github\",\n        \"repo\": \"vercel/some-repo\",\n    })\nexample_project_crons = vercel.ProjectCrons(\"example\",\n    project_id=example.id,\n    enabled=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Vercel.Project(\"example\", new()\n    {\n        Name = \"example-project\",\n        Framework = \"nextjs\",\n        GitRepository = new Vercel.Inputs.ProjectGitRepositoryArgs\n        {\n            Type = \"github\",\n            Repo = \"vercel/some-repo\",\n        },\n    });\n\n    var exampleProjectCrons = new Vercel.ProjectCrons(\"example\", new()\n    {\n        ProjectId = example.Id,\n        Enabled = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := vercel.NewProject(ctx, \"example\", \u0026vercel.ProjectArgs{\n\t\t\tName:      pulumi.String(\"example-project\"),\n\t\t\tFramework: pulumi.String(\"nextjs\"),\n\t\t\tGitRepository: \u0026vercel.ProjectGitRepositoryArgs{\n\t\t\t\tType: pulumi.String(\"github\"),\n\t\t\t\tRepo: pulumi.String(\"vercel/some-repo\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewProjectCrons(ctx, \"example\", \u0026vercel.ProjectCronsArgs{\n\t\t\tProjectId: example.ID(),\n\t\t\tEnabled:   pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.vercel.Project;\nimport com.pulumiverse.vercel.ProjectArgs;\nimport com.pulumi.vercel.inputs.ProjectGitRepositoryArgs;\nimport com.pulumiverse.vercel.ProjectCrons;\nimport com.pulumiverse.vercel.ProjectCronsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Project(\"example\", ProjectArgs.builder()\n            .name(\"example-project\")\n            .framework(\"nextjs\")\n            .gitRepository(ProjectGitRepositoryArgs.builder()\n                .type(\"github\")\n                .repo(\"vercel/some-repo\")\n                .build())\n            .build());\n\n        var exampleProjectCrons = new ProjectCrons(\"exampleProjectCrons\", ProjectCronsArgs.builder()\n            .projectId(example.id())\n            .enabled(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:Project\n    properties:\n      name: example-project\n      framework: nextjs\n      gitRepository:\n        type: github\n        repo: vercel/some-repo\n  exampleProjectCrons:\n    type: vercel:ProjectCrons\n    name: example\n    properties:\n      projectId: ${example.id}\n      enabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIf importing with a team configured on the provider, simply use the project ID.\n\n- project_id can be found in the project `settings` tab in the Vercel UI.\n\n```sh\n$ pulumi import vercel:index/projectCrons:ProjectCrons example prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nAlternatively, you can import via the team_id and project_id.\n\n- team_id can be found in the team `settings` tab in the Vercel UI.\n\n- project_id can be found in the project `settings` tab in the Vercel UI.\n\n```sh\n$ pulumi import vercel:index/projectCrons:ProjectCrons example team_xxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n","properties":{"enabled":{"type":"boolean","description":"Whether crons are enabled for the project.\n"},"projectId":{"type":"string","description":"The ID of the Project to toggle crons for.\n"},"teamId":{"type":"string","description":"The ID of the team the Project exists under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"required":["enabled","projectId","teamId"],"inputProperties":{"enabled":{"type":"boolean","description":"Whether crons are enabled for the project.\n"},"projectId":{"type":"string","description":"The ID of the Project to toggle crons for.\n"},"teamId":{"type":"string","description":"The ID of the team the Project exists under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"requiredInputs":["enabled","projectId"],"stateInputs":{"description":"Input properties used for looking up and filtering ProjectCrons resources.\n","properties":{"enabled":{"type":"boolean","description":"Whether crons are enabled for the project.\n"},"projectId":{"type":"string","description":"The ID of the Project to toggle crons for.\n"},"teamId":{"type":"string","description":"The ID of the team the Project exists under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object"}},"vercel:index/projectDeploymentRetention:ProjectDeploymentRetention":{"description":"## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = new vercel.Project(\"example\", {\n    name: \"example-project\",\n    gitRepository: {\n        type: \"github\",\n        repo: \"vercel/some-repo\",\n    },\n});\n// A customized deployment retention policy that will be created\n// for this project for all deployments.\nconst exampleCustomized = new vercel.ProjectDeploymentRetention(\"example_customized\", {\n    projectId: example.id,\n    teamId: example.teamId,\n    expirationPreview: \"3m\",\n    expirationProduction: \"1y\",\n    expirationCanceled: \"1m\",\n    expirationErrored: \"2m\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.Project(\"example\",\n    name=\"example-project\",\n    git_repository={\n        \"type\": \"github\",\n        \"repo\": \"vercel/some-repo\",\n    })\n# A customized deployment retention policy that will be created\n# for this project for all deployments.\nexample_customized = vercel.ProjectDeploymentRetention(\"example_customized\",\n    project_id=example.id,\n    team_id=example.team_id,\n    expiration_preview=\"3m\",\n    expiration_production=\"1y\",\n    expiration_canceled=\"1m\",\n    expiration_errored=\"2m\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Vercel.Project(\"example\", new()\n    {\n        Name = \"example-project\",\n        GitRepository = new Vercel.Inputs.ProjectGitRepositoryArgs\n        {\n            Type = \"github\",\n            Repo = \"vercel/some-repo\",\n        },\n    });\n\n    // A customized deployment retention policy that will be created\n    // for this project for all deployments.\n    var exampleCustomized = new Vercel.ProjectDeploymentRetention(\"example_customized\", new()\n    {\n        ProjectId = example.Id,\n        TeamId = example.TeamId,\n        ExpirationPreview = \"3m\",\n        ExpirationProduction = \"1y\",\n        ExpirationCanceled = \"1m\",\n        ExpirationErrored = \"2m\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := vercel.NewProject(ctx, \"example\", \u0026vercel.ProjectArgs{\n\t\t\tName: pulumi.String(\"example-project\"),\n\t\t\tGitRepository: \u0026vercel.ProjectGitRepositoryArgs{\n\t\t\t\tType: pulumi.String(\"github\"),\n\t\t\t\tRepo: pulumi.String(\"vercel/some-repo\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// A customized deployment retention policy that will be created\n\t\t// for this project for all deployments.\n\t\t_, err = vercel.NewProjectDeploymentRetention(ctx, \"example_customized\", \u0026vercel.ProjectDeploymentRetentionArgs{\n\t\t\tProjectId:            example.ID(),\n\t\t\tTeamId:               example.TeamId,\n\t\t\tExpirationPreview:    pulumi.String(\"3m\"),\n\t\t\tExpirationProduction: pulumi.String(\"1y\"),\n\t\t\tExpirationCanceled:   pulumi.String(\"1m\"),\n\t\t\tExpirationErrored:    pulumi.String(\"2m\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.vercel.Project;\nimport com.pulumiverse.vercel.ProjectArgs;\nimport com.pulumi.vercel.inputs.ProjectGitRepositoryArgs;\nimport com.pulumiverse.vercel.ProjectDeploymentRetention;\nimport com.pulumiverse.vercel.ProjectDeploymentRetentionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Project(\"example\", ProjectArgs.builder()\n            .name(\"example-project\")\n            .gitRepository(ProjectGitRepositoryArgs.builder()\n                .type(\"github\")\n                .repo(\"vercel/some-repo\")\n                .build())\n            .build());\n\n        // A customized deployment retention policy that will be created\n        // for this project for all deployments.\n        var exampleCustomized = new ProjectDeploymentRetention(\"exampleCustomized\", ProjectDeploymentRetentionArgs.builder()\n            .projectId(example.id())\n            .teamId(example.teamId())\n            .expirationPreview(\"3m\")\n            .expirationProduction(\"1y\")\n            .expirationCanceled(\"1m\")\n            .expirationErrored(\"2m\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:Project\n    properties:\n      name: example-project\n      gitRepository:\n        type: github\n        repo: vercel/some-repo\n  # A customized deployment retention policy that will be created\n  # for this project for all deployments.\n  exampleCustomized:\n    type: vercel:ProjectDeploymentRetention\n    name: example_customized\n    properties:\n      projectId: ${example.id}\n      teamId: ${example.teamId}\n      expirationPreview: 3m\n      expirationProduction: 1y\n      expirationCanceled: 1m\n      expirationErrored: 2m\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nYou can import via the team_id and project_id.\n\n- team_id can be found in the team `settings` tab in the Vercel UI.\n\n- project_id can be found in the project `settings` tab in the Vercel UI.\n\n```sh\n$ pulumi import vercel:index/projectDeploymentRetention:ProjectDeploymentRetention example team_xxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n","properties":{"expirationCanceled":{"type":"string","description":"The retention period for canceled deployments. Should be one of '1d', '1w', '1m', '2m', '3m', '6m', '1y'.\n"},"expirationErrored":{"type":"string","description":"The retention period for errored deployments. Should be one of '1d', '1w', '1m', '2m', '3m', '6m', '1y'.\n"},"expirationPreview":{"type":"string","description":"The retention period for preview deployments. Should be one of '1d', '1w', '1m', '2m', '3m', '6m', '1y'.\n"},"expirationProduction":{"type":"string","description":"The retention period for production deployments. Should be one of '1d', '1w', '1m', '2m', '3m', '6m', '1y'.\n"},"projectId":{"type":"string","description":"The ID of the Project for the retention policy\n"},"teamId":{"type":"string","description":"The ID of the Vercel team.\n"}},"required":["expirationCanceled","expirationErrored","expirationPreview","expirationProduction","projectId","teamId"],"inputProperties":{"expirationCanceled":{"type":"string","description":"The retention period for canceled deployments. Should be one of '1d', '1w', '1m', '2m', '3m', '6m', '1y'.\n"},"expirationErrored":{"type":"string","description":"The retention period for errored deployments. Should be one of '1d', '1w', '1m', '2m', '3m', '6m', '1y'.\n"},"expirationPreview":{"type":"string","description":"The retention period for preview deployments. Should be one of '1d', '1w', '1m', '2m', '3m', '6m', '1y'.\n"},"expirationProduction":{"type":"string","description":"The retention period for production deployments. Should be one of '1d', '1w', '1m', '2m', '3m', '6m', '1y'.\n"},"projectId":{"type":"string","description":"The ID of the Project for the retention policy\n"},"teamId":{"type":"string","description":"The ID of the Vercel team.\n"}},"requiredInputs":["projectId"],"stateInputs":{"description":"Input properties used for looking up and filtering ProjectDeploymentRetention resources.\n","properties":{"expirationCanceled":{"type":"string","description":"The retention period for canceled deployments. Should be one of '1d', '1w', '1m', '2m', '3m', '6m', '1y'.\n"},"expirationErrored":{"type":"string","description":"The retention period for errored deployments. Should be one of '1d', '1w', '1m', '2m', '3m', '6m', '1y'.\n"},"expirationPreview":{"type":"string","description":"The retention period for preview deployments. Should be one of '1d', '1w', '1m', '2m', '3m', '6m', '1y'.\n"},"expirationProduction":{"type":"string","description":"The retention period for production deployments. Should be one of '1d', '1w', '1m', '2m', '3m', '6m', '1y'.\n"},"projectId":{"type":"string","description":"The ID of the Project for the retention policy\n"},"teamId":{"type":"string","description":"The ID of the Vercel team.\n"}},"type":"object"}},"vercel:index/projectDomain:ProjectDomain":{"description":"Provides a Project Domain resource.\n\nA Project Domain is used to associate a domain name with a \u003cspan pulumi-lang-nodejs=\"`vercel.Project`\" pulumi-lang-dotnet=\"`vercel.Project`\" pulumi-lang-go=\"`Project`\" pulumi-lang-python=\"`Project`\" pulumi-lang-yaml=\"`vercel.Project`\" pulumi-lang-java=\"`vercel.Project`\"\u003e`vercel.Project`\u003c/span\u003e.\n\nBy default, Project Domains will be automatically applied to any \u003cspan pulumi-lang-nodejs=\"`production`\" pulumi-lang-dotnet=\"`Production`\" pulumi-lang-go=\"`production`\" pulumi-lang-python=\"`production`\" pulumi-lang-yaml=\"`production`\" pulumi-lang-java=\"`production`\"\u003e`production`\u003c/span\u003e deployments.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = new vercel.Project(\"example\", {name: \"example-project\"});\n// A simple domain that will be automatically\n// applied to each production deployment\nconst exampleProjectDomain = new vercel.ProjectDomain(\"example\", {\n    projectId: example.id,\n    domain: \"i-love.vercel.app\",\n});\n// A redirect of a domain name to a second domain name.\n// The status_code can optionally be controlled.\nconst exampleRedirect = new vercel.ProjectDomain(\"example_redirect\", {\n    projectId: example.id,\n    domain: \"i-also-love.vercel.app\",\n    redirect: exampleProjectDomain.domain,\n    redirectStatusCode: 307,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.Project(\"example\", name=\"example-project\")\n# A simple domain that will be automatically\n# applied to each production deployment\nexample_project_domain = vercel.ProjectDomain(\"example\",\n    project_id=example.id,\n    domain=\"i-love.vercel.app\")\n# A redirect of a domain name to a second domain name.\n# The status_code can optionally be controlled.\nexample_redirect = vercel.ProjectDomain(\"example_redirect\",\n    project_id=example.id,\n    domain=\"i-also-love.vercel.app\",\n    redirect=example_project_domain.domain,\n    redirect_status_code=307)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Vercel.Project(\"example\", new()\n    {\n        Name = \"example-project\",\n    });\n\n    // A simple domain that will be automatically\n    // applied to each production deployment\n    var exampleProjectDomain = new Vercel.ProjectDomain(\"example\", new()\n    {\n        ProjectId = example.Id,\n        Domain = \"i-love.vercel.app\",\n    });\n\n    // A redirect of a domain name to a second domain name.\n    // The status_code can optionally be controlled.\n    var exampleRedirect = new Vercel.ProjectDomain(\"example_redirect\", new()\n    {\n        ProjectId = example.Id,\n        Domain = \"i-also-love.vercel.app\",\n        Redirect = exampleProjectDomain.Domain,\n        RedirectStatusCode = 307,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := vercel.NewProject(ctx, \"example\", \u0026vercel.ProjectArgs{\n\t\t\tName: pulumi.String(\"example-project\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// A simple domain that will be automatically\n\t\t// applied to each production deployment\n\t\texampleProjectDomain, err := vercel.NewProjectDomain(ctx, \"example\", \u0026vercel.ProjectDomainArgs{\n\t\t\tProjectId: example.ID(),\n\t\t\tDomain:    pulumi.String(\"i-love.vercel.app\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// A redirect of a domain name to a second domain name.\n\t\t// The status_code can optionally be controlled.\n\t\t_, err = vercel.NewProjectDomain(ctx, \"example_redirect\", \u0026vercel.ProjectDomainArgs{\n\t\t\tProjectId:          example.ID(),\n\t\t\tDomain:             pulumi.String(\"i-also-love.vercel.app\"),\n\t\t\tRedirect:           exampleProjectDomain.Domain,\n\t\t\tRedirectStatusCode: pulumi.Int(307),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.vercel.Project;\nimport com.pulumiverse.vercel.ProjectArgs;\nimport com.pulumiverse.vercel.ProjectDomain;\nimport com.pulumiverse.vercel.ProjectDomainArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Project(\"example\", ProjectArgs.builder()\n            .name(\"example-project\")\n            .build());\n\n        // A simple domain that will be automatically\n        // applied to each production deployment\n        var exampleProjectDomain = new ProjectDomain(\"exampleProjectDomain\", ProjectDomainArgs.builder()\n            .projectId(example.id())\n            .domain(\"i-love.vercel.app\")\n            .build());\n\n        // A redirect of a domain name to a second domain name.\n        // The status_code can optionally be controlled.\n        var exampleRedirect = new ProjectDomain(\"exampleRedirect\", ProjectDomainArgs.builder()\n            .projectId(example.id())\n            .domain(\"i-also-love.vercel.app\")\n            .redirect(exampleProjectDomain.domain())\n            .redirectStatusCode(307)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:Project\n    properties:\n      name: example-project\n  # A simple domain that will be automatically\n  # applied to each production deployment\n  exampleProjectDomain:\n    type: vercel:ProjectDomain\n    name: example\n    properties:\n      projectId: ${example.id}\n      domain: i-love.vercel.app\n  # A redirect of a domain name to a second domain name.\n  # The status_code can optionally be controlled.\n  exampleRedirect:\n    type: vercel:ProjectDomain\n    name: example_redirect\n    properties:\n      projectId: ${example.id}\n      domain: i-also-love.vercel.app\n      redirect: ${exampleProjectDomain.domain}\n      redirectStatusCode: 307\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIf importing into a personal account, or with a team configured on\n\nthe provider, simply use the project ID and domain.\n\n- project_id can be found in the project `settings` tab in the Vercel UI.\n\n```sh\n$ pulumi import vercel:index/projectDomain:ProjectDomain example prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/example.com\n```\n\nAlternatively, you can import via the team_id, project_id and domain name.\n\n- team_id can be found in the team `settings` tab in the Vercel UI.\n\n- project_id can be found in the project `settings` tab in the Vercel UI.\n\n```sh\n$ pulumi import vercel:index/projectDomain:ProjectDomain example team_xxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/example.com\n```\n\n","properties":{"customEnvironmentId":{"type":"string","description":"The name of the Custom Environment to link to the Project Domain. Deployments from this custom environment will be assigned the domain name.\n"},"domain":{"type":"string","description":"The domain name to associate with the project.\n"},"gitBranch":{"type":"string","description":"Git branch to link to the project domain. Deployments from this git branch will be assigned the domain name.\n"},"projectId":{"type":"string","description":"The project ID to add the deployment to.\n"},"redirect":{"type":"string","description":"The domain name that serves as a target destination for redirects.\n"},"redirectStatusCode":{"type":"integer","description":"The HTTP status code to use when serving as a redirect.\n"},"teamId":{"type":"string","description":"The ID of the team the project exists under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"required":["domain","projectId","teamId"],"inputProperties":{"customEnvironmentId":{"type":"string","description":"The name of the Custom Environment to link to the Project Domain. Deployments from this custom environment will be assigned the domain name.\n"},"domain":{"type":"string","description":"The domain name to associate with the project.\n"},"gitBranch":{"type":"string","description":"Git branch to link to the project domain. Deployments from this git branch will be assigned the domain name.\n"},"projectId":{"type":"string","description":"The project ID to add the deployment to.\n"},"redirect":{"type":"string","description":"The domain name that serves as a target destination for redirects.\n"},"redirectStatusCode":{"type":"integer","description":"The HTTP status code to use when serving as a redirect.\n"},"teamId":{"type":"string","description":"The ID of the team the project exists under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"requiredInputs":["domain","projectId"],"stateInputs":{"description":"Input properties used for looking up and filtering ProjectDomain resources.\n","properties":{"customEnvironmentId":{"type":"string","description":"The name of the Custom Environment to link to the Project Domain. Deployments from this custom environment will be assigned the domain name.\n"},"domain":{"type":"string","description":"The domain name to associate with the project.\n"},"gitBranch":{"type":"string","description":"Git branch to link to the project domain. Deployments from this git branch will be assigned the domain name.\n"},"projectId":{"type":"string","description":"The project ID to add the deployment to.\n"},"redirect":{"type":"string","description":"The domain name that serves as a target destination for redirects.\n"},"redirectStatusCode":{"type":"integer","description":"The HTTP status code to use when serving as a redirect.\n"},"teamId":{"type":"string","description":"The ID of the team the project exists under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object"}},"vercel:index/projectEnvironmentVariable:ProjectEnvironmentVariable":{"description":"## Example Usage\n\n## Import\n\nIf importing into a personal account, or with a team configured on\n\nthe provider, simply use the project_id and environment variable id.\n\n- project_id can be found in the project `settings` tab in the Vercel UI.\n\n- environment variable id can be taken from the network tab inside developer tools, while you are on the project page,\n\nor can be queried from Vercel API directly (https://vercel.com/docs/rest-api/endpoints/projects#retrieve-the-environment-variables-of-a-project-by-id-or-name)\n\nNote also, that the value field for sensitive environment variables will be imported as `null`.\n\n```sh\n$ pulumi import vercel:index/projectEnvironmentVariable:ProjectEnvironmentVariable example prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/FdT2e1E5Of6Cihmt\n```\n\nAlternatively, you can import via the team_id, project_id and\n\nenvironment variable id.\n\n- team_id can be found in the team `settings` tab in the Vercel UI.\n\n- project_id can be found in the project `settings` tab in the Vercel UI.\n\n- environment variable id can be taken from the network tab inside developer tools, while you are on the project page,\n\nor can be queried from Vercel API directly (https://vercel.com/docs/rest-api/endpoints/projects#retrieve-the-environment-variables-of-a-project-by-id-or-name)\n\nNote also, that the value field for sensitive environment variables will be imported as `null`.\n\n```sh\n$ pulumi import vercel:index/projectEnvironmentVariable:ProjectEnvironmentVariable example team_xxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/FdT2e1E5Of6Cihmt\n```\n\n","properties":{"comment":{"type":"string","description":"A comment explaining what the environment variable is for.\n"},"customEnvironmentIds":{"type":"array","items":{"type":"string"},"description":"The IDs of Custom Environments that the Environment Variable should be present on. At least one of \u003cspan pulumi-lang-nodejs=\"`target`\" pulumi-lang-dotnet=\"`Target`\" pulumi-lang-go=\"`target`\" pulumi-lang-python=\"`target`\" pulumi-lang-yaml=\"`target`\" pulumi-lang-java=\"`target`\"\u003e`target`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`customEnvironmentIds`\" pulumi-lang-dotnet=\"`CustomEnvironmentIds`\" pulumi-lang-go=\"`customEnvironmentIds`\" pulumi-lang-python=\"`custom_environment_ids`\" pulumi-lang-yaml=\"`customEnvironmentIds`\" pulumi-lang-java=\"`customEnvironmentIds`\"\u003e`custom_environment_ids`\u003c/span\u003e must be set.\n"},"gitBranch":{"type":"string","description":"The git branch of the Environment Variable.\n"},"key":{"type":"string","description":"The name of the Environment Variable.\n"},"projectId":{"type":"string","description":"The ID of the Vercel project.\n"},"sensitive":{"type":"boolean","description":"Whether the Environment Variable is sensitive or not. (May be affected by a [team-wide environment variable policy](https://vercel.com/docs/projects/environment-variables/sensitive-environment-variables#environment-variables-policy))\n"},"targets":{"type":"array","items":{"type":"string"},"description":"The environments that the Environment Variable should be present on. Valid targets are either \u003cspan pulumi-lang-nodejs=\"`production`\" pulumi-lang-dotnet=\"`Production`\" pulumi-lang-go=\"`production`\" pulumi-lang-python=\"`production`\" pulumi-lang-yaml=\"`production`\" pulumi-lang-java=\"`production`\"\u003e`production`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`preview`\" pulumi-lang-dotnet=\"`Preview`\" pulumi-lang-go=\"`preview`\" pulumi-lang-python=\"`preview`\" pulumi-lang-yaml=\"`preview`\" pulumi-lang-java=\"`preview`\"\u003e`preview`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`development`\" pulumi-lang-dotnet=\"`Development`\" pulumi-lang-go=\"`development`\" pulumi-lang-python=\"`development`\" pulumi-lang-yaml=\"`development`\" pulumi-lang-java=\"`development`\"\u003e`development`\u003c/span\u003e. At least one of \u003cspan pulumi-lang-nodejs=\"`target`\" pulumi-lang-dotnet=\"`Target`\" pulumi-lang-go=\"`target`\" pulumi-lang-python=\"`target`\" pulumi-lang-yaml=\"`target`\" pulumi-lang-java=\"`target`\"\u003e`target`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`customEnvironmentIds`\" pulumi-lang-dotnet=\"`CustomEnvironmentIds`\" pulumi-lang-go=\"`customEnvironmentIds`\" pulumi-lang-python=\"`custom_environment_ids`\" pulumi-lang-yaml=\"`customEnvironmentIds`\" pulumi-lang-java=\"`customEnvironmentIds`\"\u003e`custom_environment_ids`\u003c/span\u003e must be set.\n"},"teamId":{"type":"string","description":"The ID of the Vercel team.Required when configuring a team resource if a default team has not been set in the provider.\n"},"value":{"type":"string","description":"(Optional, exactly one of \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`valueWo`\" pulumi-lang-dotnet=\"`ValueWo`\" pulumi-lang-go=\"`valueWo`\" pulumi-lang-python=\"`value_wo`\" pulumi-lang-yaml=\"`valueWo`\" pulumi-lang-java=\"`valueWo`\"\u003e`value_wo`\u003c/span\u003e is required) The value of the Environment Variable.\n","secret":true},"valueWo":{"type":"string","description":"**NOTE:** This field is write-only and its value will not be updated in state as part of read operations.\n(Optional, Write-Only, exactly one of \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`valueWo`\" pulumi-lang-dotnet=\"`ValueWo`\" pulumi-lang-go=\"`valueWo`\" pulumi-lang-python=\"`value_wo`\" pulumi-lang-yaml=\"`valueWo`\" pulumi-lang-java=\"`valueWo`\"\u003e`value_wo`\u003c/span\u003e is required) The value of the Environment Variable, from an \u003cspan pulumi-lang-nodejs=\"`ephemeral`\" pulumi-lang-dotnet=\"`Ephemeral`\" pulumi-lang-go=\"`ephemeral`\" pulumi-lang-python=\"`ephemeral`\" pulumi-lang-yaml=\"`ephemeral`\" pulumi-lang-java=\"`ephemeral`\"\u003e`ephemeral`\u003c/span\u003e resource.\n","secret":true}},"required":["comment","customEnvironmentIds","key","projectId","sensitive","targets","teamId"],"inputProperties":{"comment":{"type":"string","description":"A comment explaining what the environment variable is for.\n"},"customEnvironmentIds":{"type":"array","items":{"type":"string"},"description":"The IDs of Custom Environments that the Environment Variable should be present on. At least one of \u003cspan pulumi-lang-nodejs=\"`target`\" pulumi-lang-dotnet=\"`Target`\" pulumi-lang-go=\"`target`\" pulumi-lang-python=\"`target`\" pulumi-lang-yaml=\"`target`\" pulumi-lang-java=\"`target`\"\u003e`target`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`customEnvironmentIds`\" pulumi-lang-dotnet=\"`CustomEnvironmentIds`\" pulumi-lang-go=\"`customEnvironmentIds`\" pulumi-lang-python=\"`custom_environment_ids`\" pulumi-lang-yaml=\"`customEnvironmentIds`\" pulumi-lang-java=\"`customEnvironmentIds`\"\u003e`custom_environment_ids`\u003c/span\u003e must be set.\n"},"gitBranch":{"type":"string","description":"The git branch of the Environment Variable.\n"},"key":{"type":"string","description":"The name of the Environment Variable.\n"},"projectId":{"type":"string","description":"The ID of the Vercel project.\n"},"sensitive":{"type":"boolean","description":"Whether the Environment Variable is sensitive or not. (May be affected by a [team-wide environment variable policy](https://vercel.com/docs/projects/environment-variables/sensitive-environment-variables#environment-variables-policy))\n"},"targets":{"type":"array","items":{"type":"string"},"description":"The environments that the Environment Variable should be present on. Valid targets are either \u003cspan pulumi-lang-nodejs=\"`production`\" pulumi-lang-dotnet=\"`Production`\" pulumi-lang-go=\"`production`\" pulumi-lang-python=\"`production`\" pulumi-lang-yaml=\"`production`\" pulumi-lang-java=\"`production`\"\u003e`production`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`preview`\" pulumi-lang-dotnet=\"`Preview`\" pulumi-lang-go=\"`preview`\" pulumi-lang-python=\"`preview`\" pulumi-lang-yaml=\"`preview`\" pulumi-lang-java=\"`preview`\"\u003e`preview`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`development`\" pulumi-lang-dotnet=\"`Development`\" pulumi-lang-go=\"`development`\" pulumi-lang-python=\"`development`\" pulumi-lang-yaml=\"`development`\" pulumi-lang-java=\"`development`\"\u003e`development`\u003c/span\u003e. At least one of \u003cspan pulumi-lang-nodejs=\"`target`\" pulumi-lang-dotnet=\"`Target`\" pulumi-lang-go=\"`target`\" pulumi-lang-python=\"`target`\" pulumi-lang-yaml=\"`target`\" pulumi-lang-java=\"`target`\"\u003e`target`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`customEnvironmentIds`\" pulumi-lang-dotnet=\"`CustomEnvironmentIds`\" pulumi-lang-go=\"`customEnvironmentIds`\" pulumi-lang-python=\"`custom_environment_ids`\" pulumi-lang-yaml=\"`customEnvironmentIds`\" pulumi-lang-java=\"`customEnvironmentIds`\"\u003e`custom_environment_ids`\u003c/span\u003e must be set.\n"},"teamId":{"type":"string","description":"The ID of the Vercel team.Required when configuring a team resource if a default team has not been set in the provider.\n"},"value":{"type":"string","description":"(Optional, exactly one of \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`valueWo`\" pulumi-lang-dotnet=\"`ValueWo`\" pulumi-lang-go=\"`valueWo`\" pulumi-lang-python=\"`value_wo`\" pulumi-lang-yaml=\"`valueWo`\" pulumi-lang-java=\"`valueWo`\"\u003e`value_wo`\u003c/span\u003e is required) The value of the Environment Variable.\n","secret":true},"valueWo":{"type":"string","description":"**NOTE:** This field is write-only and its value will not be updated in state as part of read operations.\n(Optional, Write-Only, exactly one of \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`valueWo`\" pulumi-lang-dotnet=\"`ValueWo`\" pulumi-lang-go=\"`valueWo`\" pulumi-lang-python=\"`value_wo`\" pulumi-lang-yaml=\"`valueWo`\" pulumi-lang-java=\"`valueWo`\"\u003e`value_wo`\u003c/span\u003e is required) The value of the Environment Variable, from an \u003cspan pulumi-lang-nodejs=\"`ephemeral`\" pulumi-lang-dotnet=\"`Ephemeral`\" pulumi-lang-go=\"`ephemeral`\" pulumi-lang-python=\"`ephemeral`\" pulumi-lang-yaml=\"`ephemeral`\" pulumi-lang-java=\"`ephemeral`\"\u003e`ephemeral`\u003c/span\u003e resource.\n","secret":true}},"requiredInputs":["key","projectId"],"stateInputs":{"description":"Input properties used for looking up and filtering ProjectEnvironmentVariable resources.\n","properties":{"comment":{"type":"string","description":"A comment explaining what the environment variable is for.\n"},"customEnvironmentIds":{"type":"array","items":{"type":"string"},"description":"The IDs of Custom Environments that the Environment Variable should be present on. At least one of \u003cspan pulumi-lang-nodejs=\"`target`\" pulumi-lang-dotnet=\"`Target`\" pulumi-lang-go=\"`target`\" pulumi-lang-python=\"`target`\" pulumi-lang-yaml=\"`target`\" pulumi-lang-java=\"`target`\"\u003e`target`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`customEnvironmentIds`\" pulumi-lang-dotnet=\"`CustomEnvironmentIds`\" pulumi-lang-go=\"`customEnvironmentIds`\" pulumi-lang-python=\"`custom_environment_ids`\" pulumi-lang-yaml=\"`customEnvironmentIds`\" pulumi-lang-java=\"`customEnvironmentIds`\"\u003e`custom_environment_ids`\u003c/span\u003e must be set.\n"},"gitBranch":{"type":"string","description":"The git branch of the Environment Variable.\n"},"key":{"type":"string","description":"The name of the Environment Variable.\n"},"projectId":{"type":"string","description":"The ID of the Vercel project.\n"},"sensitive":{"type":"boolean","description":"Whether the Environment Variable is sensitive or not. (May be affected by a [team-wide environment variable policy](https://vercel.com/docs/projects/environment-variables/sensitive-environment-variables#environment-variables-policy))\n"},"targets":{"type":"array","items":{"type":"string"},"description":"The environments that the Environment Variable should be present on. Valid targets are either \u003cspan pulumi-lang-nodejs=\"`production`\" pulumi-lang-dotnet=\"`Production`\" pulumi-lang-go=\"`production`\" pulumi-lang-python=\"`production`\" pulumi-lang-yaml=\"`production`\" pulumi-lang-java=\"`production`\"\u003e`production`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`preview`\" pulumi-lang-dotnet=\"`Preview`\" pulumi-lang-go=\"`preview`\" pulumi-lang-python=\"`preview`\" pulumi-lang-yaml=\"`preview`\" pulumi-lang-java=\"`preview`\"\u003e`preview`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`development`\" pulumi-lang-dotnet=\"`Development`\" pulumi-lang-go=\"`development`\" pulumi-lang-python=\"`development`\" pulumi-lang-yaml=\"`development`\" pulumi-lang-java=\"`development`\"\u003e`development`\u003c/span\u003e. At least one of \u003cspan pulumi-lang-nodejs=\"`target`\" pulumi-lang-dotnet=\"`Target`\" pulumi-lang-go=\"`target`\" pulumi-lang-python=\"`target`\" pulumi-lang-yaml=\"`target`\" pulumi-lang-java=\"`target`\"\u003e`target`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`customEnvironmentIds`\" pulumi-lang-dotnet=\"`CustomEnvironmentIds`\" pulumi-lang-go=\"`customEnvironmentIds`\" pulumi-lang-python=\"`custom_environment_ids`\" pulumi-lang-yaml=\"`customEnvironmentIds`\" pulumi-lang-java=\"`customEnvironmentIds`\"\u003e`custom_environment_ids`\u003c/span\u003e must be set.\n"},"teamId":{"type":"string","description":"The ID of the Vercel team.Required when configuring a team resource if a default team has not been set in the provider.\n"},"value":{"type":"string","description":"(Optional, exactly one of \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`valueWo`\" pulumi-lang-dotnet=\"`ValueWo`\" pulumi-lang-go=\"`valueWo`\" pulumi-lang-python=\"`value_wo`\" pulumi-lang-yaml=\"`valueWo`\" pulumi-lang-java=\"`valueWo`\"\u003e`value_wo`\u003c/span\u003e is required) The value of the Environment Variable.\n","secret":true},"valueWo":{"type":"string","description":"**NOTE:** This field is write-only and its value will not be updated in state as part of read operations.\n(Optional, Write-Only, exactly one of \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`valueWo`\" pulumi-lang-dotnet=\"`ValueWo`\" pulumi-lang-go=\"`valueWo`\" pulumi-lang-python=\"`value_wo`\" pulumi-lang-yaml=\"`valueWo`\" pulumi-lang-java=\"`valueWo`\"\u003e`value_wo`\u003c/span\u003e is required) The value of the Environment Variable, from an \u003cspan pulumi-lang-nodejs=\"`ephemeral`\" pulumi-lang-dotnet=\"`Ephemeral`\" pulumi-lang-go=\"`ephemeral`\" pulumi-lang-python=\"`ephemeral`\" pulumi-lang-yaml=\"`ephemeral`\" pulumi-lang-java=\"`ephemeral`\"\u003e`ephemeral`\u003c/span\u003e resource.\n","secret":true}},"type":"object"}},"vercel:index/projectEnvironmentVariables:ProjectEnvironmentVariables":{"description":"## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = new vercel.Project(\"example\", {\n    name: \"example-project\",\n    gitRepository: {\n        type: \"github\",\n        repo: \"vercel/some-repo\",\n    },\n});\nconst exampleProjectEnvironmentVariables = new vercel.ProjectEnvironmentVariables(\"example\", {\n    projectId: test.id,\n    variables: [\n        {\n            key: \"SOME_VARIABLE\",\n            value: \"some_value\",\n            target: [\n                \"production\",\n                \"preview\",\n            ],\n        },\n        {\n            key: \"ANOTHER_VARIABLE\",\n            value: \"another_value\",\n            gitBranch: \"staging\",\n            target: [\"preview\"],\n        },\n        {\n            key: \"SENSITIVE_VARIABLE\",\n            value: \"sensitive_value\",\n            target: [\"production\"],\n            sensitive: true,\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.Project(\"example\",\n    name=\"example-project\",\n    git_repository={\n        \"type\": \"github\",\n        \"repo\": \"vercel/some-repo\",\n    })\nexample_project_environment_variables = vercel.ProjectEnvironmentVariables(\"example\",\n    project_id=test[\"id\"],\n    variables=[\n        {\n            \"key\": \"SOME_VARIABLE\",\n            \"value\": \"some_value\",\n            \"target\": [\n                \"production\",\n                \"preview\",\n            ],\n        },\n        {\n            \"key\": \"ANOTHER_VARIABLE\",\n            \"value\": \"another_value\",\n            \"git_branch\": \"staging\",\n            \"target\": [\"preview\"],\n        },\n        {\n            \"key\": \"SENSITIVE_VARIABLE\",\n            \"value\": \"sensitive_value\",\n            \"target\": [\"production\"],\n            \"sensitive\": True,\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Vercel.Project(\"example\", new()\n    {\n        Name = \"example-project\",\n        GitRepository = new Vercel.Inputs.ProjectGitRepositoryArgs\n        {\n            Type = \"github\",\n            Repo = \"vercel/some-repo\",\n        },\n    });\n\n    var exampleProjectEnvironmentVariables = new Vercel.ProjectEnvironmentVariables(\"example\", new()\n    {\n        ProjectId = test.Id,\n        Variables = new[]\n        {\n            new Vercel.Inputs.ProjectEnvironmentVariablesVariableArgs\n            {\n                Key = \"SOME_VARIABLE\",\n                Value = \"some_value\",\n                Target = new[]\n                {\n                    \"production\",\n                    \"preview\",\n                },\n            },\n            new Vercel.Inputs.ProjectEnvironmentVariablesVariableArgs\n            {\n                Key = \"ANOTHER_VARIABLE\",\n                Value = \"another_value\",\n                GitBranch = \"staging\",\n                Target = new[]\n                {\n                    \"preview\",\n                },\n            },\n            new Vercel.Inputs.ProjectEnvironmentVariablesVariableArgs\n            {\n                Key = \"SENSITIVE_VARIABLE\",\n                Value = \"sensitive_value\",\n                Target = new[]\n                {\n                    \"production\",\n                },\n                Sensitive = true,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.NewProject(ctx, \"example\", \u0026vercel.ProjectArgs{\n\t\t\tName: pulumi.String(\"example-project\"),\n\t\t\tGitRepository: \u0026vercel.ProjectGitRepositoryArgs{\n\t\t\t\tType: pulumi.String(\"github\"),\n\t\t\t\tRepo: pulumi.String(\"vercel/some-repo\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewProjectEnvironmentVariables(ctx, \"example\", \u0026vercel.ProjectEnvironmentVariablesArgs{\n\t\t\tProjectId: pulumi.Any(test.Id),\n\t\t\tVariables: vercel.ProjectEnvironmentVariablesVariableArray{\n\t\t\t\t\u0026vercel.ProjectEnvironmentVariablesVariableArgs{\n\t\t\t\t\tKey:   pulumi.String(\"SOME_VARIABLE\"),\n\t\t\t\t\tValue: pulumi.String(\"some_value\"),\n\t\t\t\t\tTarget: []string{\n\t\t\t\t\t\t\"production\",\n\t\t\t\t\t\t\"preview\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026vercel.ProjectEnvironmentVariablesVariableArgs{\n\t\t\t\t\tKey:       pulumi.String(\"ANOTHER_VARIABLE\"),\n\t\t\t\t\tValue:     pulumi.String(\"another_value\"),\n\t\t\t\t\tGitBranch: pulumi.String(\"staging\"),\n\t\t\t\t\tTarget: []string{\n\t\t\t\t\t\t\"preview\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026vercel.ProjectEnvironmentVariablesVariableArgs{\n\t\t\t\t\tKey:   pulumi.String(\"SENSITIVE_VARIABLE\"),\n\t\t\t\t\tValue: pulumi.String(\"sensitive_value\"),\n\t\t\t\t\tTarget: []string{\n\t\t\t\t\t\t\"production\",\n\t\t\t\t\t},\n\t\t\t\t\tSensitive: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.vercel.Project;\nimport com.pulumiverse.vercel.ProjectArgs;\nimport com.pulumi.vercel.inputs.ProjectGitRepositoryArgs;\nimport com.pulumiverse.vercel.ProjectEnvironmentVariables;\nimport com.pulumiverse.vercel.ProjectEnvironmentVariablesArgs;\nimport com.pulumi.vercel.inputs.ProjectEnvironmentVariablesVariableArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Project(\"example\", ProjectArgs.builder()\n            .name(\"example-project\")\n            .gitRepository(ProjectGitRepositoryArgs.builder()\n                .type(\"github\")\n                .repo(\"vercel/some-repo\")\n                .build())\n            .build());\n\n        var exampleProjectEnvironmentVariables = new ProjectEnvironmentVariables(\"exampleProjectEnvironmentVariables\", ProjectEnvironmentVariablesArgs.builder()\n            .projectId(test.id())\n            .variables(            \n                ProjectEnvironmentVariablesVariableArgs.builder()\n                    .key(\"SOME_VARIABLE\")\n                    .value(\"some_value\")\n                    .target(List.of(                    \n                        \"production\",\n                        \"preview\"))\n                    .build(),\n                ProjectEnvironmentVariablesVariableArgs.builder()\n                    .key(\"ANOTHER_VARIABLE\")\n                    .value(\"another_value\")\n                    .gitBranch(\"staging\")\n                    .target(List.of(\"preview\"))\n                    .build(),\n                ProjectEnvironmentVariablesVariableArgs.builder()\n                    .key(\"SENSITIVE_VARIABLE\")\n                    .value(\"sensitive_value\")\n                    .target(List.of(\"production\"))\n                    .sensitive(true)\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:Project\n    properties:\n      name: example-project\n      gitRepository:\n        type: github\n        repo: vercel/some-repo\n  exampleProjectEnvironmentVariables:\n    type: vercel:ProjectEnvironmentVariables\n    name: example\n    properties:\n      projectId: ${test.id}\n      variables:\n        - key: SOME_VARIABLE\n          value: some_value\n          target:\n            - production\n            - preview\n        - key: ANOTHER_VARIABLE\n          value: another_value\n          gitBranch: staging\n          target:\n            - preview\n        - key: SENSITIVE_VARIABLE\n          value: sensitive_value\n          target:\n            - production\n          sensitive: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"projectId":{"type":"string","description":"The ID of the Vercel project.\n"},"teamId":{"type":"string","description":"The ID of the Vercel team. Required when configuring a team resource if a default team has not been set in the provider.\n"},"variables":{"type":"array","items":{"$ref":"#/types/vercel:index/ProjectEnvironmentVariablesVariable:ProjectEnvironmentVariablesVariable"},"description":"A set of Environment Variables that should be configured for the project.\n"}},"required":["projectId","teamId","variables"],"inputProperties":{"projectId":{"type":"string","description":"The ID of the Vercel project.\n"},"teamId":{"type":"string","description":"The ID of the Vercel team. Required when configuring a team resource if a default team has not been set in the provider.\n"},"variables":{"type":"array","items":{"$ref":"#/types/vercel:index/ProjectEnvironmentVariablesVariable:ProjectEnvironmentVariablesVariable"},"description":"A set of Environment Variables that should be configured for the project.\n"}},"requiredInputs":["projectId","variables"],"stateInputs":{"description":"Input properties used for looking up and filtering ProjectEnvironmentVariables resources.\n","properties":{"projectId":{"type":"string","description":"The ID of the Vercel project.\n"},"teamId":{"type":"string","description":"The ID of the Vercel team. Required when configuring a team resource if a default team has not been set in the provider.\n"},"variables":{"type":"array","items":{"$ref":"#/types/vercel:index/ProjectEnvironmentVariablesVariable:ProjectEnvironmentVariablesVariable"},"description":"A set of Environment Variables that should be configured for the project.\n"}},"type":"object"}},"vercel:index/projectMembers:ProjectMembers":{"description":"## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = new vercel.Project(\"example\", {name: \"example-with-members\"});\nconst exampleProjectMembers = new vercel.ProjectMembers(\"example\", {\n    projectId: example.id,\n    members: [\n        {\n            email: \"user@example.com\",\n            role: \"PROJECT_VIEWER\",\n        },\n        {\n            username: \"some-example-user\",\n            role: \"PROJECT_DEVELOPER\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.Project(\"example\", name=\"example-with-members\")\nexample_project_members = vercel.ProjectMembers(\"example\",\n    project_id=example.id,\n    members=[\n        {\n            \"email\": \"user@example.com\",\n            \"role\": \"PROJECT_VIEWER\",\n        },\n        {\n            \"username\": \"some-example-user\",\n            \"role\": \"PROJECT_DEVELOPER\",\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Vercel.Project(\"example\", new()\n    {\n        Name = \"example-with-members\",\n    });\n\n    var exampleProjectMembers = new Vercel.ProjectMembers(\"example\", new()\n    {\n        ProjectId = example.Id,\n        Members = new[]\n        {\n            new Vercel.Inputs.ProjectMembersMemberArgs\n            {\n                Email = \"user@example.com\",\n                Role = \"PROJECT_VIEWER\",\n            },\n            new Vercel.Inputs.ProjectMembersMemberArgs\n            {\n                Username = \"some-example-user\",\n                Role = \"PROJECT_DEVELOPER\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := vercel.NewProject(ctx, \"example\", \u0026vercel.ProjectArgs{\n\t\t\tName: pulumi.String(\"example-with-members\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewProjectMembers(ctx, \"example\", \u0026vercel.ProjectMembersArgs{\n\t\t\tProjectId: example.ID(),\n\t\t\tMembers: vercel.ProjectMembersMemberArray{\n\t\t\t\t\u0026vercel.ProjectMembersMemberArgs{\n\t\t\t\t\tEmail: pulumi.String(\"user@example.com\"),\n\t\t\t\t\tRole:  pulumi.String(\"PROJECT_VIEWER\"),\n\t\t\t\t},\n\t\t\t\t\u0026vercel.ProjectMembersMemberArgs{\n\t\t\t\t\tUsername: pulumi.String(\"some-example-user\"),\n\t\t\t\t\tRole:     pulumi.String(\"PROJECT_DEVELOPER\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.vercel.Project;\nimport com.pulumiverse.vercel.ProjectArgs;\nimport com.pulumiverse.vercel.ProjectMembers;\nimport com.pulumiverse.vercel.ProjectMembersArgs;\nimport com.pulumi.vercel.inputs.ProjectMembersMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Project(\"example\", ProjectArgs.builder()\n            .name(\"example-with-members\")\n            .build());\n\n        var exampleProjectMembers = new ProjectMembers(\"exampleProjectMembers\", ProjectMembersArgs.builder()\n            .projectId(example.id())\n            .members(            \n                ProjectMembersMemberArgs.builder()\n                    .email(\"user@example.com\")\n                    .role(\"PROJECT_VIEWER\")\n                    .build(),\n                ProjectMembersMemberArgs.builder()\n                    .username(\"some-example-user\")\n                    .role(\"PROJECT_DEVELOPER\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:Project\n    properties:\n      name: example-with-members\n  exampleProjectMembers:\n    type: vercel:ProjectMembers\n    name: example\n    properties:\n      projectId: ${example.id}\n      members:\n        - email: user@example.com\n          role: PROJECT_VIEWER\n        - username: some-example-user\n          role: PROJECT_DEVELOPER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"members":{"type":"array","items":{"$ref":"#/types/vercel:index/ProjectMembersMember:ProjectMembersMember"},"description":"The set of members to manage for this project.\n"},"projectId":{"type":"string","description":"The ID of the existing Vercel Project.\n"},"teamId":{"type":"string","description":"The team ID to add the project to. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"required":["members","projectId","teamId"],"inputProperties":{"members":{"type":"array","items":{"$ref":"#/types/vercel:index/ProjectMembersMember:ProjectMembersMember"},"description":"The set of members to manage for this project.\n"},"projectId":{"type":"string","description":"The ID of the existing Vercel Project.\n"},"teamId":{"type":"string","description":"The team ID to add the project to. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"requiredInputs":["members","projectId"],"stateInputs":{"description":"Input properties used for looking up and filtering ProjectMembers resources.\n","properties":{"members":{"type":"array","items":{"$ref":"#/types/vercel:index/ProjectMembersMember:ProjectMembersMember"},"description":"The set of members to manage for this project.\n"},"projectId":{"type":"string","description":"The ID of the existing Vercel Project.\n"},"teamId":{"type":"string","description":"The team ID to add the project to. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object"}},"vercel:index/projectRollingRelease:ProjectRollingRelease":{"description":"Resource for a Vercel project rolling release configuration.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = new vercel.Project(\"example\", {\n    name: \"example-project\",\n    skewProtection: \"12 hours\",\n});\nconst exampleProjectRollingRelease = new vercel.ProjectRollingRelease(\"example\", {\n    projectId: example.id,\n    advancementType: \"manual-approval\",\n    stages: [\n        {\n            targetPercentage: 20,\n        },\n        {\n            targetPercentage: 50,\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.Project(\"example\",\n    name=\"example-project\",\n    skew_protection=\"12 hours\")\nexample_project_rolling_release = vercel.ProjectRollingRelease(\"example\",\n    project_id=example.id,\n    advancement_type=\"manual-approval\",\n    stages=[\n        {\n            \"target_percentage\": 20,\n        },\n        {\n            \"target_percentage\": 50,\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Vercel.Project(\"example\", new()\n    {\n        Name = \"example-project\",\n        SkewProtection = \"12 hours\",\n    });\n\n    var exampleProjectRollingRelease = new Vercel.ProjectRollingRelease(\"example\", new()\n    {\n        ProjectId = example.Id,\n        AdvancementType = \"manual-approval\",\n        Stages = new[]\n        {\n            new Vercel.Inputs.ProjectRollingReleaseStageArgs\n            {\n                TargetPercentage = 20,\n            },\n            new Vercel.Inputs.ProjectRollingReleaseStageArgs\n            {\n                TargetPercentage = 50,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := vercel.NewProject(ctx, \"example\", \u0026vercel.ProjectArgs{\n\t\t\tName:           pulumi.String(\"example-project\"),\n\t\t\tSkewProtection: pulumi.String(\"12 hours\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewProjectRollingRelease(ctx, \"example\", \u0026vercel.ProjectRollingReleaseArgs{\n\t\t\tProjectId:       example.ID(),\n\t\t\tAdvancementType: pulumi.String(\"manual-approval\"),\n\t\t\tStages: vercel.ProjectRollingReleaseStageArray{\n\t\t\t\t\u0026vercel.ProjectRollingReleaseStageArgs{\n\t\t\t\t\tTargetPercentage: pulumi.Int(20),\n\t\t\t\t},\n\t\t\t\t\u0026vercel.ProjectRollingReleaseStageArgs{\n\t\t\t\t\tTargetPercentage: pulumi.Int(50),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.vercel.Project;\nimport com.pulumiverse.vercel.ProjectArgs;\nimport com.pulumiverse.vercel.ProjectRollingRelease;\nimport com.pulumiverse.vercel.ProjectRollingReleaseArgs;\nimport com.pulumi.vercel.inputs.ProjectRollingReleaseStageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Project(\"example\", ProjectArgs.builder()\n            .name(\"example-project\")\n            .skewProtection(\"12 hours\")\n            .build());\n\n        var exampleProjectRollingRelease = new ProjectRollingRelease(\"exampleProjectRollingRelease\", ProjectRollingReleaseArgs.builder()\n            .projectId(example.id())\n            .advancementType(\"manual-approval\")\n            .stages(            \n                ProjectRollingReleaseStageArgs.builder()\n                    .targetPercentage(20)\n                    .build(),\n                ProjectRollingReleaseStageArgs.builder()\n                    .targetPercentage(50)\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:Project\n    properties:\n      name: example-project\n      skewProtection: 12 hours\n  exampleProjectRollingRelease:\n    type: vercel:ProjectRollingRelease\n    name: example\n    properties:\n      projectId: ${example.id}\n      advancementType: manual-approval\n      stages:\n        - targetPercentage: 20\n        - targetPercentage: 50\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"advancementType":{"type":"string","description":"The type of advancement for the rolling release. Must be either 'automatic' or 'manual-approval'.\n"},"projectId":{"type":"string","description":"The ID of the project.\n"},"stages":{"type":"array","items":{"$ref":"#/types/vercel:index/ProjectRollingReleaseStage:ProjectRollingReleaseStage"},"description":"The stages for the rolling release configuration. The last stage must have\u003cspan pulumi-lang-nodejs=\" targetPercentage \" pulumi-lang-dotnet=\" TargetPercentage \" pulumi-lang-go=\" targetPercentage \" pulumi-lang-python=\" target_percentage \" pulumi-lang-yaml=\" targetPercentage \" pulumi-lang-java=\" targetPercentage \"\u003e target_percentage \u003c/span\u003e= 100.\n"},"teamId":{"type":"string","description":"The ID of the Vercel team.\n"}},"required":["advancementType","projectId","stages","teamId"],"inputProperties":{"advancementType":{"type":"string","description":"The type of advancement for the rolling release. Must be either 'automatic' or 'manual-approval'.\n"},"projectId":{"type":"string","description":"The ID of the project.\n"},"stages":{"type":"array","items":{"$ref":"#/types/vercel:index/ProjectRollingReleaseStage:ProjectRollingReleaseStage"},"description":"The stages for the rolling release configuration. The last stage must have\u003cspan pulumi-lang-nodejs=\" targetPercentage \" pulumi-lang-dotnet=\" TargetPercentage \" pulumi-lang-go=\" targetPercentage \" pulumi-lang-python=\" target_percentage \" pulumi-lang-yaml=\" targetPercentage \" pulumi-lang-java=\" targetPercentage \"\u003e target_percentage \u003c/span\u003e= 100.\n"},"teamId":{"type":"string","description":"The ID of the Vercel team.\n"}},"requiredInputs":["advancementType","projectId","stages"],"stateInputs":{"description":"Input properties used for looking up and filtering ProjectRollingRelease resources.\n","properties":{"advancementType":{"type":"string","description":"The type of advancement for the rolling release. Must be either 'automatic' or 'manual-approval'.\n"},"projectId":{"type":"string","description":"The ID of the project.\n"},"stages":{"type":"array","items":{"$ref":"#/types/vercel:index/ProjectRollingReleaseStage:ProjectRollingReleaseStage"},"description":"The stages for the rolling release configuration. The last stage must have\u003cspan pulumi-lang-nodejs=\" targetPercentage \" pulumi-lang-dotnet=\" TargetPercentage \" pulumi-lang-go=\" targetPercentage \" pulumi-lang-python=\" target_percentage \" pulumi-lang-yaml=\" targetPercentage \" pulumi-lang-java=\" targetPercentage \"\u003e target_percentage \u003c/span\u003e= 100.\n"},"teamId":{"type":"string","description":"The ID of the Vercel team.\n"}},"type":"object"}},"vercel:index/sharedEnvironmentVariable:SharedEnvironmentVariable":{"description":"## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = new vercel.Project(\"example\", {\n    name: \"example\",\n    gitRepository: {\n        type: \"github\",\n        repo: \"vercel/some-repo\",\n    },\n});\n// A shared environment variable that will be created\n// and associated with the \"example\" project.\nconst exampleSharedEnvironmentVariable = new vercel.SharedEnvironmentVariable(\"example\", {\n    key: \"EXAMPLE\",\n    value: \"some_value\",\n    targets: [\"production\"],\n    comment: \"an example shared variable\",\n    projectIds: [example.id],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.Project(\"example\",\n    name=\"example\",\n    git_repository={\n        \"type\": \"github\",\n        \"repo\": \"vercel/some-repo\",\n    })\n# A shared environment variable that will be created\n# and associated with the \"example\" project.\nexample_shared_environment_variable = vercel.SharedEnvironmentVariable(\"example\",\n    key=\"EXAMPLE\",\n    value=\"some_value\",\n    targets=[\"production\"],\n    comment=\"an example shared variable\",\n    project_ids=[example.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Vercel.Project(\"example\", new()\n    {\n        Name = \"example\",\n        GitRepository = new Vercel.Inputs.ProjectGitRepositoryArgs\n        {\n            Type = \"github\",\n            Repo = \"vercel/some-repo\",\n        },\n    });\n\n    // A shared environment variable that will be created\n    // and associated with the \"example\" project.\n    var exampleSharedEnvironmentVariable = new Vercel.SharedEnvironmentVariable(\"example\", new()\n    {\n        Key = \"EXAMPLE\",\n        Value = \"some_value\",\n        Targets = new[]\n        {\n            \"production\",\n        },\n        Comment = \"an example shared variable\",\n        ProjectIds = new[]\n        {\n            example.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := vercel.NewProject(ctx, \"example\", \u0026vercel.ProjectArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tGitRepository: \u0026vercel.ProjectGitRepositoryArgs{\n\t\t\t\tType: pulumi.String(\"github\"),\n\t\t\t\tRepo: pulumi.String(\"vercel/some-repo\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// A shared environment variable that will be created\n\t\t// and associated with the \"example\" project.\n\t\t_, err = vercel.NewSharedEnvironmentVariable(ctx, \"example\", \u0026vercel.SharedEnvironmentVariableArgs{\n\t\t\tKey:   pulumi.String(\"EXAMPLE\"),\n\t\t\tValue: pulumi.String(\"some_value\"),\n\t\t\tTargets: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"production\"),\n\t\t\t},\n\t\t\tComment: pulumi.String(\"an example shared variable\"),\n\t\t\tProjectIds: pulumi.StringArray{\n\t\t\t\texample.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.vercel.Project;\nimport com.pulumiverse.vercel.ProjectArgs;\nimport com.pulumi.vercel.inputs.ProjectGitRepositoryArgs;\nimport com.pulumiverse.vercel.SharedEnvironmentVariable;\nimport com.pulumiverse.vercel.SharedEnvironmentVariableArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Project(\"example\", ProjectArgs.builder()\n            .name(\"example\")\n            .gitRepository(ProjectGitRepositoryArgs.builder()\n                .type(\"github\")\n                .repo(\"vercel/some-repo\")\n                .build())\n            .build());\n\n        // A shared environment variable that will be created\n        // and associated with the \"example\" project.\n        var exampleSharedEnvironmentVariable = new SharedEnvironmentVariable(\"exampleSharedEnvironmentVariable\", SharedEnvironmentVariableArgs.builder()\n            .key(\"EXAMPLE\")\n            .value(\"some_value\")\n            .targets(\"production\")\n            .comment(\"an example shared variable\")\n            .projectIds(example.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:Project\n    properties:\n      name: example\n      gitRepository:\n        type: github\n        repo: vercel/some-repo\n  # A shared environment variable that will be created\n  # and associated with the \"example\" project.\n  exampleSharedEnvironmentVariable:\n    type: vercel:SharedEnvironmentVariable\n    name: example\n    properties:\n      key: EXAMPLE\n      value: some_value\n      targets:\n        - production\n      comment: an example shared variable\n      projectIds:\n        - ${example.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nYou can import via the team_id and environment variable id.\n\n- team_id can be found in the team `settings` tab in the Vercel UI.\n\n- environment variable id can be taken from the network tab inside developer tools, while you are on the project page.\n\nNote also, that the value field for sensitive environment variables will be imported as `null`.\n\n```sh\n$ pulumi import vercel:index/sharedEnvironmentVariable:SharedEnvironmentVariable example team_xxxxxxxxxxxxxxxxxxxxxxxx/env_yyyyyyyyyyyyy\n```\n\n","properties":{"applyToAllCustomEnvironments":{"type":"boolean","description":"Whether the shared environment variable should be applied to all custom environments in the linked projects.\n"},"comment":{"type":"string","description":"A comment explaining what the environment variable is for.\n"},"key":{"type":"string","description":"The name of the Environment Variable.\n"},"projectIds":{"type":"array","items":{"type":"string"},"description":"The ID of the Vercel project.\n"},"sensitive":{"type":"boolean","description":"Whether the Environment Variable is sensitive or not. (May be affected by a [team-wide environment variable policy](https://vercel.com/docs/projects/environment-variables/sensitive-environment-variables#environment-variables-policy))\n"},"targets":{"type":"array","items":{"type":"string"},"description":"The environments that the Environment Variable should be present on. Valid targets are either \u003cspan pulumi-lang-nodejs=\"`production`\" pulumi-lang-dotnet=\"`Production`\" pulumi-lang-go=\"`production`\" pulumi-lang-python=\"`production`\" pulumi-lang-yaml=\"`production`\" pulumi-lang-java=\"`production`\"\u003e`production`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`preview`\" pulumi-lang-dotnet=\"`Preview`\" pulumi-lang-go=\"`preview`\" pulumi-lang-python=\"`preview`\" pulumi-lang-yaml=\"`preview`\" pulumi-lang-java=\"`preview`\"\u003e`preview`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`development`\" pulumi-lang-dotnet=\"`Development`\" pulumi-lang-go=\"`development`\" pulumi-lang-python=\"`development`\" pulumi-lang-yaml=\"`development`\" pulumi-lang-java=\"`development`\"\u003e`development`\u003c/span\u003e.\n"},"teamId":{"type":"string","description":"The ID of the Vercel team. Shared environment variables require a team.\n"},"value":{"type":"string","description":"(Optional, exactly one of \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`valueWo`\" pulumi-lang-dotnet=\"`ValueWo`\" pulumi-lang-go=\"`valueWo`\" pulumi-lang-python=\"`value_wo`\" pulumi-lang-yaml=\"`valueWo`\" pulumi-lang-java=\"`valueWo`\"\u003e`value_wo`\u003c/span\u003e is required) The value of the Environment Variable.\n","secret":true},"valueWo":{"type":"string","description":"**NOTE:** This field is write-only and its value will not be updated in state as part of read operations.\n(Optional, Write-Only, exactly one of \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`valueWo`\" pulumi-lang-dotnet=\"`ValueWo`\" pulumi-lang-go=\"`valueWo`\" pulumi-lang-python=\"`value_wo`\" pulumi-lang-yaml=\"`valueWo`\" pulumi-lang-java=\"`valueWo`\"\u003e`value_wo`\u003c/span\u003e is required) The value of the Environment Variable, from an \u003cspan pulumi-lang-nodejs=\"`ephemeral`\" pulumi-lang-dotnet=\"`Ephemeral`\" pulumi-lang-go=\"`ephemeral`\" pulumi-lang-python=\"`ephemeral`\" pulumi-lang-yaml=\"`ephemeral`\" pulumi-lang-java=\"`ephemeral`\"\u003e`ephemeral`\u003c/span\u003e resource.\n","secret":true}},"required":["applyToAllCustomEnvironments","comment","key","projectIds","sensitive","targets","teamId"],"inputProperties":{"applyToAllCustomEnvironments":{"type":"boolean","description":"Whether the shared environment variable should be applied to all custom environments in the linked projects.\n"},"comment":{"type":"string","description":"A comment explaining what the environment variable is for.\n"},"key":{"type":"string","description":"The name of the Environment Variable.\n"},"projectIds":{"type":"array","items":{"type":"string"},"description":"The ID of the Vercel project.\n"},"sensitive":{"type":"boolean","description":"Whether the Environment Variable is sensitive or not. (May be affected by a [team-wide environment variable policy](https://vercel.com/docs/projects/environment-variables/sensitive-environment-variables#environment-variables-policy))\n"},"targets":{"type":"array","items":{"type":"string"},"description":"The environments that the Environment Variable should be present on. Valid targets are either \u003cspan pulumi-lang-nodejs=\"`production`\" pulumi-lang-dotnet=\"`Production`\" pulumi-lang-go=\"`production`\" pulumi-lang-python=\"`production`\" pulumi-lang-yaml=\"`production`\" pulumi-lang-java=\"`production`\"\u003e`production`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`preview`\" pulumi-lang-dotnet=\"`Preview`\" pulumi-lang-go=\"`preview`\" pulumi-lang-python=\"`preview`\" pulumi-lang-yaml=\"`preview`\" pulumi-lang-java=\"`preview`\"\u003e`preview`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`development`\" pulumi-lang-dotnet=\"`Development`\" pulumi-lang-go=\"`development`\" pulumi-lang-python=\"`development`\" pulumi-lang-yaml=\"`development`\" pulumi-lang-java=\"`development`\"\u003e`development`\u003c/span\u003e.\n"},"teamId":{"type":"string","description":"The ID of the Vercel team. Shared environment variables require a team.\n"},"value":{"type":"string","description":"(Optional, exactly one of \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`valueWo`\" pulumi-lang-dotnet=\"`ValueWo`\" pulumi-lang-go=\"`valueWo`\" pulumi-lang-python=\"`value_wo`\" pulumi-lang-yaml=\"`valueWo`\" pulumi-lang-java=\"`valueWo`\"\u003e`value_wo`\u003c/span\u003e is required) The value of the Environment Variable.\n","secret":true},"valueWo":{"type":"string","description":"**NOTE:** This field is write-only and its value will not be updated in state as part of read operations.\n(Optional, Write-Only, exactly one of \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`valueWo`\" pulumi-lang-dotnet=\"`ValueWo`\" pulumi-lang-go=\"`valueWo`\" pulumi-lang-python=\"`value_wo`\" pulumi-lang-yaml=\"`valueWo`\" pulumi-lang-java=\"`valueWo`\"\u003e`value_wo`\u003c/span\u003e is required) The value of the Environment Variable, from an \u003cspan pulumi-lang-nodejs=\"`ephemeral`\" pulumi-lang-dotnet=\"`Ephemeral`\" pulumi-lang-go=\"`ephemeral`\" pulumi-lang-python=\"`ephemeral`\" pulumi-lang-yaml=\"`ephemeral`\" pulumi-lang-java=\"`ephemeral`\"\u003e`ephemeral`\u003c/span\u003e resource.\n","secret":true}},"requiredInputs":["key","projectIds"],"stateInputs":{"description":"Input properties used for looking up and filtering SharedEnvironmentVariable resources.\n","properties":{"applyToAllCustomEnvironments":{"type":"boolean","description":"Whether the shared environment variable should be applied to all custom environments in the linked projects.\n"},"comment":{"type":"string","description":"A comment explaining what the environment variable is for.\n"},"key":{"type":"string","description":"The name of the Environment Variable.\n"},"projectIds":{"type":"array","items":{"type":"string"},"description":"The ID of the Vercel project.\n"},"sensitive":{"type":"boolean","description":"Whether the Environment Variable is sensitive or not. (May be affected by a [team-wide environment variable policy](https://vercel.com/docs/projects/environment-variables/sensitive-environment-variables#environment-variables-policy))\n"},"targets":{"type":"array","items":{"type":"string"},"description":"The environments that the Environment Variable should be present on. Valid targets are either \u003cspan pulumi-lang-nodejs=\"`production`\" pulumi-lang-dotnet=\"`Production`\" pulumi-lang-go=\"`production`\" pulumi-lang-python=\"`production`\" pulumi-lang-yaml=\"`production`\" pulumi-lang-java=\"`production`\"\u003e`production`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`preview`\" pulumi-lang-dotnet=\"`Preview`\" pulumi-lang-go=\"`preview`\" pulumi-lang-python=\"`preview`\" pulumi-lang-yaml=\"`preview`\" pulumi-lang-java=\"`preview`\"\u003e`preview`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`development`\" pulumi-lang-dotnet=\"`Development`\" pulumi-lang-go=\"`development`\" pulumi-lang-python=\"`development`\" pulumi-lang-yaml=\"`development`\" pulumi-lang-java=\"`development`\"\u003e`development`\u003c/span\u003e.\n"},"teamId":{"type":"string","description":"The ID of the Vercel team. Shared environment variables require a team.\n"},"value":{"type":"string","description":"(Optional, exactly one of \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`valueWo`\" pulumi-lang-dotnet=\"`ValueWo`\" pulumi-lang-go=\"`valueWo`\" pulumi-lang-python=\"`value_wo`\" pulumi-lang-yaml=\"`valueWo`\" pulumi-lang-java=\"`valueWo`\"\u003e`value_wo`\u003c/span\u003e is required) The value of the Environment Variable.\n","secret":true},"valueWo":{"type":"string","description":"**NOTE:** This field is write-only and its value will not be updated in state as part of read operations.\n(Optional, Write-Only, exactly one of \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`valueWo`\" pulumi-lang-dotnet=\"`ValueWo`\" pulumi-lang-go=\"`valueWo`\" pulumi-lang-python=\"`value_wo`\" pulumi-lang-yaml=\"`valueWo`\" pulumi-lang-java=\"`valueWo`\"\u003e`value_wo`\u003c/span\u003e is required) The value of the Environment Variable, from an \u003cspan pulumi-lang-nodejs=\"`ephemeral`\" pulumi-lang-dotnet=\"`Ephemeral`\" pulumi-lang-go=\"`ephemeral`\" pulumi-lang-python=\"`ephemeral`\" pulumi-lang-yaml=\"`ephemeral`\" pulumi-lang-java=\"`ephemeral`\"\u003e`ephemeral`\u003c/span\u003e resource.\n","secret":true}},"type":"object"}},"vercel:index/sharedEnvironmentVariableProjectLink:SharedEnvironmentVariableProjectLink":{"description":"Links a project to a Shared Environment Variable.\n\n\u003e This resource is intended to be used alongside a\u003cspan pulumi-lang-nodejs=\" vercel.SharedEnvironmentVariable \" pulumi-lang-dotnet=\" vercel.SharedEnvironmentVariable \" pulumi-lang-go=\" SharedEnvironmentVariable \" pulumi-lang-python=\" SharedEnvironmentVariable \" pulumi-lang-yaml=\" vercel.SharedEnvironmentVariable \" pulumi-lang-java=\" vercel.SharedEnvironmentVariable \"\u003e vercel.SharedEnvironmentVariable \u003c/span\u003eData Source, not the Resource. The Resource also defines which projects to link to the shared environment variable, and using both\u003cspan pulumi-lang-nodejs=\" vercel.SharedEnvironmentVariable \" pulumi-lang-dotnet=\" vercel.SharedEnvironmentVariable \" pulumi-lang-go=\" SharedEnvironmentVariable \" pulumi-lang-python=\" SharedEnvironmentVariable \" pulumi-lang-yaml=\" vercel.SharedEnvironmentVariable \" pulumi-lang-java=\" vercel.SharedEnvironmentVariable \"\u003e vercel.SharedEnvironmentVariable \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" vercel.SharedEnvironmentVariableProjectLink \" pulumi-lang-dotnet=\" vercel.SharedEnvironmentVariableProjectLink \" pulumi-lang-go=\" SharedEnvironmentVariableProjectLink \" pulumi-lang-python=\" SharedEnvironmentVariableProjectLink \" pulumi-lang-yaml=\" vercel.SharedEnvironmentVariableProjectLink \" pulumi-lang-java=\" vercel.SharedEnvironmentVariableProjectLink \"\u003e vercel.SharedEnvironmentVariableProjectLink \u003c/span\u003etogether results in undefined behavior.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = vercel.getSharedEnvironmentVariable({\n    key: \"EXAMPLE_ENV_VAR\",\n    targets: [\n        \"production\",\n        \"preview\",\n    ],\n});\nconst exampleProject = new vercel.Project(\"example\", {name: \"example\"});\nconst exampleSharedEnvironmentVariableProjectLink = new vercel.SharedEnvironmentVariableProjectLink(\"example\", {\n    sharedEnvironmentVariableId: example.then(example =\u003e example.id),\n    projectId: exampleProject.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\nimport pulumiverse_vercel as vercel\n\nexample = vercel.get_shared_environment_variable(key=\"EXAMPLE_ENV_VAR\",\n    targets=[\n        \"production\",\n        \"preview\",\n    ])\nexample_project = vercel.Project(\"example\", name=\"example\")\nexample_shared_environment_variable_project_link = vercel.SharedEnvironmentVariableProjectLink(\"example\",\n    shared_environment_variable_id=example.id,\n    project_id=example_project.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Vercel.GetSharedEnvironmentVariable.Invoke(new()\n    {\n        Key = \"EXAMPLE_ENV_VAR\",\n        Targets = new[]\n        {\n            \"production\",\n            \"preview\",\n        },\n    });\n\n    var exampleProject = new Vercel.Project(\"example\", new()\n    {\n        Name = \"example\",\n    });\n\n    var exampleSharedEnvironmentVariableProjectLink = new Vercel.SharedEnvironmentVariableProjectLink(\"example\", new()\n    {\n        SharedEnvironmentVariableId = example.Apply(getSharedEnvironmentVariableResult =\u003e getSharedEnvironmentVariableResult.Id),\n        ProjectId = exampleProject.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := vercel.LookupSharedEnvironmentVariable(ctx, \u0026vercel.LookupSharedEnvironmentVariableArgs{\n\t\t\tKey: pulumi.StringRef(\"EXAMPLE_ENV_VAR\"),\n\t\t\tTargets: []string{\n\t\t\t\t\"production\",\n\t\t\t\t\"preview\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleProject, err := vercel.NewProject(ctx, \"example\", \u0026vercel.ProjectArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewSharedEnvironmentVariableProjectLink(ctx, \"example\", \u0026vercel.SharedEnvironmentVariableProjectLinkArgs{\n\t\t\tSharedEnvironmentVariableId: pulumi.String(example.Id),\n\t\t\tProjectId:                   exampleProject.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetSharedEnvironmentVariableArgs;\nimport com.pulumiverse.vercel.Project;\nimport com.pulumiverse.vercel.ProjectArgs;\nimport com.pulumiverse.vercel.SharedEnvironmentVariableProjectLink;\nimport com.pulumiverse.vercel.SharedEnvironmentVariableProjectLinkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = VercelFunctions.getSharedEnvironmentVariable(GetSharedEnvironmentVariableArgs.builder()\n            .key(\"EXAMPLE_ENV_VAR\")\n            .targets(            \n                \"production\",\n                \"preview\")\n            .build());\n\n        var exampleProject = new Project(\"exampleProject\", ProjectArgs.builder()\n            .name(\"example\")\n            .build());\n\n        var exampleSharedEnvironmentVariableProjectLink = new SharedEnvironmentVariableProjectLink(\"exampleSharedEnvironmentVariableProjectLink\", SharedEnvironmentVariableProjectLinkArgs.builder()\n            .sharedEnvironmentVariableId(example.id())\n            .projectId(exampleProject.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleProject:\n    type: vercel:Project\n    name: example\n    properties:\n      name: example\n  exampleSharedEnvironmentVariableProjectLink:\n    type: vercel:SharedEnvironmentVariableProjectLink\n    name: example\n    properties:\n      sharedEnvironmentVariableId: ${example.id}\n      projectId: ${exampleProject.id}\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getSharedEnvironmentVariable\n      arguments:\n        key: EXAMPLE_ENV_VAR\n        targets:\n          - production\n          - preview\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"projectId":{"type":"string","description":"The ID of the Vercel project.\n"},"sharedEnvironmentVariableId":{"type":"string","description":"The ID of the shared environment variable.\n"},"teamId":{"type":"string","description":"The ID of the Vercel team. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"required":["projectId","sharedEnvironmentVariableId","teamId"],"inputProperties":{"projectId":{"type":"string","description":"The ID of the Vercel project.\n"},"sharedEnvironmentVariableId":{"type":"string","description":"The ID of the shared environment variable.\n"},"teamId":{"type":"string","description":"The ID of the Vercel team. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"requiredInputs":["projectId","sharedEnvironmentVariableId"],"stateInputs":{"description":"Input properties used for looking up and filtering SharedEnvironmentVariableProjectLink resources.\n","properties":{"projectId":{"type":"string","description":"The ID of the Vercel project.\n"},"sharedEnvironmentVariableId":{"type":"string","description":"The ID of the shared environment variable.\n"},"teamId":{"type":"string","description":"The ID of the Vercel team. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object"}},"vercel:index/teamConfig:TeamConfig":{"description":"Manages the configuration of an existing Vercel Team.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = vercel.getFile({\n    path: \"example/avatar.png\",\n});\nconst exampleTeamConfig = new vercel.TeamConfig(\"example\", {\n    id: \"team_xxxxxxxxxxxxxxxxxxxxxxxx\",\n    avatar: example.then(example =\u003e example.file),\n    name: \"Vercel terraform example\",\n    slug: \"vercel-terraform-example\",\n    description: \"Vercel Terraform Example\",\n    sensitiveEnvironmentVariablePolicy: \"off\",\n    remoteCaching: {\n        enabled: true,\n    },\n    enablePreviewFeedback: \"off\",\n    enableProductionFeedback: \"off\",\n    hideIpAddresses: true,\n    hideIpAddressesInLogDrains: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\nimport pulumiverse_vercel as vercel\n\nexample = vercel.get_file(path=\"example/avatar.png\")\nexample_team_config = vercel.TeamConfig(\"example\",\n    id=\"team_xxxxxxxxxxxxxxxxxxxxxxxx\",\n    avatar=example.file,\n    name=\"Vercel terraform example\",\n    slug=\"vercel-terraform-example\",\n    description=\"Vercel Terraform Example\",\n    sensitive_environment_variable_policy=\"off\",\n    remote_caching={\n        \"enabled\": True,\n    },\n    enable_preview_feedback=\"off\",\n    enable_production_feedback=\"off\",\n    hide_ip_addresses=True,\n    hide_ip_addresses_in_log_drains=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Vercel.GetFile.Invoke(new()\n    {\n        Path = \"example/avatar.png\",\n    });\n\n    var exampleTeamConfig = new Vercel.TeamConfig(\"example\", new()\n    {\n        Id = \"team_xxxxxxxxxxxxxxxxxxxxxxxx\",\n        Avatar = example.Apply(getFileResult =\u003e getFileResult.File),\n        Name = \"Vercel terraform example\",\n        Slug = \"vercel-terraform-example\",\n        Description = \"Vercel Terraform Example\",\n        SensitiveEnvironmentVariablePolicy = \"off\",\n        RemoteCaching = new Vercel.Inputs.TeamConfigRemoteCachingArgs\n        {\n            Enabled = true,\n        },\n        EnablePreviewFeedback = \"off\",\n        EnableProductionFeedback = \"off\",\n        HideIpAddresses = true,\n        HideIpAddressesInLogDrains = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := vercel.GetFile(ctx, \u0026vercel.GetFileArgs{\n\t\t\tPath: \"example/avatar.png\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewTeamConfig(ctx, \"example\", \u0026vercel.TeamConfigArgs{\n\t\t\tId:                                 \"team_xxxxxxxxxxxxxxxxxxxxxxxx\",\n\t\t\tAvatar:                             pulumi.StringMap(example.File),\n\t\t\tName:                               pulumi.String(\"Vercel terraform example\"),\n\t\t\tSlug:                               pulumi.String(\"vercel-terraform-example\"),\n\t\t\tDescription:                        pulumi.String(\"Vercel Terraform Example\"),\n\t\t\tSensitiveEnvironmentVariablePolicy: pulumi.String(\"off\"),\n\t\t\tRemoteCaching: \u0026vercel.TeamConfigRemoteCachingArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tEnablePreviewFeedback:      pulumi.String(\"off\"),\n\t\t\tEnableProductionFeedback:   pulumi.String(\"off\"),\n\t\t\tHideIpAddresses:            pulumi.Bool(true),\n\t\t\tHideIpAddressesInLogDrains: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetFileArgs;\nimport com.pulumiverse.vercel.TeamConfig;\nimport com.pulumiverse.vercel.TeamConfigArgs;\nimport com.pulumi.vercel.inputs.TeamConfigRemoteCachingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = VercelFunctions.getFile(GetFileArgs.builder()\n            .path(\"example/avatar.png\")\n            .build());\n\n        var exampleTeamConfig = new TeamConfig(\"exampleTeamConfig\", TeamConfigArgs.builder()\n            .id(\"team_xxxxxxxxxxxxxxxxxxxxxxxx\")\n            .avatar(example.file())\n            .name(\"Vercel terraform example\")\n            .slug(\"vercel-terraform-example\")\n            .description(\"Vercel Terraform Example\")\n            .sensitiveEnvironmentVariablePolicy(\"off\")\n            .remoteCaching(TeamConfigRemoteCachingArgs.builder()\n                .enabled(true)\n                .build())\n            .enablePreviewFeedback(\"off\")\n            .enableProductionFeedback(\"off\")\n            .hideIpAddresses(true)\n            .hideIpAddressesInLogDrains(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleTeamConfig:\n    type: vercel:TeamConfig\n    name: example\n    properties:\n      id: team_xxxxxxxxxxxxxxxxxxxxxxxx\n      avatar: ${example.file}\n      name: Vercel terraform example\n      slug: vercel-terraform-example\n      description: Vercel Terraform Example\n      sensitiveEnvironmentVariablePolicy: off\n      remoteCaching:\n        enabled: true\n      enablePreviewFeedback: off\n      enableProductionFeedback: off\n      hideIpAddresses: true\n      hideIpAddressesInLogDrains: true\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getFile\n      arguments:\n        path: example/avatar.png\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTeam config can be imported via the team ID.\n\n- team_id can be found in the team `settings` tab in the Vercel UI.\n\n```sh\n$ pulumi import vercel:index/teamConfig:TeamConfig example team_xxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n","properties":{"avatar":{"type":"object","additionalProperties":{"type":"string"},"description":"The \u003cspan pulumi-lang-nodejs=\"`avatar`\" pulumi-lang-dotnet=\"`Avatar`\" pulumi-lang-go=\"`avatar`\" pulumi-lang-python=\"`avatar`\" pulumi-lang-yaml=\"`avatar`\" pulumi-lang-java=\"`avatar`\"\u003e`avatar`\u003c/span\u003e should be a the 'file' attribute from a\u003cspan pulumi-lang-nodejs=\" vercel.getFile \" pulumi-lang-dotnet=\" vercel.getFile \" pulumi-lang-go=\" getFile \" pulumi-lang-python=\" get_file \" pulumi-lang-yaml=\" vercel.getFile \" pulumi-lang-java=\" vercel.getFile \"\u003e vercel.getFile \u003c/span\u003edata source.\n"},"description":{"type":"string","description":"A description of the team.\n"},"emailDomain":{"type":"string","description":"Hostname that'll be matched with emails on sign-up to automatically join the Team.\n"},"enablePreviewFeedback":{"type":"string","description":"Enables the Vercel Toolbar on your preview deployments: one of on, off or default.\n"},"enableProductionFeedback":{"type":"string","description":"Enables the Vercel Toolbar on your production deployments: one of on, off or default.\n"},"hideIpAddresses":{"type":"boolean","description":"Indicates if ip addresses should be accessible in o11y tooling.\n"},"hideIpAddressesInLogDrains":{"type":"boolean","description":"Indicates if ip addresses should be accessible in log drains.\n"},"inviteCode":{"type":"string","description":"A code that can be used to join this team. Only visible to Team owners.\n"},"name":{"type":"string","description":"The name of the team.\n"},"previewDeploymentSuffix":{"type":"string","description":"The hostname that is used as the preview deployment suffix.\n"},"remoteCaching":{"$ref":"#/types/vercel:index/TeamConfigRemoteCaching:TeamConfigRemoteCaching","description":"Configuration for Remote Caching.\n"},"saml":{"$ref":"#/types/vercel:index/TeamConfigSaml:TeamConfigSaml","description":"Configuration for SAML authentication.\n"},"sensitiveEnvironmentVariablePolicy":{"type":"string","description":"Ensures that all environment variables created by members of this team will be created as Sensitive Environment Variables which can only be decrypted by Vercel's deployment system.: one of on, off or default.\n"},"slug":{"type":"string","description":"The slug of the team. Will be used in the URL of the team's dashboard.\n"}},"required":["description","emailDomain","enablePreviewFeedback","enableProductionFeedback","hideIpAddresses","hideIpAddressesInLogDrains","inviteCode","name","previewDeploymentSuffix","remoteCaching","saml","sensitiveEnvironmentVariablePolicy","slug"],"inputProperties":{"avatar":{"type":"object","additionalProperties":{"type":"string"},"description":"The \u003cspan pulumi-lang-nodejs=\"`avatar`\" pulumi-lang-dotnet=\"`Avatar`\" pulumi-lang-go=\"`avatar`\" pulumi-lang-python=\"`avatar`\" pulumi-lang-yaml=\"`avatar`\" pulumi-lang-java=\"`avatar`\"\u003e`avatar`\u003c/span\u003e should be a the 'file' attribute from a\u003cspan pulumi-lang-nodejs=\" vercel.getFile \" pulumi-lang-dotnet=\" vercel.getFile \" pulumi-lang-go=\" getFile \" pulumi-lang-python=\" get_file \" pulumi-lang-yaml=\" vercel.getFile \" pulumi-lang-java=\" vercel.getFile \"\u003e vercel.getFile \u003c/span\u003edata source.\n"},"description":{"type":"string","description":"A description of the team.\n"},"emailDomain":{"type":"string","description":"Hostname that'll be matched with emails on sign-up to automatically join the Team.\n"},"enablePreviewFeedback":{"type":"string","description":"Enables the Vercel Toolbar on your preview deployments: one of on, off or default.\n"},"enableProductionFeedback":{"type":"string","description":"Enables the Vercel Toolbar on your production deployments: one of on, off or default.\n"},"hideIpAddresses":{"type":"boolean","description":"Indicates if ip addresses should be accessible in o11y tooling.\n"},"hideIpAddressesInLogDrains":{"type":"boolean","description":"Indicates if ip addresses should be accessible in log drains.\n"},"name":{"type":"string","description":"The name of the team.\n"},"previewDeploymentSuffix":{"type":"string","description":"The hostname that is used as the preview deployment suffix.\n"},"remoteCaching":{"$ref":"#/types/vercel:index/TeamConfigRemoteCaching:TeamConfigRemoteCaching","description":"Configuration for Remote Caching.\n"},"saml":{"$ref":"#/types/vercel:index/TeamConfigSaml:TeamConfigSaml","description":"Configuration for SAML authentication.\n"},"sensitiveEnvironmentVariablePolicy":{"type":"string","description":"Ensures that all environment variables created by members of this team will be created as Sensitive Environment Variables which can only be decrypted by Vercel's deployment system.: one of on, off or default.\n"},"slug":{"type":"string","description":"The slug of the team. Will be used in the URL of the team's dashboard.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering TeamConfig resources.\n","properties":{"avatar":{"type":"object","additionalProperties":{"type":"string"},"description":"The \u003cspan pulumi-lang-nodejs=\"`avatar`\" pulumi-lang-dotnet=\"`Avatar`\" pulumi-lang-go=\"`avatar`\" pulumi-lang-python=\"`avatar`\" pulumi-lang-yaml=\"`avatar`\" pulumi-lang-java=\"`avatar`\"\u003e`avatar`\u003c/span\u003e should be a the 'file' attribute from a\u003cspan pulumi-lang-nodejs=\" vercel.getFile \" pulumi-lang-dotnet=\" vercel.getFile \" pulumi-lang-go=\" getFile \" pulumi-lang-python=\" get_file \" pulumi-lang-yaml=\" vercel.getFile \" pulumi-lang-java=\" vercel.getFile \"\u003e vercel.getFile \u003c/span\u003edata source.\n"},"description":{"type":"string","description":"A description of the team.\n"},"emailDomain":{"type":"string","description":"Hostname that'll be matched with emails on sign-up to automatically join the Team.\n"},"enablePreviewFeedback":{"type":"string","description":"Enables the Vercel Toolbar on your preview deployments: one of on, off or default.\n"},"enableProductionFeedback":{"type":"string","description":"Enables the Vercel Toolbar on your production deployments: one of on, off or default.\n"},"hideIpAddresses":{"type":"boolean","description":"Indicates if ip addresses should be accessible in o11y tooling.\n"},"hideIpAddressesInLogDrains":{"type":"boolean","description":"Indicates if ip addresses should be accessible in log drains.\n"},"inviteCode":{"type":"string","description":"A code that can be used to join this team. Only visible to Team owners.\n"},"name":{"type":"string","description":"The name of the team.\n"},"previewDeploymentSuffix":{"type":"string","description":"The hostname that is used as the preview deployment suffix.\n"},"remoteCaching":{"$ref":"#/types/vercel:index/TeamConfigRemoteCaching:TeamConfigRemoteCaching","description":"Configuration for Remote Caching.\n"},"saml":{"$ref":"#/types/vercel:index/TeamConfigSaml:TeamConfigSaml","description":"Configuration for SAML authentication.\n"},"sensitiveEnvironmentVariablePolicy":{"type":"string","description":"Ensures that all environment variables created by members of this team will be created as Sensitive Environment Variables which can only be decrypted by Vercel's deployment system.: one of on, off or default.\n"},"slug":{"type":"string","description":"The slug of the team. Will be used in the URL of the team's dashboard.\n"}},"type":"object"}},"vercel:index/teamMember:TeamMember":{"description":"Provider a resource for managing a team member.\n\n\u003e **Note:** Users can no longer be added to a team by their user_id. This field is maintained purely for backwards compatibility.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\n// Recommended: Use email to add team members\nconst example = new vercel.TeamMember(\"example\", {\n    teamId: \"team_xxxxxxxxxxxxxxxxxxxxxxxx\",\n    email: \"example@example.com\",\n    role: \"MEMBER\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\n# Recommended: Use email to add team members\nexample = vercel.TeamMember(\"example\",\n    team_id=\"team_xxxxxxxxxxxxxxxxxxxxxxxx\",\n    email=\"example@example.com\",\n    role=\"MEMBER\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Recommended: Use email to add team members\n    var example = new Vercel.TeamMember(\"example\", new()\n    {\n        TeamId = \"team_xxxxxxxxxxxxxxxxxxxxxxxx\",\n        Email = \"example@example.com\",\n        Role = \"MEMBER\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Recommended: Use email to add team members\n\t\t_, err := vercel.NewTeamMember(ctx, \"example\", \u0026vercel.TeamMemberArgs{\n\t\t\tTeamId: pulumi.String(\"team_xxxxxxxxxxxxxxxxxxxxxxxx\"),\n\t\t\tEmail:  pulumi.String(\"example@example.com\"),\n\t\t\tRole:   pulumi.String(\"MEMBER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.vercel.TeamMember;\nimport com.pulumiverse.vercel.TeamMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Recommended: Use email to add team members\n        var example = new TeamMember(\"example\", TeamMemberArgs.builder()\n            .teamId(\"team_xxxxxxxxxxxxxxxxxxxxxxxx\")\n            .email(\"example@example.com\")\n            .role(\"MEMBER\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Recommended: Use email to add team members\n  example:\n    type: vercel:TeamMember\n    properties:\n      teamId: team_xxxxxxxxxxxxxxxxxxxxxxxx\n      email: example@example.com\n      role: MEMBER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTo import, use the team_id and user_id.\n\n```sh\n$ pulumi import vercel:index/teamMember:TeamMember example team_xxxxxxxxxxxxxxxxxxxxxxxx/uuuuuuuuuuuuuuuuuuuuuuuuuu\n```\n\n","properties":{"accessGroups":{"type":"array","items":{"type":"string"},"description":"If access groups are enabled on the team, and the user is a CONTRIBUTOR, \u003cspan pulumi-lang-nodejs=\"`projects`\" pulumi-lang-dotnet=\"`Projects`\" pulumi-lang-go=\"`projects`\" pulumi-lang-python=\"`projects`\" pulumi-lang-yaml=\"`projects`\" pulumi-lang-java=\"`projects`\"\u003e`projects`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`accessGroups`\" pulumi-lang-dotnet=\"`AccessGroups`\" pulumi-lang-go=\"`accessGroups`\" pulumi-lang-python=\"`access_groups`\" pulumi-lang-yaml=\"`accessGroups`\" pulumi-lang-java=\"`accessGroups`\"\u003e`access_groups`\u003c/span\u003e or both must be specified. A set of access groups IDs that the user should be granted access to.\n"},"confirmed":{"type":"boolean","description":"Whether the user has confirmed their invitation.\n"},"email":{"type":"string","description":"The email of the user to add to the team. Must specify one of\u003cspan pulumi-lang-nodejs=\" userId \" pulumi-lang-dotnet=\" UserId \" pulumi-lang-go=\" userId \" pulumi-lang-python=\" user_id \" pulumi-lang-yaml=\" userId \" pulumi-lang-java=\" userId \"\u003e user_id \u003c/span\u003eor email.\n"},"projects":{"type":"array","items":{"$ref":"#/types/vercel:index/TeamMemberProject:TeamMemberProject"},"description":"If access groups are enabled on the team, and the user is a CONTRIBUTOR, \u003cspan pulumi-lang-nodejs=\"`projects`\" pulumi-lang-dotnet=\"`Projects`\" pulumi-lang-go=\"`projects`\" pulumi-lang-python=\"`projects`\" pulumi-lang-yaml=\"`projects`\" pulumi-lang-java=\"`projects`\"\u003e`projects`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`accessGroups`\" pulumi-lang-dotnet=\"`AccessGroups`\" pulumi-lang-go=\"`accessGroups`\" pulumi-lang-python=\"`access_groups`\" pulumi-lang-yaml=\"`accessGroups`\" pulumi-lang-java=\"`accessGroups`\"\u003e`access_groups`\u003c/span\u003e or both must be specified. A set of projects that the user should be granted access to, along with their role in each project.\n"},"role":{"type":"string","description":"The role that the user should have in the team. One of 'MEMBER', 'OWNER', 'VIEWER', 'VIEWER*FOR*PLUS', 'DEVELOPER', 'BILLING', 'SECURITY', or 'CONTRIBUTOR'. Depending on your Team's plan, some of these roles may be unavailable.\n"},"teamId":{"type":"string","description":"The ID of the existing Vercel Team.\n"},"userId":{"type":"string","description":"The ID of the user to add to the team. Must specify one of\u003cspan pulumi-lang-nodejs=\" userId \" pulumi-lang-dotnet=\" UserId \" pulumi-lang-go=\" userId \" pulumi-lang-python=\" user_id \" pulumi-lang-yaml=\" userId \" pulumi-lang-java=\" userId \"\u003e user_id \u003c/span\u003eor email.\n","deprecationMessage":"Users can no longer be added to a team by their user_id. This field is maintained purely for backwards compatibility."}},"required":["confirmed","email","role","teamId","userId"],"inputProperties":{"accessGroups":{"type":"array","items":{"type":"string"},"description":"If access groups are enabled on the team, and the user is a CONTRIBUTOR, \u003cspan pulumi-lang-nodejs=\"`projects`\" pulumi-lang-dotnet=\"`Projects`\" pulumi-lang-go=\"`projects`\" pulumi-lang-python=\"`projects`\" pulumi-lang-yaml=\"`projects`\" pulumi-lang-java=\"`projects`\"\u003e`projects`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`accessGroups`\" pulumi-lang-dotnet=\"`AccessGroups`\" pulumi-lang-go=\"`accessGroups`\" pulumi-lang-python=\"`access_groups`\" pulumi-lang-yaml=\"`accessGroups`\" pulumi-lang-java=\"`accessGroups`\"\u003e`access_groups`\u003c/span\u003e or both must be specified. A set of access groups IDs that the user should be granted access to.\n"},"email":{"type":"string","description":"The email of the user to add to the team. Must specify one of\u003cspan pulumi-lang-nodejs=\" userId \" pulumi-lang-dotnet=\" UserId \" pulumi-lang-go=\" userId \" pulumi-lang-python=\" user_id \" pulumi-lang-yaml=\" userId \" pulumi-lang-java=\" userId \"\u003e user_id \u003c/span\u003eor email.\n"},"projects":{"type":"array","items":{"$ref":"#/types/vercel:index/TeamMemberProject:TeamMemberProject"},"description":"If access groups are enabled on the team, and the user is a CONTRIBUTOR, \u003cspan pulumi-lang-nodejs=\"`projects`\" pulumi-lang-dotnet=\"`Projects`\" pulumi-lang-go=\"`projects`\" pulumi-lang-python=\"`projects`\" pulumi-lang-yaml=\"`projects`\" pulumi-lang-java=\"`projects`\"\u003e`projects`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`accessGroups`\" pulumi-lang-dotnet=\"`AccessGroups`\" pulumi-lang-go=\"`accessGroups`\" pulumi-lang-python=\"`access_groups`\" pulumi-lang-yaml=\"`accessGroups`\" pulumi-lang-java=\"`accessGroups`\"\u003e`access_groups`\u003c/span\u003e or both must be specified. A set of projects that the user should be granted access to, along with their role in each project.\n"},"role":{"type":"string","description":"The role that the user should have in the team. One of 'MEMBER', 'OWNER', 'VIEWER', 'VIEWER*FOR*PLUS', 'DEVELOPER', 'BILLING', 'SECURITY', or 'CONTRIBUTOR'. Depending on your Team's plan, some of these roles may be unavailable.\n"},"teamId":{"type":"string","description":"The ID of the existing Vercel Team.\n"},"userId":{"type":"string","description":"The ID of the user to add to the team. Must specify one of\u003cspan pulumi-lang-nodejs=\" userId \" pulumi-lang-dotnet=\" UserId \" pulumi-lang-go=\" userId \" pulumi-lang-python=\" user_id \" pulumi-lang-yaml=\" userId \" pulumi-lang-java=\" userId \"\u003e user_id \u003c/span\u003eor email.\n","deprecationMessage":"Users can no longer be added to a team by their user_id. This field is maintained purely for backwards compatibility."}},"requiredInputs":["role","teamId"],"stateInputs":{"description":"Input properties used for looking up and filtering TeamMember resources.\n","properties":{"accessGroups":{"type":"array","items":{"type":"string"},"description":"If access groups are enabled on the team, and the user is a CONTRIBUTOR, \u003cspan pulumi-lang-nodejs=\"`projects`\" pulumi-lang-dotnet=\"`Projects`\" pulumi-lang-go=\"`projects`\" pulumi-lang-python=\"`projects`\" pulumi-lang-yaml=\"`projects`\" pulumi-lang-java=\"`projects`\"\u003e`projects`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`accessGroups`\" pulumi-lang-dotnet=\"`AccessGroups`\" pulumi-lang-go=\"`accessGroups`\" pulumi-lang-python=\"`access_groups`\" pulumi-lang-yaml=\"`accessGroups`\" pulumi-lang-java=\"`accessGroups`\"\u003e`access_groups`\u003c/span\u003e or both must be specified. A set of access groups IDs that the user should be granted access to.\n"},"confirmed":{"type":"boolean","description":"Whether the user has confirmed their invitation.\n"},"email":{"type":"string","description":"The email of the user to add to the team. Must specify one of\u003cspan pulumi-lang-nodejs=\" userId \" pulumi-lang-dotnet=\" UserId \" pulumi-lang-go=\" userId \" pulumi-lang-python=\" user_id \" pulumi-lang-yaml=\" userId \" pulumi-lang-java=\" userId \"\u003e user_id \u003c/span\u003eor email.\n"},"projects":{"type":"array","items":{"$ref":"#/types/vercel:index/TeamMemberProject:TeamMemberProject"},"description":"If access groups are enabled on the team, and the user is a CONTRIBUTOR, \u003cspan pulumi-lang-nodejs=\"`projects`\" pulumi-lang-dotnet=\"`Projects`\" pulumi-lang-go=\"`projects`\" pulumi-lang-python=\"`projects`\" pulumi-lang-yaml=\"`projects`\" pulumi-lang-java=\"`projects`\"\u003e`projects`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`accessGroups`\" pulumi-lang-dotnet=\"`AccessGroups`\" pulumi-lang-go=\"`accessGroups`\" pulumi-lang-python=\"`access_groups`\" pulumi-lang-yaml=\"`accessGroups`\" pulumi-lang-java=\"`accessGroups`\"\u003e`access_groups`\u003c/span\u003e or both must be specified. A set of projects that the user should be granted access to, along with their role in each project.\n"},"role":{"type":"string","description":"The role that the user should have in the team. One of 'MEMBER', 'OWNER', 'VIEWER', 'VIEWER*FOR*PLUS', 'DEVELOPER', 'BILLING', 'SECURITY', or 'CONTRIBUTOR'. Depending on your Team's plan, some of these roles may be unavailable.\n"},"teamId":{"type":"string","description":"The ID of the existing Vercel Team.\n"},"userId":{"type":"string","description":"The ID of the user to add to the team. Must specify one of\u003cspan pulumi-lang-nodejs=\" userId \" pulumi-lang-dotnet=\" UserId \" pulumi-lang-go=\" userId \" pulumi-lang-python=\" user_id \" pulumi-lang-yaml=\" userId \" pulumi-lang-java=\" userId \"\u003e user_id \u003c/span\u003eor email.\n","deprecationMessage":"Users can no longer be added to a team by their user_id. This field is maintained purely for backwards compatibility."}},"type":"object"}},"vercel:index/webhook:Webhook":{"description":"A webhook is a trigger-based HTTP endpoint configured to receive HTTP POST requests through events.\n\nWhen an event happens, a webhook is sent to a third-party app, which can then take appropriate action.\n\n\u003e Only Pro and Enterprise teams are able to configure these webhooks at the account level.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = new vercel.Project(\"example\", {name: \"example-project\"});\nconst example2 = new vercel.Project(\"example2\", {name: \"another-example-project\"});\nconst withProjectIds = new vercel.Webhook(\"with_project_ids\", {\n    events: [\n        \"deployment.created\",\n        \"deployment.succeeded\",\n    ],\n    endpoint: \"https://example.com/endpoint\",\n    projectIds: [\n        example.id,\n        example2.id,\n    ],\n});\nconst withoutProjectIds = new vercel.Webhook(\"without_project_ids\", {\n    events: [\n        \"deployment.created\",\n        \"deployment.succeeded\",\n    ],\n    endpoint: \"https://example.com/endpoint\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.Project(\"example\", name=\"example-project\")\nexample2 = vercel.Project(\"example2\", name=\"another-example-project\")\nwith_project_ids = vercel.Webhook(\"with_project_ids\",\n    events=[\n        \"deployment.created\",\n        \"deployment.succeeded\",\n    ],\n    endpoint=\"https://example.com/endpoint\",\n    project_ids=[\n        example.id,\n        example2.id,\n    ])\nwithout_project_ids = vercel.Webhook(\"without_project_ids\",\n    events=[\n        \"deployment.created\",\n        \"deployment.succeeded\",\n    ],\n    endpoint=\"https://example.com/endpoint\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Vercel.Project(\"example\", new()\n    {\n        Name = \"example-project\",\n    });\n\n    var example2 = new Vercel.Project(\"example2\", new()\n    {\n        Name = \"another-example-project\",\n    });\n\n    var withProjectIds = new Vercel.Webhook(\"with_project_ids\", new()\n    {\n        Events = new[]\n        {\n            \"deployment.created\",\n            \"deployment.succeeded\",\n        },\n        Endpoint = \"https://example.com/endpoint\",\n        ProjectIds = new[]\n        {\n            example.Id,\n            example2.Id,\n        },\n    });\n\n    var withoutProjectIds = new Vercel.Webhook(\"without_project_ids\", new()\n    {\n        Events = new[]\n        {\n            \"deployment.created\",\n            \"deployment.succeeded\",\n        },\n        Endpoint = \"https://example.com/endpoint\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := vercel.NewProject(ctx, \"example\", \u0026vercel.ProjectArgs{\n\t\t\tName: pulumi.String(\"example-project\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample2, err := vercel.NewProject(ctx, \"example2\", \u0026vercel.ProjectArgs{\n\t\t\tName: pulumi.String(\"another-example-project\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewWebhook(ctx, \"with_project_ids\", \u0026vercel.WebhookArgs{\n\t\t\tEvents: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"deployment.created\"),\n\t\t\t\tpulumi.String(\"deployment.succeeded\"),\n\t\t\t},\n\t\t\tEndpoint: pulumi.String(\"https://example.com/endpoint\"),\n\t\t\tProjectIds: pulumi.StringArray{\n\t\t\t\texample.ID(),\n\t\t\t\texample2.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewWebhook(ctx, \"without_project_ids\", \u0026vercel.WebhookArgs{\n\t\t\tEvents: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"deployment.created\"),\n\t\t\t\tpulumi.String(\"deployment.succeeded\"),\n\t\t\t},\n\t\t\tEndpoint: pulumi.String(\"https://example.com/endpoint\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.vercel.Project;\nimport com.pulumiverse.vercel.ProjectArgs;\nimport com.pulumiverse.vercel.Webhook;\nimport com.pulumiverse.vercel.WebhookArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Project(\"example\", ProjectArgs.builder()\n            .name(\"example-project\")\n            .build());\n\n        var example2 = new Project(\"example2\", ProjectArgs.builder()\n            .name(\"another-example-project\")\n            .build());\n\n        var withProjectIds = new Webhook(\"withProjectIds\", WebhookArgs.builder()\n            .events(            \n                \"deployment.created\",\n                \"deployment.succeeded\")\n            .endpoint(\"https://example.com/endpoint\")\n            .projectIds(            \n                example.id(),\n                example2.id())\n            .build());\n\n        var withoutProjectIds = new Webhook(\"withoutProjectIds\", WebhookArgs.builder()\n            .events(            \n                \"deployment.created\",\n                \"deployment.succeeded\")\n            .endpoint(\"https://example.com/endpoint\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:Project\n    properties:\n      name: example-project\n  example2:\n    type: vercel:Project\n    properties:\n      name: another-example-project\n  withProjectIds:\n    type: vercel:Webhook\n    name: with_project_ids\n    properties:\n      events:\n        - deployment.created\n        - deployment.succeeded\n      endpoint: https://example.com/endpoint\n      projectIds:\n        - ${example.id}\n        - ${example2.id}\n  withoutProjectIds:\n    type: vercel:Webhook\n    name: without_project_ids\n    properties:\n      events:\n        - deployment.created\n        - deployment.succeeded\n      endpoint: https://example.com/endpoint\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"endpoint":{"type":"string","description":"Webhooks events will be sent as POST requests to this URL.\n"},"events":{"type":"array","items":{"type":"string"},"description":"A list of the events the webhook will listen to. At least one must be present.\n"},"projectIds":{"type":"array","items":{"type":"string"},"description":"A list of project IDs that the webhook should be associated with. These projects should send events to the specified endpoint.\n"},"secret":{"type":"string","description":"A secret value which will be provided in the `x-vercel-signature` header and can be used to verify the authenticity of the webhook. See https://vercel.com/docs/observability/webhooks-overview/webhooks-api#securing-webhooks for further details.\n","secret":true},"teamId":{"type":"string","description":"The ID of the team the Webhook should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"required":["endpoint","events","secret","teamId"],"inputProperties":{"endpoint":{"type":"string","description":"Webhooks events will be sent as POST requests to this URL.\n"},"events":{"type":"array","items":{"type":"string"},"description":"A list of the events the webhook will listen to. At least one must be present.\n"},"projectIds":{"type":"array","items":{"type":"string"},"description":"A list of project IDs that the webhook should be associated with. These projects should send events to the specified endpoint.\n"},"teamId":{"type":"string","description":"The ID of the team the Webhook should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"requiredInputs":["endpoint","events"],"stateInputs":{"description":"Input properties used for looking up and filtering Webhook resources.\n","properties":{"endpoint":{"type":"string","description":"Webhooks events will be sent as POST requests to this URL.\n"},"events":{"type":"array","items":{"type":"string"},"description":"A list of the events the webhook will listen to. At least one must be present.\n"},"projectIds":{"type":"array","items":{"type":"string"},"description":"A list of project IDs that the webhook should be associated with. These projects should send events to the specified endpoint.\n"},"secret":{"type":"string","description":"A secret value which will be provided in the `x-vercel-signature` header and can be used to verify the authenticity of the webhook. See https://vercel.com/docs/observability/webhooks-overview/webhooks-api#securing-webhooks for further details.\n","secret":true},"teamId":{"type":"string","description":"The ID of the team the Webhook should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object"}}},"functions":{"pulumi:providers:vercel/terraformConfig":{"description":"This function returns a Terraform config object with terraform-namecased keys,to be used with the Terraform Module Provider.","inputs":{"properties":{"__self__":{"type":"ref","$ref":"#/provider"}},"type":"pulumi:providers:vercel/terraformConfig","required":["__self__"]},"outputs":{"properties":{"result":{"additionalProperties":{"$ref":"pulumi.json#/Any"},"type":"object"}},"required":["result"],"type":"object"}},"vercel:index/getAccessGroup:getAccessGroup":{"description":"Provides information about an existing Access Group.\n\nFor more detailed information, please see the [Vercel documentation](https://vercel.com/docs/accounts/team-members-and-roles/access-groups).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = vercel.getAccessGroup({\n    id: \"ag_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\nexample = vercel.get_access_group(id=\"ag_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Vercel.GetAccessGroup.Invoke(new()\n    {\n        Id = \"ag_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.LookupAccessGroup(ctx, \u0026vercel.LookupAccessGroupArgs{\n\t\t\tId: \"ag_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetAccessGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = VercelFunctions.getAccessGroup(GetAccessGroupArgs.builder()\n            .id(\"ag_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getAccessGroup\n      arguments:\n        id: ag_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getAccessGroup.\n","properties":{"id":{"type":"string","description":"The Access Group ID to be retrieved.\n"},"teamId":{"type":"string","description":"The ID of the team the Access Group should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object","required":["id"]},"outputs":{"description":"A collection of values returned by getAccessGroup.\n","properties":{"id":{"description":"The Access Group ID to be retrieved.\n","type":"string"},"name":{"description":"The name of the Access Group.\n","type":"string"},"teamId":{"description":"The ID of the team the Access Group should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n","type":"string"}},"required":["id","name","teamId"],"type":"object"}},"vercel:index/getAccessGroupProject:getAccessGroupProject":{"description":"Provides information about an existing Access Group Project Assignment.\n\nFor more detailed information, please see the [Vercel documentation](https://vercel.com/docs/accounts/team-members-and-roles/access-groups).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = vercel.getProject({\n    name: \"my-existing-project\",\n});\nconst exampleGetAccessGroupProject = vercel.getAccessGroupProject({\n    accessGroupId: \"ag_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    projectId: exampleVercelProject.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\nexample = vercel.get_project(name=\"my-existing-project\")\nexample_get_access_group_project = vercel.get_access_group_project(access_group_id=\"ag_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    project_id=example_vercel_project[\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Vercel.GetProject.Invoke(new()\n    {\n        Name = \"my-existing-project\",\n    });\n\n    var exampleGetAccessGroupProject = Vercel.GetAccessGroupProject.Invoke(new()\n    {\n        AccessGroupId = \"ag_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n        ProjectId = exampleVercelProject.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.LookupProject(ctx, \u0026vercel.LookupProjectArgs{\n\t\t\tName: \"my-existing-project\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.LookupAccessGroupProject(ctx, \u0026vercel.LookupAccessGroupProjectArgs{\n\t\t\tAccessGroupId: \"ag_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n\t\t\tProjectId:     exampleVercelProject.Id,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetProjectArgs;\nimport com.pulumi.vercel.inputs.GetAccessGroupProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = VercelFunctions.getProject(GetProjectArgs.builder()\n            .name(\"my-existing-project\")\n            .build());\n\n        final var exampleGetAccessGroupProject = VercelFunctions.getAccessGroupProject(GetAccessGroupProjectArgs.builder()\n            .accessGroupId(\"ag_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\n            .projectId(exampleVercelProject.id())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getProject\n      arguments:\n        name: my-existing-project\n  exampleGetAccessGroupProject:\n    fn::invoke:\n      function: vercel:getAccessGroupProject\n      arguments:\n        accessGroupId: ag_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n        projectId: ${exampleVercelProject.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getAccessGroupProject.\n","properties":{"accessGroupId":{"type":"string","description":"The Access Group ID.\n"},"projectId":{"type":"string","description":"The Project ID.\n"},"teamId":{"type":"string","description":"The ID of the team the Access Group Project should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object","required":["accessGroupId","projectId"]},"outputs":{"description":"A collection of values returned by getAccessGroupProject.\n","properties":{"accessGroupId":{"description":"The Access Group ID.\n","type":"string"},"id":{"description":"The unique identifier for this resource. Format: access*group*id/project_id.\n","type":"string"},"projectId":{"description":"The Project ID.\n","type":"string"},"role":{"description":"The Access Group Project Role.\n","type":"string"},"teamId":{"description":"The ID of the team the Access Group Project should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n","type":"string"}},"required":["accessGroupId","id","projectId","role","teamId"],"type":"object"}},"vercel:index/getAlias:getAlias":{"description":"Provides information about an existing Alias resource.\n\nAn Alias allows a \u003cspan pulumi-lang-nodejs=\"`vercel.Deployment`\" pulumi-lang-dotnet=\"`vercel.Deployment`\" pulumi-lang-go=\"`Deployment`\" pulumi-lang-python=\"`Deployment`\" pulumi-lang-yaml=\"`vercel.Deployment`\" pulumi-lang-java=\"`vercel.Deployment`\"\u003e`vercel.Deployment`\u003c/span\u003e to be accessed through a different URL.\n","inputs":{"description":"A collection of arguments for invoking getAlias.\n","properties":{"alias":{"type":"string","description":"The Alias or Alias ID to be retrieved.\n"},"teamId":{"type":"string","description":"The ID of the team the Alias and Deployment exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object","required":["alias"]},"outputs":{"description":"A collection of values returned by getAlias.\n","properties":{"alias":{"description":"The Alias or Alias ID to be retrieved.\n","type":"string"},"deploymentId":{"description":"The ID of the Deployment the Alias is associated with.\n","type":"string"},"id":{"description":"The ID of this resource.\n","type":"string"},"teamId":{"description":"The ID of the team the Alias and Deployment exist under. Required when configuring a team resource if a default team has not been set in the provider.\n","type":"string"}},"required":["alias","deploymentId","id","teamId"],"type":"object"}},"vercel:index/getAttackChallengeMode:getAttackChallengeMode":{"description":"Provides an Attack Challenge Mode resource.\n\nAttack Challenge Mode prevent malicious traffic by showing a verification challenge for every visitor.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = vercel.getAttackChallengeMode({\n    projectId: exampleVercelProject.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\nexample = vercel.get_attack_challenge_mode(project_id=example_vercel_project[\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Vercel.GetAttackChallengeMode.Invoke(new()\n    {\n        ProjectId = exampleVercelProject.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.LookupAttackChallengeMode(ctx, \u0026vercel.LookupAttackChallengeModeArgs{\n\t\t\tProjectId: exampleVercelProject.Id,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetAttackChallengeModeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = VercelFunctions.getAttackChallengeMode(GetAttackChallengeModeArgs.builder()\n            .projectId(exampleVercelProject.id())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getAttackChallengeMode\n      arguments:\n        projectId: ${exampleVercelProject.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getAttackChallengeMode.\n","properties":{"projectId":{"type":"string","description":"The ID of the Project to adjust the CPU for.\n"},"teamId":{"type":"string","description":"The ID of the team the Project exists under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object","required":["projectId"]},"outputs":{"description":"A collection of values returned by getAttackChallengeMode.\n","properties":{"attackModeActiveUntil":{"description":"Unix timestamp in milliseconds (like Date.now()) until which Attack Challenge Mode stays active.\n","type":"integer"},"enabled":{"description":"Whether Attack Challenge Mode is enabled or not.\n","type":"boolean"},"id":{"description":"The resource identifier.\n","type":"string"},"projectId":{"description":"The ID of the Project to adjust the CPU for.\n","type":"string"},"teamId":{"description":"The ID of the team the Project exists under. Required when configuring a team resource if a default team has not been set in the provider.\n","type":"string"}},"required":["attackModeActiveUntil","enabled","id","projectId","teamId"],"type":"object"}},"vercel:index/getCustomEnvironment:getCustomEnvironment":{"description":"Provides information about an existing CustomEnvironment resource.\n\nAn CustomEnvironment allows a \u003cspan pulumi-lang-nodejs=\"`vercel.Deployment`\" pulumi-lang-dotnet=\"`vercel.Deployment`\" pulumi-lang-go=\"`Deployment`\" pulumi-lang-python=\"`Deployment`\" pulumi-lang-yaml=\"`vercel.Deployment`\" pulumi-lang-java=\"`vercel.Deployment`\"\u003e`vercel.Deployment`\u003c/span\u003e to be accessed through a different URL.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = vercel.getProject({\n    name: \"example-project-with-custom-env\",\n});\nconst exampleGetCustomEnvironment = example.then(example =\u003e vercel.getCustomEnvironment({\n    projectId: example.id,\n    name: \"example-custom-env\",\n}));\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\nexample = vercel.get_project(name=\"example-project-with-custom-env\")\nexample_get_custom_environment = vercel.get_custom_environment(project_id=example.id,\n    name=\"example-custom-env\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Vercel.GetProject.Invoke(new()\n    {\n        Name = \"example-project-with-custom-env\",\n    });\n\n    var exampleGetCustomEnvironment = Vercel.GetCustomEnvironment.Invoke(new()\n    {\n        ProjectId = example.Apply(getProjectResult =\u003e getProjectResult.Id),\n        Name = \"example-custom-env\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := vercel.LookupProject(ctx, \u0026vercel.LookupProjectArgs{\n\t\t\tName: \"example-project-with-custom-env\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.LookupCustomEnvironment(ctx, \u0026vercel.LookupCustomEnvironmentArgs{\n\t\t\tProjectId: example.Id,\n\t\t\tName:      \"example-custom-env\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetProjectArgs;\nimport com.pulumi.vercel.inputs.GetCustomEnvironmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = VercelFunctions.getProject(GetProjectArgs.builder()\n            .name(\"example-project-with-custom-env\")\n            .build());\n\n        final var exampleGetCustomEnvironment = VercelFunctions.getCustomEnvironment(GetCustomEnvironmentArgs.builder()\n            .projectId(example.id())\n            .name(\"example-custom-env\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getProject\n      arguments:\n        name: example-project-with-custom-env\n  exampleGetCustomEnvironment:\n    fn::invoke:\n      function: vercel:getCustomEnvironment\n      arguments:\n        projectId: ${example.id}\n        name: example-custom-env\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getCustomEnvironment.\n","properties":{"name":{"type":"string","description":"The name of the environment.\n"},"projectId":{"type":"string","description":"The ID of the existing Vercel Project.\n"},"teamId":{"type":"string","description":"The team ID to add the project to. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object","required":["name","projectId"]},"outputs":{"description":"A collection of values returned by getCustomEnvironment.\n","properties":{"branchTracking":{"$ref":"#/types/vercel:index/getCustomEnvironmentBranchTracking:getCustomEnvironmentBranchTracking","description":"The branch tracking configuration for the environment. When enabled, each qualifying merge will generate a deployment.\n"},"description":{"description":"A description of what the environment is.\n","type":"string"},"id":{"description":"The ID of the environment.\n","type":"string"},"name":{"description":"The name of the environment.\n","type":"string"},"projectId":{"description":"The ID of the existing Vercel Project.\n","type":"string"},"teamId":{"description":"The team ID to add the project to. Required when configuring a team resource if a default team has not been set in the provider.\n","type":"string"}},"required":["branchTracking","description","id","name","projectId","teamId"],"type":"object"}},"vercel:index/getDeployment:getDeployment":{"description":"Provides information about an existing Deployment.\n\nA Deployment is the result of building your Project and making it available through a live URL.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = vercel.getDeployment({\n    id: \"https://my-vercel-project.vercel.app\",\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\nexample = vercel.get_deployment(id=\"https://my-vercel-project.vercel.app\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Vercel.GetDeployment.Invoke(new()\n    {\n        Id = \"https://my-vercel-project.vercel.app\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.LookupDeployment(ctx, \u0026vercel.LookupDeploymentArgs{\n\t\t\tId: \"https://my-vercel-project.vercel.app\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetDeploymentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = VercelFunctions.getDeployment(GetDeploymentArgs.builder()\n            .id(\"https://my-vercel-project.vercel.app\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getDeployment\n      arguments:\n        id: https://my-vercel-project.vercel.app\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getDeployment.\n","properties":{"id":{"type":"string","description":"The ID or URL of the Deployment to read.\n"},"teamId":{"type":"string","description":"The Team ID to the Deployment belong to. Required when reading a team resource if a default team has not been set in the provider.\n"}},"type":"object","required":["id"]},"outputs":{"description":"A collection of values returned by getDeployment.\n","properties":{"customEnvironmentId":{"description":"The ID of the Custom Environment that the deployment was deployed to, if any.\n","type":"string"},"domains":{"description":"A list of all the domains (default domains, staging domains and production domains) that were assigned upon deployment creation.\n","items":{"type":"string"},"type":"array"},"id":{"description":"The ID or URL of the Deployment to read.\n","type":"string"},"meta":{"additionalProperties":{"type":"string"},"description":"Arbitrary key/value metadata associated with the deployment.\n","type":"object"},"production":{"description":"true if the deployment is a production deployment, meaning production aliases will be assigned.\n","type":"boolean"},"projectId":{"description":"The project ID to add the deployment to.\n","type":"string"},"ref":{"description":"The branch or commit hash that has been deployed. Note this will only work if the project is configured to use a Git repository.\n","type":"string"},"teamId":{"description":"The Team ID to the Deployment belong to. Required when reading a team resource if a default team has not been set in the provider.\n","type":"string"},"url":{"description":"A unique URL that is automatically generated for a deployment.\n","type":"string"}},"required":["customEnvironmentId","domains","id","meta","production","projectId","ref","teamId","url"],"type":"object"}},"vercel:index/getDomainConfig:getDomainConfig":{"description":"Provides domain configuration information for a Vercel project.\n\nThis data source returns configuration details for a domain associated with a specific project,\nincluding recommended CNAME and IPv4 values.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst myAwesomeProject = new vercel.Project(\"my_awesome_project\", {name: \"my-awesome-project\"});\n// \n// \"vercel_domain_config\" Usage\n// \nconst exampleCom = vercel.getDomainConfigOutput({\n    domain: \"example.com\",\n    projectIdOrName: myAwesomeProject.id,\n});\nconst wwwExampleCom = vercel.getDomainConfigOutput({\n    domain: \"www.example.com\",\n    projectIdOrName: myAwesomeProject.id,\n});\n//\n// External DNS provider example\n// \nconst exampleComA = new aws.index.Route53Record(\"example_com_a\", {\n    zoneId: \"...zone_id_from_somewhere...\",\n    name: exampleCom.domain,\n    type: \"A\",\n    ttl: 300,\n    records: exampleCom.recommendedIpv4s,\n});\nconst wwwExampleComCname = new aws.index.Route53Record(\"www_example_com_cname\", {\n    zoneId: \"...zone_id_from_somewhere...\",\n    name: wwwExampleCom.domain,\n    type: \"CNAME\",\n    ttl: 300,\n    records: [wwwExampleCom.recommendedCname],\n});\n```\n```python\nimport pulumi\nimport pulumi_aws as aws\nimport pulumi_vercel as vercel\nimport pulumiverse_vercel as vercel\n\nmy_awesome_project = vercel.Project(\"my_awesome_project\", name=\"my-awesome-project\")\n# \n# \"vercel_domain_config\" Usage\n# \nexample_com = vercel.get_domain_config_output(domain=\"example.com\",\n    project_id_or_name=my_awesome_project.id)\nwww_example_com = vercel.get_domain_config_output(domain=\"www.example.com\",\n    project_id_or_name=my_awesome_project.id)\n#\n# External DNS provider example\n# \nexample_com_a = aws.index.Route53Record(\"example_com_a\",\n    zone_id=...zone_id_from_somewhere...,\n    name=example_com.domain,\n    type=A,\n    ttl=300,\n    records=example_com.recommended_ipv4s)\nwww_example_com_cname = aws.index.Route53Record(\"www_example_com_cname\",\n    zone_id=...zone_id_from_somewhere...,\n    name=www_example_com.domain,\n    type=CNAME,\n    ttl=300,\n    records=[www_example_com.recommended_cname])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Aws = Pulumi.Aws;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myAwesomeProject = new Vercel.Project(\"my_awesome_project\", new()\n    {\n        Name = \"my-awesome-project\",\n    });\n\n    // \n    // \"vercel_domain_config\" Usage\n    // \n    var exampleCom = Vercel.GetDomainConfig.Invoke(new()\n    {\n        Domain = \"example.com\",\n        ProjectIdOrName = myAwesomeProject.Id,\n    });\n\n    var wwwExampleCom = Vercel.GetDomainConfig.Invoke(new()\n    {\n        Domain = \"www.example.com\",\n        ProjectIdOrName = myAwesomeProject.Id,\n    });\n\n    //\n    // External DNS provider example\n    // \n    var exampleComA = new Aws.Index.Route53Record(\"example_com_a\", new()\n    {\n        ZoneId = \"...zone_id_from_somewhere...\",\n        Name = exampleCom.Apply(getDomainConfigResult =\u003e getDomainConfigResult.Domain),\n        Type = \"A\",\n        Ttl = 300,\n        Records = exampleCom.Apply(getDomainConfigResult =\u003e getDomainConfigResult.RecommendedIpv4s),\n    });\n\n    var wwwExampleComCname = new Aws.Index.Route53Record(\"www_example_com_cname\", new()\n    {\n        ZoneId = \"...zone_id_from_somewhere...\",\n        Name = wwwExampleCom.Apply(getDomainConfigResult =\u003e getDomainConfigResult.Domain),\n        Type = \"CNAME\",\n        Ttl = 300,\n        Records = new[]\n        {\n            wwwExampleCom.Apply(getDomainConfigResult =\u003e getDomainConfigResult.RecommendedCname),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-aws/sdk/go/aws\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyAwesomeProject, err := vercel.NewProject(ctx, \"my_awesome_project\", \u0026vercel.ProjectArgs{\n\t\t\tName: pulumi.String(\"my-awesome-project\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// \"vercel_domain_config\" Usage\n\t\texampleCom := vercel.GetDomainConfigOutput(ctx, vercel.GetDomainConfigOutputArgs{\n\t\t\tDomain:          pulumi.String(\"example.com\"),\n\t\t\tProjectIdOrName: myAwesomeProject.ID(),\n\t\t}, nil)\n\t\twwwExampleCom := vercel.GetDomainConfigOutput(ctx, vercel.GetDomainConfigOutputArgs{\n\t\t\tDomain:          pulumi.String(\"www.example.com\"),\n\t\t\tProjectIdOrName: myAwesomeProject.ID(),\n\t\t}, nil)\n\t\t// External DNS provider example\n\t\t_, err = aws.NewRoute53Record(ctx, \"example_com_a\", \u0026aws.Route53RecordArgs{\n\t\t\tZoneId:  \"...zone_id_from_somewhere...\",\n\t\t\tName:    exampleCom.Domain,\n\t\t\tType:    \"A\",\n\t\t\tTtl:     300,\n\t\t\tRecords: exampleCom.RecommendedIpv4s,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = aws.NewRoute53Record(ctx, \"www_example_com_cname\", \u0026aws.Route53RecordArgs{\n\t\t\tZoneId: \"...zone_id_from_somewhere...\",\n\t\t\tName:   wwwExampleCom.Domain,\n\t\t\tType:   \"CNAME\",\n\t\t\tTtl:    300,\n\t\t\tRecords: pulumi.StringArray{\n\t\t\t\twwwExampleCom.RecommendedCname,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumiverse.vercel.Project;\nimport com.pulumiverse.vercel.ProjectArgs;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetDomainConfigArgs;\nimport com.pulumi.aws.Route53Record;\nimport com.pulumi.aws.Route53RecordArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myAwesomeProject = new Project(\"myAwesomeProject\", ProjectArgs.builder()\n            .name(\"my-awesome-project\")\n            .build());\n\n        // \n        // \"vercel_domain_config\" Usage\n        // \n        final var exampleCom = VercelFunctions.getDomainConfig(GetDomainConfigArgs.builder()\n            .domain(\"example.com\")\n            .projectIdOrName(myAwesomeProject.id())\n            .build());\n\n        final var wwwExampleCom = VercelFunctions.getDomainConfig(GetDomainConfigArgs.builder()\n            .domain(\"www.example.com\")\n            .projectIdOrName(myAwesomeProject.id())\n            .build());\n\n        //\n        // External DNS provider example\n        // \n        var exampleComA = new Route53Record(\"exampleComA\", Route53RecordArgs.builder()\n            .zoneId(\"...zone_id_from_somewhere...\")\n            .name(exampleCom.domain())\n            .type(\"A\")\n            .ttl(300)\n            .records(exampleCom.recommendedIpv4s())\n            .build());\n\n        var wwwExampleComCname = new Route53Record(\"wwwExampleComCname\", Route53RecordArgs.builder()\n            .zoneId(\"...zone_id_from_somewhere...\")\n            .name(wwwExampleCom.domain())\n            .type(\"CNAME\")\n            .ttl(300)\n            .records(List.of(wwwExampleCom.recommendedCname()))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myAwesomeProject:\n    type: vercel:Project\n    name: my_awesome_project\n    properties:\n      name: my-awesome-project\n  #\n  # External DNS provider example\n  #\n  exampleComA:\n    type: aws:Route53Record\n    name: example_com_a\n    properties:\n      zoneId: '...zone_id_from_somewhere...'\n      name: ${exampleCom.domain}\n      type: A\n      ttl: 300\n      records: ${exampleCom.recommendedIpv4s}\n  wwwExampleComCname:\n    type: aws:Route53Record\n    name: www_example_com_cname\n    properties:\n      zoneId: '...zone_id_from_somewhere...'\n      name: ${wwwExampleCom.domain}\n      type: CNAME\n      ttl: 300\n      records:\n        - ${wwwExampleCom.recommendedCname}\nvariables:\n  # \n  # \"vercel_domain_config\" Usage\n  #\n  exampleCom:\n    fn::invoke:\n      function: vercel:getDomainConfig\n      arguments:\n        domain: example.com\n        projectIdOrName: ${myAwesomeProject.id}\n  wwwExampleCom:\n    fn::invoke:\n      function: vercel:getDomainConfig\n      arguments:\n        domain: www.example.com\n        projectIdOrName: ${myAwesomeProject.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getDomainConfig.\n","properties":{"domain":{"type":"string","description":"The domain name to get configuration for.\n"},"projectIdOrName":{"type":"string","description":"The project ID or name associated with the domain.\n"},"teamId":{"type":"string","description":"The ID of the team the domain config exists under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object","required":["domain","projectIdOrName"]},"outputs":{"description":"A collection of values returned by getDomainConfig.\n","properties":{"domain":{"description":"The domain name to get configuration for.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"projectIdOrName":{"description":"The project ID or name associated with the domain.\n","type":"string"},"recommendedCname":{"description":"The recommended CNAME value for the domain.\n","type":"string"},"recommendedIpv4s":{"description":"The recommended IPv4 values for the domain.\n","items":{"type":"string"},"type":"array"},"teamId":{"description":"The ID of the team the domain config exists under. Required when configuring a team resource if a default team has not been set in the provider.\n","type":"string"}},"required":["domain","projectIdOrName","recommendedCname","recommendedIpv4s","teamId","id"],"type":"object"}},"vercel:index/getDsyncGroups:getDsyncGroups":{"description":"Provides information about DSync groups for a team.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as std from \"@pulumi/std\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = vercel.getDsyncGroups({\n    teamId: \"team_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n});\nconst contractor = new vercel.AccessGroup(\"contractor\", {\n    teamId: \"team_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    name: \"contractor\",\n    description: \"Access group for contractors\",\n});\nconst exampleTeamConfig = new vercel.TeamConfig(\"example\", {\n    id: \"team_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    saml: {\n        enforced: true,\n        roles: {\n            [std.index.lookup({\n                map: exampleVercelDsyncGroups.map,\n                key: \"admin\",\n            }).result]: {\n                role: \"OWNER\",\n            },\n            [std.index.lookup({\n                map: exampleVercelDsyncGroups.map,\n                key: \"finance\",\n            }).result]: {\n                role: \"BILLING\",\n            },\n            [std.index.lookup({\n                map: exampleVercelDsyncGroups.map,\n                key: \"contractor\",\n            }).result]: {\n                role: \"CONTRIBUTOR\",\n                accessGroupId: contractor.id,\n            },\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_std as std\nimport pulumi_vercel as vercel\nimport pulumiverse_vercel as vercel\n\nexample = vercel.get_dsync_groups(team_id=\"team_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\ncontractor = vercel.AccessGroup(\"contractor\",\n    team_id=\"team_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    name=\"contractor\",\n    description=\"Access group for contractors\")\nexample_team_config = vercel.TeamConfig(\"example\",\n    id=\"team_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    saml={\n        \"enforced\": True,\n        \"roles\": {\n            std.index.lookup(map=example_vercel_dsync_groups[\"map\"],\n                key=\"admin\")[\"result\"]: {\n                \"role\": \"OWNER\",\n            },\n            std.index.lookup(map=example_vercel_dsync_groups[\"map\"],\n                key=\"finance\")[\"result\"]: {\n                \"role\": \"BILLING\",\n            },\n            std.index.lookup(map=example_vercel_dsync_groups[\"map\"],\n                key=\"contractor\")[\"result\"]: {\n                \"role\": \"CONTRIBUTOR\",\n                \"accessGroupId\": contractor.id,\n            },\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Std = Pulumi.Std;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Vercel.GetDsyncGroups.Invoke(new()\n    {\n        TeamId = \"team_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    });\n\n    var contractor = new Vercel.AccessGroup(\"contractor\", new()\n    {\n        TeamId = \"team_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n        Name = \"contractor\",\n        Description = \"Access group for contractors\",\n    });\n\n    var exampleTeamConfig = new Vercel.TeamConfig(\"example\", new()\n    {\n        Id = \"team_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n        Saml = new Vercel.Inputs.TeamConfigSamlArgs\n        {\n            Enforced = true,\n            Roles = \n            {\n                { Std.Index.Lookup.Invoke(new()\n                {\n                    Map = exampleVercelDsyncGroups.Map,\n                    Key = \"admin\",\n                }).Result, \n                {\n                    { \"role\", \"OWNER\" },\n                } },\n                { Std.Index.Lookup.Invoke(new()\n                {\n                    Map = exampleVercelDsyncGroups.Map,\n                    Key = \"finance\",\n                }).Result, \n                {\n                    { \"role\", \"BILLING\" },\n                } },\n                { Std.Index.Lookup.Invoke(new()\n                {\n                    Map = exampleVercelDsyncGroups.Map,\n                    Key = \"contractor\",\n                }).Result, \n                {\n                    { \"role\", \"CONTRIBUTOR\" },\n                    { \"accessGroupId\", contractor.Id },\n                } },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.GetDsyncGroups(ctx, \u0026vercel.GetDsyncGroupsArgs{\n\t\t\tTeamId: pulumi.StringRef(\"team_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcontractor, err := vercel.NewAccessGroup(ctx, \"contractor\", \u0026vercel.AccessGroupArgs{\n\t\t\tTeamId:      pulumi.String(\"team_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\"),\n\t\t\tName:        pulumi.String(\"contractor\"),\n\t\t\tDescription: \"Access group for contractors\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeLookup, err := std.Lookup(ctx, map[string]interface{}{\n\t\t\t\"map\": exampleVercelDsyncGroups.Map,\n\t\t\t\"key\": \"admin\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeLookup1, err := std.Lookup(ctx, map[string]interface{}{\n\t\t\t\"map\": exampleVercelDsyncGroups.Map,\n\t\t\t\"key\": \"finance\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeLookup2, err := std.Lookup(ctx, map[string]interface{}{\n\t\t\t\"map\": exampleVercelDsyncGroups.Map,\n\t\t\t\"key\": \"contractor\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewTeamConfig(ctx, \"example\", \u0026vercel.TeamConfigArgs{\n\t\t\tId: \"team_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n\t\t\tSaml: \u0026vercel.TeamConfigSamlArgs{\n\t\t\t\tEnforced: pulumi.Bool(true),\n\t\t\t\tRoles: vercel.TeamConfigSamlRolesMap{\n\t\t\t\t\tinvokeLookup.Result: map[string]interface{}{\n\t\t\t\t\t\t\"role\": \"OWNER\",\n\t\t\t\t\t},\n\t\t\t\t\tinvokeLookup1.Result: map[string]interface{}{\n\t\t\t\t\t\t\"role\": \"BILLING\",\n\t\t\t\t\t},\n\t\t\t\t\tinvokeLookup2.Result: map[string]interface{}{\n\t\t\t\t\t\t\"role\":          \"CONTRIBUTOR\",\n\t\t\t\t\t\t\"accessGroupId\": contractor.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetDsyncGroupsArgs;\nimport com.pulumiverse.vercel.AccessGroup;\nimport com.pulumiverse.vercel.AccessGroupArgs;\nimport com.pulumiverse.vercel.TeamConfig;\nimport com.pulumiverse.vercel.TeamConfigArgs;\nimport com.pulumi.vercel.inputs.TeamConfigSamlArgs;\nimport com.pulumi.std.StdFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = VercelFunctions.getDsyncGroups(GetDsyncGroupsArgs.builder()\n            .teamId(\"team_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\n            .build());\n\n        var contractor = new AccessGroup(\"contractor\", AccessGroupArgs.builder()\n            .teamId(\"team_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\n            .name(\"contractor\")\n            .description(\"Access group for contractors\")\n            .build());\n\n        var exampleTeamConfig = new TeamConfig(\"exampleTeamConfig\", TeamConfigArgs.builder()\n            .id(\"team_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\n            .saml(TeamConfigSamlArgs.builder()\n                .enforced(true)\n                .roles(Map.ofEntries(\n                    Map.entry(StdFunctions.lookup(Map.ofEntries(\n                        Map.entry(\"map\", exampleVercelDsyncGroups.map()),\n                        Map.entry(\"key\", \"admin\")\n                    )).result(), Map.of(\"role\", \"OWNER\")),\n                    Map.entry(StdFunctions.lookup(Map.ofEntries(\n                        Map.entry(\"map\", exampleVercelDsyncGroups.map()),\n                        Map.entry(\"key\", \"finance\")\n                    )).result(), Map.of(\"role\", \"BILLING\")),\n                    Map.entry(StdFunctions.lookup(Map.ofEntries(\n                        Map.entry(\"map\", exampleVercelDsyncGroups.map()),\n                        Map.entry(\"key\", \"contractor\")\n                    )).result(), Map.ofEntries(\n                        Map.entry(\"role\", \"CONTRIBUTOR\"),\n                        Map.entry(\"accessGroupId\", contractor.id())\n                    ))\n                ))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  contractor:\n    type: vercel:AccessGroup\n    properties:\n      teamId: team_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n      name: contractor\n      description: Access group for contractors\n  exampleTeamConfig:\n    type: vercel:TeamConfig\n    name: example\n    properties:\n      id: team_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n      saml:\n        enforced: true\n        roles:\n          '{ fn::invoke: { function: std:lookup, arguments: { map: ${exampleVercelDsyncGroups.map}, key: admin }, return: result } }':\n            role: OWNER\n          '{ fn::invoke: { function: std:lookup, arguments: { map: ${exampleVercelDsyncGroups.map}, key: finance }, return: result } }':\n            role: BILLING\n          '{ fn::invoke: { function: std:lookup, arguments: { map: ${exampleVercelDsyncGroups.map}, key: contractor }, return: result } }':\n            role: CONTRIBUTOR\n            accessGroupId: ${contractor.id}\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getDsyncGroups\n      arguments:\n        teamId: team_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getDsyncGroups.\n","properties":{"teamId":{"type":"string","description":"The ID of the team the Dsync Groups are associated to. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getDsyncGroups.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"lists":{"description":"A list of DSync groups for the team.\n","items":{"$ref":"#/types/vercel:index/getDsyncGroupsList:getDsyncGroupsList"},"type":"array"},"map":{"additionalProperties":{"type":"string"},"description":"A map of Identity Provider group names to their Vercel IDs. This can be used to look up the ID of a group by its name using the lookup function.\n","type":"object"},"teamId":{"description":"The ID of the team the Dsync Groups are associated to. Required when configuring a team resource if a default team has not been set in the provider.\n","type":"string"}},"required":["lists","map","teamId","id"],"type":"object"}},"vercel:index/getEdgeConfig:getEdgeConfig":{"description":"Provides information about an existing Edge Config.\n\nAn Edge Config is a global data store that enables experimentation with feature flags, A/B testing, critical redirects, and more.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = vercel.getEdgeConfig({\n    id: \"ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\nexample = vercel.get_edge_config(id=\"ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Vercel.GetEdgeConfig.Invoke(new()\n    {\n        Id = \"ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.LookupEdgeConfig(ctx, \u0026vercel.LookupEdgeConfigArgs{\n\t\t\tId: \"ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetEdgeConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = VercelFunctions.getEdgeConfig(GetEdgeConfigArgs.builder()\n            .id(\"ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getEdgeConfig\n      arguments:\n        id: ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getEdgeConfig.\n","properties":{"id":{"type":"string","description":"The Edge Config ID to be retrieved. This can be found by navigating to the Edge Config in the Vercel UI and looking at the URL. It should begin with `ecfg_`.\n"},"teamId":{"type":"string","description":"The ID of the team the Edge Config should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object","required":["id"]},"outputs":{"description":"A collection of values returned by getEdgeConfig.\n","properties":{"id":{"description":"The Edge Config ID to be retrieved. This can be found by navigating to the Edge Config in the Vercel UI and looking at the URL. It should begin with `ecfg_`.\n","type":"string"},"name":{"description":"The name/slug of the Edge Config.\n","type":"string"},"teamId":{"description":"The ID of the team the Edge Config should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n","type":"string"}},"required":["id","name","teamId"],"type":"object"}},"vercel:index/getEdgeConfigItem:getEdgeConfigItem":{"description":"Provides the value of an existing Edge Config Item.\n\nAn Edge Config is a global data store that enables experimentation with feature flags, A/B testing, critical redirects, and more.\n\nAn Edge Config Item is a value within an Edge Config.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = vercel.getEdgeConfig({\n    id: \"ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n});\n// Read a string item\nconst stringItem = example.then(example =\u003e vercel.getEdgeConfigItem({\n    id: example.id,\n    key: \"foobar\",\n}));\n// Read a JSON item\nconst jsonItem = example.then(example =\u003e vercel.getEdgeConfigItem({\n    id: example.id,\n    key: \"flags\",\n}));\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\nexample = vercel.get_edge_config(id=\"ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\n# Read a string item\nstring_item = vercel.get_edge_config_item(id=example.id,\n    key=\"foobar\")\n# Read a JSON item\njson_item = vercel.get_edge_config_item(id=example.id,\n    key=\"flags\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Vercel.GetEdgeConfig.Invoke(new()\n    {\n        Id = \"ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    });\n\n    // Read a string item\n    var stringItem = Vercel.GetEdgeConfigItem.Invoke(new()\n    {\n        Id = example.Apply(getEdgeConfigResult =\u003e getEdgeConfigResult.Id),\n        Key = \"foobar\",\n    });\n\n    // Read a JSON item\n    var jsonItem = Vercel.GetEdgeConfigItem.Invoke(new()\n    {\n        Id = example.Apply(getEdgeConfigResult =\u003e getEdgeConfigResult.Id),\n        Key = \"flags\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := vercel.LookupEdgeConfig(ctx, \u0026vercel.LookupEdgeConfigArgs{\n\t\t\tId: \"ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Read a string item\n\t\t_, err = vercel.LookupEdgeConfigItem(ctx, \u0026vercel.LookupEdgeConfigItemArgs{\n\t\t\tId:  example.Id,\n\t\t\tKey: \"foobar\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Read a JSON item\n\t\t_, err = vercel.LookupEdgeConfigItem(ctx, \u0026vercel.LookupEdgeConfigItemArgs{\n\t\t\tId:  example.Id,\n\t\t\tKey: \"flags\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetEdgeConfigArgs;\nimport com.pulumi.vercel.inputs.GetEdgeConfigItemArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = VercelFunctions.getEdgeConfig(GetEdgeConfigArgs.builder()\n            .id(\"ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\n            .build());\n\n        // Read a string item\n        final var stringItem = VercelFunctions.getEdgeConfigItem(GetEdgeConfigItemArgs.builder()\n            .id(example.id())\n            .key(\"foobar\")\n            .build());\n\n        // Read a JSON item\n        final var jsonItem = VercelFunctions.getEdgeConfigItem(GetEdgeConfigItemArgs.builder()\n            .id(example.id())\n            .key(\"flags\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getEdgeConfig\n      arguments:\n        id: ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n  # Read a string item\n  stringItem:\n    fn::invoke:\n      function: vercel:getEdgeConfigItem\n      arguments:\n        id: ${example.id}\n        key: foobar\n  # Read a JSON item\n  jsonItem:\n    fn::invoke:\n      function: vercel:getEdgeConfigItem\n      arguments:\n        id: ${example.id}\n        key: flags\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getEdgeConfigItem.\n","properties":{"id":{"type":"string","description":"The ID of the Edge Config that the item should exist under.\n"},"key":{"type":"string","description":"The name of the key you want to retrieve within your Edge Config.\n"},"teamId":{"type":"string","description":"The ID of the team the Edge Config should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object","required":["id","key"]},"outputs":{"description":"A collection of values returned by getEdgeConfigItem.\n","properties":{"id":{"description":"The ID of the Edge Config that the item should exist under.\n","type":"string"},"key":{"description":"The name of the key you want to retrieve within your Edge Config.\n","type":"string"},"teamId":{"description":"The ID of the team the Edge Config should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n","type":"string"},"value":{"description":"The value assigned to the key (only set for string values).\n","type":"string"},"valueJson":{"$ref":"pulumi.json#/Any","description":"Structured JSON value (object/array/number/bool/null) assigned to the key.\n"}},"required":["id","key","teamId","value","valueJson"],"type":"object"}},"vercel:index/getEdgeConfigSchema:getEdgeConfigSchema":{"description":"An Edge Config Schema provides an existing Edge Config with a JSON schema. Use schema protection to prevent unexpected updates that may cause bugs or downtime.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst test = vercel.getEdgeConfigSchema({\n    id: \"ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\ntest = vercel.get_edge_config_schema(id=\"ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = Vercel.GetEdgeConfigSchema.Invoke(new()\n    {\n        Id = \"ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.LookupEdgeConfigSchema(ctx, \u0026vercel.LookupEdgeConfigSchemaArgs{\n\t\t\tId: \"ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetEdgeConfigSchemaArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var test = VercelFunctions.getEdgeConfigSchema(GetEdgeConfigSchemaArgs.builder()\n            .id(\"ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  test:\n    fn::invoke:\n      function: vercel:getEdgeConfigSchema\n      arguments:\n        id: ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getEdgeConfigSchema.\n","properties":{"id":{"type":"string","description":"The ID of the Edge Config that the schema should be for.\n"},"teamId":{"type":"string","description":"The ID of the team the Edge Config should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object","required":["id"]},"outputs":{"description":"A collection of values returned by getEdgeConfigSchema.\n","properties":{"definition":{"description":"A JSON schema that will be used to validate data in the Edge Config.\n","type":"string"},"id":{"description":"The ID of the Edge Config that the schema should be for.\n","type":"string"},"teamId":{"description":"The ID of the team the Edge Config should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n","type":"string"}},"required":["definition","id","teamId"],"type":"object"}},"vercel:index/getEdgeConfigToken:getEdgeConfigToken":{"description":"Provides information about an existing Edge Config Token.\n\nAn Edge Config is a global data store that enables experimentation with feature flags, A/B testing, critical redirects, and more.\n\nAn Edge Config token is used to authenticate against an Edge Config's endpoint.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst test = vercel.getEdgeConfigToken({\n    edgeConfigId: \"ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    token: \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\ntest = vercel.get_edge_config_token(edge_config_id=\"ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    token=\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = Vercel.GetEdgeConfigToken.Invoke(new()\n    {\n        EdgeConfigId = \"ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n        Token = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.LookupEdgeConfigToken(ctx, \u0026vercel.LookupEdgeConfigTokenArgs{\n\t\t\tEdgeConfigId: \"ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n\t\t\tToken:        \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetEdgeConfigTokenArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var test = VercelFunctions.getEdgeConfigToken(GetEdgeConfigTokenArgs.builder()\n            .edgeConfigId(\"ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\n            .token(\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  test:\n    fn::invoke:\n      function: vercel:getEdgeConfigToken\n      arguments:\n        edgeConfigId: ecfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n        token: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getEdgeConfigToken.\n","properties":{"edgeConfigId":{"type":"string","description":"The label of the Edge Config Token.\n"},"teamId":{"type":"string","description":"The ID of the team the Edge Config should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"},"token":{"type":"string","description":"A read access token used for authenticating against the Edge Config's endpoint for high volume, low-latency requests.\n","secret":true}},"type":"object","required":["edgeConfigId","token"]},"outputs":{"description":"A collection of values returned by getEdgeConfigToken.\n","properties":{"connectionString":{"description":"A connection string is a URL that connects a project to an Edge Config. The variable can be called anything, but our Edge Config client SDK will search for process.env.EDGE_CONFIG by default.\n","secret":true,"type":"string"},"edgeConfigId":{"description":"The label of the Edge Config Token.\n","type":"string"},"id":{"description":"The ID of this resource.\n","type":"string"},"label":{"description":"The label of the Edge Config Token.\n","type":"string"},"teamId":{"description":"The ID of the team the Edge Config should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n","type":"string"},"token":{"description":"A read access token used for authenticating against the Edge Config's endpoint for high volume, low-latency requests.\n","secret":true,"type":"string"}},"required":["connectionString","edgeConfigId","id","label","teamId","token"],"type":"object"}},"vercel:index/getEndpointVerification:getEndpointVerification":{"description":"Provides a verification code that can be used to prove ownership over an API.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = vercel.getEndpointVerification({});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\nexample = vercel.get_endpoint_verification()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Vercel.GetEndpointVerification.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.GetEndpointVerification(ctx, \u0026vercel.GetEndpointVerificationArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetEndpointVerificationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = VercelFunctions.getEndpointVerification(GetEndpointVerificationArgs.builder()\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getEndpointVerification\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getEndpointVerification.\n","properties":{"teamId":{"type":"string","description":"The ID of the team the Edge Config should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getEndpointVerification.\n","properties":{"id":{"description":"The ID of this resource.\n","type":"string"},"teamId":{"description":"The ID of the team the Edge Config should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n","type":"string"},"verificationCode":{"description":"A verification code that should be set in the `x-vercel-verify` response header for your API. This is used to verify that the endpoint belongs to you.\n","secret":true,"type":"string"}},"required":["id","teamId","verificationCode"],"type":"object"}},"vercel:index/getFile:getFile":{"description":"Provides information about a file on disk.\n\nThis will read a single file, providing metadata for use with a \u003cspan pulumi-lang-nodejs=\"`vercel.Deployment`\" pulumi-lang-dotnet=\"`vercel.Deployment`\" pulumi-lang-go=\"`Deployment`\" pulumi-lang-python=\"`Deployment`\" pulumi-lang-yaml=\"`vercel.Deployment`\" pulumi-lang-java=\"`vercel.Deployment`\"\u003e`vercel.Deployment`\u003c/span\u003e.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\n// In this example, we are assuming that a single index.html file\n// is being deployed. This file lives directly next to the terraform file.\nconst example = vercel.getFile({\n    path: \"index.html\",\n});\nconst exampleGetProject = vercel.getProject({\n    name: \"my-project\",\n});\nconst exampleDeployment = new vercel.Deployment(\"example\", {\n    projectId: exampleGetProject.then(exampleGetProject =\u003e exampleGetProject.id),\n    files: example.then(example =\u003e example.file),\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\nimport pulumiverse_vercel as vercel\n\n# In this example, we are assuming that a single index.html file\n# is being deployed. This file lives directly next to the terraform file.\nexample = vercel.get_file(path=\"index.html\")\nexample_get_project = vercel.get_project(name=\"my-project\")\nexample_deployment = vercel.Deployment(\"example\",\n    project_id=example_get_project.id,\n    files=example.file)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // In this example, we are assuming that a single index.html file\n    // is being deployed. This file lives directly next to the terraform file.\n    var example = Vercel.GetFile.Invoke(new()\n    {\n        Path = \"index.html\",\n    });\n\n    var exampleGetProject = Vercel.GetProject.Invoke(new()\n    {\n        Name = \"my-project\",\n    });\n\n    var exampleDeployment = new Vercel.Deployment(\"example\", new()\n    {\n        ProjectId = exampleGetProject.Apply(getProjectResult =\u003e getProjectResult.Id),\n        Files = example.Apply(getFileResult =\u003e getFileResult.File),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// In this example, we are assuming that a single index.html file\n\t\t// is being deployed. This file lives directly next to the terraform file.\n\t\texample, err := vercel.GetFile(ctx, \u0026vercel.GetFileArgs{\n\t\t\tPath: \"index.html\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleGetProject, err := vercel.LookupProject(ctx, \u0026vercel.LookupProjectArgs{\n\t\t\tName: \"my-project\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewDeployment(ctx, \"example\", \u0026vercel.DeploymentArgs{\n\t\t\tProjectId: pulumi.String(exampleGetProject.Id),\n\t\t\tFiles:     pulumi.StringMap(example.File),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetFileArgs;\nimport com.pulumi.vercel.inputs.GetProjectArgs;\nimport com.pulumiverse.vercel.Deployment;\nimport com.pulumiverse.vercel.DeploymentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // In this example, we are assuming that a single index.html file\n        // is being deployed. This file lives directly next to the terraform file.\n        final var example = VercelFunctions.getFile(GetFileArgs.builder()\n            .path(\"index.html\")\n            .build());\n\n        final var exampleGetProject = VercelFunctions.getProject(GetProjectArgs.builder()\n            .name(\"my-project\")\n            .build());\n\n        var exampleDeployment = new Deployment(\"exampleDeployment\", DeploymentArgs.builder()\n            .projectId(exampleGetProject.id())\n            .files(example.file())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDeployment:\n    type: vercel:Deployment\n    name: example\n    properties:\n      projectId: ${exampleGetProject.id}\n      files: ${example.file}\nvariables:\n  # In this example, we are assuming that a single index.html file\n  # is being deployed. This file lives directly next to the terraform file.\n  example:\n    fn::invoke:\n      function: vercel:getFile\n      arguments:\n        path: index.html\n  exampleGetProject:\n    fn::invoke:\n      function: vercel:getProject\n      arguments:\n        name: my-project\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getFile.\n","properties":{"path":{"type":"string"}},"type":"object","required":["path"]},"outputs":{"description":"A collection of values returned by getFile.\n","properties":{"file":{"additionalProperties":{"type":"string"},"description":"A map of filename to metadata about the file. The metadata contains the file size and hash, and allows a deployment to be created if the file changes.\n","type":"object"},"id":{"description":"The ID of this resource.\n","type":"string"},"path":{"type":"string"}},"required":["file","id","path"],"type":"object"}},"vercel:index/getLogDrain:getLogDrain":{"description":"Provides information about an existing Log Drain.\n\nLog Drains collect all of your logs using a service specializing in storing app logs.\n\nTeams on Pro and Enterprise plans can subscribe to log drains that are generic and configurable from the Vercel dashboard without creating an integration. This allows you to use a HTTP service to receive logs through Vercel's log drains.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = vercel.getLogDrain({\n    id: \"lg_xxxxxxx_xxxxxx_xxxxx\",\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\nexample = vercel.get_log_drain(id=\"lg_xxxxxxx_xxxxxx_xxxxx\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Vercel.GetLogDrain.Invoke(new()\n    {\n        Id = \"lg_xxxxxxx_xxxxxx_xxxxx\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.LookupLogDrain(ctx, \u0026vercel.LookupLogDrainArgs{\n\t\t\tId: \"lg_xxxxxxx_xxxxxx_xxxxx\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetLogDrainArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = VercelFunctions.getLogDrain(GetLogDrainArgs.builder()\n            .id(\"lg_xxxxxxx_xxxxxx_xxxxx\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getLogDrain\n      arguments:\n        id: lg_xxxxxxx_xxxxxx_xxxxx\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getLogDrain.\n","properties":{"endpoint":{"type":"string","description":"Logs will be sent as POST requests to this URL. The endpoint will be verified, and must return a \u003cspan pulumi-lang-nodejs=\"`200`\" pulumi-lang-dotnet=\"`200`\" pulumi-lang-go=\"`200`\" pulumi-lang-python=\"`200`\" pulumi-lang-yaml=\"`200`\" pulumi-lang-java=\"`200`\"\u003e`200`\u003c/span\u003e status code and an `x-vercel-verify` header taken from the\u003cspan pulumi-lang-nodejs=\" endpointVerification \" pulumi-lang-dotnet=\" EndpointVerification \" pulumi-lang-go=\" endpointVerification \" pulumi-lang-python=\" endpoint_verification \" pulumi-lang-yaml=\" endpointVerification \" pulumi-lang-java=\" endpointVerification \"\u003e endpoint_verification \u003c/span\u003edata source. The value the `x-vercel-verify` header should be can be read from the \u003cspan pulumi-lang-nodejs=\"`vercelEndpointVerificationCode`\" pulumi-lang-dotnet=\"`VercelEndpointVerificationCode`\" pulumi-lang-go=\"`vercelEndpointVerificationCode`\" pulumi-lang-python=\"`vercel_endpoint_verification_code`\" pulumi-lang-yaml=\"`vercelEndpointVerificationCode`\" pulumi-lang-java=\"`vercelEndpointVerificationCode`\"\u003e`vercel_endpoint_verification_code`\u003c/span\u003e data source.\n"},"id":{"type":"string","description":"The ID of the Log Drain.\n"},"teamId":{"type":"string","description":"The ID of the team the Log Drain should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object","required":["endpoint","id"]},"outputs":{"description":"A collection of values returned by getLogDrain.\n","properties":{"deliveryFormat":{"description":"The format log data should be delivered in. Can be \u003cspan pulumi-lang-nodejs=\"`json`\" pulumi-lang-dotnet=\"`Json`\" pulumi-lang-go=\"`json`\" pulumi-lang-python=\"`json`\" pulumi-lang-yaml=\"`json`\" pulumi-lang-java=\"`json`\"\u003e`json`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ndjson`\" pulumi-lang-dotnet=\"`Ndjson`\" pulumi-lang-go=\"`ndjson`\" pulumi-lang-python=\"`ndjson`\" pulumi-lang-yaml=\"`ndjson`\" pulumi-lang-java=\"`ndjson`\"\u003e`ndjson`\u003c/span\u003e.\n","type":"string"},"endpoint":{"description":"Logs will be sent as POST requests to this URL. The endpoint will be verified, and must return a \u003cspan pulumi-lang-nodejs=\"`200`\" pulumi-lang-dotnet=\"`200`\" pulumi-lang-go=\"`200`\" pulumi-lang-python=\"`200`\" pulumi-lang-yaml=\"`200`\" pulumi-lang-java=\"`200`\"\u003e`200`\u003c/span\u003e status code and an `x-vercel-verify` header taken from the\u003cspan pulumi-lang-nodejs=\" endpointVerification \" pulumi-lang-dotnet=\" EndpointVerification \" pulumi-lang-go=\" endpointVerification \" pulumi-lang-python=\" endpoint_verification \" pulumi-lang-yaml=\" endpointVerification \" pulumi-lang-java=\" endpointVerification \"\u003e endpoint_verification \u003c/span\u003edata source. The value the `x-vercel-verify` header should be can be read from the \u003cspan pulumi-lang-nodejs=\"`vercelEndpointVerificationCode`\" pulumi-lang-dotnet=\"`VercelEndpointVerificationCode`\" pulumi-lang-go=\"`vercelEndpointVerificationCode`\" pulumi-lang-python=\"`vercel_endpoint_verification_code`\" pulumi-lang-yaml=\"`vercelEndpointVerificationCode`\" pulumi-lang-java=\"`vercelEndpointVerificationCode`\"\u003e`vercel_endpoint_verification_code`\u003c/span\u003e data source.\n","type":"string"},"environments":{"description":"Logs from the selected environments will be forwarded to your webhook. At least one must be present.\n","items":{"type":"string"},"type":"array"},"headers":{"additionalProperties":{"type":"string"},"description":"Custom headers to include in requests to the log drain endpoint.\n","secret":true,"type":"object"},"id":{"description":"The ID of the Log Drain.\n","type":"string"},"name":{"description":"The human-readable name of the Log Drain.\n","type":"string"},"projectIds":{"description":"A list of project IDs that the log drain should be associated with. Logs from these projects will be sent log events to the specified endpoint. If omitted, logs will be sent for all projects.\n","items":{"type":"string"},"type":"array"},"samplingRate":{"description":"A ratio of logs matching the sampling rate will be sent to your log drain. Should be a value between 0 and 1. If unspecified, all logs are sent.\n","type":"number"},"sources":{"description":"A set of sources that the log drain should send logs for. Valid values are \u003cspan pulumi-lang-nodejs=\"`static`\" pulumi-lang-dotnet=\"`Static`\" pulumi-lang-go=\"`static`\" pulumi-lang-python=\"`static`\" pulumi-lang-yaml=\"`static`\" pulumi-lang-java=\"`static`\"\u003e`static`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`edge`\" pulumi-lang-dotnet=\"`Edge`\" pulumi-lang-go=\"`edge`\" pulumi-lang-python=\"`edge`\" pulumi-lang-yaml=\"`edge`\" pulumi-lang-java=\"`edge`\"\u003e`edge`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`external`\" pulumi-lang-dotnet=\"`External`\" pulumi-lang-go=\"`external`\" pulumi-lang-python=\"`external`\" pulumi-lang-yaml=\"`external`\" pulumi-lang-java=\"`external`\"\u003e`external`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`build`\" pulumi-lang-dotnet=\"`Build`\" pulumi-lang-go=\"`build`\" pulumi-lang-python=\"`build`\" pulumi-lang-yaml=\"`build`\" pulumi-lang-java=\"`build`\"\u003e`build`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`lambda`\" pulumi-lang-dotnet=\"`Lambda`\" pulumi-lang-go=\"`lambda`\" pulumi-lang-python=\"`lambda`\" pulumi-lang-yaml=\"`lambda`\" pulumi-lang-java=\"`lambda`\"\u003e`lambda`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`firewall`\" pulumi-lang-dotnet=\"`Firewall`\" pulumi-lang-go=\"`firewall`\" pulumi-lang-python=\"`firewall`\" pulumi-lang-yaml=\"`firewall`\" pulumi-lang-java=\"`firewall`\"\u003e`firewall`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`redirect`\" pulumi-lang-dotnet=\"`Redirect`\" pulumi-lang-go=\"`redirect`\" pulumi-lang-python=\"`redirect`\" pulumi-lang-yaml=\"`redirect`\" pulumi-lang-java=\"`redirect`\"\u003e`redirect`\u003c/span\u003e.\n","items":{"type":"string"},"type":"array"},"teamId":{"description":"The ID of the team the Log Drain should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n","type":"string"}},"required":["deliveryFormat","endpoint","environments","headers","id","name","projectIds","samplingRate","sources","teamId"],"type":"object"}},"vercel:index/getMicrofrontendGroup:getMicrofrontendGroup":{"description":"Provides information about an existing Microfrontend Group.\n\nA Microfrontend Group is a definition of a microfrontend belonging to a Vercel Team.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = vercel.getMicrofrontendGroup({\n    id: \"mfe_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\nexample = vercel.get_microfrontend_group(id=\"mfe_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Vercel.GetMicrofrontendGroup.Invoke(new()\n    {\n        Id = \"mfe_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.LookupMicrofrontendGroup(ctx, \u0026vercel.LookupMicrofrontendGroupArgs{\n\t\t\tId: \"mfe_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetMicrofrontendGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = VercelFunctions.getMicrofrontendGroup(GetMicrofrontendGroupArgs.builder()\n            .id(\"mfe_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getMicrofrontendGroup\n      arguments:\n        id: mfe_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getMicrofrontendGroup.\n","properties":{"id":{"type":"string","description":"A unique identifier for the group of microfrontends. Example: mfe_12HKQaOmR5t5Uy6vdcQsNIiZgHGB\n"},"teamId":{"type":"string","description":"The team ID to add the project to. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object","required":["id"]},"outputs":{"description":"A collection of values returned by getMicrofrontendGroup.\n","properties":{"defaultApp":{"$ref":"#/types/vercel:index/getMicrofrontendGroupDefaultApp:getMicrofrontendGroupDefaultApp","description":"The default app for the project. Used as the entry point for the microfrontend.\n"},"id":{"description":"A unique identifier for the group of microfrontends. Example: mfe_12HKQaOmR5t5Uy6vdcQsNIiZgHGB\n","type":"string"},"name":{"description":"A human readable name for the microfrontends group.\n","type":"string"},"slug":{"description":"A slugified version of the name.\n","type":"string"},"teamId":{"description":"The team ID to add the project to. Required when configuring a team resource if a default team has not been set in the provider.\n","type":"string"}},"required":["defaultApp","id","name","slug","teamId"],"type":"object"}},"vercel:index/getMicrofrontendGroupMembership:getMicrofrontendGroupMembership":{"description":"Provides information about an existing Microfrontend Group Membership.\n\nA Microfrontend Group Membership is a definition of a Vercel Project being a part of a Microfrontend Group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = vercel.getMicrofrontendGroupMembership({\n    projectId: \"prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    microfrontendGroupId: \"mfe_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\nexample = vercel.get_microfrontend_group_membership(project_id=\"prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    microfrontend_group_id=\"mfe_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Vercel.GetMicrofrontendGroupMembership.Invoke(new()\n    {\n        ProjectId = \"prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n        MicrofrontendGroupId = \"mfe_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.LookupMicrofrontendGroupMembership(ctx, \u0026vercel.LookupMicrofrontendGroupMembershipArgs{\n\t\t\tProjectId:            \"prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n\t\t\tMicrofrontendGroupId: \"mfe_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetMicrofrontendGroupMembershipArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = VercelFunctions.getMicrofrontendGroupMembership(GetMicrofrontendGroupMembershipArgs.builder()\n            .projectId(\"prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\n            .microfrontendGroupId(\"mfe_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getMicrofrontendGroupMembership\n      arguments:\n        projectId: prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n        microfrontendGroupId: mfe_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getMicrofrontendGroupMembership.\n","properties":{"microfrontendGroupId":{"type":"string","description":"The ID of the microfrontend group.\n"},"projectId":{"type":"string","description":"The ID of the project.\n"},"teamId":{"type":"string","description":"The team ID to add the microfrontend group to. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object","required":["microfrontendGroupId","projectId"]},"outputs":{"description":"A collection of values returned by getMicrofrontendGroupMembership.\n","properties":{"defaultRoute":{"description":"The default route for the project. Used for the screenshot of deployments.\n","type":"string"},"id":{"description":"The unique identifier for this resource. Format: team*id/microfrontend*group_id.\n","type":"string"},"microfrontendGroupId":{"description":"The ID of the microfrontend group.\n","type":"string"},"projectId":{"description":"The ID of the project.\n","type":"string"},"routeObservabilityToThisProject":{"description":"Whether the project is route observability for this project. If dalse, the project will be route observability for all projects to the default project.\n","type":"boolean"},"teamId":{"description":"The team ID to add the microfrontend group to. Required when configuring a team resource if a default team has not been set in the provider.\n","type":"string"}},"required":["defaultRoute","id","microfrontendGroupId","projectId","routeObservabilityToThisProject","teamId"],"type":"object"}},"vercel:index/getNetwork:getNetwork":{"description":"Provides information about a Vercel Network.\n","inputs":{"description":"A collection of arguments for invoking getNetwork.\n","properties":{"id":{"type":"string","description":"The unique identifier of the Network.\n"},"teamId":{"type":"string","description":"The unique identifier of the Team that owns the Network. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object","required":["id"]},"outputs":{"description":"A collection of values returned by getNetwork.\n","properties":{"awsAccountId":{"description":"The ID of the AWS Account in which the network exists.\n","type":"string"},"awsAvailabilityZoneIds":{"description":"The IDs of the AWS Availability Zones in which the network exists, if specified during creation.\n","items":{"type":"string"},"type":"array"},"awsRegion":{"description":"The AWS Region in which the network exists.\n","type":"string"},"cidr":{"description":"The CIDR range of the Network.\n","type":"string"},"egressIpAddresses":{"description":"The egress IP addresses of the Network.\n","items":{"type":"string"},"type":"array"},"id":{"description":"The unique identifier of the Network.\n","type":"string"},"name":{"description":"The name of the network.\n","type":"string"},"region":{"description":"The Vercel region in which the Network exists.\n","type":"string"},"status":{"description":"The status of the Network.\n","type":"string"},"teamId":{"description":"The unique identifier of the Team that owns the Network. Required when configuring a team resource if a default team has not been set in the provider.\n","type":"string"},"vpcId":{"description":"The ID of the AWS VPC which hosts the network.\n","type":"string"}},"required":["awsAccountId","awsAvailabilityZoneIds","awsRegion","cidr","egressIpAddresses","id","name","region","status","vpcId"],"type":"object"}},"vercel:index/getPrebuiltProject:getPrebuiltProject":{"inputs":{"description":"A collection of arguments for invoking getPrebuiltProject.\n","properties":{"path":{"type":"string"}},"type":"object","required":["path"]},"outputs":{"description":"A collection of values returned by getPrebuiltProject.\n","properties":{"id":{"description":"The ID of this resource.\n","type":"string"},"output":{"additionalProperties":{"type":"string"},"description":"A map of output file to metadata about the file. The metadata contains the file size and hash, and allows a deployment to be created if the file changes.\n","type":"object"},"path":{"type":"string"}},"required":["id","output","path"],"type":"object"}},"vercel:index/getProject:getProject":{"description":"Provides information about an existing project within Vercel.\n\nA Project groups deployments and custom domains. To deploy on Vercel, you need a Project.\n\nFor more detailed information, please see the [Vercel documentation](https://vercel.com/docs/concepts/projects/overview).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = vercel.getProject({\n    name: \"my-existing-project\",\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\nexample = vercel.get_project(name=\"my-existing-project\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Vercel.GetProject.Invoke(new()\n    {\n        Name = \"my-existing-project\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.LookupProject(ctx, \u0026vercel.LookupProjectArgs{\n\t\t\tName: \"my-existing-project\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = VercelFunctions.getProject(GetProjectArgs.builder()\n            .name(\"my-existing-project\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getProject\n      arguments:\n        name: my-existing-project\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getProject.\n","properties":{"buildMachineType":{"type":"string","description":"The build machine type to use for this project.\n"},"name":{"type":"string","description":"The name of the project.\n"},"onDemandConcurrentBuilds":{"type":"boolean","description":"Instantly scale build capacity to skip the queue, even if all build slots are in use. You can also choose a larger build machine; charges apply per minute if it exceeds your team's default.\n"},"teamId":{"type":"string","description":"The team ID the project exists beneath. Required when configuring a team resource if a default team has not been set in the provider.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getProject.\n","properties":{"autoAssignCustomDomains":{"description":"Automatically assign custom production domains after each Production deployment via merge to the production branch or Vercel CLI deploy with --prod. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e\n","type":"boolean"},"automaticallyExposeSystemEnvironmentVariables":{"description":"Vercel provides a set of Environment Variables that are automatically populated by the System, such as the URL of the Deployment or the name of the Git branch deployed. To expose them to your Deployments, enable this field\n","type":"boolean"},"buildCommand":{"description":"The build command for this project. If omitted, this value will be automatically detected.\n","type":"string"},"buildMachineType":{"description":"The build machine type to use for this project.\n","type":"string"},"customerSuccessCodeVisibility":{"description":"Allows Vercel Customer Support to inspect all Deployments' source code in this project to assist with debugging.\n","type":"boolean"},"devCommand":{"description":"The dev command for this project. If omitted, this value will be automatically detected.\n","type":"string"},"directoryListing":{"description":"If no index file is present within a directory, the directory contents will be displayed.\n","type":"boolean"},"enableAffectedProjectsDeployments":{"description":"When enabled, Vercel will automatically deploy all projects that are affected by a change to this project.\n","type":"boolean"},"enablePreviewFeedback":{"description":"Whether the Vercel Toolbar is enabled on your preview deployments. If unspecified, defaults to team setting.\n","type":"boolean"},"enableProductionFeedback":{"description":"Whether the Vercel Toolbar is enabled on your production deployments. If unspecified, defaults to team setting.\n","type":"boolean"},"environments":{"description":"A list of environment variables that should be configured for the project.\n","items":{"$ref":"#/types/vercel:index/getProjectEnvironment:getProjectEnvironment"},"type":"array"},"framework":{"description":"The framework that is being used for this project. If omitted, no framework is selected.\n","type":"string"},"functionFailover":{"description":"Automatically failover Serverless Functions to the nearest region. You can customize regions through vercel.json. A new Deployment is required for your changes to take effect.\n","type":"boolean"},"gitComments":{"$ref":"#/types/vercel:index/getProjectGitComments:getProjectGitComments","description":"Configuration for Git Comments.\n"},"gitForkProtection":{"description":"Ensures that pull requests targeting your Git repository must be authorized by a member of your Team before deploying if your Project has Environment Variables or if the pull request includes a change to vercel.json.\n","type":"boolean"},"gitLfs":{"description":"Enables Git LFS support. Git LFS replaces large files such as audio samples, videos, datasets, and graphics with text pointers inside Git, while storing the file contents on a remote server like GitHub.com or GitHub Enterprise.\n","type":"boolean"},"gitProviderOptions":{"$ref":"#/types/vercel:index/getProjectGitProviderOptions:getProjectGitProviderOptions","description":"Git provider options.\n"},"gitRepository":{"$ref":"#/types/vercel:index/getProjectGitRepository:getProjectGitRepository","description":"The Git Repository that will be connected to the project. When this is defined, any pushes to the specified connected Git Repository will be automatically deployed. This requires the corresponding Vercel for [Github](https://vercel.com/docs/concepts/git/vercel-for-github), [Gitlab](https://vercel.com/docs/concepts/git/vercel-for-gitlab) or [Bitbucket](https://vercel.com/docs/concepts/git/vercel-for-bitbucket) plugins to be installed.\n"},"id":{"description":"The ID of this resource.\n","type":"string"},"ignoreCommand":{"description":"When a commit is pushed to the Git repository that is connected with your Project, its SHA will determine if a new Build has to be issued. If the SHA was deployed before, no new Build will be issued. You can customize this behavior with a command that exits with code 1 (new Build needed) or code 0.\n","type":"string"},"installCommand":{"description":"The install command for this project. If omitted, this value will be automatically detected.\n","type":"string"},"name":{"description":"The name of the project.\n","type":"string"},"nodeVersion":{"description":"The version of Node.js that is used in the Build Step and for Serverless Functions.\n","type":"string"},"oidcTokenConfig":{"$ref":"#/types/vercel:index/getProjectOidcTokenConfig:getProjectOidcTokenConfig","description":"Configuration for OpenID Connect (OIDC) tokens.\n"},"onDemandConcurrentBuilds":{"description":"Instantly scale build capacity to skip the queue, even if all build slots are in use. You can also choose a larger build machine; charges apply per minute if it exceeds your team's default.\n","type":"boolean"},"optionsAllowlist":{"$ref":"#/types/vercel:index/getProjectOptionsAllowlist:getProjectOptionsAllowlist","description":"Disable Deployment Protection for CORS preflight `OPTIONS` requests for a list of paths.\n"},"outputDirectory":{"description":"The output directory of the project. When null is used this value will be automatically detected.\n","type":"string"},"passwordProtection":{"$ref":"#/types/vercel:index/getProjectPasswordProtection:getProjectPasswordProtection","description":"Ensures visitors of your Preview Deployments must enter a password in order to gain access.\n"},"previewComments":{"deprecationMessage":"Use \u003cspan pulumi-lang-nodejs=\"`enablePreviewFeedback`\" pulumi-lang-dotnet=\"`EnablePreviewFeedback`\" pulumi-lang-go=\"`enablePreviewFeedback`\" pulumi-lang-python=\"`enable_preview_feedback`\" pulumi-lang-yaml=\"`enablePreviewFeedback`\" pulumi-lang-java=\"`enablePreviewFeedback`\"\u003e`enable_preview_feedback`\u003c/span\u003e instead. This attribute will be removed in a future version.","description":"Whether comments are enabled on your Preview Deployments.\n","type":"boolean"},"previewDeploymentSuffix":{"description":"The preview deployment suffix to apply to preview deployment URLs for this project.\n","type":"string"},"previewDeploymentsDisabled":{"description":"Whether Preview Deployments are disabled for this project.\n","type":"boolean"},"prioritiseProductionBuilds":{"description":"If enabled, builds for the Production environment will be prioritized over Preview environments.\n","type":"boolean"},"protectionBypassForAutomation":{"description":"Allows automation services to bypass Deployment Protection on this project when using an HTTP header named `x-vercel-protection-bypass` with the value from \u003cspan pulumi-lang-nodejs=\"`protectionBypassForAutomationSecret`\" pulumi-lang-dotnet=\"`ProtectionBypassForAutomationSecret`\" pulumi-lang-go=\"`protectionBypassForAutomationSecret`\" pulumi-lang-python=\"`protection_bypass_for_automation_secret`\" pulumi-lang-yaml=\"`protectionBypassForAutomationSecret`\" pulumi-lang-java=\"`protectionBypassForAutomationSecret`\"\u003e`protection_bypass_for_automation_secret`\u003c/span\u003e.\n","type":"boolean"},"protectionBypassForAutomationSecret":{"description":"If \u003cspan pulumi-lang-nodejs=\"`protectionBypassForAutomation`\" pulumi-lang-dotnet=\"`ProtectionBypassForAutomation`\" pulumi-lang-go=\"`protectionBypassForAutomation`\" pulumi-lang-python=\"`protection_bypass_for_automation`\" pulumi-lang-yaml=\"`protectionBypassForAutomation`\" pulumi-lang-java=\"`protectionBypassForAutomation`\"\u003e`protection_bypass_for_automation`\u003c/span\u003e is enabled, optionally set this value to specify a 32 character secret, otherwise a secret will be generated.\n","secret":true,"type":"string"},"publicSource":{"description":"Specifies whether the source code and logs of the deployments for this project should be public or not.\n","type":"boolean"},"resourceConfig":{"$ref":"#/types/vercel:index/getProjectResourceConfig:getProjectResourceConfig","description":"Resource Configuration for the project.\n"},"rootDirectory":{"description":"The name of a directory or relative path to the source code of your project. When null is used it will default to the project root.\n","type":"string"},"serverlessFunctionRegion":{"description":"The region on Vercel's network to which your Serverless Functions are deployed. It should be close to any data source your Serverless Function might depend on. A new Deployment is required for your changes to take effect. Please see [Vercel's documentation](https://vercel.com/docs/concepts/edge-network/regions) for a full list of regions.\n","type":"string"},"skewProtection":{"description":"Ensures that outdated clients always fetch the correct version for a given deployment. This value defines how long Vercel keeps Skew Protection active.\n","type":"string"},"teamId":{"description":"The team ID the project exists beneath. Required when configuring a team resource if a default team has not been set in the provider.\n","type":"string"},"trustedIps":{"$ref":"#/types/vercel:index/getProjectTrustedIps:getProjectTrustedIps","description":"Ensures only visitors from an allowed IP address can access your deployment.\n"},"vercelAuthentication":{"$ref":"#/types/vercel:index/getProjectVercelAuthentication:getProjectVercelAuthentication","description":"Ensures visitors to your Preview Deployments are logged into Vercel and have a minimum of Viewer access on your team.\n"}},"required":["autoAssignCustomDomains","automaticallyExposeSystemEnvironmentVariables","buildCommand","buildMachineType","customerSuccessCodeVisibility","devCommand","directoryListing","enableAffectedProjectsDeployments","enablePreviewFeedback","enableProductionFeedback","environments","framework","functionFailover","gitComments","gitForkProtection","gitLfs","gitProviderOptions","gitRepository","id","ignoreCommand","installCommand","name","nodeVersion","oidcTokenConfig","onDemandConcurrentBuilds","optionsAllowlist","outputDirectory","passwordProtection","previewComments","previewDeploymentSuffix","previewDeploymentsDisabled","prioritiseProductionBuilds","protectionBypassForAutomation","protectionBypassForAutomationSecret","publicSource","resourceConfig","rootDirectory","serverlessFunctionRegion","skewProtection","teamId","trustedIps","vercelAuthentication"],"type":"object"}},"vercel:index/getProjectDeploymentRetention:getProjectDeploymentRetention":{"description":"Provides a Project Deployment Retention datasource.\n\nA Project Deployment Retention datasource details information about Deployment Retention on a Vercel Project.\n\nFor more detailed information, please see the [Vercel documentation](https://vercel.com/docs/security/deployment-retention).\n","inputs":{"description":"A collection of arguments for invoking getProjectDeploymentRetention.\n","properties":{"projectId":{"type":"string","description":"The ID of the Project for the retention policy\n"},"teamId":{"type":"string","description":"The ID of the Vercel team.\n"}},"type":"object","required":["projectId"]},"outputs":{"description":"A collection of values returned by getProjectDeploymentRetention.\n","properties":{"expirationCanceled":{"description":"The retention period for canceled deployments.\n","type":"string"},"expirationErrored":{"description":"The retention period for errored deployments.\n","type":"string"},"expirationPreview":{"description":"The retention period for preview deployments.\n","type":"string"},"expirationProduction":{"description":"The retention period for production deployments.\n","type":"string"},"id":{"description":"The ID of this resource.\n","type":"string"},"projectId":{"description":"The ID of the Project for the retention policy\n","type":"string"},"teamId":{"description":"The ID of the Vercel team.\n","type":"string"}},"required":["expirationCanceled","expirationErrored","expirationPreview","expirationProduction","id","projectId","teamId"],"type":"object"}},"vercel:index/getProjectDirectory:getProjectDirectory":{"inputs":{"description":"A collection of arguments for invoking getProjectDirectory.\n","properties":{"path":{"type":"string"}},"type":"object","required":["path"]},"outputs":{"description":"A collection of values returned by getProjectDirectory.\n","properties":{"files":{"additionalProperties":{"type":"string"},"description":"A map of filename to metadata about the file. The metadata contains the file size and hash, and allows a deployment to be created if the file changes.\n","type":"object"},"id":{"description":"The ID of this resource.\n","type":"string"},"path":{"type":"string"}},"required":["files","id","path"],"type":"object"}},"vercel:index/getProjectMembers:getProjectMembers":{"description":"Retrieves members and their roles for a Vercel Project.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = vercel.getProject({\n    name: \"example-with-members\",\n});\nconst exampleGetProjectMembers = example.then(example =\u003e vercel.getProjectMembers({\n    projectId: example.id,\n}));\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\nexample = vercel.get_project(name=\"example-with-members\")\nexample_get_project_members = vercel.get_project_members(project_id=example.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Vercel.GetProject.Invoke(new()\n    {\n        Name = \"example-with-members\",\n    });\n\n    var exampleGetProjectMembers = Vercel.GetProjectMembers.Invoke(new()\n    {\n        ProjectId = example.Apply(getProjectResult =\u003e getProjectResult.Id),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := vercel.LookupProject(ctx, \u0026vercel.LookupProjectArgs{\n\t\t\tName: \"example-with-members\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.LookupProjectMembers(ctx, \u0026vercel.LookupProjectMembersArgs{\n\t\t\tProjectId: example.Id,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetProjectArgs;\nimport com.pulumi.vercel.inputs.GetProjectMembersArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = VercelFunctions.getProject(GetProjectArgs.builder()\n            .name(\"example-with-members\")\n            .build());\n\n        final var exampleGetProjectMembers = VercelFunctions.getProjectMembers(GetProjectMembersArgs.builder()\n            .projectId(example.id())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getProject\n      arguments:\n        name: example-with-members\n  exampleGetProjectMembers:\n    fn::invoke:\n      function: vercel:getProjectMembers\n      arguments:\n        projectId: ${example.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getProjectMembers.\n","properties":{"projectId":{"type":"string","description":"The ID of the Vercel Project.\n"},"teamId":{"type":"string","description":"The team ID to which the project belongs. Required when accessing a team project if a default team has not been set in the provider.\n"}},"type":"object","required":["projectId"]},"outputs":{"description":"A collection of values returned by getProjectMembers.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"members":{"description":"The set of members in this project.\n","items":{"$ref":"#/types/vercel:index/getProjectMembersMember:getProjectMembersMember"},"type":"array"},"projectId":{"description":"The ID of the Vercel Project.\n","type":"string"},"teamId":{"description":"The team ID to which the project belongs. Required when accessing a team project if a default team has not been set in the provider.\n","type":"string"}},"required":["members","projectId","teamId","id"],"type":"object"}},"vercel:index/getProjectRollingRelease:getProjectRollingRelease":{"description":"Data source for a Vercel project rolling release configuration.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = vercel.getProject({\n    name: \"example-project\",\n});\nconst exampleGetProjectRollingRelease = example.then(example =\u003e vercel.getProjectRollingRelease({\n    projectId: example.id,\n}));\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\nexample = vercel.get_project(name=\"example-project\")\nexample_get_project_rolling_release = vercel.get_project_rolling_release(project_id=example.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Vercel.GetProject.Invoke(new()\n    {\n        Name = \"example-project\",\n    });\n\n    var exampleGetProjectRollingRelease = Vercel.GetProjectRollingRelease.Invoke(new()\n    {\n        ProjectId = example.Apply(getProjectResult =\u003e getProjectResult.Id),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := vercel.LookupProject(ctx, \u0026vercel.LookupProjectArgs{\n\t\t\tName: \"example-project\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.LookupProjectRollingRelease(ctx, \u0026vercel.LookupProjectRollingReleaseArgs{\n\t\t\tProjectId: example.Id,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetProjectArgs;\nimport com.pulumi.vercel.inputs.GetProjectRollingReleaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = VercelFunctions.getProject(GetProjectArgs.builder()\n            .name(\"example-project\")\n            .build());\n\n        final var exampleGetProjectRollingRelease = VercelFunctions.getProjectRollingRelease(GetProjectRollingReleaseArgs.builder()\n            .projectId(example.id())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getProject\n      arguments:\n        name: example-project\n  exampleGetProjectRollingRelease:\n    fn::invoke:\n      function: vercel:getProjectRollingRelease\n      arguments:\n        projectId: ${example.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getProjectRollingRelease.\n","properties":{"projectId":{"type":"string","description":"The ID of the project.\n"},"teamId":{"type":"string","description":"The ID of the Vercel team.\n"}},"type":"object","required":["projectId"]},"outputs":{"description":"A collection of values returned by getProjectRollingRelease.\n","properties":{"advancementType":{"description":"The type of advancement for the rolling release. Either 'automatic' or 'manual-approval'.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"projectId":{"description":"The ID of the project.\n","type":"string"},"stages":{"description":"The stages for the rolling release configuration.\n","items":{"$ref":"#/types/vercel:index/getProjectRollingReleaseStage:getProjectRollingReleaseStage"},"type":"array"},"teamId":{"description":"The ID of the Vercel team.\n","type":"string"}},"required":["advancementType","projectId","stages","teamId","id"],"type":"object"}},"vercel:index/getSharedEnvironmentVariable:getSharedEnvironmentVariable":{"description":"Provides information about an existing Shared Environment Variable within Vercel.\n\nA Shared Environment Variable resource defines an Environment Variable that can be shared between multiple Vercel Projects.\n\nFor more detailed information, please see the [Vercel documentation](https://vercel.com/docs/concepts/projects/environment-variables/shared-environment-variables).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\n// Environment variables can be identified by their ID, or by their key and target.\n// The ID can be taken from the network tab inside developer tools, while you are on the project page.\nconst example = vercel.getSharedEnvironmentVariable({\n    id: \"xxxxxxxxxxxxxxx\",\n});\n// Alternatively, you can use the key and target to identify the environment variable.\n// Note that all `target`s must be specified for a match to be found.\nconst exampleByKeyAndTarget = vercel.getSharedEnvironmentVariable({\n    key: \"MY_ENV_VAR\",\n    targets: [\n        \"production\",\n        \"preview\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\n# Environment variables can be identified by their ID, or by their key and target.\n# The ID can be taken from the network tab inside developer tools, while you are on the project page.\nexample = vercel.get_shared_environment_variable(id=\"xxxxxxxxxxxxxxx\")\n# Alternatively, you can use the key and target to identify the environment variable.\n# Note that all `target`s must be specified for a match to be found.\nexample_by_key_and_target = vercel.get_shared_environment_variable(key=\"MY_ENV_VAR\",\n    targets=[\n        \"production\",\n        \"preview\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Environment variables can be identified by their ID, or by their key and target.\n    // The ID can be taken from the network tab inside developer tools, while you are on the project page.\n    var example = Vercel.GetSharedEnvironmentVariable.Invoke(new()\n    {\n        Id = \"xxxxxxxxxxxxxxx\",\n    });\n\n    // Alternatively, you can use the key and target to identify the environment variable.\n    // Note that all `target`s must be specified for a match to be found.\n    var exampleByKeyAndTarget = Vercel.GetSharedEnvironmentVariable.Invoke(new()\n    {\n        Key = \"MY_ENV_VAR\",\n        Targets = new[]\n        {\n            \"production\",\n            \"preview\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Environment variables can be identified by their ID, or by their key and target.\n\t\t// The ID can be taken from the network tab inside developer tools, while you are on the project page.\n\t\t_, err := vercel.LookupSharedEnvironmentVariable(ctx, \u0026vercel.LookupSharedEnvironmentVariableArgs{\n\t\t\tId: pulumi.StringRef(\"xxxxxxxxxxxxxxx\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Alternatively, you can use the key and target to identify the environment variable.\n\t\t// Note that all `target`s must be specified for a match to be found.\n\t\t_, err = vercel.LookupSharedEnvironmentVariable(ctx, \u0026vercel.LookupSharedEnvironmentVariableArgs{\n\t\t\tKey: pulumi.StringRef(\"MY_ENV_VAR\"),\n\t\t\tTargets: []string{\n\t\t\t\t\"production\",\n\t\t\t\t\"preview\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetSharedEnvironmentVariableArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Environment variables can be identified by their ID, or by their key and target.\n        // The ID can be taken from the network tab inside developer tools, while you are on the project page.\n        final var example = VercelFunctions.getSharedEnvironmentVariable(GetSharedEnvironmentVariableArgs.builder()\n            .id(\"xxxxxxxxxxxxxxx\")\n            .build());\n\n        // Alternatively, you can use the key and target to identify the environment variable.\n        // Note that all `target`s must be specified for a match to be found.\n        final var exampleByKeyAndTarget = VercelFunctions.getSharedEnvironmentVariable(GetSharedEnvironmentVariableArgs.builder()\n            .key(\"MY_ENV_VAR\")\n            .targets(            \n                \"production\",\n                \"preview\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  # Environment variables can be identified by their ID, or by their key and target.\n  # The ID can be taken from the network tab inside developer tools, while you are on the project page.\n  example:\n    fn::invoke:\n      function: vercel:getSharedEnvironmentVariable\n      arguments:\n        id: xxxxxxxxxxxxxxx\n  # Alternatively, you can use the key and target to identify the environment variable.\n  # Note that all `target`s must be specified for a match to be found.\n  exampleByKeyAndTarget:\n    fn::invoke:\n      function: vercel:getSharedEnvironmentVariable\n      arguments:\n        key: MY_ENV_VAR\n        targets:\n          - production\n          - preview\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getSharedEnvironmentVariable.\n","properties":{"id":{"type":"string","description":"The ID of the Environment Variable.\n"},"key":{"type":"string","description":"The name of the Environment Variable.\n"},"targets":{"type":"array","items":{"type":"string"},"description":"The environments that the Environment Variable should be present on. Valid targets are either \u003cspan pulumi-lang-nodejs=\"`production`\" pulumi-lang-dotnet=\"`Production`\" pulumi-lang-go=\"`production`\" pulumi-lang-python=\"`production`\" pulumi-lang-yaml=\"`production`\" pulumi-lang-java=\"`production`\"\u003e`production`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`preview`\" pulumi-lang-dotnet=\"`Preview`\" pulumi-lang-go=\"`preview`\" pulumi-lang-python=\"`preview`\" pulumi-lang-yaml=\"`preview`\" pulumi-lang-java=\"`preview`\"\u003e`preview`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`development`\" pulumi-lang-dotnet=\"`Development`\" pulumi-lang-go=\"`development`\" pulumi-lang-python=\"`development`\" pulumi-lang-yaml=\"`development`\" pulumi-lang-java=\"`development`\"\u003e`development`\u003c/span\u003e.\n"},"teamId":{"type":"string","description":"The ID of the Vercel team. Shared environment variables require a team.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getSharedEnvironmentVariable.\n","properties":{"applyToAllCustomEnvironments":{"description":"Whether the Environment Variable should be applied to all custom environments.\n","type":"boolean"},"comment":{"description":"A comment explaining what the environment variable is for.\n","type":"string"},"id":{"description":"The ID of the Environment Variable.\n","type":"string"},"key":{"description":"The name of the Environment Variable.\n","type":"string"},"projectIds":{"description":"The ID of the Vercel project.\n","items":{"type":"string"},"type":"array"},"sensitive":{"description":"Whether the Environment Variable is sensitive or not.\n","type":"boolean"},"targets":{"description":"The environments that the Environment Variable should be present on. Valid targets are either \u003cspan pulumi-lang-nodejs=\"`production`\" pulumi-lang-dotnet=\"`Production`\" pulumi-lang-go=\"`production`\" pulumi-lang-python=\"`production`\" pulumi-lang-yaml=\"`production`\" pulumi-lang-java=\"`production`\"\u003e`production`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`preview`\" pulumi-lang-dotnet=\"`Preview`\" pulumi-lang-go=\"`preview`\" pulumi-lang-python=\"`preview`\" pulumi-lang-yaml=\"`preview`\" pulumi-lang-java=\"`preview`\"\u003e`preview`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`development`\" pulumi-lang-dotnet=\"`Development`\" pulumi-lang-go=\"`development`\" pulumi-lang-python=\"`development`\" pulumi-lang-yaml=\"`development`\" pulumi-lang-java=\"`development`\"\u003e`development`\u003c/span\u003e.\n","items":{"type":"string"},"type":"array"},"teamId":{"description":"The ID of the Vercel team. Shared environment variables require a team.\n","type":"string"},"value":{"description":"The value of the Environment Variable.\n","secret":true,"type":"string"}},"required":["applyToAllCustomEnvironments","comment","id","key","projectIds","sensitive","targets","teamId","value"],"type":"object"}},"vercel:index/getTeamConfig:getTeamConfig":{"description":"Retrieves the configuration of an existing Vercel Team.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = vercel.getTeamConfig({\n    id: \"team_xxxxxxxxxxxxxxxxxxxxxxxx\",\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\nexample = vercel.get_team_config(id=\"team_xxxxxxxxxxxxxxxxxxxxxxxx\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Vercel.GetTeamConfig.Invoke(new()\n    {\n        Id = \"team_xxxxxxxxxxxxxxxxxxxxxxxx\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.LookupTeamConfig(ctx, \u0026vercel.LookupTeamConfigArgs{\n\t\t\tId: \"team_xxxxxxxxxxxxxxxxxxxxxxxx\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetTeamConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = VercelFunctions.getTeamConfig(GetTeamConfigArgs.builder()\n            .id(\"team_xxxxxxxxxxxxxxxxxxxxxxxx\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getTeamConfig\n      arguments:\n        id: team_xxxxxxxxxxxxxxxxxxxxxxxx\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getTeamConfig.\n","properties":{"id":{"type":"string","description":"The ID of the existing Vercel Team.\n"}},"type":"object","required":["id"]},"outputs":{"description":"A collection of values returned by getTeamConfig.\n","properties":{"description":{"description":"A description of the team.\n","type":"string"},"emailDomain":{"description":"Hostname that'll be matched with emails on sign-up to automatically join the Team.\n","type":"string"},"enablePreviewFeedback":{"description":"Preview feedback configuration.\n","type":"string"},"enableProductionFeedback":{"description":"Production feedback configuration.\n","type":"string"},"hideIpAddresses":{"description":"Indicates if ip addresses should be accessible in o11y tooling.\n","type":"boolean"},"hideIpAddressesInLogDrains":{"description":"Indicates if ip addresses should be accessible in log drains.\n","type":"boolean"},"id":{"description":"The ID of the existing Vercel Team.\n","type":"string"},"inviteCode":{"description":"A code that can be used to join this team. Only visible to Team owners.\n","type":"string"},"name":{"description":"The name of the team.\n","type":"string"},"previewDeploymentSuffix":{"description":"The hostname that is used as the preview deployment suffix.\n","type":"string"},"remoteCaching":{"$ref":"#/types/vercel:index/getTeamConfigRemoteCaching:getTeamConfigRemoteCaching","description":"Configuration for Remote Caching.\n"},"saml":{"$ref":"#/types/vercel:index/getTeamConfigSaml:getTeamConfigSaml","description":"Configuration for SAML authentication.\n"},"sensitiveEnvironmentVariablePolicy":{"description":"The policy for sensitive environment variables.\n","type":"string"},"slug":{"description":"The slug of the team. Used in the URL of the team's dashboard.\n","type":"string"}},"required":["description","emailDomain","enablePreviewFeedback","enableProductionFeedback","hideIpAddresses","hideIpAddressesInLogDrains","id","inviteCode","name","previewDeploymentSuffix","remoteCaching","saml","sensitiveEnvironmentVariablePolicy","slug"],"type":"object"}},"vercel:index/getTeamMember:getTeamMember":{"description":"Provider a datasource for managing a team member.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst example = vercel.getTeamMember({\n    userId: \"uuuuuuuuuuuuuuuuuuuuuuuuuu\",\n    teamId: \"team_xxxxxxxxxxxxxxxxxxxxxxxx\",\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\nexample = vercel.get_team_member(user_id=\"uuuuuuuuuuuuuuuuuuuuuuuuuu\",\n    team_id=\"team_xxxxxxxxxxxxxxxxxxxxxxxx\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Vercel = Pulumiverse.Vercel;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Vercel.GetTeamMember.Invoke(new()\n    {\n        UserId = \"uuuuuuuuuuuuuuuuuuuuuuuuuu\",\n        TeamId = \"team_xxxxxxxxxxxxxxxxxxxxxxxx\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v4/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.LookupTeamMember(ctx, \u0026vercel.LookupTeamMemberArgs{\n\t\t\tUserId: \"uuuuuuuuuuuuuuuuuuuuuuuuuu\",\n\t\t\tTeamId: \"team_xxxxxxxxxxxxxxxxxxxxxxxx\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetTeamMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = VercelFunctions.getTeamMember(GetTeamMemberArgs.builder()\n            .userId(\"uuuuuuuuuuuuuuuuuuuuuuuuuu\")\n            .teamId(\"team_xxxxxxxxxxxxxxxxxxxxxxxx\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getTeamMember\n      arguments:\n        userId: uuuuuuuuuuuuuuuuuuuuuuuuuu\n        teamId: team_xxxxxxxxxxxxxxxxxxxxxxxx\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getTeamMember.\n","properties":{"teamId":{"type":"string","description":"The ID of the existing Vercel Team.\n"},"userId":{"type":"string","description":"The ID of the existing Vercel Team Member.\n"}},"type":"object","required":["teamId","userId"]},"outputs":{"description":"A collection of values returned by getTeamMember.\n","properties":{"accessGroups":{"description":"If access groups are enabled on the team, and the user is a CONTRIBUTOR, \u003cspan pulumi-lang-nodejs=\"`projects`\" pulumi-lang-dotnet=\"`Projects`\" pulumi-lang-go=\"`projects`\" pulumi-lang-python=\"`projects`\" pulumi-lang-yaml=\"`projects`\" pulumi-lang-java=\"`projects`\"\u003e`projects`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`accessGroups`\" pulumi-lang-dotnet=\"`AccessGroups`\" pulumi-lang-go=\"`accessGroups`\" pulumi-lang-python=\"`access_groups`\" pulumi-lang-yaml=\"`accessGroups`\" pulumi-lang-java=\"`accessGroups`\"\u003e`access_groups`\u003c/span\u003e or both must be specified. A set of access groups IDs that the user should be granted access to.\n","items":{"type":"string"},"type":"array"},"email":{"description":"The email address of the existing Vercel Team Member.\n","type":"string"},"id":{"description":"The ID of this resource.\n","type":"string"},"projects":{"description":"If access groups are enabled on the team, and the user is a CONTRIBUTOR, \u003cspan pulumi-lang-nodejs=\"`projects`\" pulumi-lang-dotnet=\"`Projects`\" pulumi-lang-go=\"`projects`\" pulumi-lang-python=\"`projects`\" pulumi-lang-yaml=\"`projects`\" pulumi-lang-java=\"`projects`\"\u003e`projects`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`accessGroups`\" pulumi-lang-dotnet=\"`AccessGroups`\" pulumi-lang-go=\"`accessGroups`\" pulumi-lang-python=\"`access_groups`\" pulumi-lang-yaml=\"`accessGroups`\" pulumi-lang-java=\"`accessGroups`\"\u003e`access_groups`\u003c/span\u003e or both must be specified. A set of projects that the user should be granted access to, along with their role in each project.\n","items":{"$ref":"#/types/vercel:index/getTeamMemberProject:getTeamMemberProject"},"type":"array"},"role":{"description":"The role that the user should have in the project. One of 'MEMBER', 'OWNER', 'VIEWER', 'DEVELOPER', 'BILLING' or 'CONTRIBUTOR'. Depending on your Team's plan, some of these roles may be unavailable.\n","type":"string"},"teamId":{"description":"The ID of the existing Vercel Team.\n","type":"string"},"userId":{"description":"The ID of the existing Vercel Team Member.\n","type":"string"}},"required":["accessGroups","email","id","projects","role","teamId","userId"],"type":"object"}}}}