{
    "name": "vercel",
    "displayName": "Vercel",
    "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/v5/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/AiGatewayApiKeyAiGatewayQuota:AiGatewayApiKeyAiGatewayQuota": {
            "properties": {
                "alertThresholds": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "Spend percentages (a subset of `[50, 75, 100]`) at which to send a spend alert.\n"
                },
                "limitAmount": {
                    "type": "number",
                    "description": "The quota limit amount in US dollars.\n"
                },
                "refreshPeriod": {
                    "type": "string",
                    "description": "How often the quota refreshes. Must be one of \u003cspan pulumi-lang-nodejs=\"`daily`\" pulumi-lang-dotnet=\"`Daily`\" pulumi-lang-go=\"`daily`\" pulumi-lang-python=\"`daily`\" pulumi-lang-yaml=\"`daily`\" pulumi-lang-java=\"`daily`\"\u003e`daily`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`weekly`\" pulumi-lang-dotnet=\"`Weekly`\" pulumi-lang-go=\"`weekly`\" pulumi-lang-python=\"`weekly`\" pulumi-lang-yaml=\"`weekly`\" pulumi-lang-java=\"`weekly`\"\u003e`weekly`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`monthly`\" pulumi-lang-dotnet=\"`Monthly`\" pulumi-lang-go=\"`monthly`\" pulumi-lang-python=\"`monthly`\" pulumi-lang-yaml=\"`monthly`\" pulumi-lang-java=\"`monthly`\"\u003e`monthly`\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. Defaults to \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",
            "required": [
                "limitAmount"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "limitAmount",
                        "refreshPeriod"
                    ]
                }
            }
        },
        "vercel:index/AlertRuleNotificationSettings:AlertRuleNotificationSettings": {
            "properties": {
                "enableTeamOwnerNotifications": {
                    "type": "boolean"
                },
                "incidentIoRoutingKey": {
                    "type": "string"
                },
                "vercelNotificationsMinimumSeverityLevel": {
                    "type": "string",
                    "description": "Set to \u003cspan pulumi-lang-nodejs=\"`critical`\" pulumi-lang-dotnet=\"`Critical`\" pulumi-lang-go=\"`critical`\" pulumi-lang-python=\"`critical`\" pulumi-lang-yaml=\"`critical`\" pulumi-lang-java=\"`critical`\"\u003e`critical`\u003c/span\u003e to send Vercel notifications only for alerts classified as Critical. Omit to send Vercel notifications for every severity.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "enableTeamOwnerNotifications"
                    ]
                }
            }
        },
        "vercel:index/AlertRuleRuleScope:AlertRuleRuleScope": {
            "properties": {
                "projectIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The project IDs included in or excluded from a built-in rule.\n"
                },
                "type": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "vercel:index/AlertRuleTrigger:AlertRuleTrigger": {
            "properties": {
                "filter": {
                    "type": "string",
                    "description": "A KQL filter for \u003cspan pulumi-lang-nodejs=\"`errorAnomaly`\" pulumi-lang-dotnet=\"`ErrorAnomaly`\" pulumi-lang-go=\"`errorAnomaly`\" pulumi-lang-python=\"`error_anomaly`\" pulumi-lang-yaml=\"`errorAnomaly`\" pulumi-lang-java=\"`errorAnomaly`\"\u003e`error_anomaly`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`usageAnomaly`\" pulumi-lang-dotnet=\"`UsageAnomaly`\" pulumi-lang-go=\"`usageAnomaly`\" pulumi-lang-python=\"`usage_anomaly`\" pulumi-lang-yaml=\"`usageAnomaly`\" pulumi-lang-java=\"`usageAnomaly`\"\u003e`usage_anomaly`\u003c/span\u003e. See the trigger filter documentation above for supported fields and values.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The built-in anomaly trigger type.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "vercel:index/AuditLogDrainHttp:AuditLogDrainHttp": {
            "properties": {
                "compression": {
                    "type": "string",
                    "description": "The compression applied to HTTP request bodies. Can be \u003cspan pulumi-lang-nodejs=\"`gzip`\" pulumi-lang-dotnet=\"`Gzip`\" pulumi-lang-go=\"`gzip`\" pulumi-lang-python=\"`gzip`\" pulumi-lang-yaml=\"`gzip`\" pulumi-lang-java=\"`gzip`\"\u003e`gzip`\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"
                },
                "encoding": {
                    "type": "string",
                    "description": "The format used to deliver Audit Log events. 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": "The HTTPS endpoint that receives Audit Log events.\n"
                },
                "headers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Custom headers included in requests to the HTTP endpoint.\n",
                    "secret": true
                },
                "secret": {
                    "type": "string",
                    "description": "A custom secret used to sign Audit Log events. If omitted, Vercel generates one.\n",
                    "secret": true
                }
            },
            "type": "object",
            "required": [
                "encoding",
                "endpoint"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "compression",
                        "encoding",
                        "endpoint",
                        "secret"
                    ]
                }
            }
        },
        "vercel:index/AuditLogDrainS3:AuditLogDrainS3": {
            "properties": {
                "encoding": {
                    "type": "string",
                    "description": "The format used to write Audit Log events. 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": "The S3 bucket and optional prefix where Audit Log events are written, using the format `s3://bucket[/prefix]`.\n"
                },
                "objectAcl": {
                    "type": "string",
                    "description": "The canned ACL sent when writing objects. Can be \u003cspan pulumi-lang-nodejs=\"`private`\" pulumi-lang-dotnet=\"`Private`\" pulumi-lang-go=\"`private`\" pulumi-lang-python=\"`private`\" pulumi-lang-yaml=\"`private`\" pulumi-lang-java=\"`private`\"\u003e`private`\u003c/span\u003e, `bucket-owner-read`, or `bucket-owner-full-control`.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The AWS region containing the S3 bucket.\n"
                },
                "roleArn": {
                    "type": "string",
                    "description": "The ARN of the AWS IAM role Vercel assumes to write objects.\n"
                },
                "serverSideEncryption": {
                    "type": "string",
                    "description": "The server-side encryption header sent when writing objects. Can be `AES256`, `aws:kms`, or `aws:kms:dsse`.\n"
                }
            },
            "type": "object",
            "required": [
                "encoding",
                "endpoint",
                "region",
                "roleArn"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "encoding",
                        "endpoint",
                        "objectAcl",
                        "region",
                        "roleArn",
                        "serverSideEncryption"
                    ]
                }
            }
        },
        "vercel:index/BulkRedirectsRedirect:BulkRedirectsRedirect": {
            "properties": {
                "caseSensitive": {
                    "type": "boolean",
                    "description": "Whether the source match is case-sensitive.\n"
                },
                "destination": {
                    "type": "string",
                    "description": "The destination pathname or URL to redirect to.\n"
                },
                "query": {
                    "type": "boolean",
                    "description": "Whether query parameters are considered when matching the redirect.\n"
                },
                "source": {
                    "type": "string",
                    "description": "The source pathname to match.\n"
                },
                "statusCode": {
                    "type": "integer",
                    "description": "The HTTP status code for the redirect.\n"
                }
            },
            "type": "object",
            "required": [
                "destination",
                "source",
                "statusCode"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "caseSensitive",
                        "destination",
                        "query",
                        "source",
                        "statusCode"
                    ]
                }
            }
        },
        "vercel:index/CustomAlertRuleEvaluation:CustomAlertRuleEvaluation": {
            "properties": {
                "query": {
                    "$ref": "#/types/vercel:index/CustomAlertRuleEvaluationQuery:CustomAlertRuleEvaluationQuery",
                    "description": "The structured Alerts v3 query. Use one metric without formulas, or two metrics with a division formula named \u003cspan pulumi-lang-nodejs=\"`formula`\" pulumi-lang-dotnet=\"`Formula`\" pulumi-lang-go=\"`formula`\" pulumi-lang-python=\"`formula`\" pulumi-lang-yaml=\"`formula`\" pulumi-lang-java=\"`formula`\"\u003e`formula`\u003c/span\u003e. Discover supported metrics with `vc metrics schema \u003cmetric-or-prefix\u003e`.\n"
                },
                "window": {
                    "type": "string",
                    "description": "Aggregation granularity and detection cadence: \u003cspan pulumi-lang-nodejs=\"`5m`\" pulumi-lang-dotnet=\"`5m`\" pulumi-lang-go=\"`5m`\" pulumi-lang-python=\"`5m`\" pulumi-lang-yaml=\"`5m`\" pulumi-lang-java=\"`5m`\"\u003e`5m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`15m`\" pulumi-lang-dotnet=\"`15m`\" pulumi-lang-go=\"`15m`\" pulumi-lang-python=\"`15m`\" pulumi-lang-yaml=\"`15m`\" pulumi-lang-java=\"`15m`\"\u003e`15m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`1h`\" pulumi-lang-dotnet=\"`1h`\" pulumi-lang-go=\"`1h`\" pulumi-lang-python=\"`1h`\" pulumi-lang-yaml=\"`1h`\" pulumi-lang-java=\"`1h`\"\u003e`1h`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`1d`\" pulumi-lang-dotnet=\"`1d`\" pulumi-lang-go=\"`1d`\" pulumi-lang-python=\"`1d`\" pulumi-lang-yaml=\"`1d`\" pulumi-lang-java=\"`1d`\"\u003e`1d`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "query",
                "window"
            ]
        },
        "vercel:index/CustomAlertRuleEvaluationQuery:CustomAlertRuleEvaluationQuery": {
            "properties": {
                "filter": {
                    "type": "string",
                    "description": "KQL filter. Syntax and metric dimensions are validated by the API.\n"
                },
                "formulas": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Optional division formula, keyed by \u003cspan pulumi-lang-nodejs=\"`formula`\" pulumi-lang-dotnet=\"`Formula`\" pulumi-lang-go=\"`formula`\" pulumi-lang-python=\"`formula`\" pulumi-lang-yaml=\"`formula`\" pulumi-lang-java=\"`formula`\"\u003e`formula`\u003c/span\u003e, referencing the two metric aliases, for example `errors / requests`.\n"
                },
                "groupBies": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional grouping dimension. Exactly one dimension is supported.\n"
                },
                "metrics": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/types/vercel:index/CustomAlertRuleEvaluationQueryMetrics:CustomAlertRuleEvaluationQueryMetrics"
                    },
                    "description": "One or two metric selections keyed by caller-chosen aliases. The alias \u003cspan pulumi-lang-nodejs=\"`formula`\" pulumi-lang-dotnet=\"`Formula`\" pulumi-lang-go=\"`formula`\" pulumi-lang-python=\"`formula`\" pulumi-lang-yaml=\"`formula`\" pulumi-lang-java=\"`formula`\"\u003e`formula`\u003c/span\u003e is reserved.\n"
                },
                "outputs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Exactly one output: the sole metric alias, or \u003cspan pulumi-lang-nodejs=\"`formula`\" pulumi-lang-dotnet=\"`Formula`\" pulumi-lang-go=\"`formula`\" pulumi-lang-python=\"`formula`\" pulumi-lang-yaml=\"`formula`\" pulumi-lang-java=\"`formula`\"\u003e`formula`\u003c/span\u003e for a ratio.\n"
                }
            },
            "type": "object",
            "required": [
                "metrics",
                "outputs"
            ]
        },
        "vercel:index/CustomAlertRuleEvaluationQueryMetrics:CustomAlertRuleEvaluationQueryMetrics": {
            "properties": {
                "aggregation": {
                    "type": "string",
                    "description": "Metric aggregation. Supported combinations depend on the metric.\n"
                },
                "dimensions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Dimensions required by the unique aggregation.\n"
                },
                "filter": {
                    "type": "string",
                    "description": "KQL filter. Syntax and metric dimensions are validated by the API.\n"
                },
                "metric": {
                    "type": "string",
                    "description": "Semantic metric ID or custom metric name. Availability is validated by the API.\n"
                },
                "normalize": {
                    "type": "string",
                    "description": "Set to \u003cspan pulumi-lang-nodejs=\"`percent`\" pulumi-lang-dotnet=\"`Percent`\" pulumi-lang-go=\"`percent`\" pulumi-lang-python=\"`percent`\" pulumi-lang-yaml=\"`percent`\" pulumi-lang-java=\"`percent`\"\u003e`percent`\u003c/span\u003e for percentage normalization. Only supported for count or sum; cannot be combined with per.\n"
                },
                "per": {
                    "type": "string",
                    "description": "Set to \u003cspan pulumi-lang-nodejs=\"`second`\" pulumi-lang-dotnet=\"`Second`\" pulumi-lang-go=\"`second`\" pulumi-lang-python=\"`second`\" pulumi-lang-yaml=\"`second`\" pulumi-lang-java=\"`second`\"\u003e`second`\u003c/span\u003e for a per-second rate. Only supported for count or sum; cannot be combined with normalize.\n"
                }
            },
            "type": "object",
            "required": [
                "aggregation",
                "metric"
            ]
        },
        "vercel:index/CustomAlertRuleNotificationSettings:CustomAlertRuleNotificationSettings": {
            "properties": {
                "enableTeamOwnerNotifications": {
                    "type": "boolean"
                },
                "incidentIoRoutingKey": {
                    "type": "string"
                },
                "vercelNotificationsMinimumSeverityLevel": {
                    "type": "string",
                    "description": "Set to \u003cspan pulumi-lang-nodejs=\"`critical`\" pulumi-lang-dotnet=\"`Critical`\" pulumi-lang-go=\"`critical`\" pulumi-lang-python=\"`critical`\" pulumi-lang-yaml=\"`critical`\" pulumi-lang-java=\"`critical`\"\u003e`critical`\u003c/span\u003e to send Vercel notifications only for alerts classified as Critical. Omit to send Vercel notifications for every severity.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "enableTeamOwnerNotifications"
                    ]
                }
            }
        },
        "vercel:index/CustomAlertRuleTrigger:CustomAlertRuleTrigger": {
            "properties": {
                "minimum": {
                    "$ref": "#/types/vercel:index/CustomAlertRuleTriggerMinimum:CustomAlertRuleTriggerMinimum",
                    "description": "Optional evaluation floor. Allowed for anomalies or ratio thresholds using \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 or \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.\n"
                },
                "operator": {
                    "type": "string",
                    "description": "Required for threshold triggers; omitted for anomaly triggers.\n"
                },
                "output": {
                    "type": "string",
                    "description": "The query's single output alias.\n"
                },
                "standardDeviations": {
                    "type": "number",
                    "description": "Required anomaly threshold in standard deviations, at least 0.1.\n"
                },
                "threshold": {
                    "type": "number",
                    "description": "Required numeric threshold for threshold triggers. Zero is supported.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The condition type: \u003cspan pulumi-lang-nodejs=\"`threshold`\" pulumi-lang-dotnet=\"`Threshold`\" pulumi-lang-go=\"`threshold`\" pulumi-lang-python=\"`threshold`\" pulumi-lang-yaml=\"`threshold`\" pulumi-lang-java=\"`threshold`\"\u003e`threshold`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`anomaly`\" pulumi-lang-dotnet=\"`Anomaly`\" pulumi-lang-go=\"`anomaly`\" pulumi-lang-python=\"`anomaly`\" pulumi-lang-yaml=\"`anomaly`\" pulumi-lang-java=\"`anomaly`\"\u003e`anomaly`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "output",
                "type"
            ]
        },
        "vercel:index/CustomAlertRuleTriggerMinimum:CustomAlertRuleTriggerMinimum": {
            "properties": {
                "output": {
                    "type": "string",
                    "description": "The primitive metric alias, or ratio numerator alias.\n"
                },
                "threshold": {
                    "type": "number",
                    "description": "Non-negative floor below which the rule is not evaluated.\n"
                }
            },
            "type": "object",
            "required": [
                "output",
                "threshold"
            ]
        },
        "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/DnsRecordHttps:DnsRecordHttps": {
            "properties": {
                "params": {
                    "type": "string",
                    "description": "The SvcParams of the record, as a space-separated list of `key=value` pairs, for example `alpn=h2,h3`.\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "The priority of the record. A value of 0 indicates AliasMode, while a value greater than 0 indicates ServiceMode where lower values are preferred.\n"
                },
                "target": {
                    "type": "string",
                    "description": "The target hostname of the record. Use `.` to indicate the owner name of the record itself.\n"
                }
            },
            "type": "object",
            "required": [
                "priority",
                "target"
            ]
        },
        "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/FeatureFlagConfigDevelopment:FeatureFlagConfigDevelopment": {
            "properties": {
                "defaultVariantId": {
                    "type": "string",
                    "description": "The variant to serve when this environment is enabled and no rules match.\n"
                },
                "disabledVariantId": {
                    "type": "string",
                    "description": "The variant to serve while this environment is disabled or paused.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Whether the flag should actively evaluate in this environment.\n"
                }
            },
            "type": "object",
            "required": [
                "defaultVariantId",
                "disabledVariantId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "defaultVariantId",
                        "disabledVariantId",
                        "enabled"
                    ]
                }
            }
        },
        "vercel:index/FeatureFlagConfigPreview:FeatureFlagConfigPreview": {
            "properties": {
                "defaultVariantId": {
                    "type": "string",
                    "description": "The variant to serve when this environment is enabled and no rules match.\n"
                },
                "disabledVariantId": {
                    "type": "string",
                    "description": "The variant to serve while this environment is disabled or paused.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Whether the flag should actively evaluate in this environment.\n"
                }
            },
            "type": "object",
            "required": [
                "defaultVariantId",
                "disabledVariantId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "defaultVariantId",
                        "disabledVariantId",
                        "enabled"
                    ]
                }
            }
        },
        "vercel:index/FeatureFlagConfigProduction:FeatureFlagConfigProduction": {
            "properties": {
                "defaultVariantId": {
                    "type": "string",
                    "description": "The variant to serve when this environment is enabled and no rules match.\n"
                },
                "disabledVariantId": {
                    "type": "string",
                    "description": "The variant to serve while this environment is disabled or paused.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Whether the flag should actively evaluate in this environment.\n"
                }
            },
            "type": "object",
            "required": [
                "defaultVariantId",
                "disabledVariantId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "defaultVariantId",
                        "disabledVariantId",
                        "enabled"
                    ]
                }
            }
        },
        "vercel:index/FeatureFlagDefinitionVariant:FeatureFlagDefinitionVariant": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "A human-readable description for the variant.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The stable variant identifier referenced by flag configuration.\n"
                },
                "label": {
                    "type": "string",
                    "description": "A human-readable label for the variant.\n"
                },
                "valueBool": {
                    "type": "boolean",
                    "description": "The boolean value for this variant. Use this when `kind = \"boolean\"`.\n"
                },
                "valueNumber": {
                    "type": "number",
                    "description": "The numeric value for this variant. Use this when `kind = \"number\"`.\n"
                },
                "valueString": {
                    "type": "string",
                    "description": "The string value for this variant. Use this when `kind = \"string\"`.\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ]
        },
        "vercel:index/FeatureFlagSegmentExclude:FeatureFlagSegmentExclude": {
            "properties": {
                "attribute": {
                    "type": "string",
                    "description": "The entity attribute to match, for example \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.\n"
                },
                "entity": {
                    "type": "string",
                    "description": "The entity type to match, for example \u003cspan pulumi-lang-nodejs=\"`user`\" pulumi-lang-dotnet=\"`User`\" pulumi-lang-go=\"`user`\" pulumi-lang-python=\"`user`\" pulumi-lang-yaml=\"`user`\" pulumi-lang-java=\"`user`\"\u003e`user`\u003c/span\u003e.\n"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The exact values to include or exclude for this entity attribute.\n"
                }
            },
            "type": "object",
            "required": [
                "attribute",
                "entity",
                "values"
            ]
        },
        "vercel:index/FeatureFlagSegmentInclude:FeatureFlagSegmentInclude": {
            "properties": {
                "attribute": {
                    "type": "string",
                    "description": "The entity attribute to match, for example \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.\n"
                },
                "entity": {
                    "type": "string",
                    "description": "The entity type to match, for example \u003cspan pulumi-lang-nodejs=\"`user`\" pulumi-lang-dotnet=\"`User`\" pulumi-lang-go=\"`user`\" pulumi-lang-python=\"`user`\" pulumi-lang-yaml=\"`user`\" pulumi-lang-java=\"`user`\"\u003e`user`\u003c/span\u003e.\n"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The exact values to include or exclude for this entity attribute.\n"
                }
            },
            "type": "object",
            "required": [
                "attribute",
                "entity",
                "values"
            ]
        },
        "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. Defaults to false.\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"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "neg",
                        "op",
                        "type"
                    ]
                }
            }
        },
        "vercel:index/KmsIssuerSigningKey:KmsIssuerSigningKey": {
            "properties": {
                "algorithm": {
                    "type": "string",
                    "description": "The signing algorithm of the key.\n"
                },
                "certificatePem": {
                    "type": "string",
                    "description": "The key's self-signed X.509 certificate in PEM form.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The time the key was created.\n"
                },
                "importKeyId": {
                    "type": "string",
                    "description": "The caller-supplied key ID (\u003cspan pulumi-lang-nodejs=\"`kid`\" pulumi-lang-dotnet=\"`Kid`\" pulumi-lang-go=\"`kid`\" pulumi-lang-python=\"`kid`\" pulumi-lang-yaml=\"`kid`\" pulumi-lang-java=\"`kid`\"\u003e`kid`\u003c/span\u003e) for an imported key, or \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 keys generated by Vercel. This is the value that appears in the JWKS and signed-token headers for imported keys.\n"
                },
                "issuerId": {
                    "type": "string",
                    "description": "The ID of the issuer the key belongs to.\n"
                },
                "keyId": {
                    "type": "string",
                    "description": "The server-minted addressable ID of the signing key. For keys generated by Vercel this is also the JWT/JWKS \u003cspan pulumi-lang-nodejs=\"`kid`\" pulumi-lang-dotnet=\"`Kid`\" pulumi-lang-go=\"`kid`\" pulumi-lang-python=\"`kid`\" pulumi-lang-yaml=\"`kid`\" pulumi-lang-java=\"`kid`\"\u003e`kid`\u003c/span\u003e; for an imported key the \u003cspan pulumi-lang-nodejs=\"`kid`\" pulumi-lang-dotnet=\"`Kid`\" pulumi-lang-go=\"`kid`\" pulumi-lang-python=\"`kid`\" pulumi-lang-yaml=\"`kid`\" pulumi-lang-java=\"`kid`\"\u003e`kid`\u003c/span\u003e may differ from this addressable ID.\n"
                },
                "publicKeyFingerprint": {
                    "type": "string",
                    "description": "The fingerprint of the public key.\n"
                },
                "publicKeyJwk": {
                    "type": "string",
                    "description": "The public key as a JSON-encoded JWK.\n"
                },
                "publicKeyPem": {
                    "type": "string",
                    "description": "The public key in SPKI PEM form.\n"
                },
                "revokeAt": {
                    "type": "string",
                    "description": "The time at which the key is scheduled to be revoked, if any.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the key, one of \u003cspan pulumi-lang-nodejs=\"`pending`\" pulumi-lang-dotnet=\"`Pending`\" pulumi-lang-go=\"`pending`\" pulumi-lang-python=\"`pending`\" pulumi-lang-yaml=\"`pending`\" pulumi-lang-java=\"`pending`\"\u003e`pending`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`active`\" pulumi-lang-dotnet=\"`Active`\" pulumi-lang-go=\"`active`\" pulumi-lang-python=\"`active`\" pulumi-lang-yaml=\"`active`\" pulumi-lang-java=\"`active`\"\u003e`active`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`revoking`\" pulumi-lang-dotnet=\"`Revoking`\" pulumi-lang-go=\"`revoking`\" pulumi-lang-python=\"`revoking`\" pulumi-lang-yaml=\"`revoking`\" pulumi-lang-java=\"`revoking`\"\u003e`revoking`\u003c/span\u003e. A newly rotated key is \u003cspan pulumi-lang-nodejs=\"`pending`\" pulumi-lang-dotnet=\"`Pending`\" pulumi-lang-go=\"`pending`\" pulumi-lang-python=\"`pending`\" pulumi-lang-yaml=\"`pending`\" pulumi-lang-java=\"`pending`\"\u003e`pending`\u003c/span\u003e until its public key propagates, then becomes \u003cspan pulumi-lang-nodejs=\"`active`\" pulumi-lang-dotnet=\"`Active`\" pulumi-lang-go=\"`active`\" pulumi-lang-python=\"`active`\" pulumi-lang-yaml=\"`active`\" pulumi-lang-java=\"`active`\"\u003e`active`\u003c/span\u003e.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The time the key was last updated.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "algorithm",
                        "certificatePem",
                        "createdAt",
                        "importKeyId",
                        "issuerId",
                        "keyId",
                        "publicKeyFingerprint",
                        "publicKeyJwk",
                        "publicKeyPem",
                        "revokeAt",
                        "status",
                        "updatedAt"
                    ]
                }
            }
        },
        "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/OidcFederationPolicyClaim:OidcFederationPolicyClaim": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The OIDC claim name.\n"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/OidcFederationPolicyClaimValue:OidcFederationPolicyClaimValue"
                    },
                    "description": "Values accepted for this claim. A claim matches when any configured value matches.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "values"
            ]
        },
        "vercel:index/OidcFederationPolicyClaimValue:OidcFederationPolicyClaimValue": {
            "properties": {
                "value": {
                    "type": "string",
                    "description": "The accepted claim value or wildcard pattern.\n"
                },
                "wildcards": {
                    "type": "boolean",
                    "description": "Whether `*` characters in the value should be interpreted as wildcards.\n"
                }
            },
            "type": "object",
            "required": [
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "value",
                        "wildcards"
                    ]
                }
            }
        },
        "vercel:index/OidcFederationPolicyResources:OidcFederationPolicyResources": {
            "properties": {
                "projectIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Project IDs in the resource boundary. Use `[\"*\"]` for all current and future team projects, or an empty set for no projects.\n"
                }
            },
            "type": "object",
            "required": [
                "projectIds"
            ]
        },
        "vercel:index/ProjectDeploymentCheckSource:ProjectDeploymentCheckSource": {
            "properties": {
                "externalCheckName": {
                    "type": "string",
                    "description": "The external check name. Required for a `git-provider` source.\n"
                },
                "externalResourceId": {
                    "type": "string",
                    "description": "An optional external resource ID for an \u003cspan pulumi-lang-nodejs=\"`integration`\" pulumi-lang-dotnet=\"`Integration`\" pulumi-lang-go=\"`integration`\" pulumi-lang-python=\"`integration`\" pulumi-lang-yaml=\"`integration`\" pulumi-lang-java=\"`integration`\"\u003e`integration`\u003c/span\u003e source. Creating integration checks requires an integration token; the API derives integration IDs from that token.\n"
                },
                "kind": {
                    "type": "string",
                    "description": "The source kind. New checks support `git-provider`, \u003cspan pulumi-lang-nodejs=\"`integration`\" pulumi-lang-dotnet=\"`Integration`\" pulumi-lang-go=\"`integration`\" pulumi-lang-python=\"`integration`\" pulumi-lang-yaml=\"`integration`\" pulumi-lang-java=\"`integration`\"\u003e`integration`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`webhook`\" pulumi-lang-dotnet=\"`Webhook`\" pulumi-lang-go=\"`webhook`\" pulumi-lang-python=\"`webhook`\" pulumi-lang-yaml=\"`webhook`\" pulumi-lang-java=\"`webhook`\"\u003e`webhook`\u003c/span\u003e; \u003cspan pulumi-lang-nodejs=\"`vercel`\" pulumi-lang-dotnet=\"`Vercel`\" pulumi-lang-go=\"`vercel`\" pulumi-lang-python=\"`vercel`\" pulumi-lang-yaml=\"`vercel`\" pulumi-lang-java=\"`vercel`\"\u003e`vercel`\u003c/span\u003e is response-only.\n"
                },
                "provider": {
                    "type": "string",
                    "description": "The Git provider. New git-provider checks currently support \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; imported checks may report \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"
                },
                "webhookId": {
                    "type": "string",
                    "description": "The webhook ID for a \u003cspan pulumi-lang-nodejs=\"`webhook`\" pulumi-lang-dotnet=\"`Webhook`\" pulumi-lang-go=\"`webhook`\" pulumi-lang-python=\"`webhook`\" pulumi-lang-yaml=\"`webhook`\" pulumi-lang-java=\"`webhook`\"\u003e`webhook`\u003c/span\u003e source.\n"
                }
            },
            "type": "object",
            "required": [
                "kind"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "externalCheckName",
                        "externalResourceId",
                        "kind",
                        "provider",
                        "webhookId"
                    ]
                }
            }
        },
        "vercel:index/ProjectDomainVerification:ProjectDomainVerification": {
            "properties": {
                "domain": {
                    "type": "string",
                    "description": "The domain name on which the DNS record must be created.\n"
                },
                "reason": {
                    "type": "string",
                    "description": "A human-readable explanation of why this challenge was issued.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of DNS record that must be created to satisfy the challenge (e.g. `TXT`).\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value that the DNS record must contain.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "domain",
                        "reason",
                        "type",
                        "value"
                    ]
                }
            }
        },
        "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 (meaning it cannot be read via the API or Vercel Dashboard once set). This must be explicitly set. Secrets are supported in all target environments, including Development.\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
                },
                "visibility": {
                    "type": "string",
                    "description": "Controls how the environment variable is categorized: \u003cspan pulumi-lang-nodejs=\"`config`\" pulumi-lang-dotnet=\"`Config`\" pulumi-lang-go=\"`config`\" pulumi-lang-python=\"`config`\" pulumi-lang-yaml=\"`config`\" pulumi-lang-java=\"`config`\"\u003e`config`\u003c/span\u003e (configuration values) or \u003cspan pulumi-lang-nodejs=\"`secret`\" pulumi-lang-dotnet=\"`Secret`\" pulumi-lang-go=\"`secret`\" pulumi-lang-python=\"`secret`\" pulumi-lang-yaml=\"`secret`\" pulumi-lang-java=\"`secret`\"\u003e`secret`\u003c/span\u003e (secret values). When omitted, visibility is inferred from \u003cspan pulumi-lang-nodejs=\"`sensitive`\" pulumi-lang-dotnet=\"`Sensitive`\" pulumi-lang-go=\"`sensitive`\" pulumi-lang-python=\"`sensitive`\" pulumi-lang-yaml=\"`sensitive`\" pulumi-lang-java=\"`sensitive`\"\u003e`sensitive`\u003c/span\u003e for backwards compatibility and is not sent to the API.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "sensitive",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "comment",
                        "customEnvironmentIds",
                        "id",
                        "key",
                        "sensitive",
                        "targets",
                        "value",
                        "visibility"
                    ]
                }
            }
        },
        "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 (meaning it cannot be read via the API or Vercel Dashboard once set). This must be explicitly set. Secrets are supported in all target environments, including Development.\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
                },
                "visibility": {
                    "type": "string",
                    "description": "Controls how the environment variable is categorized: \u003cspan pulumi-lang-nodejs=\"`config`\" pulumi-lang-dotnet=\"`Config`\" pulumi-lang-go=\"`config`\" pulumi-lang-python=\"`config`\" pulumi-lang-yaml=\"`config`\" pulumi-lang-java=\"`config`\"\u003e`config`\u003c/span\u003e (configuration values) or \u003cspan pulumi-lang-nodejs=\"`secret`\" pulumi-lang-dotnet=\"`Secret`\" pulumi-lang-go=\"`secret`\" pulumi-lang-python=\"`secret`\" pulumi-lang-yaml=\"`secret`\" pulumi-lang-java=\"`secret`\"\u003e`secret`\u003c/span\u003e (secret values). When omitted, visibility is inferred from \u003cspan pulumi-lang-nodejs=\"`sensitive`\" pulumi-lang-dotnet=\"`Sensitive`\" pulumi-lang-go=\"`sensitive`\" pulumi-lang-python=\"`sensitive`\" pulumi-lang-yaml=\"`sensitive`\" pulumi-lang-java=\"`sensitive`\"\u003e`sensitive`\u003c/span\u003e for backwards compatibility and is not sent to the API.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "sensitive",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "comment",
                        "customEnvironmentIds",
                        "id",
                        "key",
                        "sensitive",
                        "targets",
                        "value",
                        "visibility"
                    ]
                }
            }
        },
        "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": {
                "consolidatedGitCommitStatus": {
                    "$ref": "#/types/vercel:index/ProjectGitProviderOptionsConsolidatedGitCommitStatus:ProjectGitProviderOptionsConsolidatedGitCommitStatus",
                    "description": "**Beta:** Configuration for consolidated git commit status reporting. When enabled, Vercel posts a single consolidated commit status instead of one per deployment. This feature is in beta and may change in backwards-incompatible ways.\n"
                },
                "createDeployments": {
                    "type": "boolean",
                    "description": "Whether Vercel creates GitHub Deployments for this project, which send \u003cspan pulumi-lang-nodejs=\"`deploymentStatus`\" pulumi-lang-dotnet=\"`DeploymentStatus`\" pulumi-lang-go=\"`deploymentStatus`\" pulumi-lang-python=\"`deployment_status`\" pulumi-lang-yaml=\"`deploymentStatus`\" pulumi-lang-java=\"`deploymentStatus`\"\u003e`deployment_status`\u003c/span\u003e events to GitHub. This matches the \u003cspan pulumi-lang-nodejs=\"`deploymentStatus`\" pulumi-lang-dotnet=\"`DeploymentStatus`\" pulumi-lang-go=\"`deploymentStatus`\" pulumi-lang-python=\"`deployment_status`\" pulumi-lang-yaml=\"`deploymentStatus`\" pulumi-lang-java=\"`deploymentStatus`\"\u003e`deployment_status`\u003c/span\u003e Events toggle in the project's Git settings. Setting this to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e does not stop Git pushes from triggering Vercel deployments.\n"
                },
                "gitCommitStatus": {
                    "type": "boolean",
                    "description": "Whether Vercel should post git commit statuses for this project. 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 when unset.\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": [
                        "consolidatedGitCommitStatus",
                        "createDeployments",
                        "gitCommitStatus",
                        "repositoryDispatchEvents",
                        "requireVerifiedCommits"
                    ]
                }
            }
        },
        "vercel:index/ProjectGitProviderOptionsConsolidatedGitCommitStatus:ProjectGitProviderOptionsConsolidatedGitCommitStatus": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "**Beta:** Whether consolidated commit status is enabled.\n"
                },
                "propagateFailures": {
                    "type": "boolean",
                    "description": "**Beta:** Whether to propagate individual deployment failures to the consolidated status.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled",
                "propagateFailures"
            ]
        },
        "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/ProjectPassport:ProjectPassport": {
            "properties": {
                "connectorId": {
                    "type": "string",
                    "description": "The stable ID of an existing Vercel Connect OAuth application, available from the vercel*connect*application data source. Required when enabled; omit when disabled.\n"
                },
                "deploymentType": {
                    "type": "string",
                    "description": "Deployments to protect: all, preview, prod*deployment*urls*and*all*previews, or all*except*custom*domains. Defaults to all.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Whether Passport is enabled. Defaults to true.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "connectorId",
                        "deploymentType",
                        "enabled"
                    ]
                }
            }
        },
        "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/ProjectRoutePosition:ProjectRoutePosition": {
            "properties": {
                "placement": {
                    "type": "string",
                    "description": "Where to place the rule. One of \u003cspan pulumi-lang-nodejs=\"`start`\" pulumi-lang-dotnet=\"`Start`\" pulumi-lang-go=\"`start`\" pulumi-lang-python=\"`start`\" pulumi-lang-yaml=\"`start`\" pulumi-lang-java=\"`start`\"\u003e`start`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`end`\" pulumi-lang-dotnet=\"`End`\" pulumi-lang-go=\"`end`\" pulumi-lang-python=\"`end`\" pulumi-lang-yaml=\"`end`\" pulumi-lang-java=\"`end`\"\u003e`end`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`before`\" pulumi-lang-dotnet=\"`Before`\" pulumi-lang-go=\"`before`\" pulumi-lang-python=\"`before`\" pulumi-lang-yaml=\"`before`\" pulumi-lang-java=\"`before`\"\u003e`before`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`after`\" pulumi-lang-dotnet=\"`After`\" pulumi-lang-go=\"`after`\" pulumi-lang-python=\"`after`\" pulumi-lang-yaml=\"`after`\" pulumi-lang-java=\"`after`\"\u003e`after`\u003c/span\u003e.\n"
                },
                "referenceRouteId": {
                    "type": "string",
                    "description": "The existing route ID to place this rule before or after.\n"
                }
            },
            "type": "object",
            "required": [
                "placement"
            ]
        },
        "vercel:index/ProjectRouteRoute:ProjectRouteRoute": {
            "properties": {
                "caseSensitive": {
                    "type": "boolean",
                    "description": "Whether the \u003cspan pulumi-lang-nodejs=\"`src`\" pulumi-lang-dotnet=\"`Src`\" pulumi-lang-go=\"`src`\" pulumi-lang-python=\"`src`\" pulumi-lang-yaml=\"`src`\" pulumi-lang-java=\"`src`\"\u003e`src`\u003c/span\u003e matcher is case-sensitive.\n"
                },
                "dest": {
                    "type": "string",
                    "description": "The destination for rewrites or redirects.\n"
                },
                "has": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/ProjectRouteRouteHa:ProjectRouteRouteHa"
                    },
                    "description": "Conditions that must be present for the rule to match.\n"
                },
                "headers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Headers to set for the matched request.\n"
                },
                "missings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/ProjectRouteRouteMissing:ProjectRouteRouteMissing"
                    },
                    "description": "Conditions that must be absent for the rule to match.\n"
                },
                "respectOriginCacheControl": {
                    "type": "boolean",
                    "description": "Whether the rule should respect cache control headers from the origin.\n"
                },
                "src": {
                    "type": "string",
                    "description": "The source pattern to match.\n"
                },
                "status": {
                    "type": "integer",
                    "description": "The HTTP status code to set for redirects or status-only rules.\n"
                },
                "transforms": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/ProjectRouteRouteTransform:ProjectRouteRouteTransform"
                    },
                    "description": "Transforms applied to the request or response when the rule matches.\n"
                }
            },
            "type": "object",
            "required": [
                "src"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "caseSensitive",
                        "dest",
                        "has",
                        "headers",
                        "missings",
                        "respectOriginCacheControl",
                        "src",
                        "status",
                        "transforms"
                    ]
                }
            }
        },
        "vercel:index/ProjectRouteRouteHa:ProjectRouteRouteHa": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The key to match for \u003cspan pulumi-lang-nodejs=\"`header`\" pulumi-lang-dotnet=\"`Header`\" pulumi-lang-go=\"`header`\" pulumi-lang-python=\"`header`\" pulumi-lang-yaml=\"`header`\" pulumi-lang-java=\"`header`\"\u003e`header`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cookie`\" pulumi-lang-dotnet=\"`Cookie`\" pulumi-lang-go=\"`cookie`\" pulumi-lang-python=\"`cookie`\" pulumi-lang-yaml=\"`cookie`\" pulumi-lang-java=\"`cookie`\"\u003e`cookie`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`query`\" pulumi-lang-dotnet=\"`Query`\" pulumi-lang-go=\"`query`\" pulumi-lang-python=\"`query`\" pulumi-lang-yaml=\"`query`\" pulumi-lang-java=\"`query`\"\u003e`query`\u003c/span\u003e conditions.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The condition type. One of \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`header`\" pulumi-lang-dotnet=\"`Header`\" pulumi-lang-go=\"`header`\" pulumi-lang-python=\"`header`\" pulumi-lang-yaml=\"`header`\" pulumi-lang-java=\"`header`\"\u003e`header`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cookie`\" pulumi-lang-dotnet=\"`Cookie`\" pulumi-lang-go=\"`cookie`\" pulumi-lang-python=\"`cookie`\" pulumi-lang-yaml=\"`cookie`\" pulumi-lang-java=\"`cookie`\"\u003e`cookie`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`query`\" pulumi-lang-dotnet=\"`Query`\" pulumi-lang-go=\"`query`\" pulumi-lang-python=\"`query`\" pulumi-lang-yaml=\"`query`\" pulumi-lang-java=\"`query`\"\u003e`query`\u003c/span\u003e.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value to match.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "key",
                        "type",
                        "value"
                    ]
                }
            }
        },
        "vercel:index/ProjectRouteRouteMissing:ProjectRouteRouteMissing": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The key to match for \u003cspan pulumi-lang-nodejs=\"`header`\" pulumi-lang-dotnet=\"`Header`\" pulumi-lang-go=\"`header`\" pulumi-lang-python=\"`header`\" pulumi-lang-yaml=\"`header`\" pulumi-lang-java=\"`header`\"\u003e`header`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cookie`\" pulumi-lang-dotnet=\"`Cookie`\" pulumi-lang-go=\"`cookie`\" pulumi-lang-python=\"`cookie`\" pulumi-lang-yaml=\"`cookie`\" pulumi-lang-java=\"`cookie`\"\u003e`cookie`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`query`\" pulumi-lang-dotnet=\"`Query`\" pulumi-lang-go=\"`query`\" pulumi-lang-python=\"`query`\" pulumi-lang-yaml=\"`query`\" pulumi-lang-java=\"`query`\"\u003e`query`\u003c/span\u003e conditions.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The condition type. One of \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`header`\" pulumi-lang-dotnet=\"`Header`\" pulumi-lang-go=\"`header`\" pulumi-lang-python=\"`header`\" pulumi-lang-yaml=\"`header`\" pulumi-lang-java=\"`header`\"\u003e`header`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cookie`\" pulumi-lang-dotnet=\"`Cookie`\" pulumi-lang-go=\"`cookie`\" pulumi-lang-python=\"`cookie`\" pulumi-lang-yaml=\"`cookie`\" pulumi-lang-java=\"`cookie`\"\u003e`cookie`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`query`\" pulumi-lang-dotnet=\"`Query`\" pulumi-lang-go=\"`query`\" pulumi-lang-python=\"`query`\" pulumi-lang-yaml=\"`query`\" pulumi-lang-java=\"`query`\"\u003e`query`\u003c/span\u003e.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value to match.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "key",
                        "type",
                        "value"
                    ]
                }
            }
        },
        "vercel:index/ProjectRouteRouteTransform:ProjectRouteRouteTransform": {
            "properties": {
                "args": {
                    "type": "string",
                    "description": "A JSON document containing transform arguments. Prefer `jsonencode(...)` when setting this.\n"
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Environment names that gate this transform.\n"
                },
                "op": {
                    "type": "string",
                    "description": "The transform operation. One of \u003cspan pulumi-lang-nodejs=\"`append`\" pulumi-lang-dotnet=\"`Append`\" pulumi-lang-go=\"`append`\" pulumi-lang-python=\"`append`\" pulumi-lang-yaml=\"`append`\" pulumi-lang-java=\"`append`\"\u003e`append`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`set`\" pulumi-lang-dotnet=\"`Set`\" pulumi-lang-go=\"`set`\" pulumi-lang-python=\"`set`\" pulumi-lang-yaml=\"`set`\" pulumi-lang-java=\"`set`\"\u003e`set`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`delete`\" pulumi-lang-dotnet=\"`Delete`\" pulumi-lang-go=\"`delete`\" pulumi-lang-python=\"`delete`\" pulumi-lang-yaml=\"`delete`\" pulumi-lang-java=\"`delete`\"\u003e`delete`\u003c/span\u003e.\n"
                },
                "target": {
                    "type": "string",
                    "description": "A JSON document describing the transform target. Prefer `jsonencode(...)` when setting this.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The transform target. One of `request.headers`, `request.query`, or `response.headers`.\n"
                }
            },
            "type": "object",
            "required": [
                "op",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "args",
                        "envs",
                        "op",
                        "target",
                        "type"
                    ]
                }
            }
        },
        "vercel:index/ProjectTracingSamplingRule:ProjectTracingSamplingRule": {
            "properties": {
                "environment": {
                    "type": "string",
                    "description": "Environment to apply this sampling rule to. Can be \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 or \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.\n"
                },
                "rate": {
                    "type": "number",
                    "description": "Sampling rate from 0 to 1.\n"
                },
                "requestPath": {
                    "type": "string",
                    "description": "Request path prefix to apply this sampling rule to.\n"
                }
            },
            "type": "object",
            "required": [
                "rate"
            ]
        },
        "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/ProjectTrustedSources:ProjectTrustedSources": {
            "properties": {
                "externalSources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/ProjectTrustedSourcesExternalSource:ProjectTrustedSourcesExternalSource"
                    },
                    "description": "External sources that can reach this project's protected deployments using short-lived OIDC tokens.\n"
                },
                "projects": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/ProjectTrustedSourcesProject:ProjectTrustedSourcesProject"
                    },
                    "description": "Vercel projects in the same team that can reach this project's protected deployments.\n"
                }
            },
            "type": "object"
        },
        "vercel:index/ProjectTrustedSourcesExternalSource:ProjectTrustedSourcesExternalSource": {
            "properties": {
                "claims": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "description": "Claims that must match on the OIDC token. Each key is a claim name, and each value is a set of accepted values. The API requires \u003cspan pulumi-lang-nodejs=\"`aud`\" pulumi-lang-dotnet=\"`Aud`\" pulumi-lang-go=\"`aud`\" pulumi-lang-python=\"`aud`\" pulumi-lang-yaml=\"`aud`\" pulumi-lang-java=\"`aud`\"\u003e`aud`\u003c/span\u003e and issuer-specific identity claims.\n"
                },
                "issuer": {
                    "type": "string",
                    "description": "The OIDC issuer URL.\n"
                },
                "label": {
                    "type": "string",
                    "description": "A label or description for the trusted external source entry.\n"
                },
                "to": {
                    "$ref": "#/types/vercel:index/ProjectTrustedSourcesExternalSourceTo:ProjectTrustedSourcesExternalSourceTo",
                    "description": "The target environments on this project that may be accessed.\n"
                }
            },
            "type": "object",
            "required": [
                "claims",
                "issuer",
                "to"
            ]
        },
        "vercel:index/ProjectTrustedSourcesExternalSourceTo:ProjectTrustedSourcesExternalSourceTo": {
            "properties": {
                "preset": {
                    "type": "string",
                    "description": "Named environment preset. Currently only `all-custom` is supported.\n"
                },
                "slugs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "System environment slugs (\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, \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) or custom environment slugs.\n"
                }
            },
            "type": "object"
        },
        "vercel:index/ProjectTrustedSourcesProject:ProjectTrustedSourcesProject": {
            "properties": {
                "customAllows": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/ProjectTrustedSourcesProjectCustomAllow:ProjectTrustedSourcesProjectCustomAllow"
                    },
                    "description": "Optional overrides for default same-environment matching. Saved rules replace the API defaults for this trusted project.\n"
                },
                "label": {
                    "type": "string",
                    "description": "A label or description for the trusted project.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The trusted Vercel project ID.\n"
                }
            },
            "type": "object",
            "required": [
                "projectId"
            ]
        },
        "vercel:index/ProjectTrustedSourcesProjectCustomAllow:ProjectTrustedSourcesProjectCustomAllow": {
            "properties": {
                "from": {
                    "$ref": "#/types/vercel:index/ProjectTrustedSourcesProjectCustomAllowFrom:ProjectTrustedSourcesProjectCustomAllowFrom",
                    "description": "The source environments on the trusted project that are allowed to access the target environments.\n"
                },
                "to": {
                    "$ref": "#/types/vercel:index/ProjectTrustedSourcesProjectCustomAllowTo:ProjectTrustedSourcesProjectCustomAllowTo",
                    "description": "The target environments on this project that may be accessed.\n"
                }
            },
            "type": "object",
            "required": [
                "from",
                "to"
            ]
        },
        "vercel:index/ProjectTrustedSourcesProjectCustomAllowFrom:ProjectTrustedSourcesProjectCustomAllowFrom": {
            "properties": {
                "preset": {
                    "type": "string",
                    "description": "Named environment preset. Currently only `all-custom` is supported.\n"
                },
                "slugs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "System environment slugs (\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, \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) or custom environment slugs.\n"
                }
            },
            "type": "object"
        },
        "vercel:index/ProjectTrustedSourcesProjectCustomAllowTo:ProjectTrustedSourcesProjectCustomAllowTo": {
            "properties": {
                "preset": {
                    "type": "string",
                    "description": "Named environment preset. Currently only `all-custom` is supported.\n"
                },
                "slugs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "System environment slugs (\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, \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) or custom environment slugs.\n"
                }
            },
            "type": "object"
        },
        "vercel:index/ProjectVercelAuthentication:ProjectVercelAuthentication": {
            "properties": {
                "deploymentType": {
                    "type": "string",
                    "description": "The deployment environment to protect. When omitted on creation, inherits the team default (Standard Protection when the team has no default). 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/TeamConfigDefaultDeploymentProtection:TeamConfigDefaultDeploymentProtection": {
            "properties": {
                "vercelAuthentication": {
                    "$ref": "#/types/vercel:index/TeamConfigDefaultDeploymentProtectionVercelAuthentication:TeamConfigDefaultDeploymentProtectionVercelAuthentication",
                    "description": "Default Vercel Authentication for new projects.\n"
                }
            },
            "type": "object",
            "required": [
                "vercelAuthentication"
            ]
        },
        "vercel:index/TeamConfigDefaultDeploymentProtectionVercelAuthentication:TeamConfigDefaultDeploymentProtectionVercelAuthentication": {
            "properties": {
                "deploymentType": {
                    "type": "string",
                    "description": "One of standard*protection*new, standard*protection, all*deployments, only*preview*deployments, or none. none disables authentication for new projects.\n"
                }
            },
            "type": "object",
            "required": [
                "deploymentType"
            ]
        },
        "vercel:index/TeamConfigDefaultPassport:TeamConfigDefaultPassport": {
            "properties": {
                "connectorId": {
                    "type": "string",
                    "description": "The stable ID of an existing Vercel Connect OAuth application, available from the vercel*connect*application data source. Required when enabled; omit when disabled.\n"
                },
                "deploymentType": {
                    "type": "string",
                    "description": "Deployments to protect: all, preview, prod*deployment*urls*and*all*previews, or all*except*custom*domains. Defaults to all.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Whether Passport is enabled. Defaults to true.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "connectorId",
                        "deploymentType",
                        "enabled"
                    ]
                }
            }
        },
        "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/TraceDrainSamplingRule:TraceDrainSamplingRule": {
            "properties": {
                "environment": {
                    "type": "string",
                    "description": "Environment to apply this sampling rule to. Can be \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 or \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.\n"
                },
                "rate": {
                    "type": "number",
                    "description": "Sampling rate from 0 to 1.\n"
                },
                "requestPath": {
                    "type": "string",
                    "description": "Request path prefix to apply this sampling rule to.\n"
                }
            },
            "type": "object",
            "required": [
                "rate"
            ]
        },
        "vercel:index/getBlobProjectConnectionsConnection:getBlobProjectConnectionsConnection": {
            "properties": {
                "envVarPrefix": {
                    "type": "string",
                    "description": "The prefix used for the generated Blob environment variable names.\n"
                },
                "environments": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The environments in which the generated Blob environment variables exist.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the Blob store project connection.\n"
                },
                "productionDeploymentId": {
                    "type": "string",
                    "description": "The ID of the latest production deployment for the connected project, if any.\n"
                },
                "productionDeploymentUrl": {
                    "type": "string",
                    "description": "The URL of the latest production deployment for the connected project, if any.\n"
                },
                "projectFramework": {
                    "type": "string",
                    "description": "The framework configured for the connected Vercel project, if any.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the connected Vercel project.\n"
                },
                "projectName": {
                    "type": "string",
                    "description": "The name of the connected Vercel project.\n"
                },
                "readWriteTokenEnvVarName": {
                    "type": "string",
                    "description": "The generated environment variable name that contains the Blob read/write token.\n"
                }
            },
            "type": "object",
            "required": [
                "envVarPrefix",
                "environments",
                "id",
                "productionDeploymentId",
                "productionDeploymentUrl",
                "projectFramework",
                "projectId",
                "projectName",
                "readWriteTokenEnvVarName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "vercel:index/getBlobStoresStore:getBlobStoresStore": {
            "properties": {
                "access": {
                    "type": "string",
                    "description": "Whether blobs created in this store are \u003cspan pulumi-lang-nodejs=\"`public`\" pulumi-lang-dotnet=\"`Public`\" pulumi-lang-go=\"`public`\" pulumi-lang-python=\"`public`\" pulumi-lang-yaml=\"`public`\" pulumi-lang-java=\"`public`\"\u003e`public`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`private`\" pulumi-lang-dotnet=\"`Private`\" pulumi-lang-go=\"`private`\" pulumi-lang-python=\"`private`\" pulumi-lang-yaml=\"`private`\" pulumi-lang-java=\"`private`\"\u003e`private`\u003c/span\u003e by default.\n"
                },
                "createdAt": {
                    "type": "integer",
                    "description": "The Unix timestamp, in milliseconds, when the Blob store was created.\n"
                },
                "fileCount": {
                    "type": "integer",
                    "description": "The number of files currently stored in the Blob store.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the Blob store.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Blob store.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region in which the Blob store exists.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the Blob store in bytes.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The current status of the Blob store.\n"
                },
                "updatedAt": {
                    "type": "integer",
                    "description": "The Unix timestamp, in milliseconds, when the Blob store was last updated.\n"
                }
            },
            "type": "object",
            "required": [
                "access",
                "createdAt",
                "fileCount",
                "id",
                "name",
                "region",
                "size",
                "status",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "vercel:index/getBulkRedirectsRedirect:getBulkRedirectsRedirect": {
            "properties": {
                "caseSensitive": {
                    "type": "boolean",
                    "description": "Whether the source match is case-sensitive.\n"
                },
                "destination": {
                    "type": "string",
                    "description": "The destination pathname or URL to redirect to.\n"
                },
                "query": {
                    "type": "boolean",
                    "description": "Whether query parameters are considered when matching the redirect.\n"
                },
                "source": {
                    "type": "string",
                    "description": "The source pathname to match.\n"
                },
                "statusCode": {
                    "type": "integer",
                    "description": "The HTTP status code for the redirect.\n"
                }
            },
            "type": "object",
            "required": [
                "caseSensitive",
                "destination",
                "query",
                "source",
                "statusCode"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "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/getFeatureFlagDevelopment:getFeatureFlagDevelopment": {
            "properties": {
                "defaultVariantId": {
                    "type": "string",
                    "description": "The variant served when this environment is enabled and no rules match.\n"
                },
                "disabledVariantId": {
                    "type": "string",
                    "description": "The variant served while this environment is disabled or paused.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Whether the flag actively evaluates in this environment.\n"
                }
            },
            "type": "object",
            "required": [
                "defaultVariantId",
                "disabledVariantId",
                "enabled"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "vercel:index/getFeatureFlagPreview:getFeatureFlagPreview": {
            "properties": {
                "defaultVariantId": {
                    "type": "string",
                    "description": "The variant served when this environment is enabled and no rules match.\n"
                },
                "disabledVariantId": {
                    "type": "string",
                    "description": "The variant served while this environment is disabled or paused.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Whether the flag actively evaluates in this environment.\n"
                }
            },
            "type": "object",
            "required": [
                "defaultVariantId",
                "disabledVariantId",
                "enabled"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "vercel:index/getFeatureFlagProduction:getFeatureFlagProduction": {
            "properties": {
                "defaultVariantId": {
                    "type": "string",
                    "description": "The variant served when this environment is enabled and no rules match.\n"
                },
                "disabledVariantId": {
                    "type": "string",
                    "description": "The variant served while this environment is disabled or paused.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Whether the flag actively evaluates in this environment.\n"
                }
            },
            "type": "object",
            "required": [
                "defaultVariantId",
                "disabledVariantId",
                "enabled"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "vercel:index/getFeatureFlagSegmentExclude:getFeatureFlagSegmentExclude": {
            "properties": {
                "attribute": {
                    "type": "string",
                    "description": "The entity attribute to match.\n"
                },
                "entity": {
                    "type": "string",
                    "description": "The entity type to match.\n"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The exact values to include or exclude for this entity attribute.\n"
                }
            },
            "type": "object",
            "required": [
                "attribute",
                "entity",
                "values"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "vercel:index/getFeatureFlagSegmentInclude:getFeatureFlagSegmentInclude": {
            "properties": {
                "attribute": {
                    "type": "string",
                    "description": "The entity attribute to match.\n"
                },
                "entity": {
                    "type": "string",
                    "description": "The entity type to match.\n"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The exact values to include or exclude for this entity attribute.\n"
                }
            },
            "type": "object",
            "required": [
                "attribute",
                "entity",
                "values"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "vercel:index/getFeatureFlagVariant:getFeatureFlagVariant": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "A human-readable description for the variant.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The stable variant identifier.\n"
                },
                "label": {
                    "type": "string",
                    "description": "A human-readable label for the variant.\n"
                },
                "valueBool": {
                    "type": "boolean",
                    "description": "The boolean value for this variant when `kind = \"boolean\"`.\n"
                },
                "valueNumber": {
                    "type": "number",
                    "description": "The numeric value for this variant when `kind = \"number\"`.\n"
                },
                "valueString": {
                    "type": "string",
                    "description": "The string value for this variant when `kind = \"string\"`.\n"
                }
            },
            "type": "object",
            "required": [
                "description",
                "id",
                "label",
                "valueBool",
                "valueNumber",
                "valueString"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "vercel:index/getKmsIssuerPolicy:getKmsIssuerPolicy": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "The client ID associated with the policy, for connex grants.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The time the policy was created.\n"
                },
                "environments": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The environments the policy applies to, for project grants.\n"
                },
                "kind": {
                    "type": "string",
                    "description": "The policy kind, either `project-grant` or `connex-grant`.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The project ID associated with the policy, for project grants.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The team ID associated with the policy, for project grants.\n"
                },
                "tokenClaims": {
                    "type": "string",
                    "description": "The claims KMS includes in signed JWTs for this policy, as a JSON-encoded object.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The time the policy was last updated.\n"
                }
            },
            "type": "object",
            "required": [
                "clientId",
                "createdAt",
                "environments",
                "kind",
                "projectId",
                "teamId",
                "tokenClaims",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "vercel:index/getKmsIssuerSigningKey:getKmsIssuerSigningKey": {
            "properties": {
                "algorithm": {
                    "type": "string",
                    "description": "The signing algorithm of the key.\n"
                },
                "certificatePem": {
                    "type": "string",
                    "description": "The key's self-signed X.509 certificate in PEM form.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The time the key was created.\n"
                },
                "importKeyId": {
                    "type": "string",
                    "description": "The caller-supplied key ID (\u003cspan pulumi-lang-nodejs=\"`kid`\" pulumi-lang-dotnet=\"`Kid`\" pulumi-lang-go=\"`kid`\" pulumi-lang-python=\"`kid`\" pulumi-lang-yaml=\"`kid`\" pulumi-lang-java=\"`kid`\"\u003e`kid`\u003c/span\u003e) for an imported key, or \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 keys generated by Vercel. This is the value that appears in the JWKS and signed-token headers for imported keys.\n"
                },
                "issuerId": {
                    "type": "string",
                    "description": "The ID of the issuer the key belongs to.\n"
                },
                "keyId": {
                    "type": "string",
                    "description": "The server-minted addressable ID of the signing key. For keys generated by Vercel this is also the JWT/JWKS \u003cspan pulumi-lang-nodejs=\"`kid`\" pulumi-lang-dotnet=\"`Kid`\" pulumi-lang-go=\"`kid`\" pulumi-lang-python=\"`kid`\" pulumi-lang-yaml=\"`kid`\" pulumi-lang-java=\"`kid`\"\u003e`kid`\u003c/span\u003e; for an imported key the \u003cspan pulumi-lang-nodejs=\"`kid`\" pulumi-lang-dotnet=\"`Kid`\" pulumi-lang-go=\"`kid`\" pulumi-lang-python=\"`kid`\" pulumi-lang-yaml=\"`kid`\" pulumi-lang-java=\"`kid`\"\u003e`kid`\u003c/span\u003e may differ from this addressable ID.\n"
                },
                "publicKeyFingerprint": {
                    "type": "string",
                    "description": "The fingerprint of the public key.\n"
                },
                "publicKeyJwk": {
                    "type": "string",
                    "description": "The public key as a JSON-encoded JWK.\n"
                },
                "publicKeyPem": {
                    "type": "string",
                    "description": "The public key in SPKI PEM form.\n"
                },
                "revokeAt": {
                    "type": "string",
                    "description": "The time at which the key is scheduled to be revoked, if any.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the key, one of \u003cspan pulumi-lang-nodejs=\"`pending`\" pulumi-lang-dotnet=\"`Pending`\" pulumi-lang-go=\"`pending`\" pulumi-lang-python=\"`pending`\" pulumi-lang-yaml=\"`pending`\" pulumi-lang-java=\"`pending`\"\u003e`pending`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`active`\" pulumi-lang-dotnet=\"`Active`\" pulumi-lang-go=\"`active`\" pulumi-lang-python=\"`active`\" pulumi-lang-yaml=\"`active`\" pulumi-lang-java=\"`active`\"\u003e`active`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`revoking`\" pulumi-lang-dotnet=\"`Revoking`\" pulumi-lang-go=\"`revoking`\" pulumi-lang-python=\"`revoking`\" pulumi-lang-yaml=\"`revoking`\" pulumi-lang-java=\"`revoking`\"\u003e`revoking`\u003c/span\u003e. A newly rotated key is \u003cspan pulumi-lang-nodejs=\"`pending`\" pulumi-lang-dotnet=\"`Pending`\" pulumi-lang-go=\"`pending`\" pulumi-lang-python=\"`pending`\" pulumi-lang-yaml=\"`pending`\" pulumi-lang-java=\"`pending`\"\u003e`pending`\u003c/span\u003e until its public key propagates, then becomes \u003cspan pulumi-lang-nodejs=\"`active`\" pulumi-lang-dotnet=\"`Active`\" pulumi-lang-go=\"`active`\" pulumi-lang-python=\"`active`\" pulumi-lang-yaml=\"`active`\" pulumi-lang-java=\"`active`\"\u003e`active`\u003c/span\u003e.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The time the key was last updated.\n"
                }
            },
            "type": "object",
            "required": [
                "algorithm",
                "certificatePem",
                "createdAt",
                "importKeyId",
                "issuerId",
                "keyId",
                "publicKeyFingerprint",
                "publicKeyJwk",
                "publicKeyPem",
                "revokeAt",
                "status",
                "updatedAt"
            ],
            "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",
                    "secret": true
                },
                "visibility": {
                    "type": "string",
                    "description": "Controls how the environment variable is categorized: \u003cspan pulumi-lang-nodejs=\"`config`\" pulumi-lang-dotnet=\"`Config`\" pulumi-lang-go=\"`config`\" pulumi-lang-python=\"`config`\" pulumi-lang-yaml=\"`config`\" pulumi-lang-java=\"`config`\"\u003e`config`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`secret`\" pulumi-lang-dotnet=\"`Secret`\" pulumi-lang-go=\"`secret`\" pulumi-lang-python=\"`secret`\" pulumi-lang-yaml=\"`secret`\" pulumi-lang-java=\"`secret`\"\u003e`secret`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "comment",
                "customEnvironmentIds",
                "gitBranch",
                "id",
                "key",
                "sensitive",
                "targets",
                "value",
                "visibility"
            ],
            "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": {
                "consolidatedGitCommitStatus": {
                    "$ref": "#/types/vercel:index/getProjectGitProviderOptionsConsolidatedGitCommitStatus:getProjectGitProviderOptionsConsolidatedGitCommitStatus",
                    "description": "**Beta:** Configuration for consolidated git commit status reporting. This feature is in beta and may change in backwards-incompatible ways.\n"
                },
                "createDeployments": {
                    "type": "boolean",
                    "description": "Whether Vercel creates GitHub Deployments for this project, which send \u003cspan pulumi-lang-nodejs=\"`deploymentStatus`\" pulumi-lang-dotnet=\"`DeploymentStatus`\" pulumi-lang-go=\"`deploymentStatus`\" pulumi-lang-python=\"`deployment_status`\" pulumi-lang-yaml=\"`deploymentStatus`\" pulumi-lang-java=\"`deploymentStatus`\"\u003e`deployment_status`\u003c/span\u003e events to GitHub. This does not control whether Git pushes trigger Vercel deployments.\n"
                },
                "gitCommitStatus": {
                    "type": "boolean",
                    "description": "Whether Vercel posts git commit statuses for this project.\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": [
                "consolidatedGitCommitStatus",
                "createDeployments",
                "gitCommitStatus",
                "repositoryDispatchEvents",
                "requireVerifiedCommits"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "vercel:index/getProjectGitProviderOptionsConsolidatedGitCommitStatus:getProjectGitProviderOptionsConsolidatedGitCommitStatus": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "**Beta:** Whether consolidated commit status is enabled.\n"
                },
                "propagateFailures": {
                    "type": "boolean",
                    "description": "**Beta:** Whether to propagate individual deployment failures to the consolidated status.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled",
                "propagateFailures"
            ],
            "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/getProjectPassport:getProjectPassport": {
            "properties": {
                "connectorId": {
                    "type": "string",
                    "description": "The stable ID of the Vercel Connect OAuth application. Null when disabled.\n"
                },
                "deploymentType": {
                    "type": "string",
                    "description": "The deployment scope protected when Passport is enabled. Reports all when disabled as a default value; Passport does not protect any deployments when enabled is false.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Whether Passport is enabled.\n"
                }
            },
            "type": "object",
            "required": [
                "connectorId",
                "deploymentType",
                "enabled"
            ],
            "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/getProjectRoutesRule:getProjectRoutesRule": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the rule.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Whether the rule is enabled.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The rule ID managed by Vercel.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A human-readable name for the rule.\n"
                },
                "route": {
                    "$ref": "#/types/vercel:index/getProjectRoutesRuleRoute:getProjectRoutesRuleRoute",
                    "description": "The routing rule definition.\n"
                },
                "routeType": {
                    "type": "string",
                    "description": "The computed route type returned by Vercel. One of \u003cspan pulumi-lang-nodejs=\"`rewrite`\" pulumi-lang-dotnet=\"`Rewrite`\" pulumi-lang-go=\"`rewrite`\" pulumi-lang-python=\"`rewrite`\" pulumi-lang-yaml=\"`rewrite`\" pulumi-lang-java=\"`rewrite`\"\u003e`rewrite`\u003c/span\u003e, \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, \u003cspan pulumi-lang-nodejs=\"`setStatus`\" pulumi-lang-dotnet=\"`SetStatus`\" pulumi-lang-go=\"`setStatus`\" pulumi-lang-python=\"`set_status`\" pulumi-lang-yaml=\"`setStatus`\" pulumi-lang-java=\"`setStatus`\"\u003e`set_status`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`transform`\" pulumi-lang-dotnet=\"`Transform`\" pulumi-lang-go=\"`transform`\" pulumi-lang-python=\"`transform`\" pulumi-lang-yaml=\"`transform`\" pulumi-lang-java=\"`transform`\"\u003e`transform`\u003c/span\u003e.\n"
                },
                "srcSyntax": {
                    "type": "string",
                    "description": "The source pattern syntax inferred or stored by Vercel.\n"
                }
            },
            "type": "object",
            "required": [
                "description",
                "enabled",
                "id",
                "name",
                "route",
                "routeType",
                "srcSyntax"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "vercel:index/getProjectRoutesRuleRoute:getProjectRoutesRuleRoute": {
            "properties": {
                "caseSensitive": {
                    "type": "boolean",
                    "description": "Whether the \u003cspan pulumi-lang-nodejs=\"`src`\" pulumi-lang-dotnet=\"`Src`\" pulumi-lang-go=\"`src`\" pulumi-lang-python=\"`src`\" pulumi-lang-yaml=\"`src`\" pulumi-lang-java=\"`src`\"\u003e`src`\u003c/span\u003e matcher is case-sensitive.\n"
                },
                "dest": {
                    "type": "string",
                    "description": "The destination for rewrites or redirects.\n"
                },
                "has": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/getProjectRoutesRuleRouteHa:getProjectRoutesRuleRouteHa"
                    },
                    "description": "Conditions that must be present for the rule to match.\n"
                },
                "headers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Headers to set for the matched request.\n"
                },
                "missings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/getProjectRoutesRuleRouteMissing:getProjectRoutesRuleRouteMissing"
                    },
                    "description": "Conditions that must be absent for the rule to match.\n"
                },
                "respectOriginCacheControl": {
                    "type": "boolean",
                    "description": "Whether the rule should respect cache control headers from the origin.\n"
                },
                "src": {
                    "type": "string",
                    "description": "The source pattern to match.\n"
                },
                "status": {
                    "type": "integer",
                    "description": "The HTTP status code to set for redirects or status-only rules.\n"
                },
                "transforms": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/getProjectRoutesRuleRouteTransform:getProjectRoutesRuleRouteTransform"
                    },
                    "description": "Transforms applied to the request or response when the rule matches.\n"
                }
            },
            "type": "object",
            "required": [
                "caseSensitive",
                "dest",
                "has",
                "headers",
                "missings",
                "respectOriginCacheControl",
                "src",
                "status",
                "transforms"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "vercel:index/getProjectRoutesRuleRouteHa:getProjectRoutesRuleRouteHa": {
            "properties": {
                "key": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                },
                "value": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "key",
                "type",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "vercel:index/getProjectRoutesRuleRouteMissing:getProjectRoutesRuleRouteMissing": {
            "properties": {
                "key": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                },
                "value": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "key",
                "type",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "vercel:index/getProjectRoutesRuleRouteTransform:getProjectRoutesRuleRouteTransform": {
            "properties": {
                "args": {
                    "type": "string"
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "op": {
                    "type": "string"
                },
                "target": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "args",
                "envs",
                "op",
                "target",
                "type"
            ],
            "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/getProjectTrustedSources:getProjectTrustedSources": {
            "properties": {
                "externalSources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/getProjectTrustedSourcesExternalSource:getProjectTrustedSourcesExternalSource"
                    },
                    "description": "External sources that can reach this project's protected deployments using short-lived OIDC tokens.\n"
                },
                "projects": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/getProjectTrustedSourcesProject:getProjectTrustedSourcesProject"
                    },
                    "description": "Vercel projects in the same team that can reach this project's protected deployments.\n"
                }
            },
            "type": "object",
            "required": [
                "externalSources",
                "projects"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "vercel:index/getProjectTrustedSourcesExternalSource:getProjectTrustedSourcesExternalSource": {
            "properties": {
                "claims": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "description": "Claims that must match on the OIDC token.\n"
                },
                "issuer": {
                    "type": "string",
                    "description": "The OIDC issuer URL.\n"
                },
                "label": {
                    "type": "string",
                    "description": "A label or description for the trusted external source entry.\n"
                },
                "to": {
                    "$ref": "#/types/vercel:index/getProjectTrustedSourcesExternalSourceTo:getProjectTrustedSourcesExternalSourceTo",
                    "description": "The target environments on this project that may be accessed.\n"
                }
            },
            "type": "object",
            "required": [
                "claims",
                "issuer",
                "label",
                "to"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "vercel:index/getProjectTrustedSourcesExternalSourceTo:getProjectTrustedSourcesExternalSourceTo": {
            "properties": {
                "preset": {
                    "type": "string",
                    "description": "Named environment preset. Currently only `all-custom` is supported.\n"
                },
                "slugs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "System environment slugs (\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, \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) or custom environment slugs.\n"
                }
            },
            "type": "object",
            "required": [
                "preset",
                "slugs"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "vercel:index/getProjectTrustedSourcesProject:getProjectTrustedSourcesProject": {
            "properties": {
                "customAllows": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/getProjectTrustedSourcesProjectCustomAllow:getProjectTrustedSourcesProjectCustomAllow"
                    },
                    "description": "Optional overrides for default same-environment matching.\n"
                },
                "label": {
                    "type": "string",
                    "description": "A label or description for the trusted project.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The trusted Vercel project ID.\n"
                }
            },
            "type": "object",
            "required": [
                "customAllows",
                "label",
                "projectId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "vercel:index/getProjectTrustedSourcesProjectCustomAllow:getProjectTrustedSourcesProjectCustomAllow": {
            "properties": {
                "from": {
                    "$ref": "#/types/vercel:index/getProjectTrustedSourcesProjectCustomAllowFrom:getProjectTrustedSourcesProjectCustomAllowFrom",
                    "description": "The source environments on the trusted project that are allowed to access the target environments.\n"
                },
                "to": {
                    "$ref": "#/types/vercel:index/getProjectTrustedSourcesProjectCustomAllowTo:getProjectTrustedSourcesProjectCustomAllowTo",
                    "description": "The target environments on this project that may be accessed.\n"
                }
            },
            "type": "object",
            "required": [
                "from",
                "to"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "vercel:index/getProjectTrustedSourcesProjectCustomAllowFrom:getProjectTrustedSourcesProjectCustomAllowFrom": {
            "properties": {
                "preset": {
                    "type": "string",
                    "description": "Named environment preset. Currently only `all-custom` is supported.\n"
                },
                "slugs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "System environment slugs (\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, \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) or custom environment slugs.\n"
                }
            },
            "type": "object",
            "required": [
                "preset",
                "slugs"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "vercel:index/getProjectTrustedSourcesProjectCustomAllowTo:getProjectTrustedSourcesProjectCustomAllowTo": {
            "properties": {
                "preset": {
                    "type": "string",
                    "description": "Named environment preset. Currently only `all-custom` is supported.\n"
                },
                "slugs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "System environment slugs (\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, \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) or custom environment slugs.\n"
                }
            },
            "type": "object",
            "required": [
                "preset",
                "slugs"
            ],
            "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/getTeamConfigDefaultDeploymentProtection:getTeamConfigDefaultDeploymentProtection": {
            "properties": {
                "vercelAuthentication": {
                    "$ref": "#/types/vercel:index/getTeamConfigDefaultDeploymentProtectionVercelAuthentication:getTeamConfigDefaultDeploymentProtectionVercelAuthentication",
                    "description": "Default Vercel Authentication for new projects.\n"
                }
            },
            "type": "object",
            "required": [
                "vercelAuthentication"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "vercel:index/getTeamConfigDefaultDeploymentProtectionVercelAuthentication:getTeamConfigDefaultDeploymentProtectionVercelAuthentication": {
            "properties": {
                "deploymentType": {
                    "type": "string",
                    "description": "The default protection level, or none when disabled.\n"
                }
            },
            "type": "object",
            "required": [
                "deploymentType"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "vercel:index/getTeamConfigDefaultPassport:getTeamConfigDefaultPassport": {
            "properties": {
                "connectorId": {
                    "type": "string",
                    "description": "The stable ID of the Vercel Connect OAuth application. Null when disabled.\n"
                },
                "deploymentType": {
                    "type": "string",
                    "description": "The deployment scope protected when Passport is enabled. Reports all when disabled as a default value; Passport does not protect any deployments when enabled is false.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Whether Passport is enabled.\n"
                }
            },
            "type": "object",
            "required": [
                "connectorId",
                "deploymentType",
                "enabled"
            ],
            "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": []
                }
            }
        },
        "vercel:index/getTraceDrainSamplingRule:getTraceDrainSamplingRule": {
            "properties": {
                "environment": {
                    "type": "string",
                    "description": "Environment this sampling rule applies to.\n"
                },
                "rate": {
                    "type": "number",
                    "description": "Sampling rate from 0 to 1.\n"
                },
                "requestPath": {
                    "type": "string",
                    "description": "Request path prefix this sampling rule applies to.\n"
                }
            },
            "type": "object",
            "required": [
                "environment",
                "rate",
                "requestPath"
            ],
            "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/v5/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\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on\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\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003eand 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/accessGroupMember:AccessGroupMember": {
            "description": "Provides an Access Group Member Resource.\n\nAn Access Group Member resource defines the membership of a Vercel user (by their user ID) in 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.\n\n\u003e Access group membership can also be managed through the \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 attribute of the \u003cspan pulumi-lang-nodejs=\"`vercel.TeamMember`\" pulumi-lang-dotnet=\"`vercel.TeamMember`\" pulumi-lang-go=\"`TeamMember`\" pulumi-lang-python=\"`TeamMember`\" pulumi-lang-yaml=\"`vercel.TeamMember`\" pulumi-lang-java=\"`vercel.TeamMember`\"\u003e`vercel.TeamMember`\u003c/span\u003e resource. Do not manage the same user's membership of the same access group with both resources, as they will conflict and produce a perpetual diff.\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\", {\n    teamId: \"team_xxxxxxxxxxxxxxxxxxxxxxxx\",\n    name: \"example-access-group\",\n});\nconst exampleAccessGroupMember = new vercel.AccessGroupMember(\"example\", {\n    teamId: \"team_xxxxxxxxxxxxxxxxxxxxxxxx\",\n    accessGroupId: example.id,\n    userId: \"uuuuuuuuuuuuuuuuuuuuuuuuuu\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.AccessGroup(\"example\",\n    team_id=\"team_xxxxxxxxxxxxxxxxxxxxxxxx\",\n    name=\"example-access-group\")\nexample_access_group_member = vercel.AccessGroupMember(\"example\",\n    team_id=\"team_xxxxxxxxxxxxxxxxxxxxxxxx\",\n    access_group_id=example.id,\n    user_id=\"uuuuuuuuuuuuuuuuuuuuuuuuuu\")\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        TeamId = \"team_xxxxxxxxxxxxxxxxxxxxxxxx\",\n        Name = \"example-access-group\",\n    });\n\n    var exampleAccessGroupMember = new Vercel.AccessGroupMember(\"example\", new()\n    {\n        TeamId = \"team_xxxxxxxxxxxxxxxxxxxxxxxx\",\n        AccessGroupId = example.Id,\n        UserId = \"uuuuuuuuuuuuuuuuuuuuuuuuuu\",\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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := vercel.NewAccessGroup(ctx, \"example\", \u0026vercel.AccessGroupArgs{\n\t\t\tTeamId: pulumi.String(\"team_xxxxxxxxxxxxxxxxxxxxxxxx\"),\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.NewAccessGroupMember(ctx, \"example\", \u0026vercel.AccessGroupMemberArgs{\n\t\t\tTeamId:        pulumi.String(\"team_xxxxxxxxxxxxxxxxxxxxxxxx\"),\n\t\t\tAccessGroupId: example.ID(),\n\t\t\tUserId:        pulumi.String(\"uuuuuuuuuuuuuuuuuuuuuuuuuu\"),\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 com.pulumiverse.vercel.AccessGroupMember;\nimport com.pulumiverse.vercel.AccessGroupMemberArgs;\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            .teamId(\"team_xxxxxxxxxxxxxxxxxxxxxxxx\")\n            .name(\"example-access-group\")\n            .build());\n\n        var exampleAccessGroupMember = new AccessGroupMember(\"exampleAccessGroupMember\", AccessGroupMemberArgs.builder()\n            .teamId(\"team_xxxxxxxxxxxxxxxxxxxxxxxx\")\n            .accessGroupId(example.id())\n            .userId(\"uuuuuuuuuuuuuuuuuuuuuuuuuu\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:AccessGroup\n    properties:\n      teamId: team_xxxxxxxxxxxxxxxxxxxxxxxx\n      name: example-access-group\n  exampleAccessGroupMember:\n    type: vercel:AccessGroupMember\n    name: example\n    properties:\n      teamId: team_xxxxxxxxxxxxxxxxxxxxxxxx\n      accessGroupId: ${example.id}\n      userId: uuuuuuuuuuuuuuuuuuuuuuuuuu\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on\nthe provider, use the\u003cspan pulumi-lang-nodejs=\" accessGroupId \" pulumi-lang-dotnet=\" AccessGroupId \" pulumi-lang-go=\" accessGroupId \" pulumi-lang-python=\" access_group_id \" pulumi-lang-yaml=\" accessGroupId \" pulumi-lang-java=\" accessGroupId \"\u003e access_group_id \u003c/span\u003eand user_id.\n\n```sh\n$ pulumi import vercel:index/accessGroupMember:AccessGroupMember example ag_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nIf importing to a team, use the team_id,\u003cspan pulumi-lang-nodejs=\" accessGroupId \" pulumi-lang-dotnet=\" AccessGroupId \" pulumi-lang-go=\" accessGroupId \" pulumi-lang-python=\" access_group_id \" pulumi-lang-yaml=\" accessGroupId \" pulumi-lang-java=\" accessGroupId \"\u003e access_group_id \u003c/span\u003eand user_id.\n\n```sh\n$ pulumi import vercel:index/accessGroupMember:AccessGroupMember example team_xxxxxxxxxxxxxxxxxxxxxxxx/ag_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n",
            "properties": {
                "accessGroupId": {
                    "type": "string",
                    "description": "The ID of the Access Group.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team the access group member should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"
                },
                "userId": {
                    "type": "string",
                    "description": "The ID of the user to add to the access group.\n"
                }
            },
            "required": [
                "accessGroupId",
                "teamId",
                "userId"
            ],
            "inputProperties": {
                "accessGroupId": {
                    "type": "string",
                    "description": "The ID of the Access Group.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team the access group member should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"
                },
                "userId": {
                    "type": "string",
                    "description": "The ID of the user to add to the access group.\n"
                }
            },
            "requiredInputs": [
                "accessGroupId",
                "userId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering AccessGroupMember resources.\n",
                "properties": {
                    "accessGroupId": {
                        "type": "string",
                        "description": "The ID of the Access Group.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the team the access group member should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"
                    },
                    "userId": {
                        "type": "string",
                        "description": "The ID of the user to add to the access group.\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/v5/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\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on\nthe provider, use the\u003cspan pulumi-lang-nodejs=\" accessGroupId \" pulumi-lang-dotnet=\" AccessGroupId \" pulumi-lang-go=\" accessGroupId \" pulumi-lang-python=\" access_group_id \" pulumi-lang-yaml=\" accessGroupId \" pulumi-lang-java=\" accessGroupId \"\u003e access_group_id \u003c/span\u003eand 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,\u003cspan pulumi-lang-nodejs=\" accessGroupId \" pulumi-lang-dotnet=\" AccessGroupId \" pulumi-lang-go=\" accessGroupId \" pulumi-lang-python=\" access_group_id \" pulumi-lang-yaml=\" accessGroupId \" pulumi-lang-java=\" accessGroupId \"\u003e access_group_id \u003c/span\u003eand 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/aiGatewayApiKey:AiGatewayApiKey": {
            "description": "Provides an AI Gateway API Key resource.\n\nAn AI Gateway API Key can be used to authenticate with the [Vercel AI Gateway](https://vercel.com/docs/ai-gateway).\n\nThe \u003cspan pulumi-lang-nodejs=\"`apiKeyString`\" pulumi-lang-dotnet=\"`ApiKeyString`\" pulumi-lang-go=\"`apiKeyString`\" pulumi-lang-python=\"`api_key_string`\" pulumi-lang-yaml=\"`apiKeyString`\" pulumi-lang-java=\"`apiKeyString`\"\u003e`api_key_string`\u003c/span\u003e value is only returned during creation and is stored (marked sensitive) in Terraform state. It cannot be retrieved again later, so imported resources will not populate \u003cspan pulumi-lang-nodejs=\"`apiKeyString`\" pulumi-lang-dotnet=\"`ApiKeyString`\" pulumi-lang-go=\"`apiKeyString`\" pulumi-lang-python=\"`api_key_string`\" pulumi-lang-yaml=\"`apiKeyString`\" pulumi-lang-java=\"`apiKeyString`\"\u003e`api_key_string`\u003c/span\u003e.\n\n\u003e Managing \u003cspan pulumi-lang-nodejs=\"`aiGatewayQuota`\" pulumi-lang-dotnet=\"`AiGatewayQuota`\" pulumi-lang-go=\"`aiGatewayQuota`\" pulumi-lang-python=\"`ai_gateway_quota`\" pulumi-lang-yaml=\"`aiGatewayQuota`\" pulumi-lang-java=\"`aiGatewayQuota`\"\u003e`ai_gateway_quota`\u003c/span\u003e requires the AI Gateway API key quotas feature to be enabled for the 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 = new vercel.AiGatewayApiKey(\"example\", {name: \"workflow-github-actions\"});\n// An API key with an expiration and a monthly spend quota.\nconst withQuota = new vercel.AiGatewayApiKey(\"with_quota\", {\n    name: \"production\",\n    expiresAt: 1767225600000,\n    aiGatewayQuota: {\n        limitAmount: 500,\n        refreshPeriod: \"monthly\",\n        alertThresholds: [\n            50,\n            75,\n            100,\n        ],\n    },\n});\nexport const aiGatewayApiKey = example.apiKeyString;\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.AiGatewayApiKey(\"example\", name=\"workflow-github-actions\")\n# An API key with an expiration and a monthly spend quota.\nwith_quota = vercel.AiGatewayApiKey(\"with_quota\",\n    name=\"production\",\n    expires_at=1767225600000,\n    ai_gateway_quota={\n        \"limit_amount\": 500,\n        \"refresh_period\": \"monthly\",\n        \"alert_thresholds\": [\n            50,\n            75,\n            100,\n        ],\n    })\npulumi.export(\"aiGatewayApiKey\", example.api_key_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.AiGatewayApiKey(\"example\", new()\n    {\n        Name = \"workflow-github-actions\",\n    });\n\n    // An API key with an expiration and a monthly spend quota.\n    var withQuota = new Vercel.AiGatewayApiKey(\"with_quota\", new()\n    {\n        Name = \"production\",\n        ExpiresAt = 1767225600000,\n        AiGatewayQuota = new Vercel.Inputs.AiGatewayApiKeyAiGatewayQuotaArgs\n        {\n            LimitAmount = 500,\n            RefreshPeriod = \"monthly\",\n            AlertThresholds = new[]\n            {\n                50,\n                75,\n                100,\n            },\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"aiGatewayApiKey\"] = example.ApiKeyString,\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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := vercel.NewAiGatewayApiKey(ctx, \"example\", \u0026vercel.AiGatewayApiKeyArgs{\n\t\t\tName: pulumi.String(\"workflow-github-actions\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// An API key with an expiration and a monthly spend quota.\n\t\t_, err = vercel.NewAiGatewayApiKey(ctx, \"with_quota\", \u0026vercel.AiGatewayApiKeyArgs{\n\t\t\tName:      pulumi.String(\"production\"),\n\t\t\tExpiresAt: pulumi.Int(1767225600000),\n\t\t\tAiGatewayQuota: \u0026vercel.AiGatewayApiKeyAiGatewayQuotaArgs{\n\t\t\t\tLimitAmount:   pulumi.Float64(500),\n\t\t\t\tRefreshPeriod: pulumi.String(\"monthly\"),\n\t\t\t\tAlertThresholds: pulumi.IntArray{\n\t\t\t\t\tpulumi.Int(50),\n\t\t\t\t\tpulumi.Int(75),\n\t\t\t\t\tpulumi.Int(100),\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\tctx.Export(\"aiGatewayApiKey\", example.ApiKeyString)\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.AiGatewayApiKey;\nimport com.pulumiverse.vercel.AiGatewayApiKeyArgs;\nimport com.pulumi.vercel.inputs.AiGatewayApiKeyAiGatewayQuotaArgs;\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 AiGatewayApiKey(\"example\", AiGatewayApiKeyArgs.builder()\n            .name(\"workflow-github-actions\")\n            .build());\n\n        // An API key with an expiration and a monthly spend quota.\n        var withQuota = new AiGatewayApiKey(\"withQuota\", AiGatewayApiKeyArgs.builder()\n            .name(\"production\")\n            .expiresAt(1767225600000)\n            .aiGatewayQuota(AiGatewayApiKeyAiGatewayQuotaArgs.builder()\n                .limitAmount(500.0)\n                .refreshPeriod(\"monthly\")\n                .alertThresholds(                \n                    50,\n                    75,\n                    100)\n                .build())\n            .build());\n\n        ctx.export(\"aiGatewayApiKey\", example.apiKeyString());\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:AiGatewayApiKey\n    properties:\n      name: workflow-github-actions\n  # An API key with an expiration and a monthly spend quota.\n  withQuota:\n    type: vercel:AiGatewayApiKey\n    name: with_quota\n    properties:\n      name: production\n      expiresAt: 1.7672256e+12 # January 1, 2026\n      aiGatewayQuota:\n        limitAmount: 500\n        refreshPeriod: monthly\n        alertThresholds:\n          - 50\n          - 75\n          - 100\noutputs:\n  aiGatewayApiKey: ${example.apiKeyString}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nAI Gateway API keys can be imported by team and API key ID.\n\n```sh\n$ pulumi import vercel:index/aiGatewayApiKey:AiGatewayApiKey example team_xxxxxxxxxxxxxxxxxxxx/key_xxxxxxxxxxxxxxxxxxxx\n```\n\nOr when a default team is configured on the provider, by API key ID only.\n\n```sh\n$ pulumi import vercel:index/aiGatewayApiKey:AiGatewayApiKey example key_xxxxxxxxxxxxxxxxxxxx\n```\n\n",
            "properties": {
                "aiGatewayQuota": {
                    "$ref": "#/types/vercel:index/AiGatewayApiKeyAiGatewayQuota:AiGatewayApiKeyAiGatewayQuota",
                    "description": "A spend quota (budget) for the API key. Removing this attribute archives the quota; the API key itself is unaffected.\n"
                },
                "apiKeyString": {
                    "type": "string",
                    "description": "The API key value. This is only returned during creation and then preserved in Terraform state.\n",
                    "secret": true
                },
                "expiresAt": {
                    "type": "integer",
                    "description": "The Unix timestamp in milliseconds when the API key should expire. Must not be in the past or more than two years in the future. Cannot be changed after creation.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The human-readable name of the API key.\n"
                },
                "partialKey": {
                    "type": "string",
                    "description": "The final characters of the API key, used for identification.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of a project to restrict the API key to. When unset, the API key grants access to all projects in the team. Cannot be changed after creation.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the Vercel team scope for this API key. Required if a default team has not been set in the provider.\n"
                }
            },
            "required": [
                "apiKeyString",
                "name",
                "partialKey",
                "teamId"
            ],
            "inputProperties": {
                "aiGatewayQuota": {
                    "$ref": "#/types/vercel:index/AiGatewayApiKeyAiGatewayQuota:AiGatewayApiKeyAiGatewayQuota",
                    "description": "A spend quota (budget) for the API key. Removing this attribute archives the quota; the API key itself is unaffected.\n"
                },
                "expiresAt": {
                    "type": "integer",
                    "description": "The Unix timestamp in milliseconds when the API key should expire. Must not be in the past or more than two years in the future. Cannot be changed after creation.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The human-readable name of the API key.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of a project to restrict the API key to. When unset, the API key grants access to all projects in the team. Cannot be changed after creation.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the Vercel team scope for this API key. Required if a default team has not been set in the provider.\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering AiGatewayApiKey resources.\n",
                "properties": {
                    "aiGatewayQuota": {
                        "$ref": "#/types/vercel:index/AiGatewayApiKeyAiGatewayQuota:AiGatewayApiKeyAiGatewayQuota",
                        "description": "A spend quota (budget) for the API key. Removing this attribute archives the quota; the API key itself is unaffected.\n"
                    },
                    "apiKeyString": {
                        "type": "string",
                        "description": "The API key value. This is only returned during creation and then preserved in Terraform state.\n",
                        "secret": true
                    },
                    "expiresAt": {
                        "type": "integer",
                        "description": "The Unix timestamp in milliseconds when the API key should expire. Must not be in the past or more than two years in the future. Cannot be changed after creation.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The human-readable name of the API key.\n"
                    },
                    "partialKey": {
                        "type": "string",
                        "description": "The final characters of the API key, used for identification.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The ID of a project to restrict the API key to. When unset, the API key grants access to all projects in the team. Cannot be changed after creation.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the Vercel team scope for this API key. Required if a default team has not been set in the provider.\n"
                    }
                },
                "type": "object"
            }
        },
        "vercel:index/alertRule:AlertRule": {
            "description": "Creates a built-in Vercel alert rule using the Alerts v3 API. Built-in rules select anomaly triggers across a team scope. Notification destination links are managed with the \u003cspan pulumi-lang-nodejs=\"`vercel.AlertRuleSlackNotification`\" pulumi-lang-dotnet=\"`vercel.AlertRuleSlackNotification`\" pulumi-lang-go=\"`AlertRuleSlackNotification`\" pulumi-lang-python=\"`AlertRuleSlackNotification`\" pulumi-lang-yaml=\"`vercel.AlertRuleSlackNotification`\" pulumi-lang-java=\"`vercel.AlertRuleSlackNotification`\"\u003e`vercel.AlertRuleSlackNotification`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`vercel.AlertRuleWebhookNotification`\" pulumi-lang-dotnet=\"`vercel.AlertRuleWebhookNotification`\" pulumi-lang-go=\"`AlertRuleWebhookNotification`\" pulumi-lang-python=\"`AlertRuleWebhookNotification`\" pulumi-lang-yaml=\"`vercel.AlertRuleWebhookNotification`\" pulumi-lang-java=\"`vercel.AlertRuleWebhookNotification`\"\u003e`vercel.AlertRuleWebhookNotification`\u003c/span\u003e resources.\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 checkoutErrors = new vercel.AlertRule(\"checkout_errors\", {\n    type: \"built-in\",\n    name: \"Checkout 5xx anomalies\",\n    ruleScope: {\n        type: \"include\",\n        projectIds: [example.id],\n    },\n    triggers: [{\n        type: \"error_anomaly\",\n        filter: \"statusGroup:5xx AND route:/api/checkout\",\n    }],\n    matchMinimumSeverityLevel: \"high\",\n    tags: [\"checkout\"],\n    notificationSettings: {\n        enableTeamOwnerNotifications: true,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.Project(\"example\", name=\"example-project\")\ncheckout_errors = vercel.AlertRule(\"checkout_errors\",\n    type=\"built-in\",\n    name=\"Checkout 5xx anomalies\",\n    rule_scope={\n        \"type\": \"include\",\n        \"project_ids\": [example.id],\n    },\n    triggers=[{\n        \"type\": \"error_anomaly\",\n        \"filter\": \"statusGroup:5xx AND route:/api/checkout\",\n    }],\n    match_minimum_severity_level=\"high\",\n    tags=[\"checkout\"],\n    notification_settings={\n        \"enable_team_owner_notifications\": True,\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    });\n\n    var checkoutErrors = new Vercel.AlertRule(\"checkout_errors\", new()\n    {\n        Type = \"built-in\",\n        Name = \"Checkout 5xx anomalies\",\n        RuleScope = new Vercel.Inputs.AlertRuleRuleScopeArgs\n        {\n            Type = \"include\",\n            ProjectIds = new[]\n            {\n                example.Id,\n            },\n        },\n        Triggers = new[]\n        {\n            new Vercel.Inputs.AlertRuleTriggerArgs\n            {\n                Type = \"error_anomaly\",\n                Filter = \"statusGroup:5xx AND route:/api/checkout\",\n            },\n        },\n        MatchMinimumSeverityLevel = \"high\",\n        Tags = new[]\n        {\n            \"checkout\",\n        },\n        NotificationSettings = new Vercel.Inputs.AlertRuleNotificationSettingsArgs\n        {\n            EnableTeamOwnerNotifications = true,\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/v5/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.NewAlertRule(ctx, \"checkout_errors\", \u0026vercel.AlertRuleArgs{\n\t\t\tType: pulumi.String(\"built-in\"),\n\t\t\tName: pulumi.String(\"Checkout 5xx anomalies\"),\n\t\t\tRuleScope: \u0026vercel.AlertRuleRuleScopeArgs{\n\t\t\t\tType: pulumi.String(\"include\"),\n\t\t\t\tProjectIds: pulumi.StringArray{\n\t\t\t\t\texample.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTriggers: vercel.AlertRuleTriggerArray{\n\t\t\t\t\u0026vercel.AlertRuleTriggerArgs{\n\t\t\t\t\tType:   pulumi.String(\"error_anomaly\"),\n\t\t\t\t\tFilter: pulumi.String(\"statusGroup:5xx AND route:/api/checkout\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMatchMinimumSeverityLevel: pulumi.String(\"high\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"checkout\"),\n\t\t\t},\n\t\t\tNotificationSettings: \u0026vercel.AlertRuleNotificationSettingsArgs{\n\t\t\t\tEnableTeamOwnerNotifications: pulumi.Bool(true),\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.AlertRule;\nimport com.pulumiverse.vercel.AlertRuleArgs;\nimport com.pulumi.vercel.inputs.AlertRuleRuleScopeArgs;\nimport com.pulumi.vercel.inputs.AlertRuleTriggerArgs;\nimport com.pulumi.vercel.inputs.AlertRuleNotificationSettingsArgs;\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 checkoutErrors = new AlertRule(\"checkoutErrors\", AlertRuleArgs.builder()\n            .type(\"built-in\")\n            .name(\"Checkout 5xx anomalies\")\n            .ruleScope(AlertRuleRuleScopeArgs.builder()\n                .type(\"include\")\n                .projectIds(example.id())\n                .build())\n            .triggers(AlertRuleTriggerArgs.builder()\n                .type(\"error_anomaly\")\n                .filter(\"statusGroup:5xx AND route:/api/checkout\")\n                .build())\n            .matchMinimumSeverityLevel(\"high\")\n            .tags(\"checkout\")\n            .notificationSettings(AlertRuleNotificationSettingsArgs.builder()\n                .enableTeamOwnerNotifications(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  checkoutErrors:\n    type: vercel:AlertRule\n    name: checkout_errors\n    properties:\n      type: built-in\n      name: Checkout 5xx anomalies\n      ruleScope:\n        type: include\n        projectIds:\n          - ${example.id}\n      triggers:\n        - type: error_anomaly\n          filter: statusGroup:5xx AND route:/api/checkout\n      matchMinimumSeverityLevel: high\n      tags:\n        - checkout\n      notificationSettings:\n        enableTeamOwnerNotifications: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nUse \u003cspan pulumi-lang-nodejs=\"`vercel.CustomAlertRule`\" pulumi-lang-dotnet=\"`vercel.CustomAlertRule`\" pulumi-lang-go=\"`CustomAlertRule`\" pulumi-lang-python=\"`CustomAlertRule`\" pulumi-lang-yaml=\"`vercel.CustomAlertRule`\" pulumi-lang-java=\"`vercel.CustomAlertRule`\"\u003e`vercel.CustomAlertRule`\u003c/span\u003e for project-scoped metric thresholds and anomalies.\n\n## Trigger filters\n\nFilter support depends on the trigger type.\n\n| Trigger type | Filter support | Allowed fields |\n| --- | --- | --- |\n| \u003cspan pulumi-lang-nodejs=\"`errorAnomaly`\" pulumi-lang-dotnet=\"`ErrorAnomaly`\" pulumi-lang-go=\"`errorAnomaly`\" pulumi-lang-python=\"`error_anomaly`\" pulumi-lang-yaml=\"`errorAnomaly`\" pulumi-lang-java=\"`errorAnomaly`\"\u003e`error_anomaly`\u003c/span\u003e | Required | `statusGroup`, \u003cspan pulumi-lang-nodejs=\"`route`\" pulumi-lang-dotnet=\"`Route`\" pulumi-lang-go=\"`route`\" pulumi-lang-python=\"`route`\" pulumi-lang-yaml=\"`route`\" pulumi-lang-java=\"`route`\"\u003e`route`\u003c/span\u003e |\n| \u003cspan pulumi-lang-nodejs=\"`usageAnomaly`\" pulumi-lang-dotnet=\"`UsageAnomaly`\" pulumi-lang-go=\"`usageAnomaly`\" pulumi-lang-python=\"`usage_anomaly`\" pulumi-lang-yaml=\"`usageAnomaly`\" pulumi-lang-java=\"`usageAnomaly`\"\u003e`usage_anomaly`\u003c/span\u003e | Optional | \u003cspan pulumi-lang-nodejs=\"`metrics`\" pulumi-lang-dotnet=\"`Metrics`\" pulumi-lang-go=\"`metrics`\" pulumi-lang-python=\"`metrics`\" pulumi-lang-yaml=\"`metrics`\" pulumi-lang-java=\"`metrics`\"\u003e`metrics`\u003c/span\u003e |\n\n### Error anomaly filters\n\nAn \u003cspan pulumi-lang-nodejs=\"`errorAnomaly`\" pulumi-lang-dotnet=\"`ErrorAnomaly`\" pulumi-lang-go=\"`errorAnomaly`\" pulumi-lang-python=\"`error_anomaly`\" pulumi-lang-yaml=\"`errorAnomaly`\" pulumi-lang-java=\"`errorAnomaly`\"\u003e`error_anomaly`\u003c/span\u003e filter must contain `statusGroup` with the value \u003cspan pulumi-lang-nodejs=\"`4xx`\" pulumi-lang-dotnet=\"`4xx`\" pulumi-lang-go=\"`4xx`\" pulumi-lang-python=\"`4xx`\" pulumi-lang-yaml=\"`4xx`\" pulumi-lang-java=\"`4xx`\"\u003e`4xx`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`5xx`\" pulumi-lang-dotnet=\"`5xx`\" pulumi-lang-go=\"`5xx`\" pulumi-lang-python=\"`5xx`\" pulumi-lang-yaml=\"`5xx`\" pulumi-lang-java=\"`5xx`\"\u003e`5xx`\u003c/span\u003e. The optional \u003cspan pulumi-lang-nodejs=\"`route`\" pulumi-lang-dotnet=\"`Route`\" pulumi-lang-go=\"`route`\" pulumi-lang-python=\"`route`\" pulumi-lang-yaml=\"`route`\" pulumi-lang-java=\"`route`\"\u003e`route`\u003c/span\u003e field supports exact values, wildcards, and regular expressions.\n\nValid examples:\n\n```text\nstatusGroup:5xx\nstatusGroup:5xx AND route:/api/*\nstatusGroup:(4xx OR 5xx) AND route =~ \"^/api/[a-z]+$\"\nNOT statusGroup:4xx\n```\n\n`AND` can combine `statusGroup` and \u003cspan pulumi-lang-nodejs=\"`route`\" pulumi-lang-dotnet=\"`Route`\" pulumi-lang-go=\"`route`\" pulumi-lang-python=\"`route`\" pulumi-lang-yaml=\"`route`\" pulumi-lang-java=\"`route`\"\u003e`route`\u003c/span\u003e, but `OR` and `NOT` cannot contain different fields. Consequently, `statusGroup:5xx OR route:/api/*` is invalid. A route-only filter is also invalid because `statusGroup` is required.\n\n### Usage anomaly filters\n\nA \u003cspan pulumi-lang-nodejs=\"`usageAnomaly`\" pulumi-lang-dotnet=\"`UsageAnomaly`\" pulumi-lang-go=\"`usageAnomaly`\" pulumi-lang-python=\"`usage_anomaly`\" pulumi-lang-yaml=\"`usageAnomaly`\" pulumi-lang-java=\"`usageAnomaly`\"\u003e`usage_anomaly`\u003c/span\u003e filter may contain only the \u003cspan pulumi-lang-nodejs=\"`metrics`\" pulumi-lang-dotnet=\"`Metrics`\" pulumi-lang-go=\"`metrics`\" pulumi-lang-python=\"`metrics`\" pulumi-lang-yaml=\"`metrics`\" pulumi-lang-java=\"`metrics`\"\u003e`metrics`\u003c/span\u003e field with these values:\n\n- \u003cspan pulumi-lang-nodejs=\"`fluidCpuDuration`\" pulumi-lang-dotnet=\"`FluidCpuDuration`\" pulumi-lang-go=\"`fluidCpuDuration`\" pulumi-lang-python=\"`fluid_cpu_duration`\" pulumi-lang-yaml=\"`fluidCpuDuration`\" pulumi-lang-java=\"`fluidCpuDuration`\"\u003e`fluid_cpu_duration`\u003c/span\u003e\n- \u003cspan pulumi-lang-nodejs=\"`fluidDuration`\" pulumi-lang-dotnet=\"`FluidDuration`\" pulumi-lang-go=\"`fluidDuration`\" pulumi-lang-python=\"`fluid_duration`\" pulumi-lang-yaml=\"`fluidDuration`\" pulumi-lang-java=\"`fluidDuration`\"\u003e`fluid_duration`\u003c/span\u003e\n- \u003cspan pulumi-lang-nodejs=\"`fastDataTransfer`\" pulumi-lang-dotnet=\"`FastDataTransfer`\" pulumi-lang-go=\"`fastDataTransfer`\" pulumi-lang-python=\"`fast_data_transfer`\" pulumi-lang-yaml=\"`fastDataTransfer`\" pulumi-lang-java=\"`fastDataTransfer`\"\u003e`fast_data_transfer`\u003c/span\u003e\n- \u003cspan pulumi-lang-nodejs=\"`edgeRequests`\" pulumi-lang-dotnet=\"`EdgeRequests`\" pulumi-lang-go=\"`edgeRequests`\" pulumi-lang-python=\"`edge_requests`\" pulumi-lang-yaml=\"`edgeRequests`\" pulumi-lang-java=\"`edgeRequests`\"\u003e`edge_requests`\u003c/span\u003e\n- \u003cspan pulumi-lang-nodejs=\"`functionInvocations`\" pulumi-lang-dotnet=\"`FunctionInvocations`\" pulumi-lang-go=\"`functionInvocations`\" pulumi-lang-python=\"`function_invocations`\" pulumi-lang-yaml=\"`functionInvocations`\" pulumi-lang-java=\"`functionInvocations`\"\u003e`function_invocations`\u003c/span\u003e\n\nValid examples:\n\n```text\nmetrics:edge_requests\nmetrics:(edge_requests OR function_invocations)\nNOT metrics:fast_data_transfer\n```\n\nWildcards and regular expressions are not supported for metric names, so `metrics:edge*` is invalid.\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nIf a default team is configured in the provider, use the alert_rule_id.\n\n```sh\n$ pulumi import vercel:index/alertRule:AlertRule example ar_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n```\n\nOtherwise, import via team_id/alert_rule_id.\n\n```sh\n$ pulumi import vercel:index/alertRule:AlertRule example team_xxxxxxxxxxxxxxxxxxxxxxxx/ar_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "integer",
                    "description": "Creation time as a Unix epoch timestamp in milliseconds.\n"
                },
                "isDefault": {
                    "type": "boolean",
                    "description": "Whether this is the immutable team default rule. Default rules cannot be managed by this resource.\n"
                },
                "matchMinimumSeverityLevel": {
                    "type": "string",
                    "description": "The minimum severity matched by a built-in rule. Must be \u003cspan pulumi-lang-nodejs=\"`low`\" pulumi-lang-dotnet=\"`Low`\" pulumi-lang-go=\"`low`\" pulumi-lang-python=\"`low`\" pulumi-lang-yaml=\"`low`\" pulumi-lang-java=\"`low`\"\u003e`low`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`medium`\" pulumi-lang-dotnet=\"`Medium`\" pulumi-lang-go=\"`medium`\" pulumi-lang-python=\"`medium`\" pulumi-lang-yaml=\"`medium`\" pulumi-lang-java=\"`medium`\"\u003e`medium`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`high`\" pulumi-lang-dotnet=\"`High`\" pulumi-lang-go=\"`high`\" pulumi-lang-python=\"`high`\" pulumi-lang-yaml=\"`high`\" pulumi-lang-java=\"`high`\"\u003e`high`\u003c/span\u003e; \u003cspan pulumi-lang-nodejs=\"`high`\" pulumi-lang-dotnet=\"`High`\" pulumi-lang-go=\"`high`\" pulumi-lang-python=\"`high`\" pulumi-lang-yaml=\"`high`\" pulumi-lang-java=\"`high`\"\u003e`high`\u003c/span\u003e matches High and Critical alerts. To notify a destination only for Critical alerts, set \u003cspan pulumi-lang-nodejs=\"`minimumSeverityLevel \" pulumi-lang-dotnet=\"`MinimumSeverityLevel \" pulumi-lang-go=\"`minimumSeverityLevel \" pulumi-lang-python=\"`minimum_severity_level \" pulumi-lang-yaml=\"`minimumSeverityLevel \" pulumi-lang-java=\"`minimumSeverityLevel \"\u003e`minimum_severity_level \u003c/span\u003e= \"critical\"` on the notification link. Existing rules that already use \u003cspan pulumi-lang-nodejs=\"`critical`\" pulumi-lang-dotnet=\"`Critical`\" pulumi-lang-go=\"`critical`\" pulumi-lang-python=\"`critical`\" pulumi-lang-yaml=\"`critical`\" pulumi-lang-java=\"`critical`\"\u003e`critical`\u003c/span\u003e can still be read and imported, but \u003cspan pulumi-lang-nodejs=\"`critical`\" pulumi-lang-dotnet=\"`Critical`\" pulumi-lang-go=\"`critical`\" pulumi-lang-python=\"`critical`\" pulumi-lang-yaml=\"`critical`\" pulumi-lang-java=\"`critical`\"\u003e`critical`\u003c/span\u003e cannot be newly written.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A human-readable name for the alert rule.\n"
                },
                "notificationSettings": {
                    "$ref": "#/types/vercel:index/AlertRuleNotificationSettings:AlertRuleNotificationSettings",
                    "description": "Notification delivery settings stored on the rule. Notification destination links are managed with the \u003cspan pulumi-lang-nodejs=\"`vercel.AlertRuleSlackNotification`\" pulumi-lang-dotnet=\"`vercel.AlertRuleSlackNotification`\" pulumi-lang-go=\"`AlertRuleSlackNotification`\" pulumi-lang-python=\"`AlertRuleSlackNotification`\" pulumi-lang-yaml=\"`vercel.AlertRuleSlackNotification`\" pulumi-lang-java=\"`vercel.AlertRuleSlackNotification`\"\u003e`vercel.AlertRuleSlackNotification`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`vercel.AlertRuleWebhookNotification`\" pulumi-lang-dotnet=\"`vercel.AlertRuleWebhookNotification`\" pulumi-lang-go=\"`AlertRuleWebhookNotification`\" pulumi-lang-python=\"`AlertRuleWebhookNotification`\" pulumi-lang-yaml=\"`vercel.AlertRuleWebhookNotification`\" pulumi-lang-java=\"`vercel.AlertRuleWebhookNotification`\"\u003e`vercel.AlertRuleWebhookNotification`\u003c/span\u003e resources.\n"
                },
                "ruleScope": {
                    "$ref": "#/types/vercel:index/AlertRuleRuleScope:AlertRuleRuleScope",
                    "description": "The projects affected by the rule. Use \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`include`\" pulumi-lang-dotnet=\"`Include`\" pulumi-lang-go=\"`include`\" pulumi-lang-python=\"`include`\" pulumi-lang-yaml=\"`include`\" pulumi-lang-java=\"`include`\"\u003e`include`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`exclude`\" pulumi-lang-dotnet=\"`Exclude`\" pulumi-lang-go=\"`exclude`\" pulumi-lang-python=\"`exclude`\" pulumi-lang-yaml=\"`exclude`\" pulumi-lang-java=\"`exclude`\"\u003e`exclude`\u003c/span\u003e.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Up to 10 unique tags used to organize the rule. Removing all tags clears them.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team that owns the alert rule. Required if a default team is not configured in the provider.\n"
                },
                "triggerMode": {
                    "type": "string",
                    "description": "The API trigger selection mode. \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e and an empty \u003cspan pulumi-lang-nodejs=\"`selected`\" pulumi-lang-dotnet=\"`Selected`\" pulumi-lang-go=\"`selected`\" pulumi-lang-python=\"`selected`\" pulumi-lang-yaml=\"`selected`\" pulumi-lang-java=\"`selected`\"\u003e`selected`\u003c/span\u003e set are response-only legacy states; omit \u003cspan pulumi-lang-nodejs=\"`triggers`\" pulumi-lang-dotnet=\"`Triggers`\" pulumi-lang-go=\"`triggers`\" pulumi-lang-python=\"`triggers`\" pulumi-lang-yaml=\"`triggers`\" pulumi-lang-java=\"`triggers`\"\u003e`triggers`\u003c/span\u003e to preserve either state after import.\n"
                },
                "triggers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/AlertRuleTrigger:AlertRuleTrigger"
                    },
                    "description": "The built-in anomaly triggers enabled for a built-in rule. A nonempty set is required when creating a rule. Omit this attribute to preserve a response-only legacy trigger mode after import.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The alert rule type. Currently only `built-in` is supported.\n"
                },
                "updatedAt": {
                    "type": "integer",
                    "description": "Last update time as a Unix epoch timestamp in milliseconds.\n"
                }
            },
            "required": [
                "createdAt",
                "isDefault",
                "matchMinimumSeverityLevel",
                "name",
                "notificationSettings",
                "ruleScope",
                "teamId",
                "triggerMode",
                "triggers",
                "type",
                "updatedAt"
            ],
            "inputProperties": {
                "matchMinimumSeverityLevel": {
                    "type": "string",
                    "description": "The minimum severity matched by a built-in rule. Must be \u003cspan pulumi-lang-nodejs=\"`low`\" pulumi-lang-dotnet=\"`Low`\" pulumi-lang-go=\"`low`\" pulumi-lang-python=\"`low`\" pulumi-lang-yaml=\"`low`\" pulumi-lang-java=\"`low`\"\u003e`low`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`medium`\" pulumi-lang-dotnet=\"`Medium`\" pulumi-lang-go=\"`medium`\" pulumi-lang-python=\"`medium`\" pulumi-lang-yaml=\"`medium`\" pulumi-lang-java=\"`medium`\"\u003e`medium`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`high`\" pulumi-lang-dotnet=\"`High`\" pulumi-lang-go=\"`high`\" pulumi-lang-python=\"`high`\" pulumi-lang-yaml=\"`high`\" pulumi-lang-java=\"`high`\"\u003e`high`\u003c/span\u003e; \u003cspan pulumi-lang-nodejs=\"`high`\" pulumi-lang-dotnet=\"`High`\" pulumi-lang-go=\"`high`\" pulumi-lang-python=\"`high`\" pulumi-lang-yaml=\"`high`\" pulumi-lang-java=\"`high`\"\u003e`high`\u003c/span\u003e matches High and Critical alerts. To notify a destination only for Critical alerts, set \u003cspan pulumi-lang-nodejs=\"`minimumSeverityLevel \" pulumi-lang-dotnet=\"`MinimumSeverityLevel \" pulumi-lang-go=\"`minimumSeverityLevel \" pulumi-lang-python=\"`minimum_severity_level \" pulumi-lang-yaml=\"`minimumSeverityLevel \" pulumi-lang-java=\"`minimumSeverityLevel \"\u003e`minimum_severity_level \u003c/span\u003e= \"critical\"` on the notification link. Existing rules that already use \u003cspan pulumi-lang-nodejs=\"`critical`\" pulumi-lang-dotnet=\"`Critical`\" pulumi-lang-go=\"`critical`\" pulumi-lang-python=\"`critical`\" pulumi-lang-yaml=\"`critical`\" pulumi-lang-java=\"`critical`\"\u003e`critical`\u003c/span\u003e can still be read and imported, but \u003cspan pulumi-lang-nodejs=\"`critical`\" pulumi-lang-dotnet=\"`Critical`\" pulumi-lang-go=\"`critical`\" pulumi-lang-python=\"`critical`\" pulumi-lang-yaml=\"`critical`\" pulumi-lang-java=\"`critical`\"\u003e`critical`\u003c/span\u003e cannot be newly written.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A human-readable name for the alert rule.\n"
                },
                "notificationSettings": {
                    "$ref": "#/types/vercel:index/AlertRuleNotificationSettings:AlertRuleNotificationSettings",
                    "description": "Notification delivery settings stored on the rule. Notification destination links are managed with the \u003cspan pulumi-lang-nodejs=\"`vercel.AlertRuleSlackNotification`\" pulumi-lang-dotnet=\"`vercel.AlertRuleSlackNotification`\" pulumi-lang-go=\"`AlertRuleSlackNotification`\" pulumi-lang-python=\"`AlertRuleSlackNotification`\" pulumi-lang-yaml=\"`vercel.AlertRuleSlackNotification`\" pulumi-lang-java=\"`vercel.AlertRuleSlackNotification`\"\u003e`vercel.AlertRuleSlackNotification`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`vercel.AlertRuleWebhookNotification`\" pulumi-lang-dotnet=\"`vercel.AlertRuleWebhookNotification`\" pulumi-lang-go=\"`AlertRuleWebhookNotification`\" pulumi-lang-python=\"`AlertRuleWebhookNotification`\" pulumi-lang-yaml=\"`vercel.AlertRuleWebhookNotification`\" pulumi-lang-java=\"`vercel.AlertRuleWebhookNotification`\"\u003e`vercel.AlertRuleWebhookNotification`\u003c/span\u003e resources.\n"
                },
                "ruleScope": {
                    "$ref": "#/types/vercel:index/AlertRuleRuleScope:AlertRuleRuleScope",
                    "description": "The projects affected by the rule. Use \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`include`\" pulumi-lang-dotnet=\"`Include`\" pulumi-lang-go=\"`include`\" pulumi-lang-python=\"`include`\" pulumi-lang-yaml=\"`include`\" pulumi-lang-java=\"`include`\"\u003e`include`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`exclude`\" pulumi-lang-dotnet=\"`Exclude`\" pulumi-lang-go=\"`exclude`\" pulumi-lang-python=\"`exclude`\" pulumi-lang-yaml=\"`exclude`\" pulumi-lang-java=\"`exclude`\"\u003e`exclude`\u003c/span\u003e.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Up to 10 unique tags used to organize the rule. Removing all tags clears them.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team that owns the alert rule. Required if a default team is not configured in the provider.\n"
                },
                "triggers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/AlertRuleTrigger:AlertRuleTrigger"
                    },
                    "description": "The built-in anomaly triggers enabled for a built-in rule. A nonempty set is required when creating a rule. Omit this attribute to preserve a response-only legacy trigger mode after import.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The alert rule type. Currently only `built-in` is supported.\n"
                }
            },
            "requiredInputs": [
                "matchMinimumSeverityLevel",
                "ruleScope",
                "type"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering AlertRule resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "integer",
                        "description": "Creation time as a Unix epoch timestamp in milliseconds.\n"
                    },
                    "isDefault": {
                        "type": "boolean",
                        "description": "Whether this is the immutable team default rule. Default rules cannot be managed by this resource.\n"
                    },
                    "matchMinimumSeverityLevel": {
                        "type": "string",
                        "description": "The minimum severity matched by a built-in rule. Must be \u003cspan pulumi-lang-nodejs=\"`low`\" pulumi-lang-dotnet=\"`Low`\" pulumi-lang-go=\"`low`\" pulumi-lang-python=\"`low`\" pulumi-lang-yaml=\"`low`\" pulumi-lang-java=\"`low`\"\u003e`low`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`medium`\" pulumi-lang-dotnet=\"`Medium`\" pulumi-lang-go=\"`medium`\" pulumi-lang-python=\"`medium`\" pulumi-lang-yaml=\"`medium`\" pulumi-lang-java=\"`medium`\"\u003e`medium`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`high`\" pulumi-lang-dotnet=\"`High`\" pulumi-lang-go=\"`high`\" pulumi-lang-python=\"`high`\" pulumi-lang-yaml=\"`high`\" pulumi-lang-java=\"`high`\"\u003e`high`\u003c/span\u003e; \u003cspan pulumi-lang-nodejs=\"`high`\" pulumi-lang-dotnet=\"`High`\" pulumi-lang-go=\"`high`\" pulumi-lang-python=\"`high`\" pulumi-lang-yaml=\"`high`\" pulumi-lang-java=\"`high`\"\u003e`high`\u003c/span\u003e matches High and Critical alerts. To notify a destination only for Critical alerts, set \u003cspan pulumi-lang-nodejs=\"`minimumSeverityLevel \" pulumi-lang-dotnet=\"`MinimumSeverityLevel \" pulumi-lang-go=\"`minimumSeverityLevel \" pulumi-lang-python=\"`minimum_severity_level \" pulumi-lang-yaml=\"`minimumSeverityLevel \" pulumi-lang-java=\"`minimumSeverityLevel \"\u003e`minimum_severity_level \u003c/span\u003e= \"critical\"` on the notification link. Existing rules that already use \u003cspan pulumi-lang-nodejs=\"`critical`\" pulumi-lang-dotnet=\"`Critical`\" pulumi-lang-go=\"`critical`\" pulumi-lang-python=\"`critical`\" pulumi-lang-yaml=\"`critical`\" pulumi-lang-java=\"`critical`\"\u003e`critical`\u003c/span\u003e can still be read and imported, but \u003cspan pulumi-lang-nodejs=\"`critical`\" pulumi-lang-dotnet=\"`Critical`\" pulumi-lang-go=\"`critical`\" pulumi-lang-python=\"`critical`\" pulumi-lang-yaml=\"`critical`\" pulumi-lang-java=\"`critical`\"\u003e`critical`\u003c/span\u003e cannot be newly written.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "A human-readable name for the alert rule.\n"
                    },
                    "notificationSettings": {
                        "$ref": "#/types/vercel:index/AlertRuleNotificationSettings:AlertRuleNotificationSettings",
                        "description": "Notification delivery settings stored on the rule. Notification destination links are managed with the \u003cspan pulumi-lang-nodejs=\"`vercel.AlertRuleSlackNotification`\" pulumi-lang-dotnet=\"`vercel.AlertRuleSlackNotification`\" pulumi-lang-go=\"`AlertRuleSlackNotification`\" pulumi-lang-python=\"`AlertRuleSlackNotification`\" pulumi-lang-yaml=\"`vercel.AlertRuleSlackNotification`\" pulumi-lang-java=\"`vercel.AlertRuleSlackNotification`\"\u003e`vercel.AlertRuleSlackNotification`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`vercel.AlertRuleWebhookNotification`\" pulumi-lang-dotnet=\"`vercel.AlertRuleWebhookNotification`\" pulumi-lang-go=\"`AlertRuleWebhookNotification`\" pulumi-lang-python=\"`AlertRuleWebhookNotification`\" pulumi-lang-yaml=\"`vercel.AlertRuleWebhookNotification`\" pulumi-lang-java=\"`vercel.AlertRuleWebhookNotification`\"\u003e`vercel.AlertRuleWebhookNotification`\u003c/span\u003e resources.\n"
                    },
                    "ruleScope": {
                        "$ref": "#/types/vercel:index/AlertRuleRuleScope:AlertRuleRuleScope",
                        "description": "The projects affected by the rule. Use \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`include`\" pulumi-lang-dotnet=\"`Include`\" pulumi-lang-go=\"`include`\" pulumi-lang-python=\"`include`\" pulumi-lang-yaml=\"`include`\" pulumi-lang-java=\"`include`\"\u003e`include`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`exclude`\" pulumi-lang-dotnet=\"`Exclude`\" pulumi-lang-go=\"`exclude`\" pulumi-lang-python=\"`exclude`\" pulumi-lang-yaml=\"`exclude`\" pulumi-lang-java=\"`exclude`\"\u003e`exclude`\u003c/span\u003e.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Up to 10 unique tags used to organize the rule. Removing all tags clears them.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the team that owns the alert rule. Required if a default team is not configured in the provider.\n"
                    },
                    "triggerMode": {
                        "type": "string",
                        "description": "The API trigger selection mode. \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e and an empty \u003cspan pulumi-lang-nodejs=\"`selected`\" pulumi-lang-dotnet=\"`Selected`\" pulumi-lang-go=\"`selected`\" pulumi-lang-python=\"`selected`\" pulumi-lang-yaml=\"`selected`\" pulumi-lang-java=\"`selected`\"\u003e`selected`\u003c/span\u003e set are response-only legacy states; omit \u003cspan pulumi-lang-nodejs=\"`triggers`\" pulumi-lang-dotnet=\"`Triggers`\" pulumi-lang-go=\"`triggers`\" pulumi-lang-python=\"`triggers`\" pulumi-lang-yaml=\"`triggers`\" pulumi-lang-java=\"`triggers`\"\u003e`triggers`\u003c/span\u003e to preserve either state after import.\n"
                    },
                    "triggers": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/vercel:index/AlertRuleTrigger:AlertRuleTrigger"
                        },
                        "description": "The built-in anomaly triggers enabled for a built-in rule. A nonempty set is required when creating a rule. Omit this attribute to preserve a response-only legacy trigger mode after import.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The alert rule type. Currently only `built-in` is supported.\n"
                    },
                    "updatedAt": {
                        "type": "integer",
                        "description": "Last update time as a Unix epoch timestamp in milliseconds.\n"
                    }
                },
                "type": "object"
            }
        },
        "vercel:index/alertRuleSlackNotification:AlertRuleSlackNotification": {
            "description": "Manages a link between a Vercel alert rule and one Slack channel.\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 alerts = new vercel.AlertRuleSlackNotification(\"alerts\", {\n    alertRuleId: \"ar_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\n    slackChannelId: \"C0123456789\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nalerts = vercel.AlertRuleSlackNotification(\"alerts\",\n    alert_rule_id=\"ar_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\n    slack_channel_id=\"C0123456789\")\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 alerts = new Vercel.AlertRuleSlackNotification(\"alerts\", new()\n    {\n        AlertRuleId = \"ar_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\n        SlackChannelId = \"C0123456789\",\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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.NewAlertRuleSlackNotification(ctx, \"alerts\", \u0026vercel.AlertRuleSlackNotificationArgs{\n\t\t\tAlertRuleId:    pulumi.String(\"ar_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"),\n\t\t\tSlackChannelId: pulumi.String(\"C0123456789\"),\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.AlertRuleSlackNotification;\nimport com.pulumiverse.vercel.AlertRuleSlackNotificationArgs;\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 alerts = new AlertRuleSlackNotification(\"alerts\", AlertRuleSlackNotificationArgs.builder()\n            .alertRuleId(\"ar_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\")\n            .slackChannelId(\"C0123456789\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  alerts:\n    type: vercel:AlertRuleSlackNotification\n    properties:\n      alertRuleId: ar_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n      slackChannelId: C0123456789\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Destination requirements\n\nEach resource owns one link. Do not manage the same alert-rule and Slack destination pair in multiple Terraform resources or states.\n\nIf the team has exactly one completed Slack installation, \u003cspan pulumi-lang-nodejs=\"`slackInstallationId`\" pulumi-lang-dotnet=\"`SlackInstallationId`\" pulumi-lang-go=\"`slackInstallationId`\" pulumi-lang-python=\"`slack_installation_id`\" pulumi-lang-yaml=\"`slackInstallationId`\" pulumi-lang-java=\"`slackInstallationId`\"\u003e`slack_installation_id`\u003c/span\u003e can be omitted and the provider stores the installation selected by the API in state. Teams with multiple Slack installations must configure \u003cspan pulumi-lang-nodejs=\"`slackInstallationId`\" pulumi-lang-dotnet=\"`SlackInstallationId`\" pulumi-lang-go=\"`slackInstallationId`\" pulumi-lang-python=\"`slack_installation_id`\" pulumi-lang-yaml=\"`slackInstallationId`\" pulumi-lang-java=\"`slackInstallationId`\"\u003e`slack_installation_id`\u003c/span\u003e explicitly. The Vercel bot must already be invited to private channels.\n\nThe special \u003cspan pulumi-lang-nodejs=\"`arDefault`\" pulumi-lang-dotnet=\"`ArDefault`\" pulumi-lang-go=\"`arDefault`\" pulumi-lang-python=\"`ar_default`\" pulumi-lang-yaml=\"`arDefault`\" pulumi-lang-java=\"`arDefault`\"\u003e`ar_default`\u003c/span\u003e alert rule ID is supported even though the default rule itself cannot be managed by \u003cspan pulumi-lang-nodejs=\"`vercel.AlertRule`\" pulumi-lang-dotnet=\"`vercel.AlertRule`\" pulumi-lang-go=\"`AlertRule`\" pulumi-lang-python=\"`AlertRule`\" pulumi-lang-yaml=\"`vercel.AlertRule`\" pulumi-lang-java=\"`vercel.AlertRule`\"\u003e`vercel.AlertRule`\u003c/span\u003e.\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nIf a default team is configured in the provider, import using:\n\n```sh\n$ pulumi import vercel:index/alertRuleSlackNotification:AlertRuleSlackNotification alerts ar_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/icfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/C0123456789\n```\n\nOtherwise, prefix the import ID with the team ID:\n\n```sh\n$ pulumi import vercel:index/alertRuleSlackNotification:AlertRuleSlackNotification alerts team_xxxxxxxxxxxxxxxxxxxxxxxx/ar_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/icfg_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/C0123456789\n```\n\n",
            "properties": {
                "alertRuleId": {
                    "type": "string",
                    "description": "The ID of the alert rule. Use \u003cspan pulumi-lang-nodejs=\"`arDefault`\" pulumi-lang-dotnet=\"`ArDefault`\" pulumi-lang-go=\"`arDefault`\" pulumi-lang-python=\"`ar_default`\" pulumi-lang-yaml=\"`arDefault`\" pulumi-lang-java=\"`arDefault`\"\u003e`ar_default`\u003c/span\u003e to manage a notification destination for the team's default rule.\n"
                },
                "minimumSeverityLevel": {
                    "type": "string",
                    "description": "Set to \u003cspan pulumi-lang-nodejs=\"`critical`\" pulumi-lang-dotnet=\"`Critical`\" pulumi-lang-go=\"`critical`\" pulumi-lang-python=\"`critical`\" pulumi-lang-yaml=\"`critical`\" pulumi-lang-java=\"`critical`\"\u003e`critical`\u003c/span\u003e to notify this destination only when an alert is classified as Critical. For custom alert rules, Critical is assigned after the agent investigation completes. Omit to notify this destination at every severity.\n"
                },
                "slackChannelId": {
                    "type": "string",
                    "description": "The ID of the Slack channel.\n"
                },
                "slackInstallationId": {
                    "type": "string",
                    "description": "The ID of the completed Slack integration installation that owns the channel. It can be omitted when the team has exactly one completed Slack installation; the resolved ID is then stored in state. It must be configured when the team has multiple Slack installations.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team that owns the alert rule and notification destination. Required if a default team is not configured in the provider.\n"
                }
            },
            "required": [
                "alertRuleId",
                "slackChannelId",
                "slackInstallationId",
                "teamId"
            ],
            "inputProperties": {
                "alertRuleId": {
                    "type": "string",
                    "description": "The ID of the alert rule. Use \u003cspan pulumi-lang-nodejs=\"`arDefault`\" pulumi-lang-dotnet=\"`ArDefault`\" pulumi-lang-go=\"`arDefault`\" pulumi-lang-python=\"`ar_default`\" pulumi-lang-yaml=\"`arDefault`\" pulumi-lang-java=\"`arDefault`\"\u003e`ar_default`\u003c/span\u003e to manage a notification destination for the team's default rule.\n"
                },
                "minimumSeverityLevel": {
                    "type": "string",
                    "description": "Set to \u003cspan pulumi-lang-nodejs=\"`critical`\" pulumi-lang-dotnet=\"`Critical`\" pulumi-lang-go=\"`critical`\" pulumi-lang-python=\"`critical`\" pulumi-lang-yaml=\"`critical`\" pulumi-lang-java=\"`critical`\"\u003e`critical`\u003c/span\u003e to notify this destination only when an alert is classified as Critical. For custom alert rules, Critical is assigned after the agent investigation completes. Omit to notify this destination at every severity.\n"
                },
                "slackChannelId": {
                    "type": "string",
                    "description": "The ID of the Slack channel.\n"
                },
                "slackInstallationId": {
                    "type": "string",
                    "description": "The ID of the completed Slack integration installation that owns the channel. It can be omitted when the team has exactly one completed Slack installation; the resolved ID is then stored in state. It must be configured when the team has multiple Slack installations.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team that owns the alert rule and notification destination. Required if a default team is not configured in the provider.\n"
                }
            },
            "requiredInputs": [
                "alertRuleId",
                "slackChannelId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering AlertRuleSlackNotification resources.\n",
                "properties": {
                    "alertRuleId": {
                        "type": "string",
                        "description": "The ID of the alert rule. Use \u003cspan pulumi-lang-nodejs=\"`arDefault`\" pulumi-lang-dotnet=\"`ArDefault`\" pulumi-lang-go=\"`arDefault`\" pulumi-lang-python=\"`ar_default`\" pulumi-lang-yaml=\"`arDefault`\" pulumi-lang-java=\"`arDefault`\"\u003e`ar_default`\u003c/span\u003e to manage a notification destination for the team's default rule.\n"
                    },
                    "minimumSeverityLevel": {
                        "type": "string",
                        "description": "Set to \u003cspan pulumi-lang-nodejs=\"`critical`\" pulumi-lang-dotnet=\"`Critical`\" pulumi-lang-go=\"`critical`\" pulumi-lang-python=\"`critical`\" pulumi-lang-yaml=\"`critical`\" pulumi-lang-java=\"`critical`\"\u003e`critical`\u003c/span\u003e to notify this destination only when an alert is classified as Critical. For custom alert rules, Critical is assigned after the agent investigation completes. Omit to notify this destination at every severity.\n"
                    },
                    "slackChannelId": {
                        "type": "string",
                        "description": "The ID of the Slack channel.\n"
                    },
                    "slackInstallationId": {
                        "type": "string",
                        "description": "The ID of the completed Slack integration installation that owns the channel. It can be omitted when the team has exactly one completed Slack installation; the resolved ID is then stored in state. It must be configured when the team has multiple Slack installations.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the team that owns the alert rule and notification destination. Required if a default team is not configured in the provider.\n"
                    }
                },
                "type": "object"
            }
        },
        "vercel:index/alertRuleWebhookNotification:AlertRuleWebhookNotification": {
            "description": "Manages a link between a Vercel alert rule and one existing account webhook.\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 alerts = new vercel.Webhook(\"alerts\", {\n    endpoint: \"https://example.com/vercel-alerts\",\n    events: [\"alerts.triggered\"],\n});\nconst alertsAlertRuleWebhookNotification = new vercel.AlertRuleWebhookNotification(\"alerts\", {\n    alertRuleId: \"ar_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\n    webhookId: alerts.id,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nalerts = vercel.Webhook(\"alerts\",\n    endpoint=\"https://example.com/vercel-alerts\",\n    events=[\"alerts.triggered\"])\nalerts_alert_rule_webhook_notification = vercel.AlertRuleWebhookNotification(\"alerts\",\n    alert_rule_id=\"ar_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\n    webhook_id=alerts.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 alerts = new Vercel.Webhook(\"alerts\", new()\n    {\n        Endpoint = \"https://example.com/vercel-alerts\",\n        Events = new[]\n        {\n            \"alerts.triggered\",\n        },\n    });\n\n    var alertsAlertRuleWebhookNotification = new Vercel.AlertRuleWebhookNotification(\"alerts\", new()\n    {\n        AlertRuleId = \"ar_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\n        WebhookId = alerts.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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\talerts, err := vercel.NewWebhook(ctx, \"alerts\", \u0026vercel.WebhookArgs{\n\t\t\tEndpoint: pulumi.String(\"https://example.com/vercel-alerts\"),\n\t\t\tEvents: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"alerts.triggered\"),\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.NewAlertRuleWebhookNotification(ctx, \"alerts\", \u0026vercel.AlertRuleWebhookNotificationArgs{\n\t\t\tAlertRuleId: pulumi.String(\"ar_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"),\n\t\t\tWebhookId:   alerts.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.pulumiverse.vercel.Webhook;\nimport com.pulumiverse.vercel.WebhookArgs;\nimport com.pulumiverse.vercel.AlertRuleWebhookNotification;\nimport com.pulumiverse.vercel.AlertRuleWebhookNotificationArgs;\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 alerts = new Webhook(\"alerts\", WebhookArgs.builder()\n            .endpoint(\"https://example.com/vercel-alerts\")\n            .events(\"alerts.triggered\")\n            .build());\n\n        var alertsAlertRuleWebhookNotification = new AlertRuleWebhookNotification(\"alertsAlertRuleWebhookNotification\", AlertRuleWebhookNotificationArgs.builder()\n            .alertRuleId(\"ar_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\")\n            .webhookId(alerts.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  alerts:\n    type: vercel:Webhook\n    properties:\n      endpoint: https://example.com/vercel-alerts\n      events:\n        - alerts.triggered\n  alertsAlertRuleWebhookNotification:\n    type: vercel:AlertRuleWebhookNotification\n    name: alerts\n    properties:\n      alertRuleId: ar_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n      webhookId: ${alerts.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Destination requirements\n\nEach resource owns one link. Do not manage the same alert-rule and webhook pair in multiple Terraform resources or states.\n\nThe webhook must subscribe to `alerts.triggered`, must not set \u003cspan pulumi-lang-nodejs=\"`projectIds`\" pulumi-lang-dotnet=\"`ProjectIds`\" pulumi-lang-go=\"`projectIds`\" pulumi-lang-python=\"`project_ids`\" pulumi-lang-yaml=\"`projectIds`\" pulumi-lang-java=\"`projectIds`\"\u003e`project_ids`\u003c/span\u003e, and must be owned by the account. Configure it separately with \u003cspan pulumi-lang-nodejs=\"`vercel.Webhook`\" pulumi-lang-dotnet=\"`vercel.Webhook`\" pulumi-lang-go=\"`Webhook`\" pulumi-lang-python=\"`Webhook`\" pulumi-lang-yaml=\"`vercel.Webhook`\" pulumi-lang-java=\"`vercel.Webhook`\"\u003e`vercel.Webhook`\u003c/span\u003e, then pass its ID to \u003cspan pulumi-lang-nodejs=\"`webhookId`\" pulumi-lang-dotnet=\"`WebhookId`\" pulumi-lang-go=\"`webhookId`\" pulumi-lang-python=\"`webhook_id`\" pulumi-lang-yaml=\"`webhookId`\" pulumi-lang-java=\"`webhookId`\"\u003e`webhook_id`\u003c/span\u003e.\n\nThe special \u003cspan pulumi-lang-nodejs=\"`arDefault`\" pulumi-lang-dotnet=\"`ArDefault`\" pulumi-lang-go=\"`arDefault`\" pulumi-lang-python=\"`ar_default`\" pulumi-lang-yaml=\"`arDefault`\" pulumi-lang-java=\"`arDefault`\"\u003e`ar_default`\u003c/span\u003e alert rule ID is supported even though the default rule itself cannot be managed by \u003cspan pulumi-lang-nodejs=\"`vercel.AlertRule`\" pulumi-lang-dotnet=\"`vercel.AlertRule`\" pulumi-lang-go=\"`AlertRule`\" pulumi-lang-python=\"`AlertRule`\" pulumi-lang-yaml=\"`vercel.AlertRule`\" pulumi-lang-java=\"`vercel.AlertRule`\"\u003e`vercel.AlertRule`\u003c/span\u003e.\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nIf a default team is configured in the provider, import using:\n\n```sh\n$ pulumi import vercel:index/alertRuleWebhookNotification:AlertRuleWebhookNotification alerts ar_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/hook_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nOtherwise, prefix the import ID with the team ID:\n\n```sh\n$ pulumi import vercel:index/alertRuleWebhookNotification:AlertRuleWebhookNotification alerts team_xxxxxxxxxxxxxxxxxxxxxxxx/ar_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/hook_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n",
            "properties": {
                "alertRuleId": {
                    "type": "string",
                    "description": "The ID of the alert rule. Use \u003cspan pulumi-lang-nodejs=\"`arDefault`\" pulumi-lang-dotnet=\"`ArDefault`\" pulumi-lang-go=\"`arDefault`\" pulumi-lang-python=\"`ar_default`\" pulumi-lang-yaml=\"`arDefault`\" pulumi-lang-java=\"`arDefault`\"\u003e`ar_default`\u003c/span\u003e to manage a notification destination for the team's default rule.\n"
                },
                "minimumSeverityLevel": {
                    "type": "string",
                    "description": "Set to \u003cspan pulumi-lang-nodejs=\"`critical`\" pulumi-lang-dotnet=\"`Critical`\" pulumi-lang-go=\"`critical`\" pulumi-lang-python=\"`critical`\" pulumi-lang-yaml=\"`critical`\" pulumi-lang-java=\"`critical`\"\u003e`critical`\u003c/span\u003e to notify this destination only when an alert is classified as Critical. For custom alert rules, Critical is assigned after the agent investigation completes. Omit to notify this destination at every severity.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team that owns the alert rule and notification destination. Required if a default team is not configured in the provider.\n"
                },
                "webhookId": {
                    "type": "string",
                    "description": "The ID of an existing account webhook subscribed to the `alerts.triggered` event.\n"
                }
            },
            "required": [
                "alertRuleId",
                "teamId",
                "webhookId"
            ],
            "inputProperties": {
                "alertRuleId": {
                    "type": "string",
                    "description": "The ID of the alert rule. Use \u003cspan pulumi-lang-nodejs=\"`arDefault`\" pulumi-lang-dotnet=\"`ArDefault`\" pulumi-lang-go=\"`arDefault`\" pulumi-lang-python=\"`ar_default`\" pulumi-lang-yaml=\"`arDefault`\" pulumi-lang-java=\"`arDefault`\"\u003e`ar_default`\u003c/span\u003e to manage a notification destination for the team's default rule.\n"
                },
                "minimumSeverityLevel": {
                    "type": "string",
                    "description": "Set to \u003cspan pulumi-lang-nodejs=\"`critical`\" pulumi-lang-dotnet=\"`Critical`\" pulumi-lang-go=\"`critical`\" pulumi-lang-python=\"`critical`\" pulumi-lang-yaml=\"`critical`\" pulumi-lang-java=\"`critical`\"\u003e`critical`\u003c/span\u003e to notify this destination only when an alert is classified as Critical. For custom alert rules, Critical is assigned after the agent investigation completes. Omit to notify this destination at every severity.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team that owns the alert rule and notification destination. Required if a default team is not configured in the provider.\n"
                },
                "webhookId": {
                    "type": "string",
                    "description": "The ID of an existing account webhook subscribed to the `alerts.triggered` event.\n"
                }
            },
            "requiredInputs": [
                "alertRuleId",
                "webhookId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering AlertRuleWebhookNotification resources.\n",
                "properties": {
                    "alertRuleId": {
                        "type": "string",
                        "description": "The ID of the alert rule. Use \u003cspan pulumi-lang-nodejs=\"`arDefault`\" pulumi-lang-dotnet=\"`ArDefault`\" pulumi-lang-go=\"`arDefault`\" pulumi-lang-python=\"`ar_default`\" pulumi-lang-yaml=\"`arDefault`\" pulumi-lang-java=\"`arDefault`\"\u003e`ar_default`\u003c/span\u003e to manage a notification destination for the team's default rule.\n"
                    },
                    "minimumSeverityLevel": {
                        "type": "string",
                        "description": "Set to \u003cspan pulumi-lang-nodejs=\"`critical`\" pulumi-lang-dotnet=\"`Critical`\" pulumi-lang-go=\"`critical`\" pulumi-lang-python=\"`critical`\" pulumi-lang-yaml=\"`critical`\" pulumi-lang-java=\"`critical`\"\u003e`critical`\u003c/span\u003e to notify this destination only when an alert is classified as Critical. For custom alert rules, Critical is assigned after the agent investigation completes. Omit to notify this destination at every severity.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the team that owns the alert rule and notification destination. Required if a default team is not configured in the provider.\n"
                    },
                    "webhookId": {
                        "type": "string",
                        "description": "The ID of an existing account webhook subscribed to the `alerts.triggered` event.\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/v5/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\nThe `pulumi import` command can be used, for example:\n\nYou can import via the\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003eand project_id.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n-\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003ecan be found in the project \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e 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/auditLogDrain:AuditLogDrain": {
            "description": "Provides an Audit Log Drain resource.\n\nAudit Log Drains forward team activity events to an HTTP endpoint or Amazon S3. They apply to the whole team and do not support project selection, filtering, or sampling.\n\n\u003e Audit Log Drains are only available to Enterprise teams.\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.AuditLogDrain(\"example\", {\n    name: \"security-audit-events\",\n    http: {\n        endpoint: \"https://siem.example.com/vercel\",\n        encoding: \"ndjson\",\n        compression: \"gzip\",\n        headers: {\n            Authorization: \"Bearer my-secret-token\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.AuditLogDrain(\"example\",\n    name=\"security-audit-events\",\n    http={\n        \"endpoint\": \"https://siem.example.com/vercel\",\n        \"encoding\": \"ndjson\",\n        \"compression\": \"gzip\",\n        \"headers\": {\n            \"Authorization\": \"Bearer my-secret-token\",\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.AuditLogDrain(\"example\", new()\n    {\n        Name = \"security-audit-events\",\n        Http = new Vercel.Inputs.AuditLogDrainHttpArgs\n        {\n            Endpoint = \"https://siem.example.com/vercel\",\n            Encoding = \"ndjson\",\n            Compression = \"gzip\",\n            Headers = \n            {\n                { \"Authorization\", \"Bearer my-secret-token\" },\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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.NewAuditLogDrain(ctx, \"example\", \u0026vercel.AuditLogDrainArgs{\n\t\t\tName: pulumi.String(\"security-audit-events\"),\n\t\t\tHttp: \u0026vercel.AuditLogDrainHttpArgs{\n\t\t\t\tEndpoint:    pulumi.String(\"https://siem.example.com/vercel\"),\n\t\t\t\tEncoding:    pulumi.String(\"ndjson\"),\n\t\t\t\tCompression: pulumi.String(\"gzip\"),\n\t\t\t\tHeaders: pulumi.StringMap{\n\t\t\t\t\t\"Authorization\": pulumi.String(\"Bearer my-secret-token\"),\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.AuditLogDrain;\nimport com.pulumiverse.vercel.AuditLogDrainArgs;\nimport com.pulumi.vercel.inputs.AuditLogDrainHttpArgs;\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 AuditLogDrain(\"example\", AuditLogDrainArgs.builder()\n            .name(\"security-audit-events\")\n            .http(AuditLogDrainHttpArgs.builder()\n                .endpoint(\"https://siem.example.com/vercel\")\n                .encoding(\"ndjson\")\n                .compression(\"gzip\")\n                .headers(Map.of(\"Authorization\", \"Bearer my-secret-token\"))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:AuditLogDrain\n    properties:\n      name: security-audit-events\n      http:\n        endpoint: https://siem.example.com/vercel\n        encoding: ndjson\n        compression: gzip\n        headers:\n          Authorization: Bearer my-secret-token\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nIf importing with a default team configured in the provider, simply use the\naudit_log_drain_id.\n\n```sh\n$ pulumi import vercel:index/auditLogDrain:AuditLogDrain example drn_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nAlternatively, import using team_id/audit_log_drain_id.\n\n```sh\n$ pulumi import vercel:index/auditLogDrain:AuditLogDrain example team_xxxxxxxxxxxxxxxxxxxxxxxx/drn_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n",
            "properties": {
                "http": {
                    "$ref": "#/types/vercel:index/AuditLogDrainHttp:AuditLogDrainHttp",
                    "description": "Configuration for delivery to a custom HTTP endpoint. Exactly one of \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`s3`\" pulumi-lang-dotnet=\"`S3`\" pulumi-lang-go=\"`s3`\" pulumi-lang-python=\"`s3`\" pulumi-lang-yaml=\"`s3`\" pulumi-lang-java=\"`s3`\"\u003e`s3`\u003c/span\u003e must be configured.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A human-readable name for the Audit Log Drain.\n"
                },
                "s3": {
                    "$ref": "#/types/vercel:index/AuditLogDrainS3:AuditLogDrainS3",
                    "description": "Configuration for delivery to an Amazon S3 bucket. Exactly one of \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`s3`\" pulumi-lang-dotnet=\"`S3`\" pulumi-lang-go=\"`s3`\" pulumi-lang-python=\"`s3`\" pulumi-lang-yaml=\"`s3`\" pulumi-lang-java=\"`s3`\"\u003e`s3`\u003c/span\u003e must be configured.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team the Audit Log Drain 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": {
                "http": {
                    "$ref": "#/types/vercel:index/AuditLogDrainHttp:AuditLogDrainHttp",
                    "description": "Configuration for delivery to a custom HTTP endpoint. Exactly one of \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`s3`\" pulumi-lang-dotnet=\"`S3`\" pulumi-lang-go=\"`s3`\" pulumi-lang-python=\"`s3`\" pulumi-lang-yaml=\"`s3`\" pulumi-lang-java=\"`s3`\"\u003e`s3`\u003c/span\u003e must be configured.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A human-readable name for the Audit Log Drain.\n"
                },
                "s3": {
                    "$ref": "#/types/vercel:index/AuditLogDrainS3:AuditLogDrainS3",
                    "description": "Configuration for delivery to an Amazon S3 bucket. Exactly one of \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`s3`\" pulumi-lang-dotnet=\"`S3`\" pulumi-lang-go=\"`s3`\" pulumi-lang-python=\"`s3`\" pulumi-lang-yaml=\"`s3`\" pulumi-lang-java=\"`s3`\"\u003e`s3`\u003c/span\u003e must be configured.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team the Audit Log Drain 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 AuditLogDrain resources.\n",
                "properties": {
                    "http": {
                        "$ref": "#/types/vercel:index/AuditLogDrainHttp:AuditLogDrainHttp",
                        "description": "Configuration for delivery to a custom HTTP endpoint. Exactly one of \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`s3`\" pulumi-lang-dotnet=\"`S3`\" pulumi-lang-go=\"`s3`\" pulumi-lang-python=\"`s3`\" pulumi-lang-yaml=\"`s3`\" pulumi-lang-java=\"`s3`\"\u003e`s3`\u003c/span\u003e must be configured.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "A human-readable name for the Audit Log Drain.\n"
                    },
                    "s3": {
                        "$ref": "#/types/vercel:index/AuditLogDrainS3:AuditLogDrainS3",
                        "description": "Configuration for delivery to an Amazon S3 bucket. Exactly one of \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`s3`\" pulumi-lang-dotnet=\"`S3`\" pulumi-lang-go=\"`s3`\" pulumi-lang-python=\"`s3`\" pulumi-lang-yaml=\"`s3`\" pulumi-lang-java=\"`s3`\"\u003e`s3`\u003c/span\u003e must be configured.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the team the Audit 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/blobObject:BlobObject": {
            "description": "Provides a Vercel Blob object.\n\nThis resource uploads a local file into a Blob store using a deterministic pathname so the object can be managed in place by Terraform.\n\n",
            "properties": {
                "cacheControl": {
                    "type": "string",
                    "description": "The full Cache-Control header stored on the Blob object.\n"
                },
                "cacheControlMaxAge": {
                    "type": "integer",
                    "description": "The cache max-age, in seconds, to apply to the uploaded object.\n"
                },
                "contentDisposition": {
                    "type": "string",
                    "description": "The content disposition returned for the Blob object.\n"
                },
                "contentType": {
                    "type": "string",
                    "description": "The content type to store on the object. When omitted, Vercel infers it from the pathname.\n"
                },
                "downloadUrl": {
                    "type": "string",
                    "description": "The Blob object URL with download semantics enabled.\n"
                },
                "etag": {
                    "type": "string",
                    "description": "The current ETag for the Blob object.\n"
                },
                "pathname": {
                    "type": "string",
                    "description": "The pathname to upload within the Blob store.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the Blob object in bytes.\n"
                },
                "source": {
                    "type": "string",
                    "description": "The local filesystem path to the file that should be uploaded.\n"
                },
                "sourceSha256": {
                    "type": "string",
                    "description": "The SHA-256 of the local source file content used for drift detection.\n"
                },
                "storeId": {
                    "type": "string",
                    "description": "The ID of the Blob store that should contain the object.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team that owns the Blob store. Required when configuring a team resource if a default team has not been set in the provider.\n"
                },
                "uploadedAt": {
                    "type": "string",
                    "description": "The timestamp at which the Blob object was last uploaded.\n"
                },
                "url": {
                    "type": "string",
                    "description": "The canonical URL for the Blob object.\n"
                }
            },
            "required": [
                "cacheControl",
                "cacheControlMaxAge",
                "contentDisposition",
                "contentType",
                "downloadUrl",
                "etag",
                "pathname",
                "size",
                "source",
                "sourceSha256",
                "storeId",
                "teamId",
                "uploadedAt",
                "url"
            ],
            "inputProperties": {
                "cacheControlMaxAge": {
                    "type": "integer",
                    "description": "The cache max-age, in seconds, to apply to the uploaded object.\n"
                },
                "contentType": {
                    "type": "string",
                    "description": "The content type to store on the object. When omitted, Vercel infers it from the pathname.\n"
                },
                "pathname": {
                    "type": "string",
                    "description": "The pathname to upload within the Blob store.\n"
                },
                "source": {
                    "type": "string",
                    "description": "The local filesystem path to the file that should be uploaded.\n"
                },
                "storeId": {
                    "type": "string",
                    "description": "The ID of the Blob store that should contain the object.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team that owns the Blob store. Required when configuring a team resource if a default team has not been set in the provider.\n"
                }
            },
            "requiredInputs": [
                "pathname",
                "source",
                "storeId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering BlobObject resources.\n",
                "properties": {
                    "cacheControl": {
                        "type": "string",
                        "description": "The full Cache-Control header stored on the Blob object.\n"
                    },
                    "cacheControlMaxAge": {
                        "type": "integer",
                        "description": "The cache max-age, in seconds, to apply to the uploaded object.\n"
                    },
                    "contentDisposition": {
                        "type": "string",
                        "description": "The content disposition returned for the Blob object.\n"
                    },
                    "contentType": {
                        "type": "string",
                        "description": "The content type to store on the object. When omitted, Vercel infers it from the pathname.\n"
                    },
                    "downloadUrl": {
                        "type": "string",
                        "description": "The Blob object URL with download semantics enabled.\n"
                    },
                    "etag": {
                        "type": "string",
                        "description": "The current ETag for the Blob object.\n"
                    },
                    "pathname": {
                        "type": "string",
                        "description": "The pathname to upload within the Blob store.\n"
                    },
                    "size": {
                        "type": "integer",
                        "description": "The size of the Blob object in bytes.\n"
                    },
                    "source": {
                        "type": "string",
                        "description": "The local filesystem path to the file that should be uploaded.\n"
                    },
                    "sourceSha256": {
                        "type": "string",
                        "description": "The SHA-256 of the local source file content used for drift detection.\n"
                    },
                    "storeId": {
                        "type": "string",
                        "description": "The ID of the Blob store that should contain the object.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the team that owns the Blob store. Required when configuring a team resource if a default team has not been set in the provider.\n"
                    },
                    "uploadedAt": {
                        "type": "string",
                        "description": "The timestamp at which the Blob object was last uploaded.\n"
                    },
                    "url": {
                        "type": "string",
                        "description": "The canonical URL for the Blob object.\n"
                    }
                },
                "type": "object"
            }
        },
        "vercel:index/blobProjectConnection:BlobProjectConnection": {
            "description": "Provides a project connection for a Vercel Blob store.\n\nThis resource links an existing Blob store to a project and manages the generated `BLOB_READ_WRITE_TOKEN` environment variable prefix and target environments.\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.BlobStore(\"example\", {name: \"example-blob-store\"});\nconst exampleProject = new vercel.Project(\"example\", {name: \"example-blob-project\"});\nconst exampleBlobProjectConnection = new vercel.BlobProjectConnection(\"example\", {\n    blobStoreId: example.id,\n    projectId: exampleProject.id,\n    environments: [\n        \"preview\",\n        \"production\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.BlobStore(\"example\", name=\"example-blob-store\")\nexample_project = vercel.Project(\"example\", name=\"example-blob-project\")\nexample_blob_project_connection = vercel.BlobProjectConnection(\"example\",\n    blob_store_id=example.id,\n    project_id=example_project.id,\n    environments=[\n        \"preview\",\n        \"production\",\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.BlobStore(\"example\", new()\n    {\n        Name = \"example-blob-store\",\n    });\n\n    var exampleProject = new Vercel.Project(\"example\", new()\n    {\n        Name = \"example-blob-project\",\n    });\n\n    var exampleBlobProjectConnection = new Vercel.BlobProjectConnection(\"example\", new()\n    {\n        BlobStoreId = example.Id,\n        ProjectId = exampleProject.Id,\n        Environments = new[]\n        {\n            \"preview\",\n            \"production\",\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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := vercel.NewBlobStore(ctx, \"example\", \u0026vercel.BlobStoreArgs{\n\t\t\tName: pulumi.String(\"example-blob-store\"),\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(\"example-blob-project\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewBlobProjectConnection(ctx, \"example\", \u0026vercel.BlobProjectConnectionArgs{\n\t\t\tBlobStoreId: example.ID(),\n\t\t\tProjectId:   exampleProject.ID(),\n\t\t\tEnvironments: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"preview\"),\n\t\t\t\tpulumi.String(\"production\"),\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.BlobStore;\nimport com.pulumiverse.vercel.BlobStoreArgs;\nimport com.pulumiverse.vercel.Project;\nimport com.pulumiverse.vercel.ProjectArgs;\nimport com.pulumiverse.vercel.BlobProjectConnection;\nimport com.pulumiverse.vercel.BlobProjectConnectionArgs;\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 BlobStore(\"example\", BlobStoreArgs.builder()\n            .name(\"example-blob-store\")\n            .build());\n\n        var exampleProject = new Project(\"exampleProject\", ProjectArgs.builder()\n            .name(\"example-blob-project\")\n            .build());\n\n        var exampleBlobProjectConnection = new BlobProjectConnection(\"exampleBlobProjectConnection\", BlobProjectConnectionArgs.builder()\n            .blobStoreId(example.id())\n            .projectId(exampleProject.id())\n            .environments(            \n                \"preview\",\n                \"production\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:BlobStore\n    properties:\n      name: example-blob-store\n  exampleProject:\n    type: vercel:Project\n    name: example\n    properties:\n      name: example-blob-project\n  exampleBlobProjectConnection:\n    type: vercel:BlobProjectConnection\n    name: example\n    properties:\n      blobStoreId: ${example.id}\n      projectId: ${exampleProject.id}\n      environments:\n        - preview\n        - production\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on\nthe provider, use the Blob store id and connection id.\n\n```sh\n$ pulumi import vercel:index/blobProjectConnection:BlobProjectConnection example store_xxxxxxxxxxxxxxxxxx/spc_xxxxxxxxxxxxxxxxxx\n```\n\nAlternatively, you can import via the team_id, Blob store id, and connection id.\n\n```sh\n$ pulumi import vercel:index/blobProjectConnection:BlobProjectConnection example team_xxxxxxxxxxxxxxxxxxxxxxxx/store_xxxxxxxxxxxxxxxxxx/spc_xxxxxxxxxxxxxxxxxx\n```\n\n",
            "properties": {
                "blobStoreId": {
                    "type": "string",
                    "description": "The ID of the Blob store to connect.\n"
                },
                "envVarPrefix": {
                    "type": "string",
                    "description": "The prefix used for the generated Blob environment variable names.\n"
                },
                "environments": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The environments in which the generated Blob environment variables should be created.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Vercel project to connect to the Blob store.\n"
                },
                "readWriteTokenEnvVarName": {
                    "type": "string",
                    "description": "The generated environment variable name that contains the Blob read/write token.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team that owns the Blob store and project. Required when configuring a team resource if a default team has not been set in the provider.\n"
                }
            },
            "required": [
                "blobStoreId",
                "envVarPrefix",
                "environments",
                "projectId",
                "readWriteTokenEnvVarName",
                "teamId"
            ],
            "inputProperties": {
                "blobStoreId": {
                    "type": "string",
                    "description": "The ID of the Blob store to connect.\n"
                },
                "envVarPrefix": {
                    "type": "string",
                    "description": "The prefix used for the generated Blob environment variable names.\n"
                },
                "environments": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The environments in which the generated Blob environment variables should be created.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Vercel project to connect to the Blob store.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team that owns the Blob store and project. Required when configuring a team resource if a default team has not been set in the provider.\n"
                }
            },
            "requiredInputs": [
                "blobStoreId",
                "projectId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering BlobProjectConnection resources.\n",
                "properties": {
                    "blobStoreId": {
                        "type": "string",
                        "description": "The ID of the Blob store to connect.\n"
                    },
                    "envVarPrefix": {
                        "type": "string",
                        "description": "The prefix used for the generated Blob environment variable names.\n"
                    },
                    "environments": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The environments in which the generated Blob environment variables should be created.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the Vercel project to connect to the Blob store.\n"
                    },
                    "readWriteTokenEnvVarName": {
                        "type": "string",
                        "description": "The generated environment variable name that contains the Blob read/write token.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the team that owns the Blob store and project. Required when configuring a team resource if a default team has not been set in the provider.\n"
                    }
                },
                "type": "object"
            }
        },
        "vercel:index/blobStore:BlobStore": {
            "description": "Provides a Vercel Blob store.\n\nBlob stores are team-scoped storage resources that back Vercel Blob uploads and can be connected to one or more projects.\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.BlobStore(\"example\", {\n    name: \"example-blob-store\",\n    access: \"private\",\n    region: \"iad1\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.BlobStore(\"example\",\n    name=\"example-blob-store\",\n    access=\"private\",\n    region=\"iad1\")\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.BlobStore(\"example\", new()\n    {\n        Name = \"example-blob-store\",\n        Access = \"private\",\n        Region = \"iad1\",\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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.NewBlobStore(ctx, \"example\", \u0026vercel.BlobStoreArgs{\n\t\t\tName:   pulumi.String(\"example-blob-store\"),\n\t\t\tAccess: pulumi.String(\"private\"),\n\t\t\tRegion: pulumi.String(\"iad1\"),\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.BlobStore;\nimport com.pulumiverse.vercel.BlobStoreArgs;\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 BlobStore(\"example\", BlobStoreArgs.builder()\n            .name(\"example-blob-store\")\n            .access(\"private\")\n            .region(\"iad1\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:BlobStore\n    properties:\n      name: example-blob-store\n      access: private\n      region: iad1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on\nthe provider, simply use the Blob store id.\n\n```sh\n$ pulumi import vercel:index/blobStore:BlobStore example store_xxxxxxxxxxxxxxxxxx\n```\n\nAlternatively, you can import via the\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003eand Blob store id.\n\n```sh\n$ pulumi import vercel:index/blobStore:BlobStore example team_xxxxxxxxxxxxxxxxxxxxxxxx/store_xxxxxxxxxxxxxxxxxx\n```\n\n",
            "properties": {
                "access": {
                    "type": "string",
                    "description": "Whether blobs should be created with \u003cspan pulumi-lang-nodejs=\"`public`\" pulumi-lang-dotnet=\"`Public`\" pulumi-lang-go=\"`public`\" pulumi-lang-python=\"`public`\" pulumi-lang-yaml=\"`public`\" pulumi-lang-java=\"`public`\"\u003e`public`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`private`\" pulumi-lang-dotnet=\"`Private`\" pulumi-lang-go=\"`private`\" pulumi-lang-python=\"`private`\" pulumi-lang-yaml=\"`private`\" pulumi-lang-java=\"`private`\"\u003e`private`\u003c/span\u003e access.\n"
                },
                "createdAt": {
                    "type": "integer",
                    "description": "The Unix timestamp, in milliseconds, when the Blob store was created.\n"
                },
                "fileCount": {
                    "type": "integer",
                    "description": "The number of files currently stored in the Blob store.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Blob store.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region in which the Blob store should be created.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the Blob store in bytes.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The current status of the Blob store.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team the Blob store should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"
                },
                "updatedAt": {
                    "type": "integer",
                    "description": "The Unix timestamp, in milliseconds, when the Blob store was last updated.\n"
                }
            },
            "required": [
                "access",
                "createdAt",
                "fileCount",
                "name",
                "region",
                "size",
                "status",
                "teamId",
                "updatedAt"
            ],
            "inputProperties": {
                "access": {
                    "type": "string",
                    "description": "Whether blobs should be created with \u003cspan pulumi-lang-nodejs=\"`public`\" pulumi-lang-dotnet=\"`Public`\" pulumi-lang-go=\"`public`\" pulumi-lang-python=\"`public`\" pulumi-lang-yaml=\"`public`\" pulumi-lang-java=\"`public`\"\u003e`public`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`private`\" pulumi-lang-dotnet=\"`Private`\" pulumi-lang-go=\"`private`\" pulumi-lang-python=\"`private`\" pulumi-lang-yaml=\"`private`\" pulumi-lang-java=\"`private`\"\u003e`private`\u003c/span\u003e access.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Blob store.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region in which the Blob store should be created.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team the Blob store 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 BlobStore resources.\n",
                "properties": {
                    "access": {
                        "type": "string",
                        "description": "Whether blobs should be created with \u003cspan pulumi-lang-nodejs=\"`public`\" pulumi-lang-dotnet=\"`Public`\" pulumi-lang-go=\"`public`\" pulumi-lang-python=\"`public`\" pulumi-lang-yaml=\"`public`\" pulumi-lang-java=\"`public`\"\u003e`public`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`private`\" pulumi-lang-dotnet=\"`Private`\" pulumi-lang-go=\"`private`\" pulumi-lang-python=\"`private`\" pulumi-lang-yaml=\"`private`\" pulumi-lang-java=\"`private`\"\u003e`private`\u003c/span\u003e access.\n"
                    },
                    "createdAt": {
                        "type": "integer",
                        "description": "The Unix timestamp, in milliseconds, when the Blob store was created.\n"
                    },
                    "fileCount": {
                        "type": "integer",
                        "description": "The number of files currently stored in the Blob store.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the Blob store.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "The region in which the Blob store should be created.\n"
                    },
                    "size": {
                        "type": "integer",
                        "description": "The size of the Blob store in bytes.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The current status of the Blob store.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the team the Blob store should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"
                    },
                    "updatedAt": {
                        "type": "integer",
                        "description": "The Unix timestamp, in milliseconds, when the Blob store was last updated.\n"
                    }
                },
                "type": "object"
            }
        },
        "vercel:index/bulkRedirects:BulkRedirects": {
            "description": "Provides a Bulk Redirects resource.\n\nThis resource manages the live project-level bulk redirects for a Vercel project.\nEach apply stages the configured redirect set and promotes that version to production.\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 exampleBulkRedirects = new vercel.BulkRedirects(\"example\", {\n    projectId: example.id,\n    redirects: [\n        {\n            source: \"/old-path\",\n            destination: \"/new-path\",\n            statusCode: 307,\n            caseSensitive: false,\n            query: false,\n        },\n        {\n            source: \"/blog\",\n            destination: \"https://example.com/blog\",\n            statusCode: 308,\n            caseSensitive: true,\n            query: true,\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.Project(\"example\", name=\"example-project\")\nexample_bulk_redirects = vercel.BulkRedirects(\"example\",\n    project_id=example.id,\n    redirects=[\n        {\n            \"source\": \"/old-path\",\n            \"destination\": \"/new-path\",\n            \"status_code\": 307,\n            \"case_sensitive\": False,\n            \"query\": False,\n        },\n        {\n            \"source\": \"/blog\",\n            \"destination\": \"https://example.com/blog\",\n            \"status_code\": 308,\n            \"case_sensitive\": True,\n            \"query\": 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    });\n\n    var exampleBulkRedirects = new Vercel.BulkRedirects(\"example\", new()\n    {\n        ProjectId = example.Id,\n        Redirects = new[]\n        {\n            new Vercel.Inputs.BulkRedirectsRedirectArgs\n            {\n                Source = \"/old-path\",\n                Destination = \"/new-path\",\n                StatusCode = 307,\n                CaseSensitive = false,\n                Query = false,\n            },\n            new Vercel.Inputs.BulkRedirectsRedirectArgs\n            {\n                Source = \"/blog\",\n                Destination = \"https://example.com/blog\",\n                StatusCode = 308,\n                CaseSensitive = true,\n                Query = 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/v5/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.NewBulkRedirects(ctx, \"example\", \u0026vercel.BulkRedirectsArgs{\n\t\t\tProjectId: example.ID(),\n\t\t\tRedirects: vercel.BulkRedirectsRedirectArray{\n\t\t\t\t\u0026vercel.BulkRedirectsRedirectArgs{\n\t\t\t\t\tSource:        pulumi.String(\"/old-path\"),\n\t\t\t\t\tDestination:   pulumi.String(\"/new-path\"),\n\t\t\t\t\tStatusCode:    pulumi.Int(307),\n\t\t\t\t\tCaseSensitive: pulumi.Bool(false),\n\t\t\t\t\tQuery:         pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\t\u0026vercel.BulkRedirectsRedirectArgs{\n\t\t\t\t\tSource:        pulumi.String(\"/blog\"),\n\t\t\t\t\tDestination:   pulumi.String(\"https://example.com/blog\"),\n\t\t\t\t\tStatusCode:    pulumi.Int(308),\n\t\t\t\t\tCaseSensitive: pulumi.Bool(true),\n\t\t\t\t\tQuery:         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.pulumiverse.vercel.BulkRedirects;\nimport com.pulumiverse.vercel.BulkRedirectsArgs;\nimport com.pulumi.vercel.inputs.BulkRedirectsRedirectArgs;\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 exampleBulkRedirects = new BulkRedirects(\"exampleBulkRedirects\", BulkRedirectsArgs.builder()\n            .projectId(example.id())\n            .redirects(            \n                BulkRedirectsRedirectArgs.builder()\n                    .source(\"/old-path\")\n                    .destination(\"/new-path\")\n                    .statusCode(307)\n                    .caseSensitive(false)\n                    .query(false)\n                    .build(),\n                BulkRedirectsRedirectArgs.builder()\n                    .source(\"/blog\")\n                    .destination(\"https://example.com/blog\")\n                    .statusCode(308)\n                    .caseSensitive(true)\n                    .query(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  exampleBulkRedirects:\n    type: vercel:BulkRedirects\n    name: example\n    properties:\n      projectId: ${example.id}\n      redirects:\n        - source: /old-path\n          destination: /new-path\n          statusCode: 307\n          caseSensitive: false\n          query: false\n        - source: /blog\n          destination: https://example.com/blog\n          statusCode: 308\n          caseSensitive: true\n          query: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nIf importing with a team configured on the provider, simply use the project ID.\n-\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003ecan be found in the project \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n\n```sh\n$ pulumi import vercel:index/bulkRedirects:BulkRedirects example prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nAlternatively, you can import via the\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003eand project_id.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n-\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003ecan be found in the project \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n\n```sh\n$ pulumi import vercel:index/bulkRedirects:BulkRedirects example team_xxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n",
            "properties": {
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Vercel project to manage redirects for.\n"
                },
                "redirects": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/BulkRedirectsRedirect:BulkRedirectsRedirect"
                    },
                    "description": "The full set of live bulk redirects for the project.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the Vercel team.\n"
                },
                "versionId": {
                    "type": "string",
                    "description": "The ID of the live bulk redirects version managed by this resource.\n"
                }
            },
            "required": [
                "projectId",
                "redirects",
                "teamId",
                "versionId"
            ],
            "inputProperties": {
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Vercel project to manage redirects for.\n"
                },
                "redirects": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/BulkRedirectsRedirect:BulkRedirectsRedirect"
                    },
                    "description": "The full set of live bulk redirects for the project.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the Vercel team.\n"
                }
            },
            "requiredInputs": [
                "projectId",
                "redirects"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering BulkRedirects resources.\n",
                "properties": {
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the Vercel project to manage redirects for.\n"
                    },
                    "redirects": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/vercel:index/BulkRedirectsRedirect:BulkRedirectsRedirect"
                        },
                        "description": "The full set of live bulk redirects for the project.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the Vercel team.\n"
                    },
                    "versionId": {
                        "type": "string",
                        "description": "The ID of the live bulk redirects version managed by this resource.\n"
                    }
                },
                "type": "object"
            }
        },
        "vercel:index/customAlertRule:CustomAlertRule": {
            "description": "Creates a project-scoped custom Vercel alert rule using the Alerts v3 API. Supports threshold and anomaly conditions on a metric or same-event ratio. Custom alerts must be enabled for the team. Manage Slack and webhook links with \u003cspan pulumi-lang-nodejs=\"`vercel.AlertRuleSlackNotification`\" pulumi-lang-dotnet=\"`vercel.AlertRuleSlackNotification`\" pulumi-lang-go=\"`AlertRuleSlackNotification`\" pulumi-lang-python=\"`AlertRuleSlackNotification`\" pulumi-lang-yaml=\"`vercel.AlertRuleSlackNotification`\" pulumi-lang-java=\"`vercel.AlertRuleSlackNotification`\"\u003e`vercel.AlertRuleSlackNotification`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`vercel.AlertRuleWebhookNotification`\" pulumi-lang-dotnet=\"`vercel.AlertRuleWebhookNotification`\" pulumi-lang-go=\"`AlertRuleWebhookNotification`\" pulumi-lang-python=\"`AlertRuleWebhookNotification`\" pulumi-lang-yaml=\"`vercel.AlertRuleWebhookNotification`\" pulumi-lang-java=\"`vercel.AlertRuleWebhookNotification`\"\u003e`vercel.AlertRuleWebhookNotification`\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\nconst checkout = vercel.getProject({\n    name: \"checkout\",\n});\nconst checkoutErrors = new vercel.CustomAlertRule(\"checkout_errors\", {\n    name: \"Checkout server errors\",\n    projectId: checkout.then(checkout =\u003e checkout.id),\n    severity: \"high\",\n    tags: [\n        \"checkout\",\n        \"payments\",\n    ],\n    evaluation: {\n        window: \"5m\",\n        query: {\n            metrics: {\n                errors: {\n                    metric: \"vercel.request.count\",\n                    aggregation: \"count\",\n                    filter: \"httpStatus \u003e= 500\",\n                },\n            },\n            outputs: [\"errors\"],\n        },\n    },\n    trigger: {\n        type: \"threshold\",\n        output: \"errors\",\n        operator: \"gt\",\n        threshold: 20,\n    },\n    notificationSettings: {\n        enableTeamOwnerNotifications: true,\n    },\n});\nconst checkoutErrorsAlertRuleSlackNotification = new vercel.AlertRuleSlackNotification(\"checkout_errors\", {\n    alertRuleId: checkoutErrors.id,\n    slackChannelId: \"C0123456789\",\n});\n// Page on-call only when the agent investigation classifies the alert as Critical.\nconst checkoutErrorsOncall = new vercel.AlertRuleSlackNotification(\"checkout_errors_oncall\", {\n    alertRuleId: checkoutErrors.id,\n    slackChannelId: \"C0ONCALL00\",\n    minimumSeverityLevel: \"critical\",\n});\nconst alerts = new vercel.Webhook(\"alerts\", {\n    endpoint: \"https://example.com/vercel-alerts\",\n    events: [\"alerts.triggered\"],\n});\nconst checkoutErrorsAlertRuleWebhookNotification = new vercel.AlertRuleWebhookNotification(\"checkout_errors\", {\n    alertRuleId: checkoutErrors.id,\n    webhookId: alerts.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\nimport pulumiverse_vercel as vercel\n\ncheckout = vercel.get_project(name=\"checkout\")\ncheckout_errors = vercel.CustomAlertRule(\"checkout_errors\",\n    name=\"Checkout server errors\",\n    project_id=checkout.id,\n    severity=\"high\",\n    tags=[\n        \"checkout\",\n        \"payments\",\n    ],\n    evaluation={\n        \"window\": \"5m\",\n        \"query\": {\n            \"metrics\": {\n                \"errors\": {\n                    \"metric\": \"vercel.request.count\",\n                    \"aggregation\": \"count\",\n                    \"filter\": \"httpStatus \u003e= 500\",\n                },\n            },\n            \"outputs\": [\"errors\"],\n        },\n    },\n    trigger={\n        \"type\": \"threshold\",\n        \"output\": \"errors\",\n        \"operator\": \"gt\",\n        \"threshold\": 20,\n    },\n    notification_settings={\n        \"enable_team_owner_notifications\": True,\n    })\ncheckout_errors_alert_rule_slack_notification = vercel.AlertRuleSlackNotification(\"checkout_errors\",\n    alert_rule_id=checkout_errors.id,\n    slack_channel_id=\"C0123456789\")\n# Page on-call only when the agent investigation classifies the alert as Critical.\ncheckout_errors_oncall = vercel.AlertRuleSlackNotification(\"checkout_errors_oncall\",\n    alert_rule_id=checkout_errors.id,\n    slack_channel_id=\"C0ONCALL00\",\n    minimum_severity_level=\"critical\")\nalerts = vercel.Webhook(\"alerts\",\n    endpoint=\"https://example.com/vercel-alerts\",\n    events=[\"alerts.triggered\"])\ncheckout_errors_alert_rule_webhook_notification = vercel.AlertRuleWebhookNotification(\"checkout_errors\",\n    alert_rule_id=checkout_errors.id,\n    webhook_id=alerts.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 checkout = Vercel.GetProject.Invoke(new()\n    {\n        Name = \"checkout\",\n    });\n\n    var checkoutErrors = new Vercel.CustomAlertRule(\"checkout_errors\", new()\n    {\n        Name = \"Checkout server errors\",\n        ProjectId = checkout.Apply(getProjectResult =\u003e getProjectResult.Id),\n        Severity = \"high\",\n        Tags = new[]\n        {\n            \"checkout\",\n            \"payments\",\n        },\n        Evaluation = new Vercel.Inputs.CustomAlertRuleEvaluationArgs\n        {\n            Window = \"5m\",\n            Query = new Vercel.Inputs.CustomAlertRuleEvaluationQueryArgs\n            {\n                Metrics = \n                {\n                    { \"errors\", new Vercel.Inputs.CustomAlertRuleEvaluationQueryMetricsArgs\n                    {\n                        Metric = \"vercel.request.count\",\n                        Aggregation = \"count\",\n                        Filter = \"httpStatus \u003e= 500\",\n                    } },\n                },\n                Outputs = new[]\n                {\n                    \"errors\",\n                },\n            },\n        },\n        Trigger = new Vercel.Inputs.CustomAlertRuleTriggerArgs\n        {\n            Type = \"threshold\",\n            Output = \"errors\",\n            Operator = \"gt\",\n            Threshold = 20,\n        },\n        NotificationSettings = new Vercel.Inputs.CustomAlertRuleNotificationSettingsArgs\n        {\n            EnableTeamOwnerNotifications = true,\n        },\n    });\n\n    var checkoutErrorsAlertRuleSlackNotification = new Vercel.AlertRuleSlackNotification(\"checkout_errors\", new()\n    {\n        AlertRuleId = checkoutErrors.Id,\n        SlackChannelId = \"C0123456789\",\n    });\n\n    // Page on-call only when the agent investigation classifies the alert as Critical.\n    var checkoutErrorsOncall = new Vercel.AlertRuleSlackNotification(\"checkout_errors_oncall\", new()\n    {\n        AlertRuleId = checkoutErrors.Id,\n        SlackChannelId = \"C0ONCALL00\",\n        MinimumSeverityLevel = \"critical\",\n    });\n\n    var alerts = new Vercel.Webhook(\"alerts\", new()\n    {\n        Endpoint = \"https://example.com/vercel-alerts\",\n        Events = new[]\n        {\n            \"alerts.triggered\",\n        },\n    });\n\n    var checkoutErrorsAlertRuleWebhookNotification = new Vercel.AlertRuleWebhookNotification(\"checkout_errors\", new()\n    {\n        AlertRuleId = checkoutErrors.Id,\n        WebhookId = alerts.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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcheckout, err := vercel.LookupProject(ctx, \u0026vercel.LookupProjectArgs{\n\t\t\tName: \"checkout\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcheckoutErrors, err := vercel.NewCustomAlertRule(ctx, \"checkout_errors\", \u0026vercel.CustomAlertRuleArgs{\n\t\t\tName:      pulumi.String(\"Checkout server errors\"),\n\t\t\tProjectId: pulumi.String(checkout.Id),\n\t\t\tSeverity:  pulumi.String(\"high\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"checkout\"),\n\t\t\t\tpulumi.String(\"payments\"),\n\t\t\t},\n\t\t\tEvaluation: \u0026vercel.CustomAlertRuleEvaluationArgs{\n\t\t\t\tWindow: pulumi.String(\"5m\"),\n\t\t\t\tQuery: \u0026vercel.CustomAlertRuleEvaluationQueryArgs{\n\t\t\t\t\tMetrics: vercel.CustomAlertRuleEvaluationQueryMetricsMap{\n\t\t\t\t\t\t\"errors\": \u0026vercel.CustomAlertRuleEvaluationQueryMetricsArgs{\n\t\t\t\t\t\t\tMetric:      pulumi.String(\"vercel.request.count\"),\n\t\t\t\t\t\t\tAggregation: pulumi.String(\"count\"),\n\t\t\t\t\t\t\tFilter:      pulumi.String(\"httpStatus \u003e= 500\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tOutputs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"errors\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTrigger: \u0026vercel.CustomAlertRuleTriggerArgs{\n\t\t\t\tType:      pulumi.String(\"threshold\"),\n\t\t\t\tOutput:    pulumi.String(\"errors\"),\n\t\t\t\tOperator:  pulumi.String(\"gt\"),\n\t\t\t\tThreshold: pulumi.Float64(20),\n\t\t\t},\n\t\t\tNotificationSettings: \u0026vercel.CustomAlertRuleNotificationSettingsArgs{\n\t\t\t\tEnableTeamOwnerNotifications: pulumi.Bool(true),\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.NewAlertRuleSlackNotification(ctx, \"checkout_errors\", \u0026vercel.AlertRuleSlackNotificationArgs{\n\t\t\tAlertRuleId:    checkoutErrors.ID(),\n\t\t\tSlackChannelId: pulumi.String(\"C0123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Page on-call only when the agent investigation classifies the alert as Critical.\n\t\t_, err = vercel.NewAlertRuleSlackNotification(ctx, \"checkout_errors_oncall\", \u0026vercel.AlertRuleSlackNotificationArgs{\n\t\t\tAlertRuleId:          checkoutErrors.ID(),\n\t\t\tSlackChannelId:       pulumi.String(\"C0ONCALL00\"),\n\t\t\tMinimumSeverityLevel: pulumi.String(\"critical\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\talerts, err := vercel.NewWebhook(ctx, \"alerts\", \u0026vercel.WebhookArgs{\n\t\t\tEndpoint: pulumi.String(\"https://example.com/vercel-alerts\"),\n\t\t\tEvents: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"alerts.triggered\"),\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.NewAlertRuleWebhookNotification(ctx, \"checkout_errors\", \u0026vercel.AlertRuleWebhookNotificationArgs{\n\t\t\tAlertRuleId: checkoutErrors.ID(),\n\t\t\tWebhookId:   alerts.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.CustomAlertRule;\nimport com.pulumiverse.vercel.CustomAlertRuleArgs;\nimport com.pulumi.vercel.inputs.CustomAlertRuleEvaluationArgs;\nimport com.pulumi.vercel.inputs.CustomAlertRuleEvaluationQueryArgs;\nimport com.pulumi.vercel.inputs.CustomAlertRuleTriggerArgs;\nimport com.pulumi.vercel.inputs.CustomAlertRuleNotificationSettingsArgs;\nimport com.pulumiverse.vercel.AlertRuleSlackNotification;\nimport com.pulumiverse.vercel.AlertRuleSlackNotificationArgs;\nimport com.pulumiverse.vercel.Webhook;\nimport com.pulumiverse.vercel.WebhookArgs;\nimport com.pulumiverse.vercel.AlertRuleWebhookNotification;\nimport com.pulumiverse.vercel.AlertRuleWebhookNotificationArgs;\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 checkout = VercelFunctions.getProject(GetProjectArgs.builder()\n            .name(\"checkout\")\n            .build());\n\n        var checkoutErrors = new CustomAlertRule(\"checkoutErrors\", CustomAlertRuleArgs.builder()\n            .name(\"Checkout server errors\")\n            .projectId(checkout.id())\n            .severity(\"high\")\n            .tags(            \n                \"checkout\",\n                \"payments\")\n            .evaluation(CustomAlertRuleEvaluationArgs.builder()\n                .window(\"5m\")\n                .query(CustomAlertRuleEvaluationQueryArgs.builder()\n                    .metrics(Map.of(\"errors\", CustomAlertRuleEvaluationQueryMetricsArgs.builder()\n                        .metric(\"vercel.request.count\")\n                        .aggregation(\"count\")\n                        .filter(\"httpStatus \u003e= 500\")\n                        .build()))\n                    .outputs(\"errors\")\n                    .build())\n                .build())\n            .trigger(CustomAlertRuleTriggerArgs.builder()\n                .type(\"threshold\")\n                .output(\"errors\")\n                .operator(\"gt\")\n                .threshold(20.0)\n                .build())\n            .notificationSettings(CustomAlertRuleNotificationSettingsArgs.builder()\n                .enableTeamOwnerNotifications(true)\n                .build())\n            .build());\n\n        var checkoutErrorsAlertRuleSlackNotification = new AlertRuleSlackNotification(\"checkoutErrorsAlertRuleSlackNotification\", AlertRuleSlackNotificationArgs.builder()\n            .alertRuleId(checkoutErrors.id())\n            .slackChannelId(\"C0123456789\")\n            .build());\n\n        // Page on-call only when the agent investigation classifies the alert as Critical.\n        var checkoutErrorsOncall = new AlertRuleSlackNotification(\"checkoutErrorsOncall\", AlertRuleSlackNotificationArgs.builder()\n            .alertRuleId(checkoutErrors.id())\n            .slackChannelId(\"C0ONCALL00\")\n            .minimumSeverityLevel(\"critical\")\n            .build());\n\n        var alerts = new Webhook(\"alerts\", WebhookArgs.builder()\n            .endpoint(\"https://example.com/vercel-alerts\")\n            .events(\"alerts.triggered\")\n            .build());\n\n        var checkoutErrorsAlertRuleWebhookNotification = new AlertRuleWebhookNotification(\"checkoutErrorsAlertRuleWebhookNotification\", AlertRuleWebhookNotificationArgs.builder()\n            .alertRuleId(checkoutErrors.id())\n            .webhookId(alerts.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  checkoutErrors:\n    type: vercel:CustomAlertRule\n    name: checkout_errors\n    properties:\n      name: Checkout server errors\n      projectId: ${checkout.id}\n      severity: high\n      tags:\n        - checkout\n        - payments\n      evaluation:\n        window: 5m\n        query:\n          metrics:\n            errors:\n              metric: vercel.request.count\n              aggregation: count\n              filter: httpStatus \u003e= 500\n          outputs:\n            - errors\n      trigger:\n        type: threshold\n        output: errors\n        operator: gt\n        threshold: 20\n      notificationSettings:\n        enableTeamOwnerNotifications: true\n  checkoutErrorsAlertRuleSlackNotification:\n    type: vercel:AlertRuleSlackNotification\n    name: checkout_errors\n    properties:\n      alertRuleId: ${checkoutErrors.id}\n      slackChannelId: C0123456789\n  # Page on-call only when the agent investigation classifies the alert as Critical.\n  checkoutErrorsOncall:\n    type: vercel:AlertRuleSlackNotification\n    name: checkout_errors_oncall\n    properties:\n      alertRuleId: ${checkoutErrors.id}\n      slackChannelId: C0ONCALL00\n      minimumSeverityLevel: critical\n  checkoutErrorsAlertRuleWebhookNotification:\n    type: vercel:AlertRuleWebhookNotification\n    name: checkout_errors\n    properties:\n      alertRuleId: ${checkoutErrors.id}\n      webhookId: ${alerts.id}\n  alerts:\n    type: vercel:Webhook\n    properties:\n      endpoint: https://example.com/vercel-alerts\n      events:\n        - alerts.triggered\nvariables:\n  checkout:\n    fn::invoke:\n      function: vercel:getProject\n      arguments:\n        name: checkout\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInclude the team ID, or omit it when the provider has a default team.\n\n```sh\n$ pulumi import vercel:index/customAlertRule:CustomAlertRule checkout_errors team_123/ar_123\n$ pulumi import vercel:index/customAlertRule:CustomAlertRule checkout_errors ar_123\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "integer",
                    "description": "Creation time as a Unix epoch timestamp in milliseconds.\n"
                },
                "evaluation": {
                    "$ref": "#/types/vercel:index/CustomAlertRuleEvaluation:CustomAlertRuleEvaluation",
                    "description": "The metric query and evaluation window.\n"
                },
                "investigationPrompt": {
                    "type": "string",
                    "description": "Optional guidance stored for agent investigations. The API currently stores this prompt without passing it to the investigation workflow. Removing it clears the stored prompt.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A human-readable name for the alert rule.\n"
                },
                "notificationSettings": {
                    "$ref": "#/types/vercel:index/CustomAlertRuleNotificationSettings:CustomAlertRuleNotificationSettings",
                    "description": "Notification delivery settings stored on the rule. Notification destination links are managed with the \u003cspan pulumi-lang-nodejs=\"`vercel.AlertRuleSlackNotification`\" pulumi-lang-dotnet=\"`vercel.AlertRuleSlackNotification`\" pulumi-lang-go=\"`AlertRuleSlackNotification`\" pulumi-lang-python=\"`AlertRuleSlackNotification`\" pulumi-lang-yaml=\"`vercel.AlertRuleSlackNotification`\" pulumi-lang-java=\"`vercel.AlertRuleSlackNotification`\"\u003e`vercel.AlertRuleSlackNotification`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`vercel.AlertRuleWebhookNotification`\" pulumi-lang-dotnet=\"`vercel.AlertRuleWebhookNotification`\" pulumi-lang-go=\"`AlertRuleWebhookNotification`\" pulumi-lang-python=\"`AlertRuleWebhookNotification`\" pulumi-lang-yaml=\"`vercel.AlertRuleWebhookNotification`\" pulumi-lang-java=\"`vercel.AlertRuleWebhookNotification`\"\u003e`vercel.AlertRuleWebhookNotification`\u003c/span\u003e resources.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The project evaluated by this custom rule. Creating a rule or changing its query requires Observability Plus on this project.\n"
                },
                "severity": {
                    "type": "string",
                    "description": "Severity assigned when the rule triggers: \u003cspan pulumi-lang-nodejs=\"`low`\" pulumi-lang-dotnet=\"`Low`\" pulumi-lang-go=\"`low`\" pulumi-lang-python=\"`low`\" pulumi-lang-yaml=\"`low`\" pulumi-lang-java=\"`low`\"\u003e`low`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`medium`\" pulumi-lang-dotnet=\"`Medium`\" pulumi-lang-go=\"`medium`\" pulumi-lang-python=\"`medium`\" pulumi-lang-yaml=\"`medium`\" pulumi-lang-java=\"`medium`\"\u003e`medium`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`high`\" pulumi-lang-dotnet=\"`High`\" pulumi-lang-go=\"`high`\" pulumi-lang-python=\"`high`\" pulumi-lang-yaml=\"`high`\" pulumi-lang-java=\"`high`\"\u003e`high`\u003c/span\u003e. Critical severity is assigned only by a completed agent investigation.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Up to 10 unique tags used to organize the rule. Removing all tags clears them.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team that owns the alert rule. Required if a default team is not configured in the provider.\n"
                },
                "trigger": {
                    "$ref": "#/types/vercel:index/CustomAlertRuleTrigger:CustomAlertRuleTrigger",
                    "description": "A fixed threshold or anomaly condition on the query output.\n"
                },
                "updatedAt": {
                    "type": "integer",
                    "description": "Last update time as a Unix epoch timestamp in milliseconds.\n"
                }
            },
            "required": [
                "createdAt",
                "evaluation",
                "name",
                "notificationSettings",
                "projectId",
                "severity",
                "teamId",
                "trigger",
                "updatedAt"
            ],
            "inputProperties": {
                "evaluation": {
                    "$ref": "#/types/vercel:index/CustomAlertRuleEvaluation:CustomAlertRuleEvaluation",
                    "description": "The metric query and evaluation window.\n"
                },
                "investigationPrompt": {
                    "type": "string",
                    "description": "Optional guidance stored for agent investigations. The API currently stores this prompt without passing it to the investigation workflow. Removing it clears the stored prompt.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A human-readable name for the alert rule.\n"
                },
                "notificationSettings": {
                    "$ref": "#/types/vercel:index/CustomAlertRuleNotificationSettings:CustomAlertRuleNotificationSettings",
                    "description": "Notification delivery settings stored on the rule. Notification destination links are managed with the \u003cspan pulumi-lang-nodejs=\"`vercel.AlertRuleSlackNotification`\" pulumi-lang-dotnet=\"`vercel.AlertRuleSlackNotification`\" pulumi-lang-go=\"`AlertRuleSlackNotification`\" pulumi-lang-python=\"`AlertRuleSlackNotification`\" pulumi-lang-yaml=\"`vercel.AlertRuleSlackNotification`\" pulumi-lang-java=\"`vercel.AlertRuleSlackNotification`\"\u003e`vercel.AlertRuleSlackNotification`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`vercel.AlertRuleWebhookNotification`\" pulumi-lang-dotnet=\"`vercel.AlertRuleWebhookNotification`\" pulumi-lang-go=\"`AlertRuleWebhookNotification`\" pulumi-lang-python=\"`AlertRuleWebhookNotification`\" pulumi-lang-yaml=\"`vercel.AlertRuleWebhookNotification`\" pulumi-lang-java=\"`vercel.AlertRuleWebhookNotification`\"\u003e`vercel.AlertRuleWebhookNotification`\u003c/span\u003e resources.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The project evaluated by this custom rule. Creating a rule or changing its query requires Observability Plus on this project.\n"
                },
                "severity": {
                    "type": "string",
                    "description": "Severity assigned when the rule triggers: \u003cspan pulumi-lang-nodejs=\"`low`\" pulumi-lang-dotnet=\"`Low`\" pulumi-lang-go=\"`low`\" pulumi-lang-python=\"`low`\" pulumi-lang-yaml=\"`low`\" pulumi-lang-java=\"`low`\"\u003e`low`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`medium`\" pulumi-lang-dotnet=\"`Medium`\" pulumi-lang-go=\"`medium`\" pulumi-lang-python=\"`medium`\" pulumi-lang-yaml=\"`medium`\" pulumi-lang-java=\"`medium`\"\u003e`medium`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`high`\" pulumi-lang-dotnet=\"`High`\" pulumi-lang-go=\"`high`\" pulumi-lang-python=\"`high`\" pulumi-lang-yaml=\"`high`\" pulumi-lang-java=\"`high`\"\u003e`high`\u003c/span\u003e. Critical severity is assigned only by a completed agent investigation.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Up to 10 unique tags used to organize the rule. Removing all tags clears them.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team that owns the alert rule. Required if a default team is not configured in the provider.\n"
                },
                "trigger": {
                    "$ref": "#/types/vercel:index/CustomAlertRuleTrigger:CustomAlertRuleTrigger",
                    "description": "A fixed threshold or anomaly condition on the query output.\n"
                }
            },
            "requiredInputs": [
                "evaluation",
                "projectId",
                "severity",
                "trigger"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering CustomAlertRule resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "integer",
                        "description": "Creation time as a Unix epoch timestamp in milliseconds.\n"
                    },
                    "evaluation": {
                        "$ref": "#/types/vercel:index/CustomAlertRuleEvaluation:CustomAlertRuleEvaluation",
                        "description": "The metric query and evaluation window.\n"
                    },
                    "investigationPrompt": {
                        "type": "string",
                        "description": "Optional guidance stored for agent investigations. The API currently stores this prompt without passing it to the investigation workflow. Removing it clears the stored prompt.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "A human-readable name for the alert rule.\n"
                    },
                    "notificationSettings": {
                        "$ref": "#/types/vercel:index/CustomAlertRuleNotificationSettings:CustomAlertRuleNotificationSettings",
                        "description": "Notification delivery settings stored on the rule. Notification destination links are managed with the \u003cspan pulumi-lang-nodejs=\"`vercel.AlertRuleSlackNotification`\" pulumi-lang-dotnet=\"`vercel.AlertRuleSlackNotification`\" pulumi-lang-go=\"`AlertRuleSlackNotification`\" pulumi-lang-python=\"`AlertRuleSlackNotification`\" pulumi-lang-yaml=\"`vercel.AlertRuleSlackNotification`\" pulumi-lang-java=\"`vercel.AlertRuleSlackNotification`\"\u003e`vercel.AlertRuleSlackNotification`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`vercel.AlertRuleWebhookNotification`\" pulumi-lang-dotnet=\"`vercel.AlertRuleWebhookNotification`\" pulumi-lang-go=\"`AlertRuleWebhookNotification`\" pulumi-lang-python=\"`AlertRuleWebhookNotification`\" pulumi-lang-yaml=\"`vercel.AlertRuleWebhookNotification`\" pulumi-lang-java=\"`vercel.AlertRuleWebhookNotification`\"\u003e`vercel.AlertRuleWebhookNotification`\u003c/span\u003e resources.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The project evaluated by this custom rule. Creating a rule or changing its query requires Observability Plus on this project.\n"
                    },
                    "severity": {
                        "type": "string",
                        "description": "Severity assigned when the rule triggers: \u003cspan pulumi-lang-nodejs=\"`low`\" pulumi-lang-dotnet=\"`Low`\" pulumi-lang-go=\"`low`\" pulumi-lang-python=\"`low`\" pulumi-lang-yaml=\"`low`\" pulumi-lang-java=\"`low`\"\u003e`low`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`medium`\" pulumi-lang-dotnet=\"`Medium`\" pulumi-lang-go=\"`medium`\" pulumi-lang-python=\"`medium`\" pulumi-lang-yaml=\"`medium`\" pulumi-lang-java=\"`medium`\"\u003e`medium`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`high`\" pulumi-lang-dotnet=\"`High`\" pulumi-lang-go=\"`high`\" pulumi-lang-python=\"`high`\" pulumi-lang-yaml=\"`high`\" pulumi-lang-java=\"`high`\"\u003e`high`\u003c/span\u003e. Critical severity is assigned only by a completed agent investigation.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Up to 10 unique tags used to organize the rule. Removing all tags clears them.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the team that owns the alert rule. Required if a default team is not configured in the provider.\n"
                    },
                    "trigger": {
                        "$ref": "#/types/vercel:index/CustomAlertRuleTrigger:CustomAlertRuleTrigger",
                        "description": "A fixed threshold or anomaly condition on the query output.\n"
                    },
                    "updatedAt": {
                        "type": "integer",
                        "description": "Last update time as a Unix epoch timestamp in milliseconds.\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/v5/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/v5/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\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on\nthe provider, simply use the\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003eand custom environment name.\n-\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003ecan be found in the project \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e 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,\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003eand environment variable id.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n-\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003ecan be found in the project \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n\nNote also, that the value field for sensitive environment variables will be imported as \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.\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": {
            "description": "Provides a Deployment resource.\n\nA Deployment is the result of building your Project and making it available through a live URL.\n\nWhen making deployments, the Project will be uploaded and transformed into a production-ready output through the use of a Build Step.\n\nOnce the build step has completed successfully, a new, immutable deployment will be made available at the preview URL. Deployments are retained indefinitely unless deleted manually.\n\n\u003e In order to provide files to a deployment, you'll need to use the \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 or \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 data sources.\n\n\u003e If you are creating Deployments through terraform and intend to use both preview and production\ndeployments, you may wish to 'layer' your terraform, creating the Project with a different set of\nterraform to your Deployment.\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 nextjs UI\n// exists in a `ui` directory and any terraform exists in a `terraform` directory.\n// E.g.\n// ```\n// ui/\n//    src/\n//        index.js\n//    package.json\n//    // etc...\n// terraform/\n//    main.tf\n// ```\nconst filesExample = vercel.getProjectDirectory({\n    path: \"../ui\",\n});\nconst filesExampleGetProject = vercel.getProject({\n    name: \"my-awesome-project\",\n});\nconst filesExampleDeployment = new vercel.Deployment(\"files_example\", {\n    projectId: filesExampleGetProject.then(filesExampleGetProject =\u003e filesExampleGetProject.id),\n    files: filesExample.then(filesExample =\u003e filesExample.files),\n    pathPrefix: filesExample.then(filesExample =\u003e filesExample.path),\n    production: true,\n    environment: {\n        FOO: \"bar\",\n    },\n});\n//# Or deploying a specific commit or branch\nconst gitExample = new vercel.Project(\"git_example\", {\n    name: \"my-awesome-git-project\",\n    framework: \"nextjs\",\n    gitRepository: {\n        type: \"github\",\n        repo: \"vercel/some-repo\",\n    },\n});\nconst gitExampleDeployment = new vercel.Deployment(\"git_example\", {\n    projectId: gitExample.id,\n    ref: \"d92f10e\",\n});\n//# Or deploying a prebuilt project \nconst prebuiltExample = vercel.getProject({\n    name: \"my-prebuilt-project\",\n});\nconst prebuiltExampleGetPrebuiltProject = vercel.getPrebuiltProject({\n    path: \"../ui\",\n});\nconst prebuiltExampleDeployment = new vercel.Deployment(\"prebuilt_example\", {\n    projectId: prebuiltExample.then(prebuiltExample =\u003e prebuiltExample.id),\n    files: prebuiltExampleGetPrebuiltProject.then(prebuiltExampleGetPrebuiltProject =\u003e prebuiltExampleGetPrebuiltProject.output),\n    pathPrefix: prebuiltExampleGetPrebuiltProject.then(prebuiltExampleGetPrebuiltProject =\u003e prebuiltExampleGetPrebuiltProject.path),\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 nextjs UI\n# exists in a `ui` directory and any terraform exists in a `terraform` directory.\n# E.g.\n# ```\n# ui/\n#    src/\n#        index.js\n#    package.json\n#    // etc...\n# terraform/\n#    main.tf\n# ```\nfiles_example = vercel.get_project_directory(path=\"../ui\")\nfiles_example_get_project = vercel.get_project(name=\"my-awesome-project\")\nfiles_example_deployment = vercel.Deployment(\"files_example\",\n    project_id=files_example_get_project.id,\n    files=files_example.files,\n    path_prefix=files_example.path,\n    production=True,\n    environment={\n        \"FOO\": \"bar\",\n    })\n## Or deploying a specific commit or branch\ngit_example = vercel.Project(\"git_example\",\n    name=\"my-awesome-git-project\",\n    framework=\"nextjs\",\n    git_repository={\n        \"type\": \"github\",\n        \"repo\": \"vercel/some-repo\",\n    })\ngit_example_deployment = vercel.Deployment(\"git_example\",\n    project_id=git_example.id,\n    ref=\"d92f10e\")\n## Or deploying a prebuilt project \nprebuilt_example = vercel.get_project(name=\"my-prebuilt-project\")\nprebuilt_example_get_prebuilt_project = vercel.get_prebuilt_project(path=\"../ui\")\nprebuilt_example_deployment = vercel.Deployment(\"prebuilt_example\",\n    project_id=prebuilt_example.id,\n    files=prebuilt_example_get_prebuilt_project.output,\n    path_prefix=prebuilt_example_get_prebuilt_project.path)\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 nextjs UI\n    // exists in a `ui` directory and any terraform exists in a `terraform` directory.\n    // E.g.\n    // ```\n    // ui/\n    //    src/\n    //        index.js\n    //    package.json\n    //    // etc...\n    // terraform/\n    //    main.tf\n    // ```\n    var filesExample = Vercel.GetProjectDirectory.Invoke(new()\n    {\n        Path = \"../ui\",\n    });\n\n    var filesExampleGetProject = Vercel.GetProject.Invoke(new()\n    {\n        Name = \"my-awesome-project\",\n    });\n\n    var filesExampleDeployment = new Vercel.Deployment(\"files_example\", new()\n    {\n        ProjectId = filesExampleGetProject.Apply(getProjectResult =\u003e getProjectResult.Id),\n        Files = filesExample.Apply(getProjectDirectoryResult =\u003e getProjectDirectoryResult.Files),\n        PathPrefix = filesExample.Apply(getProjectDirectoryResult =\u003e getProjectDirectoryResult.Path),\n        Production = true,\n        Environment = \n        {\n            { \"FOO\", \"bar\" },\n        },\n    });\n\n    //# Or deploying a specific commit or branch\n    var gitExample = new Vercel.Project(\"git_example\", new()\n    {\n        Name = \"my-awesome-git-project\",\n        Framework = \"nextjs\",\n        GitRepository = new Vercel.Inputs.ProjectGitRepositoryArgs\n        {\n            Type = \"github\",\n            Repo = \"vercel/some-repo\",\n        },\n    });\n\n    var gitExampleDeployment = new Vercel.Deployment(\"git_example\", new()\n    {\n        ProjectId = gitExample.Id,\n        Ref = \"d92f10e\",\n    });\n\n    //# Or deploying a prebuilt project \n    var prebuiltExample = Vercel.GetProject.Invoke(new()\n    {\n        Name = \"my-prebuilt-project\",\n    });\n\n    var prebuiltExampleGetPrebuiltProject = Vercel.GetPrebuiltProject.Invoke(new()\n    {\n        Path = \"../ui\",\n    });\n\n    var prebuiltExampleDeployment = new Vercel.Deployment(\"prebuilt_example\", new()\n    {\n        ProjectId = prebuiltExample.Apply(getProjectResult =\u003e getProjectResult.Id),\n        Files = prebuiltExampleGetPrebuiltProject.Apply(getPrebuiltProjectResult =\u003e getPrebuiltProjectResult.Output),\n        PathPrefix = prebuiltExampleGetPrebuiltProject.Apply(getPrebuiltProjectResult =\u003e getPrebuiltProjectResult.Path),\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/v5/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 nextjs UI\n\t\t// exists in a `ui` directory and any terraform exists in a `terraform` directory.\n\t\t// E.g.\n\t\t// ```\n\t\t// ui/\n\t\t//\n\t\t//\tsrc/\n\t\t//\t    index.js\n\t\t//\tpackage.json\n\t\t//\t// etc...\n\t\t//\n\t\t// terraform/\n\t\t//\n\t\t//\tmain.tf\n\t\t//\n\t\t// ```\n\t\tfilesExample, err := vercel.GetProjectDirectory(ctx, \u0026vercel.GetProjectDirectoryArgs{\n\t\t\tPath: \"../ui\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfilesExampleGetProject, err := vercel.LookupProject(ctx, \u0026vercel.LookupProjectArgs{\n\t\t\tName: \"my-awesome-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, \"files_example\", \u0026vercel.DeploymentArgs{\n\t\t\tProjectId:  pulumi.String(filesExampleGetProject.Id),\n\t\t\tFiles:      pulumi.StringMap(filesExample.Files),\n\t\t\tPathPrefix: pulumi.String(filesExample.Path),\n\t\t\tProduction: pulumi.Bool(true),\n\t\t\tEnvironment: pulumi.StringMap{\n\t\t\t\t\"FOO\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// # Or deploying a specific commit or branch\n\t\tgitExample, err := vercel.NewProject(ctx, \"git_example\", \u0026vercel.ProjectArgs{\n\t\t\tName:      pulumi.String(\"my-awesome-git-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.NewDeployment(ctx, \"git_example\", \u0026vercel.DeploymentArgs{\n\t\t\tProjectId: gitExample.ID(),\n\t\t\tRef:       pulumi.String(\"d92f10e\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// # Or deploying a prebuilt project\n\t\tprebuiltExample, err := vercel.LookupProject(ctx, \u0026vercel.LookupProjectArgs{\n\t\t\tName: \"my-prebuilt-project\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprebuiltExampleGetPrebuiltProject, err := vercel.GetPrebuiltProject(ctx, \u0026vercel.GetPrebuiltProjectArgs{\n\t\t\tPath: \"../ui\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewDeployment(ctx, \"prebuilt_example\", \u0026vercel.DeploymentArgs{\n\t\t\tProjectId:  pulumi.String(prebuiltExample.Id),\n\t\t\tFiles:      pulumi.StringMap(prebuiltExampleGetPrebuiltProject.Output),\n\t\t\tPathPrefix: pulumi.String(prebuiltExampleGetPrebuiltProject.Path),\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.GetProjectDirectoryArgs;\nimport com.pulumi.vercel.inputs.GetProjectArgs;\nimport com.pulumiverse.vercel.Deployment;\nimport com.pulumiverse.vercel.DeploymentArgs;\nimport com.pulumiverse.vercel.Project;\nimport com.pulumiverse.vercel.ProjectArgs;\nimport com.pulumi.vercel.inputs.ProjectGitRepositoryArgs;\nimport com.pulumi.vercel.inputs.GetPrebuiltProjectArgs;\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 nextjs UI\n        // exists in a `ui` directory and any terraform exists in a `terraform` directory.\n        // E.g.\n        // ```\n        // ui/\n        //    src/\n        //        index.js\n        //    package.json\n        //    // etc...\n        // terraform/\n        //    main.tf\n        // ```\n        final var filesExample = VercelFunctions.getProjectDirectory(GetProjectDirectoryArgs.builder()\n            .path(\"../ui\")\n            .build());\n\n        final var filesExampleGetProject = VercelFunctions.getProject(GetProjectArgs.builder()\n            .name(\"my-awesome-project\")\n            .build());\n\n        var filesExampleDeployment = new Deployment(\"filesExampleDeployment\", DeploymentArgs.builder()\n            .projectId(filesExampleGetProject.id())\n            .files(filesExample.files())\n            .pathPrefix(filesExample.path())\n            .production(true)\n            .environment(Map.of(\"FOO\", \"bar\"))\n            .build());\n\n        //# Or deploying a specific commit or branch\n        var gitExample = new Project(\"gitExample\", ProjectArgs.builder()\n            .name(\"my-awesome-git-project\")\n            .framework(\"nextjs\")\n            .gitRepository(ProjectGitRepositoryArgs.builder()\n                .type(\"github\")\n                .repo(\"vercel/some-repo\")\n                .build())\n            .build());\n\n        var gitExampleDeployment = new Deployment(\"gitExampleDeployment\", DeploymentArgs.builder()\n            .projectId(gitExample.id())\n            .ref(\"d92f10e\")\n            .build());\n\n        //# Or deploying a prebuilt project \n        final var prebuiltExample = VercelFunctions.getProject(GetProjectArgs.builder()\n            .name(\"my-prebuilt-project\")\n            .build());\n\n        final var prebuiltExampleGetPrebuiltProject = VercelFunctions.getPrebuiltProject(GetPrebuiltProjectArgs.builder()\n            .path(\"../ui\")\n            .build());\n\n        var prebuiltExampleDeployment = new Deployment(\"prebuiltExampleDeployment\", DeploymentArgs.builder()\n            .projectId(prebuiltExample.id())\n            .files(prebuiltExampleGetPrebuiltProject.output())\n            .pathPrefix(prebuiltExampleGetPrebuiltProject.path())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  filesExampleDeployment:\n    type: vercel:Deployment\n    name: files_example\n    properties:\n      projectId: ${filesExampleGetProject.id}\n      files: ${filesExample.files}\n      pathPrefix: ${filesExample.path}\n      production: true\n      environment:\n        FOO: bar\n  ## Or deploying a specific commit or branch\n  gitExample:\n    type: vercel:Project\n    name: git_example\n    properties:\n      name: my-awesome-git-project\n      framework: nextjs\n      gitRepository:\n        type: github\n        repo: vercel/some-repo\n  gitExampleDeployment:\n    type: vercel:Deployment\n    name: git_example\n    properties:\n      projectId: ${gitExample.id}\n      ref: d92f10e\n  prebuiltExampleDeployment:\n    type: vercel:Deployment\n    name: prebuilt_example\n    properties:\n      projectId: ${prebuiltExample.id}\n      files: ${prebuiltExampleGetPrebuiltProject.output}\n      pathPrefix: ${prebuiltExampleGetPrebuiltProject.path}\nvariables:\n  # In this example, we are assuming that a nextjs UI\n  # exists in a `ui` directory and any terraform exists in a `terraform` directory.\n  # E.g.\n  # ```\n  # ui/\n  #    src/\n  #        index.js\n  #    package.json\n  #    // etc...\n  # terraform/\n  #    main.tf\n  # ```\n  filesExample:\n    fn::invoke:\n      function: vercel:getProjectDirectory\n      arguments:\n        path: ../ui\n  filesExampleGetProject:\n    fn::invoke:\n      function: vercel:getProject\n      arguments:\n        name: my-awesome-project\n  ## Or deploying a prebuilt project\n  prebuiltExample:\n    fn::invoke:\n      function: vercel:getProject\n      arguments:\n        name: my-prebuilt-project\n  prebuiltExampleGetPrebuiltProject:\n    fn::invoke:\n      function: vercel:getPrebuiltProject\n      arguments:\n        path: ../ui\n```\n\u003c!--End PulumiCodeChooser --\u003e\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",
                    "description": "Set to true to hard delete the Vercel deployment when destroying the Terraform resource. If unspecified, deployments are retained indefinitely. Note that deleted deployments are not recoverable.\n"
                },
                "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",
                    "description": "Set to true to hard delete the Vercel deployment when destroying the Terraform resource. If unspecified, deployments are retained indefinitely. Note that deleted deployments are not recoverable.\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"
                }
            },
            "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",
                        "description": "Set to true to hard delete the Vercel deployment when destroying the Terraform resource. If unspecified, deployments are retained indefinitely. Note that deleted deployments are not recoverable.\n"
                    },
                    "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/deploymentProtectionException:DeploymentProtectionException": {
            "description": "Provides a Deployment Protection Exception resource.\n\nA Deployment Protection Exception makes a preview alias or deployment URL publicly accessible by bypassing Deployment Protection for that 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 = new vercel.Project(\"example\", {\n    name: \"deployment-protection-exception-example\",\n    framework: \"nextjs\",\n});\nconst exampleDeploymentProtectionException = new vercel.DeploymentProtectionException(\"example\", {\n    projectId: example.id,\n    alias: \"preview-branch-name.vercel.app\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.Project(\"example\",\n    name=\"deployment-protection-exception-example\",\n    framework=\"nextjs\")\nexample_deployment_protection_exception = vercel.DeploymentProtectionException(\"example\",\n    project_id=example.id,\n    alias=\"preview-branch-name.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 = new Vercel.Project(\"example\", new()\n    {\n        Name = \"deployment-protection-exception-example\",\n        Framework = \"nextjs\",\n    });\n\n    var exampleDeploymentProtectionException = new Vercel.DeploymentProtectionException(\"example\", new()\n    {\n        ProjectId = example.Id,\n        Alias = \"preview-branch-name.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/v5/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(\"deployment-protection-exception-example\"),\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\t_, err = vercel.NewDeploymentProtectionException(ctx, \"example\", \u0026vercel.DeploymentProtectionExceptionArgs{\n\t\t\tProjectId: example.ID(),\n\t\t\tAlias:     pulumi.String(\"preview-branch-name.vercel.app\"),\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.DeploymentProtectionException;\nimport com.pulumiverse.vercel.DeploymentProtectionExceptionArgs;\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(\"deployment-protection-exception-example\")\n            .framework(\"nextjs\")\n            .build());\n\n        var exampleDeploymentProtectionException = new DeploymentProtectionException(\"exampleDeploymentProtectionException\", DeploymentProtectionExceptionArgs.builder()\n            .projectId(example.id())\n            .alias(\"preview-branch-name.vercel.app\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:Project\n    properties:\n      name: deployment-protection-exception-example\n      framework: nextjs\n  exampleDeploymentProtectionException:\n    type: vercel:DeploymentProtectionException\n    name: example\n    properties:\n      projectId: ${example.id}\n      alias: preview-branch-name.vercel.app\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nImport using the project ID and alias.\n\n```sh\n$ pulumi import vercel:index/deploymentProtectionException:DeploymentProtectionException example prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/preview-branch-name.vercel.app\n```\n\nAlternatively, import using team ID, project ID, and alias.\n\n```sh\n$ pulumi import vercel:index/deploymentProtectionException:DeploymentProtectionException example team_xxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/preview-branch-name.vercel.app\n```\n\n",
            "properties": {
                "alias": {
                    "type": "string",
                    "description": "The preview alias or deployment URL to add to Deployment Protection Exceptions.\n"
                },
                "createdAt": {
                    "type": "integer",
                    "description": "The unix timestamp in milliseconds at which the exception was created.\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "The ID of the user who created the exception.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project the exception belongs to.\n"
                },
                "scope": {
                    "type": "string",
                    "description": "The scope of the exception. Always `alias-protection-override` for Deployment Protection Exceptions.\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": [
                "alias",
                "createdAt",
                "createdBy",
                "projectId",
                "scope",
                "teamId"
            ],
            "inputProperties": {
                "alias": {
                    "type": "string",
                    "description": "The preview alias or deployment URL to add to Deployment Protection Exceptions.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project the exception belongs to.\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": [
                "alias",
                "projectId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DeploymentProtectionException resources.\n",
                "properties": {
                    "alias": {
                        "type": "string",
                        "description": "The preview alias or deployment URL to add to Deployment Protection Exceptions.\n"
                    },
                    "createdAt": {
                        "type": "integer",
                        "description": "The unix timestamp in milliseconds at which the exception was created.\n"
                    },
                    "createdBy": {
                        "type": "string",
                        "description": "The ID of the user who created the exception.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the project the exception belongs to.\n"
                    },
                    "scope": {
                        "type": "string",
                        "description": "The scope of the exception. Always `alias-protection-override` for Deployment Protection Exceptions.\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/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` and `HTTPS`. 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. When using `HTTPS` DNS records, the \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\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 https = new vercel.DnsRecord(\"https\", {\n    domain: \"example.com\",\n    name: \"subdomain\",\n    type: \"HTTPS\",\n    ttl: 60,\n    https: {\n        priority: 1,\n        target: \"example2.com.\",\n        params: \"alpn=h2,h3\",\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    })\nhttps = vercel.DnsRecord(\"https\",\n    domain=\"example.com\",\n    name=\"subdomain\",\n    type=\"HTTPS\",\n    ttl=60,\n    https={\n        \"priority\": 1,\n        \"target\": \"example2.com.\",\n        \"params\": \"alpn=h2,h3\",\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 https = new Vercel.DnsRecord(\"https\", new()\n    {\n        Domain = \"example.com\",\n        Name = \"subdomain\",\n        Type = \"HTTPS\",\n        Ttl = 60,\n        Https = new Vercel.Inputs.DnsRecordHttpsArgs\n        {\n            Priority = 1,\n            Target = \"example2.com.\",\n            Params = \"alpn=h2,h3\",\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/v5/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, \"https\", \u0026vercel.DnsRecordArgs{\n\t\t\tDomain: pulumi.String(\"example.com\"),\n\t\t\tName:   pulumi.String(\"subdomain\"),\n\t\t\tType:   pulumi.String(\"HTTPS\"),\n\t\t\tTtl:    pulumi.Int(60),\n\t\t\tHttps: \u0026vercel.DnsRecordHttpsArgs{\n\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\tTarget:   pulumi.String(\"example2.com.\"),\n\t\t\t\tParams:   pulumi.String(\"alpn=h2,h3\"),\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 com.pulumi.vercel.inputs.DnsRecordHttpsArgs;\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 https = new DnsRecord(\"https\", DnsRecordArgs.builder()\n            .domain(\"example.com\")\n            .name(\"subdomain\")\n            .type(\"HTTPS\")\n            .ttl(60)\n            .https(DnsRecordHttpsArgs.builder()\n                .priority(1)\n                .target(\"example2.com.\")\n                .params(\"alpn=h2,h3\")\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  https:\n    type: vercel:DnsRecord\n    properties:\n      domain: example.com\n      name: subdomain\n      type: HTTPS\n      ttl: 60\n      https:\n        priority: 1\n        target: example2.com.\n        params: alpn=h2,h3\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\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on\nthe provider, simply use the record id.\n-\u003cspan pulumi-lang-nodejs=\" recordId \" pulumi-lang-dotnet=\" RecordId \" pulumi-lang-go=\" recordId \" pulumi-lang-python=\" record_id \" pulumi-lang-yaml=\" recordId \" pulumi-lang-java=\" recordId \"\u003e record_id \u003c/span\u003ecan be taken from the network tab inside developer tools, while you are on the domains page,\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\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003eand record_id.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n-\u003cspan pulumi-lang-nodejs=\" recordId \" pulumi-lang-dotnet=\" RecordId \" pulumi-lang-go=\" recordId \" pulumi-lang-python=\" record_id \" pulumi-lang-yaml=\" recordId \" pulumi-lang-java=\" recordId \"\u003e record_id \u003c/span\u003ecan be taken from the network tab inside developer tools, while you are on the domains page,\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"
                },
                "https": {
                    "$ref": "#/types/vercel:index/DnsRecordHttps:DnsRecordHttps",
                    "description": "Settings for an HTTPS record.\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`, `HTTPS`, `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"
                },
                "https": {
                    "$ref": "#/types/vercel:index/DnsRecordHttps:DnsRecordHttps",
                    "description": "Settings for an HTTPS record.\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`, `HTTPS`, `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"
                    },
                    "https": {
                        "$ref": "#/types/vercel:index/DnsRecordHttps:DnsRecordHttps",
                        "description": "Settings for an HTTPS record.\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`, `HTTPS`, `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    ],\n    sensitive: true,\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    ],\n    sensitive=True,\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        },\n        Sensitive = true,\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/v5/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},\n\t\t\tSensitive: pulumi.Bool(true),\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            .sensitive(true)\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      sensitive: true\n      key: EDGE_CONFIG\n      value: ${exampleEdgeConfigToken.connectionString}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on\nthe provider, simply use the edge config id.\n-\u003cspan pulumi-lang-nodejs=\" edgeConfigId \" pulumi-lang-dotnet=\" EdgeConfigId \" pulumi-lang-go=\" edgeConfigId \" pulumi-lang-python=\" edge_config_id \" pulumi-lang-yaml=\" edgeConfigId \" pulumi-lang-java=\" edgeConfigId \"\u003e edge_config_id \u003c/span\u003ecan 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\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003eand edge_config_id.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n-\u003cspan pulumi-lang-nodejs=\" edgeConfigId \" pulumi-lang-dotnet=\" EdgeConfigId \" pulumi-lang-go=\" edgeConfigId \" pulumi-lang-python=\" edge_config_id \" pulumi-lang-yaml=\" edgeConfigId \" pulumi-lang-java=\" edgeConfigId \"\u003e edge_config_id \u003c/span\u003ecan 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/v5/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\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on\nthe provider, simply use the edge config id and the key of the item to import.\n-\u003cspan pulumi-lang-nodejs=\" edgeConfigId \" pulumi-lang-dotnet=\" EdgeConfigId \" pulumi-lang-go=\" edgeConfigId \" pulumi-lang-python=\" edge_config_id \" pulumi-lang-yaml=\" edgeConfigId \" pulumi-lang-java=\" edgeConfigId \"\u003e edge_config_id \u003c/span\u003ecan be found by navigating to the Edge Config in the Vercel UI. It should begin with `ecfg_`.\n- key is the key of the 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,\u003cspan pulumi-lang-nodejs=\" edgeConfigId \" pulumi-lang-dotnet=\" EdgeConfigId \" pulumi-lang-go=\" edgeConfigId \" pulumi-lang-python=\" edge_config_id \" pulumi-lang-yaml=\" edgeConfigId \" pulumi-lang-java=\" edgeConfigId \"\u003e edge_config_id \u003c/span\u003eand the key of the item to import.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n-\u003cspan pulumi-lang-nodejs=\" edgeConfigId \" pulumi-lang-dotnet=\" EdgeConfigId \" pulumi-lang-go=\" edgeConfigId \" pulumi-lang-python=\" edge_config_id \" pulumi-lang-yaml=\" edgeConfigId \" pulumi-lang-java=\" edgeConfigId \"\u003e edge_config_id \u003c/span\u003ecan be found by navigating to the Edge Config in the Vercel UI. It should begin with `ecfg_`.\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/v5/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\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on\nthe provider, simply use the edge config id.\n-\u003cspan pulumi-lang-nodejs=\" edgeConfigId \" pulumi-lang-dotnet=\" EdgeConfigId \" pulumi-lang-go=\" edgeConfigId \" pulumi-lang-python=\" edge_config_id \" pulumi-lang-yaml=\" edgeConfigId \" pulumi-lang-java=\" edgeConfigId \"\u003e edge_config_id \u003c/span\u003ecan 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\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003eand edge_config_id.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n-\u003cspan pulumi-lang-nodejs=\" edgeConfigId \" pulumi-lang-dotnet=\" EdgeConfigId \" pulumi-lang-go=\" edgeConfigId \" pulumi-lang-python=\" edge_config_id \" pulumi-lang-yaml=\" edgeConfigId \" pulumi-lang-java=\" edgeConfigId \"\u003e edge_config_id \u003c/span\u003ecan 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    ],\n    sensitive: true,\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    ],\n    sensitive=True,\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        },\n        Sensitive = true,\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/v5/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},\n\t\t\tSensitive: pulumi.Bool(true),\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            .sensitive(true)\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      sensitive: true\n      key: EDGE_CONFIG\n      value: ${exampleEdgeConfigToken.connectionString}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on\nthe provider, simply use the edge config id and token value.\n-\u003cspan pulumi-lang-nodejs=\" edgeConfigId \" pulumi-lang-dotnet=\" EdgeConfigId \" pulumi-lang-go=\" edgeConfigId \" pulumi-lang-python=\" edge_config_id \" pulumi-lang-yaml=\" edgeConfigId \" pulumi-lang-java=\" edgeConfigId \"\u003e edge_config_id \u003c/span\u003ecan be found by navigating to the Edge Config in the Vercel UI. It should begin with `ecfg_`.\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\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003eand edge_config_id.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n-\u003cspan pulumi-lang-nodejs=\" edgeConfigId \" pulumi-lang-dotnet=\" EdgeConfigId \" pulumi-lang-go=\" edgeConfigId \" pulumi-lang-python=\" edge_config_id \" pulumi-lang-yaml=\" edgeConfigId \" pulumi-lang-java=\" edgeConfigId \"\u003e edge_config_id \u003c/span\u003ecan be found by navigating to the Edge Config in the Vercel UI. It should begin with `ecfg_`.\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/featureFlagConfig:FeatureFlagConfig": {
            "description": "Provides a Feature Flag Config resource.\n\nThis resource manages the simplified static rollout shape for a flag across \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, and \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\nUse this resource together with \u003cspan pulumi-lang-nodejs=\"`vercel.FeatureFlagDefinition`\" pulumi-lang-dotnet=\"`vercel.FeatureFlagDefinition`\" pulumi-lang-go=\"`FeatureFlagDefinition`\" pulumi-lang-python=\"`FeatureFlagDefinition`\" pulumi-lang-yaml=\"`vercel.FeatureFlagDefinition`\" pulumi-lang-java=\"`vercel.FeatureFlagDefinition`\"\u003e`vercel.FeatureFlagDefinition`\u003c/span\u003e when Terraform should own the rollout. If you omit this resource, the flag definition can still exist while rollout is managed through the Vercel dashboard.\n\nIt is intentionally strict: linked environments, rules, and target overrides must not already be configured on the flag when Terraform manages this resource.\n\nDeleting this resource only removes it from Terraform state. The flag and its current configuration stay in Vercel.\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: \"feature-flag-example\"});\nconst exampleFeatureFlagDefinition = new vercel.FeatureFlagDefinition(\"example\", {\n    projectId: example.id,\n    key: \"checkout-redesign\",\n    description: \"Controls the checkout experience\",\n    kind: \"string\",\n    variants: [\n        {\n            id: \"control\",\n            label: \"Control\",\n            valueString: \"control\",\n        },\n        {\n            id: \"treatment\",\n            label: \"Treatment\",\n            valueString: \"treatment\",\n        },\n    ],\n});\nconst exampleFeatureFlagConfig = new vercel.FeatureFlagConfig(\"example\", {\n    projectId: example.id,\n    flagId: exampleFeatureFlagDefinition.id,\n    production: {\n        enabled: true,\n        defaultVariantId: \"control\",\n        disabledVariantId: \"control\",\n    },\n    preview: {\n        enabled: true,\n        defaultVariantId: \"treatment\",\n        disabledVariantId: \"control\",\n    },\n    development: {\n        enabled: false,\n        defaultVariantId: \"treatment\",\n        disabledVariantId: \"control\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.Project(\"example\", name=\"feature-flag-example\")\nexample_feature_flag_definition = vercel.FeatureFlagDefinition(\"example\",\n    project_id=example.id,\n    key=\"checkout-redesign\",\n    description=\"Controls the checkout experience\",\n    kind=\"string\",\n    variants=[\n        {\n            \"id\": \"control\",\n            \"label\": \"Control\",\n            \"value_string\": \"control\",\n        },\n        {\n            \"id\": \"treatment\",\n            \"label\": \"Treatment\",\n            \"value_string\": \"treatment\",\n        },\n    ])\nexample_feature_flag_config = vercel.FeatureFlagConfig(\"example\",\n    project_id=example.id,\n    flag_id=example_feature_flag_definition.id,\n    production={\n        \"enabled\": True,\n        \"default_variant_id\": \"control\",\n        \"disabled_variant_id\": \"control\",\n    },\n    preview={\n        \"enabled\": True,\n        \"default_variant_id\": \"treatment\",\n        \"disabled_variant_id\": \"control\",\n    },\n    development={\n        \"enabled\": False,\n        \"default_variant_id\": \"treatment\",\n        \"disabled_variant_id\": \"control\",\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 = \"feature-flag-example\",\n    });\n\n    var exampleFeatureFlagDefinition = new Vercel.FeatureFlagDefinition(\"example\", new()\n    {\n        ProjectId = example.Id,\n        Key = \"checkout-redesign\",\n        Description = \"Controls the checkout experience\",\n        Kind = \"string\",\n        Variants = new[]\n        {\n            new Vercel.Inputs.FeatureFlagDefinitionVariantArgs\n            {\n                Id = \"control\",\n                Label = \"Control\",\n                ValueString = \"control\",\n            },\n            new Vercel.Inputs.FeatureFlagDefinitionVariantArgs\n            {\n                Id = \"treatment\",\n                Label = \"Treatment\",\n                ValueString = \"treatment\",\n            },\n        },\n    });\n\n    var exampleFeatureFlagConfig = new Vercel.FeatureFlagConfig(\"example\", new()\n    {\n        ProjectId = example.Id,\n        FlagId = exampleFeatureFlagDefinition.Id,\n        Production = new Vercel.Inputs.FeatureFlagConfigProductionArgs\n        {\n            Enabled = true,\n            DefaultVariantId = \"control\",\n            DisabledVariantId = \"control\",\n        },\n        Preview = new Vercel.Inputs.FeatureFlagConfigPreviewArgs\n        {\n            Enabled = true,\n            DefaultVariantId = \"treatment\",\n            DisabledVariantId = \"control\",\n        },\n        Development = new Vercel.Inputs.FeatureFlagConfigDevelopmentArgs\n        {\n            Enabled = false,\n            DefaultVariantId = \"treatment\",\n            DisabledVariantId = \"control\",\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/v5/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(\"feature-flag-example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleFeatureFlagDefinition, err := vercel.NewFeatureFlagDefinition(ctx, \"example\", \u0026vercel.FeatureFlagDefinitionArgs{\n\t\t\tProjectId:   example.ID(),\n\t\t\tKey:         pulumi.String(\"checkout-redesign\"),\n\t\t\tDescription: pulumi.String(\"Controls the checkout experience\"),\n\t\t\tKind:        pulumi.String(\"string\"),\n\t\t\tVariants: vercel.FeatureFlagDefinitionVariantArray{\n\t\t\t\t\u0026vercel.FeatureFlagDefinitionVariantArgs{\n\t\t\t\t\tId:          pulumi.String(\"control\"),\n\t\t\t\t\tLabel:       pulumi.String(\"Control\"),\n\t\t\t\t\tValueString: pulumi.String(\"control\"),\n\t\t\t\t},\n\t\t\t\t\u0026vercel.FeatureFlagDefinitionVariantArgs{\n\t\t\t\t\tId:          pulumi.String(\"treatment\"),\n\t\t\t\t\tLabel:       pulumi.String(\"Treatment\"),\n\t\t\t\t\tValueString: pulumi.String(\"treatment\"),\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.NewFeatureFlagConfig(ctx, \"example\", \u0026vercel.FeatureFlagConfigArgs{\n\t\t\tProjectId: example.ID(),\n\t\t\tFlagId:    exampleFeatureFlagDefinition.ID(),\n\t\t\tProduction: \u0026vercel.FeatureFlagConfigProductionArgs{\n\t\t\t\tEnabled:           pulumi.Bool(true),\n\t\t\t\tDefaultVariantId:  pulumi.String(\"control\"),\n\t\t\t\tDisabledVariantId: pulumi.String(\"control\"),\n\t\t\t},\n\t\t\tPreview: \u0026vercel.FeatureFlagConfigPreviewArgs{\n\t\t\t\tEnabled:           pulumi.Bool(true),\n\t\t\t\tDefaultVariantId:  pulumi.String(\"treatment\"),\n\t\t\t\tDisabledVariantId: pulumi.String(\"control\"),\n\t\t\t},\n\t\t\tDevelopment: \u0026vercel.FeatureFlagConfigDevelopmentArgs{\n\t\t\t\tEnabled:           pulumi.Bool(false),\n\t\t\t\tDefaultVariantId:  pulumi.String(\"treatment\"),\n\t\t\t\tDisabledVariantId: pulumi.String(\"control\"),\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.FeatureFlagDefinition;\nimport com.pulumiverse.vercel.FeatureFlagDefinitionArgs;\nimport com.pulumi.vercel.inputs.FeatureFlagDefinitionVariantArgs;\nimport com.pulumiverse.vercel.FeatureFlagConfig;\nimport com.pulumiverse.vercel.FeatureFlagConfigArgs;\nimport com.pulumi.vercel.inputs.FeatureFlagConfigProductionArgs;\nimport com.pulumi.vercel.inputs.FeatureFlagConfigPreviewArgs;\nimport com.pulumi.vercel.inputs.FeatureFlagConfigDevelopmentArgs;\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(\"feature-flag-example\")\n            .build());\n\n        var exampleFeatureFlagDefinition = new FeatureFlagDefinition(\"exampleFeatureFlagDefinition\", FeatureFlagDefinitionArgs.builder()\n            .projectId(example.id())\n            .key(\"checkout-redesign\")\n            .description(\"Controls the checkout experience\")\n            .kind(\"string\")\n            .variants(            \n                FeatureFlagDefinitionVariantArgs.builder()\n                    .id(\"control\")\n                    .label(\"Control\")\n                    .valueString(\"control\")\n                    .build(),\n                FeatureFlagDefinitionVariantArgs.builder()\n                    .id(\"treatment\")\n                    .label(\"Treatment\")\n                    .valueString(\"treatment\")\n                    .build())\n            .build());\n\n        var exampleFeatureFlagConfig = new FeatureFlagConfig(\"exampleFeatureFlagConfig\", FeatureFlagConfigArgs.builder()\n            .projectId(example.id())\n            .flagId(exampleFeatureFlagDefinition.id())\n            .production(FeatureFlagConfigProductionArgs.builder()\n                .enabled(true)\n                .defaultVariantId(\"control\")\n                .disabledVariantId(\"control\")\n                .build())\n            .preview(FeatureFlagConfigPreviewArgs.builder()\n                .enabled(true)\n                .defaultVariantId(\"treatment\")\n                .disabledVariantId(\"control\")\n                .build())\n            .development(FeatureFlagConfigDevelopmentArgs.builder()\n                .enabled(false)\n                .defaultVariantId(\"treatment\")\n                .disabledVariantId(\"control\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:Project\n    properties:\n      name: feature-flag-example\n  exampleFeatureFlagDefinition:\n    type: vercel:FeatureFlagDefinition\n    name: example\n    properties:\n      projectId: ${example.id}\n      key: checkout-redesign\n      description: Controls the checkout experience\n      kind: string\n      variants:\n        - id: control\n          label: Control\n          valueString: control\n        - id: treatment\n          label: Treatment\n          valueString: treatment\n  exampleFeatureFlagConfig:\n    type: vercel:FeatureFlagConfig\n    name: example\n    properties:\n      projectId: ${example.id}\n      flagId: ${exampleFeatureFlagDefinition.id}\n      production:\n        enabled: true\n        defaultVariantId: control\n        disabledVariantId: control\n      preview:\n        enabled: true\n        defaultVariantId: treatment\n        disabledVariantId: control\n      development:\n        enabled: false\n        defaultVariantId: treatment\n        disabledVariantId: control\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "properties": {
                "development": {
                    "$ref": "#/types/vercel:index/FeatureFlagConfigDevelopment:FeatureFlagConfigDevelopment",
                    "description": "The development environment behavior for this flag.\n"
                },
                "flagId": {
                    "type": "string",
                    "description": "The ID of the feature flag whose config Terraform should manage.\n"
                },
                "preview": {
                    "$ref": "#/types/vercel:index/FeatureFlagConfigPreview:FeatureFlagConfigPreview",
                    "description": "The preview environment behavior for this flag.\n"
                },
                "production": {
                    "$ref": "#/types/vercel:index/FeatureFlagConfigProduction:FeatureFlagConfigProduction",
                    "description": "The production environment behavior for this flag.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Vercel project that owns the flag.\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": [
                "development",
                "flagId",
                "preview",
                "production",
                "projectId",
                "teamId"
            ],
            "inputProperties": {
                "development": {
                    "$ref": "#/types/vercel:index/FeatureFlagConfigDevelopment:FeatureFlagConfigDevelopment",
                    "description": "The development environment behavior for this flag.\n"
                },
                "flagId": {
                    "type": "string",
                    "description": "The ID of the feature flag whose config Terraform should manage.\n"
                },
                "preview": {
                    "$ref": "#/types/vercel:index/FeatureFlagConfigPreview:FeatureFlagConfigPreview",
                    "description": "The preview environment behavior for this flag.\n"
                },
                "production": {
                    "$ref": "#/types/vercel:index/FeatureFlagConfigProduction:FeatureFlagConfigProduction",
                    "description": "The production environment behavior for this flag.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Vercel project that owns the flag.\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": [
                "development",
                "flagId",
                "preview",
                "production",
                "projectId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering FeatureFlagConfig resources.\n",
                "properties": {
                    "development": {
                        "$ref": "#/types/vercel:index/FeatureFlagConfigDevelopment:FeatureFlagConfigDevelopment",
                        "description": "The development environment behavior for this flag.\n"
                    },
                    "flagId": {
                        "type": "string",
                        "description": "The ID of the feature flag whose config Terraform should manage.\n"
                    },
                    "preview": {
                        "$ref": "#/types/vercel:index/FeatureFlagConfigPreview:FeatureFlagConfigPreview",
                        "description": "The preview environment behavior for this flag.\n"
                    },
                    "production": {
                        "$ref": "#/types/vercel:index/FeatureFlagConfigProduction:FeatureFlagConfigProduction",
                        "description": "The production environment behavior for this flag.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the Vercel project that owns the flag.\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/featureFlagDefinition:FeatureFlagDefinition": {
            "description": "Provides a Feature Flag Definition resource.\n\nThis resource owns the stable flag contract: the flag key, kind, description, archival state, and variants.\n\nUse this resource by itself when you want Terraform to register the flag but leave ongoing rollout and targeting to the Vercel dashboard.\n\nVercel requires environments when a flag is created, so this resource bootstraps all environments in a paused state using the neutral control/off variant until rollout is managed elsewhere.\n\nIf Terraform should also manage the simplified per-environment rollout, pair this resource with \u003cspan pulumi-lang-nodejs=\"`vercel.FeatureFlagConfig`\" pulumi-lang-dotnet=\"`vercel.FeatureFlagConfig`\" pulumi-lang-go=\"`FeatureFlagConfig`\" pulumi-lang-python=\"`FeatureFlagConfig`\" pulumi-lang-yaml=\"`vercel.FeatureFlagConfig`\" pulumi-lang-java=\"`vercel.FeatureFlagConfig`\"\u003e`vercel.FeatureFlagConfig`\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\nconst example = new vercel.Project(\"example\", {name: \"feature-flag-example\"});\nconst exampleFeatureFlagDefinition = new vercel.FeatureFlagDefinition(\"example\", {\n    projectId: example.id,\n    key: \"checkout-redesign\",\n    description: \"Controls the checkout experience\",\n    kind: \"string\",\n    variants: [\n        {\n            id: \"control\",\n            label: \"Control\",\n            valueString: \"control\",\n        },\n        {\n            id: \"treatment\",\n            label: \"Treatment\",\n            valueString: \"treatment\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.Project(\"example\", name=\"feature-flag-example\")\nexample_feature_flag_definition = vercel.FeatureFlagDefinition(\"example\",\n    project_id=example.id,\n    key=\"checkout-redesign\",\n    description=\"Controls the checkout experience\",\n    kind=\"string\",\n    variants=[\n        {\n            \"id\": \"control\",\n            \"label\": \"Control\",\n            \"value_string\": \"control\",\n        },\n        {\n            \"id\": \"treatment\",\n            \"label\": \"Treatment\",\n            \"value_string\": \"treatment\",\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 = \"feature-flag-example\",\n    });\n\n    var exampleFeatureFlagDefinition = new Vercel.FeatureFlagDefinition(\"example\", new()\n    {\n        ProjectId = example.Id,\n        Key = \"checkout-redesign\",\n        Description = \"Controls the checkout experience\",\n        Kind = \"string\",\n        Variants = new[]\n        {\n            new Vercel.Inputs.FeatureFlagDefinitionVariantArgs\n            {\n                Id = \"control\",\n                Label = \"Control\",\n                ValueString = \"control\",\n            },\n            new Vercel.Inputs.FeatureFlagDefinitionVariantArgs\n            {\n                Id = \"treatment\",\n                Label = \"Treatment\",\n                ValueString = \"treatment\",\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/v5/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(\"feature-flag-example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewFeatureFlagDefinition(ctx, \"example\", \u0026vercel.FeatureFlagDefinitionArgs{\n\t\t\tProjectId:   example.ID(),\n\t\t\tKey:         pulumi.String(\"checkout-redesign\"),\n\t\t\tDescription: pulumi.String(\"Controls the checkout experience\"),\n\t\t\tKind:        pulumi.String(\"string\"),\n\t\t\tVariants: vercel.FeatureFlagDefinitionVariantArray{\n\t\t\t\t\u0026vercel.FeatureFlagDefinitionVariantArgs{\n\t\t\t\t\tId:          pulumi.String(\"control\"),\n\t\t\t\t\tLabel:       pulumi.String(\"Control\"),\n\t\t\t\t\tValueString: pulumi.String(\"control\"),\n\t\t\t\t},\n\t\t\t\t\u0026vercel.FeatureFlagDefinitionVariantArgs{\n\t\t\t\t\tId:          pulumi.String(\"treatment\"),\n\t\t\t\t\tLabel:       pulumi.String(\"Treatment\"),\n\t\t\t\t\tValueString: pulumi.String(\"treatment\"),\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.FeatureFlagDefinition;\nimport com.pulumiverse.vercel.FeatureFlagDefinitionArgs;\nimport com.pulumi.vercel.inputs.FeatureFlagDefinitionVariantArgs;\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(\"feature-flag-example\")\n            .build());\n\n        var exampleFeatureFlagDefinition = new FeatureFlagDefinition(\"exampleFeatureFlagDefinition\", FeatureFlagDefinitionArgs.builder()\n            .projectId(example.id())\n            .key(\"checkout-redesign\")\n            .description(\"Controls the checkout experience\")\n            .kind(\"string\")\n            .variants(            \n                FeatureFlagDefinitionVariantArgs.builder()\n                    .id(\"control\")\n                    .label(\"Control\")\n                    .valueString(\"control\")\n                    .build(),\n                FeatureFlagDefinitionVariantArgs.builder()\n                    .id(\"treatment\")\n                    .label(\"Treatment\")\n                    .valueString(\"treatment\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:Project\n    properties:\n      name: feature-flag-example\n  exampleFeatureFlagDefinition:\n    type: vercel:FeatureFlagDefinition\n    name: example\n    properties:\n      projectId: ${example.id}\n      key: checkout-redesign\n      description: Controls the checkout experience\n      kind: string\n      variants:\n        - id: control\n          label: Control\n          valueString: control\n        - id: treatment\n          label: Treatment\n          valueString: treatment\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "properties": {
                "archived": {
                    "type": "boolean",
                    "description": "Whether the flag should be archived instead of active.\n"
                },
                "description": {
                    "type": "string",
                    "description": "A human-readable description of the flag.\n"
                },
                "key": {
                    "type": "string",
                    "description": "The stable flag key used in your application code.\n"
                },
                "kind": {
                    "type": "string",
                    "description": "The type of value this flag returns. Must be one of \u003cspan pulumi-lang-nodejs=\"`boolean`\" pulumi-lang-dotnet=\"`Boolean`\" pulumi-lang-go=\"`boolean`\" pulumi-lang-python=\"`boolean`\" pulumi-lang-yaml=\"`boolean`\" pulumi-lang-java=\"`boolean`\"\u003e`boolean`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`string`\" pulumi-lang-dotnet=\"`String`\" pulumi-lang-go=\"`string`\" pulumi-lang-python=\"`string`\" pulumi-lang-yaml=\"`string`\" pulumi-lang-java=\"`string`\"\u003e`string`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`number`\" pulumi-lang-dotnet=\"`Number`\" pulumi-lang-go=\"`number`\" pulumi-lang-python=\"`number`\" pulumi-lang-yaml=\"`number`\" pulumi-lang-java=\"`number`\"\u003e`number`\u003c/span\u003e.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Vercel project that owns the flag.\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"
                },
                "variants": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/FeatureFlagDefinitionVariant:FeatureFlagDefinitionVariant"
                    },
                    "description": "The variants available for this flag.\n"
                }
            },
            "required": [
                "archived",
                "key",
                "kind",
                "projectId",
                "teamId",
                "variants"
            ],
            "inputProperties": {
                "archived": {
                    "type": "boolean",
                    "description": "Whether the flag should be archived instead of active.\n"
                },
                "description": {
                    "type": "string",
                    "description": "A human-readable description of the flag.\n"
                },
                "key": {
                    "type": "string",
                    "description": "The stable flag key used in your application code.\n"
                },
                "kind": {
                    "type": "string",
                    "description": "The type of value this flag returns. Must be one of \u003cspan pulumi-lang-nodejs=\"`boolean`\" pulumi-lang-dotnet=\"`Boolean`\" pulumi-lang-go=\"`boolean`\" pulumi-lang-python=\"`boolean`\" pulumi-lang-yaml=\"`boolean`\" pulumi-lang-java=\"`boolean`\"\u003e`boolean`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`string`\" pulumi-lang-dotnet=\"`String`\" pulumi-lang-go=\"`string`\" pulumi-lang-python=\"`string`\" pulumi-lang-yaml=\"`string`\" pulumi-lang-java=\"`string`\"\u003e`string`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`number`\" pulumi-lang-dotnet=\"`Number`\" pulumi-lang-go=\"`number`\" pulumi-lang-python=\"`number`\" pulumi-lang-yaml=\"`number`\" pulumi-lang-java=\"`number`\"\u003e`number`\u003c/span\u003e.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Vercel project that owns the flag.\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"
                },
                "variants": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/FeatureFlagDefinitionVariant:FeatureFlagDefinitionVariant"
                    },
                    "description": "The variants available for this flag.\n"
                }
            },
            "requiredInputs": [
                "key",
                "kind",
                "projectId",
                "variants"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering FeatureFlagDefinition resources.\n",
                "properties": {
                    "archived": {
                        "type": "boolean",
                        "description": "Whether the flag should be archived instead of active.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "A human-readable description of the flag.\n"
                    },
                    "key": {
                        "type": "string",
                        "description": "The stable flag key used in your application code.\n"
                    },
                    "kind": {
                        "type": "string",
                        "description": "The type of value this flag returns. Must be one of \u003cspan pulumi-lang-nodejs=\"`boolean`\" pulumi-lang-dotnet=\"`Boolean`\" pulumi-lang-go=\"`boolean`\" pulumi-lang-python=\"`boolean`\" pulumi-lang-yaml=\"`boolean`\" pulumi-lang-java=\"`boolean`\"\u003e`boolean`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`string`\" pulumi-lang-dotnet=\"`String`\" pulumi-lang-go=\"`string`\" pulumi-lang-python=\"`string`\" pulumi-lang-yaml=\"`string`\" pulumi-lang-java=\"`string`\"\u003e`string`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`number`\" pulumi-lang-dotnet=\"`Number`\" pulumi-lang-go=\"`number`\" pulumi-lang-python=\"`number`\" pulumi-lang-yaml=\"`number`\" pulumi-lang-java=\"`number`\"\u003e`number`\u003c/span\u003e.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the Vercel project that owns the flag.\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"
                    },
                    "variants": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/vercel:index/FeatureFlagDefinitionVariant:FeatureFlagDefinitionVariant"
                        },
                        "description": "The variants available for this flag.\n"
                    }
                },
                "type": "object"
            }
        },
        "vercel:index/featureFlagSdkKey:FeatureFlagSdkKey": {
            "description": "Provides a Feature Flag SDK Key resource.\n\nSDK keys are project-scoped and environment-specific. Vercel only returns the cleartext SDK key and connection string at creation time, so this resource preserves the existing sensitive values in state when later reads omit them.\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: \"feature-flag-sdk-key-example\"});\nconst exampleFeatureFlagSdkKey = new vercel.FeatureFlagSdkKey(\"example\", {\n    projectId: example.id,\n    environment: \"production\",\n    type: \"server\",\n    label: \"backend-sdk\",\n});\nconst exampleProjectEnvironmentVariable = new vercel.ProjectEnvironmentVariable(\"example\", {\n    projectId: example.id,\n    targets: [\"production\"],\n    sensitive: true,\n    key: \"FLAGS_CONNECTION_STRING\",\n    value: exampleFeatureFlagSdkKey.connectionString,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.Project(\"example\", name=\"feature-flag-sdk-key-example\")\nexample_feature_flag_sdk_key = vercel.FeatureFlagSdkKey(\"example\",\n    project_id=example.id,\n    environment=\"production\",\n    type=\"server\",\n    label=\"backend-sdk\")\nexample_project_environment_variable = vercel.ProjectEnvironmentVariable(\"example\",\n    project_id=example.id,\n    targets=[\"production\"],\n    sensitive=True,\n    key=\"FLAGS_CONNECTION_STRING\",\n    value=example_feature_flag_sdk_key.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.Project(\"example\", new()\n    {\n        Name = \"feature-flag-sdk-key-example\",\n    });\n\n    var exampleFeatureFlagSdkKey = new Vercel.FeatureFlagSdkKey(\"example\", new()\n    {\n        ProjectId = example.Id,\n        Environment = \"production\",\n        Type = \"server\",\n        Label = \"backend-sdk\",\n    });\n\n    var exampleProjectEnvironmentVariable = new Vercel.ProjectEnvironmentVariable(\"example\", new()\n    {\n        ProjectId = example.Id,\n        Targets = new[]\n        {\n            \"production\",\n        },\n        Sensitive = true,\n        Key = \"FLAGS_CONNECTION_STRING\",\n        Value = exampleFeatureFlagSdkKey.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/v5/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(\"feature-flag-sdk-key-example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleFeatureFlagSdkKey, err := vercel.NewFeatureFlagSdkKey(ctx, \"example\", \u0026vercel.FeatureFlagSdkKeyArgs{\n\t\t\tProjectId:   example.ID(),\n\t\t\tEnvironment: pulumi.String(\"production\"),\n\t\t\tType:        pulumi.String(\"server\"),\n\t\t\tLabel:       pulumi.String(\"backend-sdk\"),\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: example.ID(),\n\t\t\tTargets: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"production\"),\n\t\t\t},\n\t\t\tSensitive: pulumi.Bool(true),\n\t\t\tKey:       pulumi.String(\"FLAGS_CONNECTION_STRING\"),\n\t\t\tValue:     exampleFeatureFlagSdkKey.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.Project;\nimport com.pulumiverse.vercel.ProjectArgs;\nimport com.pulumiverse.vercel.FeatureFlagSdkKey;\nimport com.pulumiverse.vercel.FeatureFlagSdkKeyArgs;\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 Project(\"example\", ProjectArgs.builder()\n            .name(\"feature-flag-sdk-key-example\")\n            .build());\n\n        var exampleFeatureFlagSdkKey = new FeatureFlagSdkKey(\"exampleFeatureFlagSdkKey\", FeatureFlagSdkKeyArgs.builder()\n            .projectId(example.id())\n            .environment(\"production\")\n            .type(\"server\")\n            .label(\"backend-sdk\")\n            .build());\n\n        var exampleProjectEnvironmentVariable = new ProjectEnvironmentVariable(\"exampleProjectEnvironmentVariable\", ProjectEnvironmentVariableArgs.builder()\n            .projectId(example.id())\n            .targets(\"production\")\n            .sensitive(true)\n            .key(\"FLAGS_CONNECTION_STRING\")\n            .value(exampleFeatureFlagSdkKey.connectionString())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:Project\n    properties:\n      name: feature-flag-sdk-key-example\n  exampleFeatureFlagSdkKey:\n    type: vercel:FeatureFlagSdkKey\n    name: example\n    properties:\n      projectId: ${example.id}\n      environment: production\n      type: server\n      label: backend-sdk\n  exampleProjectEnvironmentVariable:\n    type: vercel:ProjectEnvironmentVariable\n    name: example\n    properties:\n      projectId: ${example.id}\n      targets:\n        - production\n      sensitive: true\n      key: FLAGS_CONNECTION_STRING\n      value: ${exampleFeatureFlagSdkKey.connectionString}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on\nthe provider, simply use the project ID and SDK key hash.\n-\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003ecan be found in the project \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n-\u003cspan pulumi-lang-nodejs=\" hashKey \" pulumi-lang-dotnet=\" HashKey \" pulumi-lang-go=\" hashKey \" pulumi-lang-python=\" hash_key \" pulumi-lang-yaml=\" hashKey \" pulumi-lang-java=\" hashKey \"\u003e hash_key \u003c/span\u003ecan be found from the Flags SDK Keys UI or API.\n\n```sh\n$ pulumi import vercel:index/featureFlagSdkKey:FeatureFlagSdkKey example prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/sdk_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nAlternatively, you can import via the team_id, project_id, and SDK key hash.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n-\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003ecan be found in the project \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n\n```sh\n$ pulumi import vercel:index/featureFlagSdkKey:FeatureFlagSdkKey example team_xxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/sdk_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n",
            "properties": {
                "connectionString": {
                    "type": "string",
                    "description": "The connection string for this SDK key. Vercel only returns this at creation time.\n",
                    "secret": true
                },
                "environment": {
                    "type": "string",
                    "description": "The environment this SDK key should authenticate against.\n"
                },
                "label": {
                    "type": "string",
                    "description": "An optional label to help identify this key in the Vercel dashboard.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Vercel project that owns the SDK key.\n"
                },
                "sdkKey": {
                    "type": "string",
                    "description": "The cleartext SDK key. Vercel only returns this at creation time.\n",
                    "secret": true
                },
                "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": {
                    "type": "string",
                    "description": "The SDK key type. Must be one of \u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\"\u003e`server`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mobile`\" pulumi-lang-dotnet=\"`Mobile`\" pulumi-lang-go=\"`mobile`\" pulumi-lang-python=\"`mobile`\" pulumi-lang-yaml=\"`mobile`\" pulumi-lang-java=\"`mobile`\"\u003e`mobile`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`client`\" pulumi-lang-dotnet=\"`Client`\" pulumi-lang-go=\"`client`\" pulumi-lang-python=\"`client`\" pulumi-lang-yaml=\"`client`\" pulumi-lang-java=\"`client`\"\u003e`client`\u003c/span\u003e.\n"
                }
            },
            "required": [
                "connectionString",
                "environment",
                "projectId",
                "sdkKey",
                "teamId",
                "type"
            ],
            "inputProperties": {
                "environment": {
                    "type": "string",
                    "description": "The environment this SDK key should authenticate against.\n"
                },
                "label": {
                    "type": "string",
                    "description": "An optional label to help identify this key in the Vercel dashboard.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Vercel project that owns the SDK key.\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": {
                    "type": "string",
                    "description": "The SDK key type. Must be one of \u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\"\u003e`server`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mobile`\" pulumi-lang-dotnet=\"`Mobile`\" pulumi-lang-go=\"`mobile`\" pulumi-lang-python=\"`mobile`\" pulumi-lang-yaml=\"`mobile`\" pulumi-lang-java=\"`mobile`\"\u003e`mobile`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`client`\" pulumi-lang-dotnet=\"`Client`\" pulumi-lang-go=\"`client`\" pulumi-lang-python=\"`client`\" pulumi-lang-yaml=\"`client`\" pulumi-lang-java=\"`client`\"\u003e`client`\u003c/span\u003e.\n"
                }
            },
            "requiredInputs": [
                "environment",
                "projectId",
                "type"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering FeatureFlagSdkKey resources.\n",
                "properties": {
                    "connectionString": {
                        "type": "string",
                        "description": "The connection string for this SDK key. Vercel only returns this at creation time.\n",
                        "secret": true
                    },
                    "environment": {
                        "type": "string",
                        "description": "The environment this SDK key should authenticate against.\n"
                    },
                    "label": {
                        "type": "string",
                        "description": "An optional label to help identify this key in the Vercel dashboard.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the Vercel project that owns the SDK key.\n"
                    },
                    "sdkKey": {
                        "type": "string",
                        "description": "The cleartext SDK key. Vercel only returns this at creation time.\n",
                        "secret": true
                    },
                    "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": {
                        "type": "string",
                        "description": "The SDK key type. Must be one of \u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\"\u003e`server`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`mobile`\" pulumi-lang-dotnet=\"`Mobile`\" pulumi-lang-go=\"`mobile`\" pulumi-lang-python=\"`mobile`\" pulumi-lang-yaml=\"`mobile`\" pulumi-lang-java=\"`mobile`\"\u003e`mobile`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`client`\" pulumi-lang-dotnet=\"`Client`\" pulumi-lang-go=\"`client`\" pulumi-lang-python=\"`client`\" pulumi-lang-yaml=\"`client`\" pulumi-lang-java=\"`client`\"\u003e`client`\u003c/span\u003e.\n"
                    }
                },
                "type": "object"
            }
        },
        "vercel:index/featureFlagSegment:FeatureFlagSegment": {
            "description": "Provides a Feature Flag Segment resource.\n\nThis first draft focuses on exact-match membership lists through \u003cspan pulumi-lang-nodejs=\"`include`\" pulumi-lang-dotnet=\"`Include`\" pulumi-lang-go=\"`include`\" pulumi-lang-python=\"`include`\" pulumi-lang-yaml=\"`include`\" pulumi-lang-java=\"`include`\"\u003e`include`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`exclude`\" pulumi-lang-dotnet=\"`Exclude`\" pulumi-lang-go=\"`exclude`\" pulumi-lang-python=\"`exclude`\" pulumi-lang-yaml=\"`exclude`\" pulumi-lang-java=\"`exclude`\"\u003e`exclude`\u003c/span\u003e entries. Dashboard-defined rule logic is intentionally not flattened into Terraform here.\n\nVercel's API requires a \u003cspan pulumi-lang-nodejs=\"`hint`\" pulumi-lang-dotnet=\"`Hint`\" pulumi-lang-go=\"`hint`\" pulumi-lang-python=\"`hint`\" pulumi-lang-yaml=\"`hint`\" pulumi-lang-java=\"`hint`\"\u003e`hint`\u003c/span\u003e field even for simple segments, so this resource defaults it to an empty string unless you want to populate it for dashboard users.\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: \"feature-flag-segment-example\"});\nconst exampleFeatureFlagSegment = new vercel.FeatureFlagSegment(\"example\", {\n    projectId: example.id,\n    slug: \"internal-users\",\n    name: \"Internal Users\",\n    description: \"Employees who should always see internal-only flag treatments\",\n    hint: \"user-email\",\n    includes: [{\n        entity: \"user\",\n        attribute: \"email\",\n        values: [\n            \"alice@example.com\",\n            \"bob@example.com\",\n        ],\n    }],\n    excludes: [{\n        entity: \"user\",\n        attribute: \"id\",\n        values: [\"contractor-123\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.Project(\"example\", name=\"feature-flag-segment-example\")\nexample_feature_flag_segment = vercel.FeatureFlagSegment(\"example\",\n    project_id=example.id,\n    slug=\"internal-users\",\n    name=\"Internal Users\",\n    description=\"Employees who should always see internal-only flag treatments\",\n    hint=\"user-email\",\n    includes=[{\n        \"entity\": \"user\",\n        \"attribute\": \"email\",\n        \"values\": [\n            \"alice@example.com\",\n            \"bob@example.com\",\n        ],\n    }],\n    excludes=[{\n        \"entity\": \"user\",\n        \"attribute\": \"id\",\n        \"values\": [\"contractor-123\"],\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 = \"feature-flag-segment-example\",\n    });\n\n    var exampleFeatureFlagSegment = new Vercel.FeatureFlagSegment(\"example\", new()\n    {\n        ProjectId = example.Id,\n        Slug = \"internal-users\",\n        Name = \"Internal Users\",\n        Description = \"Employees who should always see internal-only flag treatments\",\n        Hint = \"user-email\",\n        Includes = new[]\n        {\n            new Vercel.Inputs.FeatureFlagSegmentIncludeArgs\n            {\n                Entity = \"user\",\n                Attribute = \"email\",\n                Values = new[]\n                {\n                    \"alice@example.com\",\n                    \"bob@example.com\",\n                },\n            },\n        },\n        Excludes = new[]\n        {\n            new Vercel.Inputs.FeatureFlagSegmentExcludeArgs\n            {\n                Entity = \"user\",\n                Attribute = \"id\",\n                Values = new[]\n                {\n                    \"contractor-123\",\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/v5/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(\"feature-flag-segment-example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewFeatureFlagSegment(ctx, \"example\", \u0026vercel.FeatureFlagSegmentArgs{\n\t\t\tProjectId:   example.ID(),\n\t\t\tSlug:        pulumi.String(\"internal-users\"),\n\t\t\tName:        pulumi.String(\"Internal Users\"),\n\t\t\tDescription: pulumi.String(\"Employees who should always see internal-only flag treatments\"),\n\t\t\tHint:        pulumi.String(\"user-email\"),\n\t\t\tIncludes: vercel.FeatureFlagSegmentIncludeArray{\n\t\t\t\t\u0026vercel.FeatureFlagSegmentIncludeArgs{\n\t\t\t\t\tEntity:    pulumi.String(\"user\"),\n\t\t\t\t\tAttribute: pulumi.String(\"email\"),\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"alice@example.com\"),\n\t\t\t\t\t\tpulumi.String(\"bob@example.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tExcludes: vercel.FeatureFlagSegmentExcludeArray{\n\t\t\t\t\u0026vercel.FeatureFlagSegmentExcludeArgs{\n\t\t\t\t\tEntity:    pulumi.String(\"user\"),\n\t\t\t\t\tAttribute: pulumi.String(\"id\"),\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"contractor-123\"),\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.FeatureFlagSegment;\nimport com.pulumiverse.vercel.FeatureFlagSegmentArgs;\nimport com.pulumi.vercel.inputs.FeatureFlagSegmentIncludeArgs;\nimport com.pulumi.vercel.inputs.FeatureFlagSegmentExcludeArgs;\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(\"feature-flag-segment-example\")\n            .build());\n\n        var exampleFeatureFlagSegment = new FeatureFlagSegment(\"exampleFeatureFlagSegment\", FeatureFlagSegmentArgs.builder()\n            .projectId(example.id())\n            .slug(\"internal-users\")\n            .name(\"Internal Users\")\n            .description(\"Employees who should always see internal-only flag treatments\")\n            .hint(\"user-email\")\n            .includes(FeatureFlagSegmentIncludeArgs.builder()\n                .entity(\"user\")\n                .attribute(\"email\")\n                .values(                \n                    \"alice@example.com\",\n                    \"bob@example.com\")\n                .build())\n            .excludes(FeatureFlagSegmentExcludeArgs.builder()\n                .entity(\"user\")\n                .attribute(\"id\")\n                .values(\"contractor-123\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:Project\n    properties:\n      name: feature-flag-segment-example\n  exampleFeatureFlagSegment:\n    type: vercel:FeatureFlagSegment\n    name: example\n    properties:\n      projectId: ${example.id}\n      slug: internal-users\n      name: Internal Users\n      description: Employees who should always see internal-only flag treatments\n      hint: user-email\n      includes:\n        - entity: user\n          attribute: email\n          values:\n            - alice@example.com\n            - bob@example.com\n      excludes:\n        - entity: user\n          attribute: id\n          values:\n            - contractor-123\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on\nthe provider, simply use the project ID and segment ID.\n-\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003ecan be found in the project \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n-\u003cspan pulumi-lang-nodejs=\" segmentId \" pulumi-lang-dotnet=\" SegmentId \" pulumi-lang-go=\" segmentId \" pulumi-lang-python=\" segment_id \" pulumi-lang-yaml=\" segmentId \" pulumi-lang-java=\" segmentId \"\u003e segment_id \u003c/span\u003ecan be found from the Flags API or by inspecting the segment in the Vercel UI.\n\n```sh\n$ pulumi import vercel:index/featureFlagSegment:FeatureFlagSegment example prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/segment_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nAlternatively, you can import via the team_id, project_id, and segment ID.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n-\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003ecan be found in the project \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n\n```sh\n$ pulumi import vercel:index/featureFlagSegment:FeatureFlagSegment example team_xxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/segment_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n",
            "properties": {
                "description": {
                    "type": "string",
                    "description": "A human-readable description of the segment.\n"
                },
                "excludes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/FeatureFlagSegmentExclude:FeatureFlagSegmentExclude"
                    },
                    "description": "Exact entity attribute values that should always be excluded from this segment.\n"
                },
                "hint": {
                    "type": "string",
                    "description": "An optional dashboard hint for the segment.\n"
                },
                "includes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/FeatureFlagSegmentInclude:FeatureFlagSegmentInclude"
                    },
                    "description": "Exact entity attribute values that should always be part of this segment.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The human-readable segment name shown in the Vercel dashboard.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Vercel project that owns the segment.\n"
                },
                "slug": {
                    "type": "string",
                    "description": "The stable segment slug used by the Vercel Flags API.\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": [
                "hint",
                "name",
                "projectId",
                "slug",
                "teamId"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "A human-readable description of the segment.\n"
                },
                "excludes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/FeatureFlagSegmentExclude:FeatureFlagSegmentExclude"
                    },
                    "description": "Exact entity attribute values that should always be excluded from this segment.\n"
                },
                "hint": {
                    "type": "string",
                    "description": "An optional dashboard hint for the segment.\n"
                },
                "includes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/FeatureFlagSegmentInclude:FeatureFlagSegmentInclude"
                    },
                    "description": "Exact entity attribute values that should always be part of this segment.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The human-readable segment name shown in the Vercel dashboard.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Vercel project that owns the segment.\n"
                },
                "slug": {
                    "type": "string",
                    "description": "The stable segment slug used by the Vercel Flags API.\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",
                "slug"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering FeatureFlagSegment resources.\n",
                "properties": {
                    "description": {
                        "type": "string",
                        "description": "A human-readable description of the segment.\n"
                    },
                    "excludes": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/vercel:index/FeatureFlagSegmentExclude:FeatureFlagSegmentExclude"
                        },
                        "description": "Exact entity attribute values that should always be excluded from this segment.\n"
                    },
                    "hint": {
                        "type": "string",
                        "description": "An optional dashboard hint for the segment.\n"
                    },
                    "includes": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/vercel:index/FeatureFlagSegmentInclude:FeatureFlagSegmentInclude"
                        },
                        "description": "Exact entity attribute values that should always be part of this segment.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The human-readable segment name shown in the Vercel dashboard.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the Vercel project that owns the segment.\n"
                    },
                    "slug": {
                        "type": "string",
                        "description": "The stable segment slug used by the Vercel Flags API.\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/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/v5/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\nThe `pulumi import` command can be used, for example:\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$ 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/v5/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\nThe `pulumi import` command can be used, for example:\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/kmsIssuer:KmsIssuer": {
            "description": "Provides a Vercel KMS Issuer resource.\n\n\u003e **Note:** Vercel KMS is currently in beta. Its resources, data sources, and the underlying API may change in backwards-incompatible ways in future releases of the provider.\n\nA KMS Issuer signs JSON Web Tokens (JWTs) and exposes a JWKS endpoint at\n`https://kms.vercel.com/{id}/jwks.json`. An initial signing key is created\nautomatically; use \u003cspan pulumi-lang-nodejs=\"`vercel.KmsSigningKey`\" pulumi-lang-dotnet=\"`vercel.KmsSigningKey`\" pulumi-lang-go=\"`KmsSigningKey`\" pulumi-lang-python=\"`KmsSigningKey`\" pulumi-lang-yaml=\"`vercel.KmsSigningKey`\" pulumi-lang-java=\"`vercel.KmsSigningKey`\"\u003e`vercel.KmsSigningKey`\u003c/span\u003e to rotate keys and\n\u003cspan pulumi-lang-nodejs=\"`vercel.KmsProjectGrant`\" pulumi-lang-dotnet=\"`vercel.KmsProjectGrant`\" pulumi-lang-go=\"`KmsProjectGrant`\" pulumi-lang-python=\"`KmsProjectGrant`\" pulumi-lang-yaml=\"`vercel.KmsProjectGrant`\" pulumi-lang-java=\"`vercel.KmsProjectGrant`\"\u003e`vercel.KmsProjectGrant`\u003c/span\u003e to grant projects the ability to sign tokens.\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on\nthe provider, simply use the issuer id.\n-\u003cspan pulumi-lang-nodejs=\" issuerId \" pulumi-lang-dotnet=\" IssuerId \" pulumi-lang-go=\" issuerId \" pulumi-lang-python=\" issuer_id \" pulumi-lang-yaml=\" issuerId \" pulumi-lang-java=\" issuerId \"\u003e issuer_id \u003c/span\u003ecan be found via the\u003cspan pulumi-lang-nodejs=\" vercel.KmsIssuer \" pulumi-lang-dotnet=\" vercel.KmsIssuer \" pulumi-lang-go=\" KmsIssuer \" pulumi-lang-python=\" KmsIssuer \" pulumi-lang-yaml=\" vercel.KmsIssuer \" pulumi-lang-java=\" vercel.KmsIssuer \"\u003e vercel.KmsIssuer \u003c/span\u003edata source or the API.\n\n```sh\n$ pulumi import vercel:index/kmsIssuer:KmsIssuer example iss_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nAlternatively, you can import via the\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003eand issuer id.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n\n```sh\n$ pulumi import vercel:index/kmsIssuer:KmsIssuer example team_xxxxxxxxxxxxxxxxxxxxxxxx/iss_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n",
            "properties": {
                "algorithm": {
                    "type": "string",
                    "description": "The signing algorithm to use for the issuer. Defaults to `RS512`. Changing this forces a new issuer to be created.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The time the issuer was created.\n"
                },
                "importKey": {
                    "type": "string",
                    "description": "A PEM-encoded private key to import for the issuer. When provided, the issuer's origin becomes \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 and the algorithm is inferred from the key. Changing this forces a new issuer to be created. This value is never returned by the API and cannot be recovered on import.\n",
                    "secret": true
                },
                "importKeyId": {
                    "type": "string",
                    "description": "The key ID (\u003cspan pulumi-lang-nodejs=\"`kid`\" pulumi-lang-dotnet=\"`Kid`\" pulumi-lang-go=\"`kid`\" pulumi-lang-python=\"`kid`\" pulumi-lang-yaml=\"`kid`\" pulumi-lang-java=\"`kid`\"\u003e`kid`\u003c/span\u003e) to assign to the imported key. Only valid when \u003cspan pulumi-lang-nodejs=\"`importKey`\" pulumi-lang-dotnet=\"`ImportKey`\" pulumi-lang-go=\"`importKey`\" pulumi-lang-python=\"`import_key`\" pulumi-lang-yaml=\"`importKey`\" pulumi-lang-java=\"`importKey`\"\u003e`import_key`\u003c/span\u003e is set. Changing this forces a new issuer to be created.\n"
                },
                "managedBy": {
                    "type": "string",
                    "description": "Identifies the policy that manages this issuer, if any.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the issuer.\n"
                },
                "origin": {
                    "type": "string",
                    "description": "The origin of the issuer's key material, either \u003cspan pulumi-lang-nodejs=\"`vercel`\" pulumi-lang-dotnet=\"`Vercel`\" pulumi-lang-go=\"`vercel`\" pulumi-lang-python=\"`vercel`\" pulumi-lang-yaml=\"`vercel`\" pulumi-lang-java=\"`vercel`\"\u003e`vercel`\u003c/span\u003e or \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.\n"
                },
                "ownerId": {
                    "type": "string",
                    "description": "The ID of the team that owns the issuer.\n"
                },
                "signingKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/KmsIssuerSigningKey:KmsIssuerSigningKey"
                    },
                    "description": "The signing keys belonging to the issuer. Keys are created automatically and can be rotated with the \u003cspan pulumi-lang-nodejs=\"`vercel.KmsSigningKey`\" pulumi-lang-dotnet=\"`vercel.KmsSigningKey`\" pulumi-lang-go=\"`KmsSigningKey`\" pulumi-lang-python=\"`KmsSigningKey`\" pulumi-lang-yaml=\"`vercel.KmsSigningKey`\" pulumi-lang-java=\"`vercel.KmsSigningKey`\"\u003e`vercel.KmsSigningKey`\u003c/span\u003e resource.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team the issuer should be created under. Required when configuring a team resource if a default team has not been set in the provider.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The time the issuer was last updated.\n"
                }
            },
            "required": [
                "algorithm",
                "createdAt",
                "managedBy",
                "name",
                "origin",
                "ownerId",
                "signingKeys",
                "teamId",
                "updatedAt"
            ],
            "inputProperties": {
                "algorithm": {
                    "type": "string",
                    "description": "The signing algorithm to use for the issuer. Defaults to `RS512`. Changing this forces a new issuer to be created.\n"
                },
                "importKey": {
                    "type": "string",
                    "description": "A PEM-encoded private key to import for the issuer. When provided, the issuer's origin becomes \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 and the algorithm is inferred from the key. Changing this forces a new issuer to be created. This value is never returned by the API and cannot be recovered on import.\n",
                    "secret": true
                },
                "importKeyId": {
                    "type": "string",
                    "description": "The key ID (\u003cspan pulumi-lang-nodejs=\"`kid`\" pulumi-lang-dotnet=\"`Kid`\" pulumi-lang-go=\"`kid`\" pulumi-lang-python=\"`kid`\" pulumi-lang-yaml=\"`kid`\" pulumi-lang-java=\"`kid`\"\u003e`kid`\u003c/span\u003e) to assign to the imported key. Only valid when \u003cspan pulumi-lang-nodejs=\"`importKey`\" pulumi-lang-dotnet=\"`ImportKey`\" pulumi-lang-go=\"`importKey`\" pulumi-lang-python=\"`import_key`\" pulumi-lang-yaml=\"`importKey`\" pulumi-lang-java=\"`importKey`\"\u003e`import_key`\u003c/span\u003e is set. Changing this forces a new issuer to be created.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the issuer.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team the issuer should be created 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 KmsIssuer resources.\n",
                "properties": {
                    "algorithm": {
                        "type": "string",
                        "description": "The signing algorithm to use for the issuer. Defaults to `RS512`. Changing this forces a new issuer to be created.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The time the issuer was created.\n"
                    },
                    "importKey": {
                        "type": "string",
                        "description": "A PEM-encoded private key to import for the issuer. When provided, the issuer's origin becomes \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 and the algorithm is inferred from the key. Changing this forces a new issuer to be created. This value is never returned by the API and cannot be recovered on import.\n",
                        "secret": true
                    },
                    "importKeyId": {
                        "type": "string",
                        "description": "The key ID (\u003cspan pulumi-lang-nodejs=\"`kid`\" pulumi-lang-dotnet=\"`Kid`\" pulumi-lang-go=\"`kid`\" pulumi-lang-python=\"`kid`\" pulumi-lang-yaml=\"`kid`\" pulumi-lang-java=\"`kid`\"\u003e`kid`\u003c/span\u003e) to assign to the imported key. Only valid when \u003cspan pulumi-lang-nodejs=\"`importKey`\" pulumi-lang-dotnet=\"`ImportKey`\" pulumi-lang-go=\"`importKey`\" pulumi-lang-python=\"`import_key`\" pulumi-lang-yaml=\"`importKey`\" pulumi-lang-java=\"`importKey`\"\u003e`import_key`\u003c/span\u003e is set. Changing this forces a new issuer to be created.\n"
                    },
                    "managedBy": {
                        "type": "string",
                        "description": "Identifies the policy that manages this issuer, if any.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the issuer.\n"
                    },
                    "origin": {
                        "type": "string",
                        "description": "The origin of the issuer's key material, either \u003cspan pulumi-lang-nodejs=\"`vercel`\" pulumi-lang-dotnet=\"`Vercel`\" pulumi-lang-go=\"`vercel`\" pulumi-lang-python=\"`vercel`\" pulumi-lang-yaml=\"`vercel`\" pulumi-lang-java=\"`vercel`\"\u003e`vercel`\u003c/span\u003e or \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.\n"
                    },
                    "ownerId": {
                        "type": "string",
                        "description": "The ID of the team that owns the issuer.\n"
                    },
                    "signingKeys": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/vercel:index/KmsIssuerSigningKey:KmsIssuerSigningKey"
                        },
                        "description": "The signing keys belonging to the issuer. Keys are created automatically and can be rotated with the \u003cspan pulumi-lang-nodejs=\"`vercel.KmsSigningKey`\" pulumi-lang-dotnet=\"`vercel.KmsSigningKey`\" pulumi-lang-go=\"`KmsSigningKey`\" pulumi-lang-python=\"`KmsSigningKey`\" pulumi-lang-yaml=\"`vercel.KmsSigningKey`\" pulumi-lang-java=\"`vercel.KmsSigningKey`\"\u003e`vercel.KmsSigningKey`\u003c/span\u003e resource.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the team the issuer should be created under. Required when configuring a team resource if a default team has not been set in the provider.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The time the issuer was last updated.\n"
                    }
                },
                "type": "object"
            }
        },
        "vercel:index/kmsProjectGrant:KmsProjectGrant": {
            "description": "Provides a Vercel KMS project grant.\n\n\u003e **Note:** Vercel KMS is currently in beta. Its resources, data sources, and the underlying API may change in backwards-incompatible ways in future releases of the provider.\n\nA project grant authorizes a Vercel project to request signed JWTs from a KMS\nissuer in the listed environments, optionally with additional token claims.\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 exampleKmsIssuer = new vercel.KmsIssuer(\"example\", {name: \"my-issuer\"});\nconst exampleKmsProjectGrant = new vercel.KmsProjectGrant(\"example\", {\n    issuerId: exampleKmsIssuer.id,\n    projectId: example.id,\n    environments: [\n        \"production\",\n        \"preview\",\n    ],\n    tokenClaims: JSON.stringify({\n        aud: \"https://example.com\",\n    }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumiverse_vercel as vercel\n\nexample = vercel.Project(\"example\", name=\"example-project\")\nexample_kms_issuer = vercel.KmsIssuer(\"example\", name=\"my-issuer\")\nexample_kms_project_grant = vercel.KmsProjectGrant(\"example\",\n    issuer_id=example_kms_issuer.id,\n    project_id=example.id,\n    environments=[\n        \"production\",\n        \"preview\",\n    ],\n    token_claims=json.dumps({\n        \"aud\": \"https://example.com\",\n    }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\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 exampleKmsIssuer = new Vercel.KmsIssuer(\"example\", new()\n    {\n        Name = \"my-issuer\",\n    });\n\n    var exampleKmsProjectGrant = new Vercel.KmsProjectGrant(\"example\", new()\n    {\n        IssuerId = exampleKmsIssuer.Id,\n        ProjectId = example.Id,\n        Environments = new[]\n        {\n            \"production\",\n            \"preview\",\n        },\n        TokenClaims = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"aud\"] = \"https://example.com\",\n        }),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v5/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\texampleKmsIssuer, err := vercel.NewKmsIssuer(ctx, \"example\", \u0026vercel.KmsIssuerArgs{\n\t\t\tName: pulumi.String(\"my-issuer\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"aud\": \"https://example.com\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = vercel.NewKmsProjectGrant(ctx, \"example\", \u0026vercel.KmsProjectGrantArgs{\n\t\t\tIssuerId:  exampleKmsIssuer.ID(),\n\t\t\tProjectId: example.ID(),\n\t\t\tEnvironments: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"production\"),\n\t\t\t\tpulumi.String(\"preview\"),\n\t\t\t},\n\t\t\tTokenClaims: pulumi.String(json0),\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.KmsIssuer;\nimport com.pulumiverse.vercel.KmsIssuerArgs;\nimport com.pulumiverse.vercel.KmsProjectGrant;\nimport com.pulumiverse.vercel.KmsProjectGrantArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\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 exampleKmsIssuer = new KmsIssuer(\"exampleKmsIssuer\", KmsIssuerArgs.builder()\n            .name(\"my-issuer\")\n            .build());\n\n        var exampleKmsProjectGrant = new KmsProjectGrant(\"exampleKmsProjectGrant\", KmsProjectGrantArgs.builder()\n            .issuerId(exampleKmsIssuer.id())\n            .projectId(example.id())\n            .environments(            \n                \"production\",\n                \"preview\")\n            .tokenClaims(serializeJson(\n                jsonObject(\n                    jsonProperty(\"aud\", \"https://example.com\")\n                )))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:Project\n    properties:\n      name: example-project\n  exampleKmsIssuer:\n    type: vercel:KmsIssuer\n    name: example\n    properties:\n      name: my-issuer\n  exampleKmsProjectGrant:\n    type: vercel:KmsProjectGrant\n    name: example\n    properties:\n      issuerId: ${exampleKmsIssuer.id}\n      projectId: ${example.id}\n      environments:\n        - production\n        - preview\n      tokenClaims:\n        fn::toJSON:\n          aud: https://example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on\nthe provider, use the issuer id and project id.\n\n```sh\n$ pulumi import vercel:index/kmsProjectGrant:KmsProjectGrant example iss_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nAlternatively, you can import via the team_id, issuer id and project id.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n\n```sh\n$ pulumi import vercel:index/kmsProjectGrant:KmsProjectGrant example team_xxxxxxxxxxxxxxxxxxxxxxxx/iss_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The time the policy was created.\n"
                },
                "environments": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The environments in which the project may request signed tokens (for example \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).\n"
                },
                "issuerId": {
                    "type": "string",
                    "description": "The ID of the issuer this policy is attached to.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Vercel project being granted access.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team the issuer exists under. Required when configuring a team resource if a default team has not been set in the provider.\n"
                },
                "tokenClaims": {
                    "type": "string",
                    "description": "Additional claims KMS should include in signed JWTs for this policy, as a JSON-encoded object.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The time the policy was last updated.\n"
                }
            },
            "required": [
                "createdAt",
                "environments",
                "issuerId",
                "projectId",
                "teamId",
                "updatedAt"
            ],
            "inputProperties": {
                "environments": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The environments in which the project may request signed tokens (for example \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).\n"
                },
                "issuerId": {
                    "type": "string",
                    "description": "The ID of the issuer this policy is attached to.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Vercel project being granted access.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team the issuer exists under. Required when configuring a team resource if a default team has not been set in the provider.\n"
                },
                "tokenClaims": {
                    "type": "string",
                    "description": "Additional claims KMS should include in signed JWTs for this policy, as a JSON-encoded object.\n"
                }
            },
            "requiredInputs": [
                "environments",
                "issuerId",
                "projectId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering KmsProjectGrant resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The time the policy was created.\n"
                    },
                    "environments": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The environments in which the project may request signed tokens (for example \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).\n"
                    },
                    "issuerId": {
                        "type": "string",
                        "description": "The ID of the issuer this policy is attached to.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the Vercel project being granted access.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the team the issuer exists under. Required when configuring a team resource if a default team has not been set in the provider.\n"
                    },
                    "tokenClaims": {
                        "type": "string",
                        "description": "Additional claims KMS should include in signed JWTs for this policy, as a JSON-encoded object.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The time the policy was last updated.\n"
                    }
                },
                "type": "object"
            }
        },
        "vercel:index/kmsSigningKey:KmsSigningKey": {
            "description": "Provides a Vercel KMS signing key created by rotating an issuer's key.\n\n\u003e **Note:** Vercel KMS is currently in beta. Its resources, data sources, and the underlying API may change in backwards-incompatible ways in future releases of the provider.\n\nRotating a key is an imperative operation. This resource creates a new signing\nkey when it is first applied, and creates a replacement key whenever a\n`RequiresReplace` input changes. Use the \u003cspan pulumi-lang-nodejs=\"`keepers`\" pulumi-lang-dotnet=\"`Keepers`\" pulumi-lang-go=\"`keepers`\" pulumi-lang-python=\"`keepers`\" pulumi-lang-yaml=\"`keepers`\" pulumi-lang-java=\"`keepers`\"\u003e`keepers`\u003c/span\u003e map to force a\nrotation on demand. Signing keys cannot be deleted individually; removing this\nresource only drops it from Terraform state (the underlying key is retired the\nnext time the issuer's key is rotated).\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.KmsIssuer(\"example\", {name: \"my-issuer\"});\nconst exampleKmsSigningKey = new vercel.KmsSigningKey(\"example\", {\n    issuerId: example.id,\n    keepers: {\n        rotated_at: \"2024-01-01\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.KmsIssuer(\"example\", name=\"my-issuer\")\nexample_kms_signing_key = vercel.KmsSigningKey(\"example\",\n    issuer_id=example.id,\n    keepers={\n        \"rotated_at\": \"2024-01-01\",\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.KmsIssuer(\"example\", new()\n    {\n        Name = \"my-issuer\",\n    });\n\n    var exampleKmsSigningKey = new Vercel.KmsSigningKey(\"example\", new()\n    {\n        IssuerId = example.Id,\n        Keepers = \n        {\n            { \"rotated_at\", \"2024-01-01\" },\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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := vercel.NewKmsIssuer(ctx, \"example\", \u0026vercel.KmsIssuerArgs{\n\t\t\tName: pulumi.String(\"my-issuer\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewKmsSigningKey(ctx, \"example\", \u0026vercel.KmsSigningKeyArgs{\n\t\t\tIssuerId: example.ID(),\n\t\t\tKeepers: pulumi.StringMap{\n\t\t\t\t\"rotated_at\": pulumi.String(\"2024-01-01\"),\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.KmsIssuer;\nimport com.pulumiverse.vercel.KmsIssuerArgs;\nimport com.pulumiverse.vercel.KmsSigningKey;\nimport com.pulumiverse.vercel.KmsSigningKeyArgs;\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 KmsIssuer(\"example\", KmsIssuerArgs.builder()\n            .name(\"my-issuer\")\n            .build());\n\n        var exampleKmsSigningKey = new KmsSigningKey(\"exampleKmsSigningKey\", KmsSigningKeyArgs.builder()\n            .issuerId(example.id())\n            .keepers(Map.of(\"rotated_at\", \"2024-01-01\"))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:KmsIssuer\n    properties:\n      name: my-issuer\n  exampleKmsSigningKey:\n    type: vercel:KmsSigningKey\n    name: example\n    properties:\n      issuerId: ${example.id}\n      keepers:\n        rotated_at: 2024-01-01\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on\nthe provider, use the issuer id and key id.\n\n```sh\n$ pulumi import vercel:index/kmsSigningKey:KmsSigningKey example iss_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/my-key-id\n```\n\nAlternatively, you can import via the team_id, issuer id and key id.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n\n```sh\n$ pulumi import vercel:index/kmsSigningKey:KmsSigningKey example team_xxxxxxxxxxxxxxxxxxxxxxxx/iss_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/my-key-id\n```\n\n",
            "properties": {
                "algorithm": {
                    "type": "string",
                    "description": "The signing algorithm of the key.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The time the key was created.\n"
                },
                "importKey": {
                    "type": "string",
                    "description": "A PEM-encoded private key to rotate in for an external issuer. Changing this forces a new signing key. This value is never returned by the API.\n",
                    "secret": true
                },
                "importKeyId": {
                    "type": "string",
                    "description": "The key ID (\u003cspan pulumi-lang-nodejs=\"`kid`\" pulumi-lang-dotnet=\"`Kid`\" pulumi-lang-go=\"`kid`\" pulumi-lang-python=\"`kid`\" pulumi-lang-yaml=\"`kid`\" pulumi-lang-java=\"`kid`\"\u003e`kid`\u003c/span\u003e) to assign to the imported key. Only valid when \u003cspan pulumi-lang-nodejs=\"`importKey`\" pulumi-lang-dotnet=\"`ImportKey`\" pulumi-lang-go=\"`importKey`\" pulumi-lang-python=\"`import_key`\" pulumi-lang-yaml=\"`importKey`\" pulumi-lang-java=\"`importKey`\"\u003e`import_key`\u003c/span\u003e is set. Changing this forces a new signing key.\n"
                },
                "issuerId": {
                    "type": "string",
                    "description": "The ID of the issuer to rotate a key for.\n"
                },
                "keepers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Arbitrary map of values that, when changed, forces a new signing key to be rotated in.\n"
                },
                "publicKeyFingerprint": {
                    "type": "string",
                    "description": "The fingerprint of the public key.\n"
                },
                "publicKeyJwk": {
                    "type": "string",
                    "description": "The public key as a JSON-encoded JWK.\n"
                },
                "revokeAt": {
                    "type": "string",
                    "description": "The time at which the key is scheduled to be revoked, if any.\n"
                },
                "revokePreviousAt": {
                    "type": "string",
                    "description": "An RFC3339 timestamp at which the issuer's previous signing keys should stop being used. Changing this forces a new signing key.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the key, one of \u003cspan pulumi-lang-nodejs=\"`pending`\" pulumi-lang-dotnet=\"`Pending`\" pulumi-lang-go=\"`pending`\" pulumi-lang-python=\"`pending`\" pulumi-lang-yaml=\"`pending`\" pulumi-lang-java=\"`pending`\"\u003e`pending`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`active`\" pulumi-lang-dotnet=\"`Active`\" pulumi-lang-go=\"`active`\" pulumi-lang-python=\"`active`\" pulumi-lang-yaml=\"`active`\" pulumi-lang-java=\"`active`\"\u003e`active`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`revoking`\" pulumi-lang-dotnet=\"`Revoking`\" pulumi-lang-go=\"`revoking`\" pulumi-lang-python=\"`revoking`\" pulumi-lang-yaml=\"`revoking`\" pulumi-lang-java=\"`revoking`\"\u003e`revoking`\u003c/span\u003e. A newly rotated key is \u003cspan pulumi-lang-nodejs=\"`pending`\" pulumi-lang-dotnet=\"`Pending`\" pulumi-lang-go=\"`pending`\" pulumi-lang-python=\"`pending`\" pulumi-lang-yaml=\"`pending`\" pulumi-lang-java=\"`pending`\"\u003e`pending`\u003c/span\u003e until its public key propagates, then becomes \u003cspan pulumi-lang-nodejs=\"`active`\" pulumi-lang-dotnet=\"`Active`\" pulumi-lang-go=\"`active`\" pulumi-lang-python=\"`active`\" pulumi-lang-yaml=\"`active`\" pulumi-lang-java=\"`active`\"\u003e`active`\u003c/span\u003e.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team the issuer exists under. Required when configuring a team resource if a default team has not been set in the provider.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The time the key was last updated.\n"
                }
            },
            "required": [
                "algorithm",
                "createdAt",
                "issuerId",
                "publicKeyFingerprint",
                "publicKeyJwk",
                "revokeAt",
                "status",
                "teamId",
                "updatedAt"
            ],
            "inputProperties": {
                "importKey": {
                    "type": "string",
                    "description": "A PEM-encoded private key to rotate in for an external issuer. Changing this forces a new signing key. This value is never returned by the API.\n",
                    "secret": true
                },
                "importKeyId": {
                    "type": "string",
                    "description": "The key ID (\u003cspan pulumi-lang-nodejs=\"`kid`\" pulumi-lang-dotnet=\"`Kid`\" pulumi-lang-go=\"`kid`\" pulumi-lang-python=\"`kid`\" pulumi-lang-yaml=\"`kid`\" pulumi-lang-java=\"`kid`\"\u003e`kid`\u003c/span\u003e) to assign to the imported key. Only valid when \u003cspan pulumi-lang-nodejs=\"`importKey`\" pulumi-lang-dotnet=\"`ImportKey`\" pulumi-lang-go=\"`importKey`\" pulumi-lang-python=\"`import_key`\" pulumi-lang-yaml=\"`importKey`\" pulumi-lang-java=\"`importKey`\"\u003e`import_key`\u003c/span\u003e is set. Changing this forces a new signing key.\n"
                },
                "issuerId": {
                    "type": "string",
                    "description": "The ID of the issuer to rotate a key for.\n"
                },
                "keepers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Arbitrary map of values that, when changed, forces a new signing key to be rotated in.\n"
                },
                "revokePreviousAt": {
                    "type": "string",
                    "description": "An RFC3339 timestamp at which the issuer's previous signing keys should stop being used. Changing this forces a new signing key.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team the issuer exists under. Required when configuring a team resource if a default team has not been set in the provider.\n"
                }
            },
            "requiredInputs": [
                "issuerId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering KmsSigningKey resources.\n",
                "properties": {
                    "algorithm": {
                        "type": "string",
                        "description": "The signing algorithm of the key.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The time the key was created.\n"
                    },
                    "importKey": {
                        "type": "string",
                        "description": "A PEM-encoded private key to rotate in for an external issuer. Changing this forces a new signing key. This value is never returned by the API.\n",
                        "secret": true
                    },
                    "importKeyId": {
                        "type": "string",
                        "description": "The key ID (\u003cspan pulumi-lang-nodejs=\"`kid`\" pulumi-lang-dotnet=\"`Kid`\" pulumi-lang-go=\"`kid`\" pulumi-lang-python=\"`kid`\" pulumi-lang-yaml=\"`kid`\" pulumi-lang-java=\"`kid`\"\u003e`kid`\u003c/span\u003e) to assign to the imported key. Only valid when \u003cspan pulumi-lang-nodejs=\"`importKey`\" pulumi-lang-dotnet=\"`ImportKey`\" pulumi-lang-go=\"`importKey`\" pulumi-lang-python=\"`import_key`\" pulumi-lang-yaml=\"`importKey`\" pulumi-lang-java=\"`importKey`\"\u003e`import_key`\u003c/span\u003e is set. Changing this forces a new signing key.\n"
                    },
                    "issuerId": {
                        "type": "string",
                        "description": "The ID of the issuer to rotate a key for.\n"
                    },
                    "keepers": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "Arbitrary map of values that, when changed, forces a new signing key to be rotated in.\n"
                    },
                    "publicKeyFingerprint": {
                        "type": "string",
                        "description": "The fingerprint of the public key.\n"
                    },
                    "publicKeyJwk": {
                        "type": "string",
                        "description": "The public key as a JSON-encoded JWK.\n"
                    },
                    "revokeAt": {
                        "type": "string",
                        "description": "The time at which the key is scheduled to be revoked, if any.\n"
                    },
                    "revokePreviousAt": {
                        "type": "string",
                        "description": "An RFC3339 timestamp at which the issuer's previous signing keys should stop being used. Changing this forces a new signing key.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The status of the key, one of \u003cspan pulumi-lang-nodejs=\"`pending`\" pulumi-lang-dotnet=\"`Pending`\" pulumi-lang-go=\"`pending`\" pulumi-lang-python=\"`pending`\" pulumi-lang-yaml=\"`pending`\" pulumi-lang-java=\"`pending`\"\u003e`pending`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`active`\" pulumi-lang-dotnet=\"`Active`\" pulumi-lang-go=\"`active`\" pulumi-lang-python=\"`active`\" pulumi-lang-yaml=\"`active`\" pulumi-lang-java=\"`active`\"\u003e`active`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`revoking`\" pulumi-lang-dotnet=\"`Revoking`\" pulumi-lang-go=\"`revoking`\" pulumi-lang-python=\"`revoking`\" pulumi-lang-yaml=\"`revoking`\" pulumi-lang-java=\"`revoking`\"\u003e`revoking`\u003c/span\u003e. A newly rotated key is \u003cspan pulumi-lang-nodejs=\"`pending`\" pulumi-lang-dotnet=\"`Pending`\" pulumi-lang-go=\"`pending`\" pulumi-lang-python=\"`pending`\" pulumi-lang-yaml=\"`pending`\" pulumi-lang-java=\"`pending`\"\u003e`pending`\u003c/span\u003e until its public key propagates, then becomes \u003cspan pulumi-lang-nodejs=\"`active`\" pulumi-lang-dotnet=\"`Active`\" pulumi-lang-go=\"`active`\" pulumi-lang-python=\"`active`\" pulumi-lang-yaml=\"`active`\" pulumi-lang-java=\"`active`\"\u003e`active`\u003c/span\u003e.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the team the issuer exists under. Required when configuring a team resource if a default team has not been set in the provider.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The time the key was last updated.\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/v5/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\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on\nthe provider, simply use the log_drain_id.\n-\u003cspan pulumi-lang-nodejs=\" logDrainId \" pulumi-lang-dotnet=\" LogDrainId \" pulumi-lang-go=\" logDrainId \" pulumi-lang-python=\" log_drain_id \" pulumi-lang-yaml=\" logDrainId \" pulumi-lang-java=\" logDrainId \"\u003e log_drain_id \u003c/span\u003ecan 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\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003eand edge_config_id.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n-\u003cspan pulumi-lang-nodejs=\" logDrainId \" pulumi-lang-dotnet=\" LogDrainId \" pulumi-lang-go=\" logDrainId \" pulumi-lang-python=\" log_drain_id \" pulumi-lang-yaml=\" logDrainId \" pulumi-lang-java=\" logDrainId \"\u003e log_drain_id \u003c/span\u003ecan 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/v5/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\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on the provider, simply use the record id.\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\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003eand microfrontend_id.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\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/v5/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\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on the provider, simply use the record id.\n- the microfrontend ID can be taken from the microfrontend settings page\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\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003eand microfrontend_id.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n- the microfrontend ID can be taken from the microfrontend settings page\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/oauthApp:OauthApp": {
            "description": "Provides an OAuth App resource for [Sign in with Vercel](https://vercel.com/docs/sign-in-with-vercel).\n\nAn OAuth App lets people use their Vercel account to log in to your application via OAuth 2.0 / OpenID Connect. Use the \u003cspan pulumi-lang-nodejs=\"`vercel.OauthAppClientSecret`\" pulumi-lang-dotnet=\"`vercel.OauthAppClientSecret`\" pulumi-lang-go=\"`OauthAppClientSecret`\" pulumi-lang-python=\"`OauthAppClientSecret`\" pulumi-lang-yaml=\"`vercel.OauthAppClientSecret`\" pulumi-lang-java=\"`vercel.OauthAppClientSecret`\"\u003e`vercel.OauthAppClientSecret`\u003c/span\u003e resource to generate the client secret your application authenticates with.\n\n\u003e Managing OAuth Apps requires the Owner role on the 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 = new vercel.OauthApp(\"example\", {\n    name: \"My Example App\",\n    slug: \"my-example-app\",\n    description: \"Lets users sign in to Example with their Vercel account.\",\n    homePageUri: \"https://example.com\",\n    redirectUris: [\n        \"https://example.com/api/auth/callback\",\n        \"http://localhost:3000/api/auth/callback\",\n    ],\n    scopes: [\n        \"openid\",\n        \"email\",\n        \"profile\",\n        \"offline_access\",\n    ],\n    privacyPolicyUrl: \"https://example.com/privacy\",\n    termsOfServiceUrl: \"https://example.com/terms\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.OauthApp(\"example\",\n    name=\"My Example App\",\n    slug=\"my-example-app\",\n    description=\"Lets users sign in to Example with their Vercel account.\",\n    home_page_uri=\"https://example.com\",\n    redirect_uris=[\n        \"https://example.com/api/auth/callback\",\n        \"http://localhost:3000/api/auth/callback\",\n    ],\n    scopes=[\n        \"openid\",\n        \"email\",\n        \"profile\",\n        \"offline_access\",\n    ],\n    privacy_policy_url=\"https://example.com/privacy\",\n    terms_of_service_url=\"https://example.com/terms\")\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.OauthApp(\"example\", new()\n    {\n        Name = \"My Example App\",\n        Slug = \"my-example-app\",\n        Description = \"Lets users sign in to Example with their Vercel account.\",\n        HomePageUri = \"https://example.com\",\n        RedirectUris = new[]\n        {\n            \"https://example.com/api/auth/callback\",\n            \"http://localhost:3000/api/auth/callback\",\n        },\n        Scopes = new[]\n        {\n            \"openid\",\n            \"email\",\n            \"profile\",\n            \"offline_access\",\n        },\n        PrivacyPolicyUrl = \"https://example.com/privacy\",\n        TermsOfServiceUrl = \"https://example.com/terms\",\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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.NewOauthApp(ctx, \"example\", \u0026vercel.OauthAppArgs{\n\t\t\tName:        pulumi.String(\"My Example App\"),\n\t\t\tSlug:        pulumi.String(\"my-example-app\"),\n\t\t\tDescription: pulumi.String(\"Lets users sign in to Example with their Vercel account.\"),\n\t\t\tHomePageUri: pulumi.String(\"https://example.com\"),\n\t\t\tRedirectUris: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"https://example.com/api/auth/callback\"),\n\t\t\t\tpulumi.String(\"http://localhost:3000/api/auth/callback\"),\n\t\t\t},\n\t\t\tScopes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"openid\"),\n\t\t\t\tpulumi.String(\"email\"),\n\t\t\t\tpulumi.String(\"profile\"),\n\t\t\t\tpulumi.String(\"offline_access\"),\n\t\t\t},\n\t\t\tPrivacyPolicyUrl:  pulumi.String(\"https://example.com/privacy\"),\n\t\t\tTermsOfServiceUrl: pulumi.String(\"https://example.com/terms\"),\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.OauthApp;\nimport com.pulumiverse.vercel.OauthAppArgs;\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 OauthApp(\"example\", OauthAppArgs.builder()\n            .name(\"My Example App\")\n            .slug(\"my-example-app\")\n            .description(\"Lets users sign in to Example with their Vercel account.\")\n            .homePageUri(\"https://example.com\")\n            .redirectUris(            \n                \"https://example.com/api/auth/callback\",\n                \"http://localhost:3000/api/auth/callback\")\n            .scopes(            \n                \"openid\",\n                \"email\",\n                \"profile\",\n                \"offline_access\")\n            .privacyPolicyUrl(\"https://example.com/privacy\")\n            .termsOfServiceUrl(\"https://example.com/terms\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:OauthApp\n    properties:\n      name: My Example App\n      slug: my-example-app\n      description: Lets users sign in to Example with their Vercel account.\n      homePageUri: https://example.com\n      redirectUris:\n        - https://example.com/api/auth/callback\n        - http://localhost:3000/api/auth/callback\n      scopes:\n        - openid\n        - email\n        - profile\n        - offline_access\n      privacyPolicyUrl: https://example.com/privacy\n      termsOfServiceUrl: https://example.com/terms\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on\nthe provider, simply use the client_id.\n\n```sh\n$ pulumi import vercel:index/oauthApp:OauthApp example cl_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nIf importing to a team, use the\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003eand client_id.\n\n```sh\n$ pulumi import vercel:index/oauthApp:OauthApp example team_xxxxxxxxxxxxxxxxxxxxxxxx/cl_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n",
            "properties": {
                "codeOfConductUrl": {
                    "type": "string",
                    "description": "The URL of the application's code of conduct.\n"
                },
                "description": {
                    "type": "string",
                    "description": "A description of the OAuth App, shown on the consent page.\n"
                },
                "homePageUri": {
                    "type": "string",
                    "description": "The URL of the application's home page.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A human-readable name for the OAuth App, shown on the consent page.\n"
                },
                "privacyPolicyUrl": {
                    "type": "string",
                    "description": "The URL of the application's privacy policy, shown on the consent page.\n"
                },
                "redirectUris": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The authorization callback URLs of the OAuth App. Must be absolute \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e URLs (\u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e is allowed for loopback addresses only).\n"
                },
                "scopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The scopes the OAuth App may request: \u003cspan pulumi-lang-nodejs=\"`openid`\" pulumi-lang-dotnet=\"`Openid`\" pulumi-lang-go=\"`openid`\" pulumi-lang-python=\"`openid`\" pulumi-lang-yaml=\"`openid`\" pulumi-lang-java=\"`openid`\"\u003e`openid`\u003c/span\u003e (always required), \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, \u003cspan pulumi-lang-nodejs=\"`profile`\" pulumi-lang-dotnet=\"`Profile`\" pulumi-lang-go=\"`profile`\" pulumi-lang-python=\"`profile`\" pulumi-lang-yaml=\"`profile`\" pulumi-lang-java=\"`profile`\"\u003e`profile`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`offlineAccess`\" pulumi-lang-dotnet=\"`OfflineAccess`\" pulumi-lang-go=\"`offlineAccess`\" pulumi-lang-python=\"`offline_access`\" pulumi-lang-yaml=\"`offlineAccess`\" pulumi-lang-java=\"`offlineAccess`\"\u003e`offline_access`\u003c/span\u003e (issues refresh tokens). Defaults to `[\"openid\"]`.\n"
                },
                "slug": {
                    "type": "string",
                    "description": "A URL-friendly slug for the OAuth App. Must be unique.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team the OAuth App should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"
                },
                "termsOfServiceUrl": {
                    "type": "string",
                    "description": "The URL of the application's terms of service, shown on the consent page.\n"
                }
            },
            "required": [
                "name",
                "scopes",
                "slug",
                "teamId"
            ],
            "inputProperties": {
                "codeOfConductUrl": {
                    "type": "string",
                    "description": "The URL of the application's code of conduct.\n"
                },
                "description": {
                    "type": "string",
                    "description": "A description of the OAuth App, shown on the consent page.\n"
                },
                "homePageUri": {
                    "type": "string",
                    "description": "The URL of the application's home page.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A human-readable name for the OAuth App, shown on the consent page.\n"
                },
                "privacyPolicyUrl": {
                    "type": "string",
                    "description": "The URL of the application's privacy policy, shown on the consent page.\n"
                },
                "redirectUris": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The authorization callback URLs of the OAuth App. Must be absolute \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e URLs (\u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e is allowed for loopback addresses only).\n"
                },
                "scopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The scopes the OAuth App may request: \u003cspan pulumi-lang-nodejs=\"`openid`\" pulumi-lang-dotnet=\"`Openid`\" pulumi-lang-go=\"`openid`\" pulumi-lang-python=\"`openid`\" pulumi-lang-yaml=\"`openid`\" pulumi-lang-java=\"`openid`\"\u003e`openid`\u003c/span\u003e (always required), \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, \u003cspan pulumi-lang-nodejs=\"`profile`\" pulumi-lang-dotnet=\"`Profile`\" pulumi-lang-go=\"`profile`\" pulumi-lang-python=\"`profile`\" pulumi-lang-yaml=\"`profile`\" pulumi-lang-java=\"`profile`\"\u003e`profile`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`offlineAccess`\" pulumi-lang-dotnet=\"`OfflineAccess`\" pulumi-lang-go=\"`offlineAccess`\" pulumi-lang-python=\"`offline_access`\" pulumi-lang-yaml=\"`offlineAccess`\" pulumi-lang-java=\"`offlineAccess`\"\u003e`offline_access`\u003c/span\u003e (issues refresh tokens). Defaults to `[\"openid\"]`.\n"
                },
                "slug": {
                    "type": "string",
                    "description": "A URL-friendly slug for the OAuth App. Must be unique.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team the OAuth App should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"
                },
                "termsOfServiceUrl": {
                    "type": "string",
                    "description": "The URL of the application's terms of service, shown on the consent page.\n"
                }
            },
            "requiredInputs": [
                "slug"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering OauthApp resources.\n",
                "properties": {
                    "codeOfConductUrl": {
                        "type": "string",
                        "description": "The URL of the application's code of conduct.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "A description of the OAuth App, shown on the consent page.\n"
                    },
                    "homePageUri": {
                        "type": "string",
                        "description": "The URL of the application's home page.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "A human-readable name for the OAuth App, shown on the consent page.\n"
                    },
                    "privacyPolicyUrl": {
                        "type": "string",
                        "description": "The URL of the application's privacy policy, shown on the consent page.\n"
                    },
                    "redirectUris": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The authorization callback URLs of the OAuth App. Must be absolute \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e URLs (\u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e is allowed for loopback addresses only).\n"
                    },
                    "scopes": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The scopes the OAuth App may request: \u003cspan pulumi-lang-nodejs=\"`openid`\" pulumi-lang-dotnet=\"`Openid`\" pulumi-lang-go=\"`openid`\" pulumi-lang-python=\"`openid`\" pulumi-lang-yaml=\"`openid`\" pulumi-lang-java=\"`openid`\"\u003e`openid`\u003c/span\u003e (always required), \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, \u003cspan pulumi-lang-nodejs=\"`profile`\" pulumi-lang-dotnet=\"`Profile`\" pulumi-lang-go=\"`profile`\" pulumi-lang-python=\"`profile`\" pulumi-lang-yaml=\"`profile`\" pulumi-lang-java=\"`profile`\"\u003e`profile`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`offlineAccess`\" pulumi-lang-dotnet=\"`OfflineAccess`\" pulumi-lang-go=\"`offlineAccess`\" pulumi-lang-python=\"`offline_access`\" pulumi-lang-yaml=\"`offlineAccess`\" pulumi-lang-java=\"`offlineAccess`\"\u003e`offline_access`\u003c/span\u003e (issues refresh tokens). Defaults to `[\"openid\"]`.\n"
                    },
                    "slug": {
                        "type": "string",
                        "description": "A URL-friendly slug for the OAuth App. Must be unique.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the team the OAuth App should exist under. Required when configuring a team resource if a default team has not been set in the provider.\n"
                    },
                    "termsOfServiceUrl": {
                        "type": "string",
                        "description": "The URL of the application's terms of service, shown on the consent page.\n"
                    }
                },
                "type": "object"
            }
        },
        "vercel:index/oauthAppClientSecret:OauthAppClientSecret": {
            "description": "Provides a client secret for a \u003cspan pulumi-lang-nodejs=\"`vercel.OauthApp`\" pulumi-lang-dotnet=\"`vercel.OauthApp`\" pulumi-lang-go=\"`OauthApp`\" pulumi-lang-python=\"`OauthApp`\" pulumi-lang-yaml=\"`vercel.OauthApp`\" pulumi-lang-java=\"`vercel.OauthApp`\"\u003e`vercel.OauthApp`\u003c/span\u003e ([Sign in with Vercel](https://vercel.com/docs/sign-in-with-vercel)).\n\nThe secret value is only ever returned by the API at creation time and is stored (marked sensitive) in the Terraform state. An OAuth App can have at most two client secrets at a time, so zero-downtime rotation is possible by creating a new secret before destroying the old one (e.g. with `pulumi up -replace` and \u003cspan pulumi-lang-nodejs=\"`createBeforeDestroy`\" pulumi-lang-dotnet=\"`CreateBeforeDestroy`\" pulumi-lang-go=\"`createBeforeDestroy`\" pulumi-lang-python=\"`create_before_destroy`\" pulumi-lang-yaml=\"`createBeforeDestroy`\" pulumi-lang-java=\"`createBeforeDestroy`\"\u003e`create_before_destroy`\u003c/span\u003e).\n\n\u003e Managing client secrets requires the Owner role on the team.\n\n\u003e This resource cannot be imported, as the API never re-exposes the secret value.\n\n",
            "properties": {
                "clientSecret": {
                    "type": "string",
                    "description": "The generated client secret. Only available at creation time; stored in the Terraform state.\n",
                    "secret": true
                },
                "lastFourChars": {
                    "type": "string",
                    "description": "The last four characters of the client secret — the identifier the Vercel API and dashboard use to reference this secret.\n"
                },
                "oauthAppId": {
                    "type": "string",
                    "description": "The client ID of the OAuth App (`cl_...`) to generate a secret for.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team the OAuth App exists under. Required when configuring a team resource if a default team has not been set in the provider.\n"
                }
            },
            "required": [
                "clientSecret",
                "lastFourChars",
                "oauthAppId",
                "teamId"
            ],
            "inputProperties": {
                "oauthAppId": {
                    "type": "string",
                    "description": "The client ID of the OAuth App (`cl_...`) to generate a secret for.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team the OAuth App exists under. Required when configuring a team resource if a default team has not been set in the provider.\n"
                }
            },
            "requiredInputs": [
                "oauthAppId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering OauthAppClientSecret resources.\n",
                "properties": {
                    "clientSecret": {
                        "type": "string",
                        "description": "The generated client secret. Only available at creation time; stored in the Terraform state.\n",
                        "secret": true
                    },
                    "lastFourChars": {
                        "type": "string",
                        "description": "The last four characters of the client secret — the identifier the Vercel API and dashboard use to reference this secret.\n"
                    },
                    "oauthAppId": {
                        "type": "string",
                        "description": "The client ID of the OAuth App (`cl_...`) to generate a secret for.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the team the OAuth App exists under. Required when configuring a team resource if a default team has not been set in the provider.\n"
                    }
                },
                "type": "object"
            }
        },
        "vercel:index/oidcFederationPolicy:OidcFederationPolicy": {
            "description": "Provides an OIDC Federation Policy resource.\n\nOIDC federation policies allow trusted external workloads to exchange an OIDC token for a short-lived Vercel access token. The client selects the Vercel CLI receiving access, while claims constrain the external workload identity.\n\n\u003e This API currently supports first-party CLI clients enabled for the team, including the Vercel CLI and Turborepo CLI. The API token used by the provider must have permission to manage OIDC federation policies for the 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 turborepoGithubActions = new vercel.OidcFederationPolicy(\"turborepo_github_actions\", {\n    name: \"Turborepo for acme/widgets GitHub Workflows\",\n    client: \"turborepo\",\n    issuerUrl: \"https://token.actions.githubusercontent.com\",\n    claims: [\n        {\n            name: \"aud\",\n            values: [{\n                value: \"https://vercel.com/api/login/oauth/token\",\n            }],\n        },\n        {\n            name: \"repository\",\n            values: [{\n                value: \"acme/widgets\",\n            }],\n        },\n    ],\n    permissions: [\"read-write:remote-cache\"],\n    resources: {\n        projectIds: [\"*\"],\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nturborepo_github_actions = vercel.OidcFederationPolicy(\"turborepo_github_actions\",\n    name=\"Turborepo for acme/widgets GitHub Workflows\",\n    client=\"turborepo\",\n    issuer_url=\"https://token.actions.githubusercontent.com\",\n    claims=[\n        {\n            \"name\": \"aud\",\n            \"values\": [{\n                \"value\": \"https://vercel.com/api/login/oauth/token\",\n            }],\n        },\n        {\n            \"name\": \"repository\",\n            \"values\": [{\n                \"value\": \"acme/widgets\",\n            }],\n        },\n    ],\n    permissions=[\"read-write:remote-cache\"],\n    resources={\n        \"project_ids\": [\"*\"],\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 turborepoGithubActions = new Vercel.OidcFederationPolicy(\"turborepo_github_actions\", new()\n    {\n        Name = \"Turborepo for acme/widgets GitHub Workflows\",\n        Client = \"turborepo\",\n        IssuerUrl = \"https://token.actions.githubusercontent.com\",\n        Claims = new[]\n        {\n            new Vercel.Inputs.OidcFederationPolicyClaimArgs\n            {\n                Name = \"aud\",\n                Values = new[]\n                {\n                    new Vercel.Inputs.OidcFederationPolicyClaimValueArgs\n                    {\n                        Value = \"https://vercel.com/api/login/oauth/token\",\n                    },\n                },\n            },\n            new Vercel.Inputs.OidcFederationPolicyClaimArgs\n            {\n                Name = \"repository\",\n                Values = new[]\n                {\n                    new Vercel.Inputs.OidcFederationPolicyClaimValueArgs\n                    {\n                        Value = \"acme/widgets\",\n                    },\n                },\n            },\n        },\n        Permissions = new[]\n        {\n            \"read-write:remote-cache\",\n        },\n        Resources = new Vercel.Inputs.OidcFederationPolicyResourcesArgs\n        {\n            ProjectIds = new[]\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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.NewOidcFederationPolicy(ctx, \"turborepo_github_actions\", \u0026vercel.OidcFederationPolicyArgs{\n\t\t\tName:      pulumi.String(\"Turborepo for acme/widgets GitHub Workflows\"),\n\t\t\tClient:    pulumi.String(\"turborepo\"),\n\t\t\tIssuerUrl: pulumi.String(\"https://token.actions.githubusercontent.com\"),\n\t\t\tClaims: vercel.OidcFederationPolicyClaimArray{\n\t\t\t\t\u0026vercel.OidcFederationPolicyClaimArgs{\n\t\t\t\t\tName: pulumi.String(\"aud\"),\n\t\t\t\t\tValues: vercel.OidcFederationPolicyClaimValueArray{\n\t\t\t\t\t\t\u0026vercel.OidcFederationPolicyClaimValueArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"https://vercel.com/api/login/oauth/token\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026vercel.OidcFederationPolicyClaimArgs{\n\t\t\t\t\tName: pulumi.String(\"repository\"),\n\t\t\t\t\tValues: vercel.OidcFederationPolicyClaimValueArray{\n\t\t\t\t\t\t\u0026vercel.OidcFederationPolicyClaimValueArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"acme/widgets\"),\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\tPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"read-write:remote-cache\"),\n\t\t\t},\n\t\t\tResources: \u0026vercel.OidcFederationPolicyResourcesArgs{\n\t\t\t\tProjectIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"*\"),\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.OidcFederationPolicy;\nimport com.pulumiverse.vercel.OidcFederationPolicyArgs;\nimport com.pulumi.vercel.inputs.OidcFederationPolicyClaimArgs;\nimport com.pulumi.vercel.inputs.OidcFederationPolicyResourcesArgs;\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 turborepoGithubActions = new OidcFederationPolicy(\"turborepoGithubActions\", OidcFederationPolicyArgs.builder()\n            .name(\"Turborepo for acme/widgets GitHub Workflows\")\n            .client(\"turborepo\")\n            .issuerUrl(\"https://token.actions.githubusercontent.com\")\n            .claims(            \n                OidcFederationPolicyClaimArgs.builder()\n                    .name(\"aud\")\n                    .values(OidcFederationPolicyClaimValueArgs.builder()\n                        .value(\"https://vercel.com/api/login/oauth/token\")\n                        .build())\n                    .build(),\n                OidcFederationPolicyClaimArgs.builder()\n                    .name(\"repository\")\n                    .values(OidcFederationPolicyClaimValueArgs.builder()\n                        .value(\"acme/widgets\")\n                        .build())\n                    .build())\n            .permissions(\"read-write:remote-cache\")\n            .resources(OidcFederationPolicyResourcesArgs.builder()\n                .projectIds(\"*\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  turborepoGithubActions:\n    type: vercel:OidcFederationPolicy\n    name: turborepo_github_actions\n    properties:\n      name: Turborepo for acme/widgets GitHub Workflows\n      client: turborepo\n      issuerUrl: https://token.actions.githubusercontent.com\n      claims:\n        - name: aud\n          values:\n            - value: https://vercel.com/api/login/oauth/token\n        - name: repository\n          values:\n            - value: acme/widgets\n      permissions:\n        - read-write:remote-cache\n      resources:\n        projectIds:\n          - '*'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nIf importing with a team configured on the provider, use the policy ID.\n\n```sh\n$ pulumi import vercel:index/oidcFederationPolicy:OidcFederationPolicy example pol_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nOtherwise, use the team ID and policy ID.\n\n```sh\n$ pulumi import vercel:index/oidcFederationPolicy:OidcFederationPolicy example team_xxxxxxxxxxxxxxxxxxxxxxxx/pol_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n",
            "properties": {
                "claims": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/OidcFederationPolicyClaim:OidcFederationPolicyClaim"
                    },
                    "description": "OIDC claims that must all match for a token to be exchanged.\n"
                },
                "client": {
                    "type": "string",
                    "description": "The CLI whose access tokens this policy permits the workload to obtain. Valid values are \u003cspan pulumi-lang-nodejs=\"`turborepo`\" pulumi-lang-dotnet=\"`Turborepo`\" pulumi-lang-go=\"`turborepo`\" pulumi-lang-python=\"`turborepo`\" pulumi-lang-yaml=\"`turborepo`\" pulumi-lang-java=\"`turborepo`\"\u003e`turborepo`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`vercel`\" pulumi-lang-dotnet=\"`Vercel`\" pulumi-lang-go=\"`vercel`\" pulumi-lang-python=\"`vercel`\" pulumi-lang-yaml=\"`vercel`\" pulumi-lang-java=\"`vercel`\"\u003e`vercel`\u003c/span\u003e.\n"
                },
                "commands": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Vercel CLI command IDs allowed for exchanged tokens. Only supported for the Vercel CLI client. Exactly one of \u003cspan pulumi-lang-nodejs=\"`commands`\" pulumi-lang-dotnet=\"`Commands`\" pulumi-lang-go=\"`commands`\" pulumi-lang-python=\"`commands`\" pulumi-lang-yaml=\"`commands`\" pulumi-lang-java=\"`commands`\"\u003e`commands`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`permissions`\" pulumi-lang-dotnet=\"`Permissions`\" pulumi-lang-go=\"`permissions`\" pulumi-lang-python=\"`permissions`\" pulumi-lang-yaml=\"`permissions`\" pulumi-lang-java=\"`permissions`\"\u003e`permissions`\u003c/span\u003e must be configured.\n"
                },
                "issuerUrl": {
                    "type": "string",
                    "description": "The HTTPS issuer URL in OIDC tokens recognized by this policy.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A human-readable name describing the policy.\n"
                },
                "permissions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Permissions granted to exchanged tokens. For Turborepo remote caching, use `read:remote-cache` for read-only access or `read-write:remote-cache` for read and write access. Use `[\"*\"]` only when the policy should inherit every permission authorized for the selected client. Exactly one of \u003cspan pulumi-lang-nodejs=\"`permissions`\" pulumi-lang-dotnet=\"`Permissions`\" pulumi-lang-go=\"`permissions`\" pulumi-lang-python=\"`permissions`\" pulumi-lang-yaml=\"`permissions`\" pulumi-lang-java=\"`permissions`\"\u003e`permissions`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`commands`\" pulumi-lang-dotnet=\"`Commands`\" pulumi-lang-go=\"`commands`\" pulumi-lang-python=\"`commands`\" pulumi-lang-yaml=\"`commands`\" pulumi-lang-java=\"`commands`\"\u003e`commands`\u003c/span\u003e must be configured.\n"
                },
                "resources": {
                    "$ref": "#/types/vercel:index/OidcFederationPolicyResources:OidcFederationPolicyResources",
                    "description": "Optional project boundary for exchanged tokens. Omitting this block leaves access unbounded within the permissions authorized for the client.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team the policy should exist under. Required when a default team has not been set in the provider.\n"
                }
            },
            "required": [
                "claims",
                "client",
                "issuerUrl",
                "name",
                "permissions",
                "teamId"
            ],
            "inputProperties": {
                "claims": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/OidcFederationPolicyClaim:OidcFederationPolicyClaim"
                    },
                    "description": "OIDC claims that must all match for a token to be exchanged.\n"
                },
                "client": {
                    "type": "string",
                    "description": "The CLI whose access tokens this policy permits the workload to obtain. Valid values are \u003cspan pulumi-lang-nodejs=\"`turborepo`\" pulumi-lang-dotnet=\"`Turborepo`\" pulumi-lang-go=\"`turborepo`\" pulumi-lang-python=\"`turborepo`\" pulumi-lang-yaml=\"`turborepo`\" pulumi-lang-java=\"`turborepo`\"\u003e`turborepo`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`vercel`\" pulumi-lang-dotnet=\"`Vercel`\" pulumi-lang-go=\"`vercel`\" pulumi-lang-python=\"`vercel`\" pulumi-lang-yaml=\"`vercel`\" pulumi-lang-java=\"`vercel`\"\u003e`vercel`\u003c/span\u003e.\n"
                },
                "commands": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Vercel CLI command IDs allowed for exchanged tokens. Only supported for the Vercel CLI client. Exactly one of \u003cspan pulumi-lang-nodejs=\"`commands`\" pulumi-lang-dotnet=\"`Commands`\" pulumi-lang-go=\"`commands`\" pulumi-lang-python=\"`commands`\" pulumi-lang-yaml=\"`commands`\" pulumi-lang-java=\"`commands`\"\u003e`commands`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`permissions`\" pulumi-lang-dotnet=\"`Permissions`\" pulumi-lang-go=\"`permissions`\" pulumi-lang-python=\"`permissions`\" pulumi-lang-yaml=\"`permissions`\" pulumi-lang-java=\"`permissions`\"\u003e`permissions`\u003c/span\u003e must be configured.\n"
                },
                "issuerUrl": {
                    "type": "string",
                    "description": "The HTTPS issuer URL in OIDC tokens recognized by this policy.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A human-readable name describing the policy.\n"
                },
                "permissions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Permissions granted to exchanged tokens. For Turborepo remote caching, use `read:remote-cache` for read-only access or `read-write:remote-cache` for read and write access. Use `[\"*\"]` only when the policy should inherit every permission authorized for the selected client. Exactly one of \u003cspan pulumi-lang-nodejs=\"`permissions`\" pulumi-lang-dotnet=\"`Permissions`\" pulumi-lang-go=\"`permissions`\" pulumi-lang-python=\"`permissions`\" pulumi-lang-yaml=\"`permissions`\" pulumi-lang-java=\"`permissions`\"\u003e`permissions`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`commands`\" pulumi-lang-dotnet=\"`Commands`\" pulumi-lang-go=\"`commands`\" pulumi-lang-python=\"`commands`\" pulumi-lang-yaml=\"`commands`\" pulumi-lang-java=\"`commands`\"\u003e`commands`\u003c/span\u003e must be configured.\n"
                },
                "resources": {
                    "$ref": "#/types/vercel:index/OidcFederationPolicyResources:OidcFederationPolicyResources",
                    "description": "Optional project boundary for exchanged tokens. Omitting this block leaves access unbounded within the permissions authorized for the client.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team the policy should exist under. Required when a default team has not been set in the provider.\n"
                }
            },
            "requiredInputs": [
                "claims",
                "client",
                "issuerUrl"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering OidcFederationPolicy resources.\n",
                "properties": {
                    "claims": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/vercel:index/OidcFederationPolicyClaim:OidcFederationPolicyClaim"
                        },
                        "description": "OIDC claims that must all match for a token to be exchanged.\n"
                    },
                    "client": {
                        "type": "string",
                        "description": "The CLI whose access tokens this policy permits the workload to obtain. Valid values are \u003cspan pulumi-lang-nodejs=\"`turborepo`\" pulumi-lang-dotnet=\"`Turborepo`\" pulumi-lang-go=\"`turborepo`\" pulumi-lang-python=\"`turborepo`\" pulumi-lang-yaml=\"`turborepo`\" pulumi-lang-java=\"`turborepo`\"\u003e`turborepo`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`vercel`\" pulumi-lang-dotnet=\"`Vercel`\" pulumi-lang-go=\"`vercel`\" pulumi-lang-python=\"`vercel`\" pulumi-lang-yaml=\"`vercel`\" pulumi-lang-java=\"`vercel`\"\u003e`vercel`\u003c/span\u003e.\n"
                    },
                    "commands": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Vercel CLI command IDs allowed for exchanged tokens. Only supported for the Vercel CLI client. Exactly one of \u003cspan pulumi-lang-nodejs=\"`commands`\" pulumi-lang-dotnet=\"`Commands`\" pulumi-lang-go=\"`commands`\" pulumi-lang-python=\"`commands`\" pulumi-lang-yaml=\"`commands`\" pulumi-lang-java=\"`commands`\"\u003e`commands`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`permissions`\" pulumi-lang-dotnet=\"`Permissions`\" pulumi-lang-go=\"`permissions`\" pulumi-lang-python=\"`permissions`\" pulumi-lang-yaml=\"`permissions`\" pulumi-lang-java=\"`permissions`\"\u003e`permissions`\u003c/span\u003e must be configured.\n"
                    },
                    "issuerUrl": {
                        "type": "string",
                        "description": "The HTTPS issuer URL in OIDC tokens recognized by this policy.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "A human-readable name describing the policy.\n"
                    },
                    "permissions": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Permissions granted to exchanged tokens. For Turborepo remote caching, use `read:remote-cache` for read-only access or `read-write:remote-cache` for read and write access. Use `[\"*\"]` only when the policy should inherit every permission authorized for the selected client. Exactly one of \u003cspan pulumi-lang-nodejs=\"`permissions`\" pulumi-lang-dotnet=\"`Permissions`\" pulumi-lang-go=\"`permissions`\" pulumi-lang-python=\"`permissions`\" pulumi-lang-yaml=\"`permissions`\" pulumi-lang-java=\"`permissions`\"\u003e`permissions`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`commands`\" pulumi-lang-dotnet=\"`Commands`\" pulumi-lang-go=\"`commands`\" pulumi-lang-python=\"`commands`\" pulumi-lang-yaml=\"`commands`\" pulumi-lang-java=\"`commands`\"\u003e`commands`\u003c/span\u003e must be configured.\n"
                    },
                    "resources": {
                        "$ref": "#/types/vercel:index/OidcFederationPolicyResources:OidcFederationPolicyResources",
                        "description": "Optional project boundary for exchanged tokens. Omitting this block leaves access unbounded within the permissions authorized for the client.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the team the policy should exist under. Required when a default team has not been set in the provider.\n"
                    }
                },
                "type": "object"
            }
        },
        "vercel:index/project:Project": {
            "description": "Provides a Project resource.\n\nA Project groups deployments and custom domains. To deploy on Vercel, you need to create a Project.\n\nFor more detailed information, please see the [Vercel documentation](https://vercel.com/docs/concepts/projects/overview).\n\n\u003e The inline \u003cspan pulumi-lang-nodejs=\"`environment`\" pulumi-lang-dotnet=\"`Environment`\" pulumi-lang-go=\"`environment`\" pulumi-lang-python=\"`environment`\" pulumi-lang-yaml=\"`environment`\" pulumi-lang-java=\"`environment`\"\u003e`environment`\u003c/span\u003e field is deprecated and retained for backwards compatibility. Use\u003cspan pulumi-lang-nodejs=\" vercel.ProjectEnvironmentVariables \" pulumi-lang-dotnet=\" vercel.ProjectEnvironmentVariables \" pulumi-lang-go=\" ProjectEnvironmentVariables \" pulumi-lang-python=\" ProjectEnvironmentVariables \" pulumi-lang-yaml=\" vercel.ProjectEnvironmentVariables \" pulumi-lang-java=\" vercel.ProjectEnvironmentVariables \"\u003e vercel.ProjectEnvironmentVariables \u003c/span\u003eto manage multiple Environment Variables or\u003cspan pulumi-lang-nodejs=\" vercel.ProjectEnvironmentVariable \" pulumi-lang-dotnet=\" vercel.ProjectEnvironmentVariable \" pulumi-lang-go=\" ProjectEnvironmentVariable \" pulumi-lang-python=\" ProjectEnvironmentVariable \" pulumi-lang-yaml=\" vercel.ProjectEnvironmentVariable \" pulumi-lang-java=\" vercel.ProjectEnvironmentVariable \"\u003e vercel.ProjectEnvironmentVariable \u003c/span\u003eto manage a single Environment Variable instead.\nAt this time you cannot use a Vercel Project resource with in-line \u003cspan pulumi-lang-nodejs=\"`environment`\" pulumi-lang-dotnet=\"`Environment`\" pulumi-lang-go=\"`environment`\" pulumi-lang-python=\"`environment`\" pulumi-lang-yaml=\"`environment`\" pulumi-lang-java=\"`environment`\"\u003e`environment`\u003c/span\u003e in conjunction with any \u003cspan pulumi-lang-nodejs=\"`vercel.ProjectEnvironmentVariables`\" pulumi-lang-dotnet=\"`vercel.ProjectEnvironmentVariables`\" pulumi-lang-go=\"`ProjectEnvironmentVariables`\" pulumi-lang-python=\"`ProjectEnvironmentVariables`\" pulumi-lang-yaml=\"`vercel.ProjectEnvironmentVariables`\" pulumi-lang-java=\"`vercel.ProjectEnvironmentVariables`\"\u003e`vercel.ProjectEnvironmentVariables`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vercel.ProjectEnvironmentVariable`\" pulumi-lang-dotnet=\"`vercel.ProjectEnvironmentVariable`\" pulumi-lang-go=\"`ProjectEnvironmentVariable`\" pulumi-lang-python=\"`ProjectEnvironmentVariable`\" pulumi-lang-yaml=\"`vercel.ProjectEnvironmentVariable`\" pulumi-lang-java=\"`vercel.ProjectEnvironmentVariable`\"\u003e`vercel.ProjectEnvironmentVariable`\u003c/span\u003e resources. Doing so will cause a conflict of settings and will overwrite Environment Variables.\n\n\u003e **Note:** Starting in provider version `4.8.0`, environment variables require an explicit \u003cspan pulumi-lang-nodejs=\"`sensitive`\" pulumi-lang-dotnet=\"`Sensitive`\" pulumi-lang-go=\"`sensitive`\" pulumi-lang-python=\"`sensitive`\" pulumi-lang-yaml=\"`sensitive`\" pulumi-lang-java=\"`sensitive`\"\u003e`sensitive`\u003c/span\u003e value. Secrets (`sensitive = true`) are supported in all target environments, including Development. Team environment variable policies are enforced by the Vercel API at apply time.\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// 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    protectedSourcemaps: true,\n    buildMachineType: \"basic\",\n});\nconst githubActionsTrustedSource = {\n    issuer: \"https://token.actions.githubusercontent.com\",\n    label: \"GitHub Actions\",\n    to: {\n        slugs: [\"preview\"],\n    },\n    claims: {\n        aud: [\"example-audience\"],\n        sub: [\"repo:vercel/some-repo:ref:refs/heads/main\"],\n    },\n};\n// A project that allows trusted sources to bypass Deployment Protection.\nconst withTrustedSources = new vercel.Project(\"with_trusted_sources\", {\n    name: \"example-project-with-trusted-sources\",\n    framework: \"nextjs\",\n    trustedSources: {\n        projects: [{\n            projectId: withGit.id,\n            label: \"Source project\",\n            customAllow: [{\n                from: {\n                    slugs: [\"production\"],\n                },\n                to: {\n                    slugs: [\n                        \"preview\",\n                        \"production\",\n                    ],\n                },\n            }],\n        }],\n        externalSources: [githubActionsTrustedSource],\n    },\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    protected_sourcemaps=True,\n    build_machine_type=\"basic\")\ngithub_actions_trusted_source = {\n    \"issuer\": \"https://token.actions.githubusercontent.com\",\n    \"label\": \"GitHub Actions\",\n    \"to\": {\n        \"slugs\": [\"preview\"],\n    },\n    \"claims\": {\n        \"aud\": [\"example-audience\"],\n        \"sub\": [\"repo:vercel/some-repo:ref:refs/heads/main\"],\n    },\n}\n# A project that allows trusted sources to bypass Deployment Protection.\nwith_trusted_sources = vercel.Project(\"with_trusted_sources\",\n    name=\"example-project-with-trusted-sources\",\n    framework=\"nextjs\",\n    trusted_sources={\n        \"projects\": [{\n            \"project_id\": with_git.id,\n            \"label\": \"Source project\",\n            \"custom_allow\": [{\n                \"from\": {\n                    \"slugs\": [\"production\"],\n                },\n                \"to\": {\n                    \"slugs\": [\n                        \"preview\",\n                        \"production\",\n                    ],\n                },\n            }],\n        }],\n        \"external_sources\": [github_actions_trusted_source],\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    // 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        ProtectedSourcemaps = true,\n        BuildMachineType = \"basic\",\n    });\n\n    var githubActionsTrustedSource = \n    {\n        { \"issuer\", \"https://token.actions.githubusercontent.com\" },\n        { \"label\", \"GitHub Actions\" },\n        { \"to\", \n        {\n            { \"slugs\", new[]\n            {\n                \"preview\",\n            } },\n        } },\n        { \"claims\", \n        {\n            { \"aud\", new[]\n            {\n                \"example-audience\",\n            } },\n            { \"sub\", new[]\n            {\n                \"repo:vercel/some-repo:ref:refs/heads/main\",\n            } },\n        } },\n    };\n\n    // A project that allows trusted sources to bypass Deployment Protection.\n    var withTrustedSources = new Vercel.Project(\"with_trusted_sources\", new()\n    {\n        Name = \"example-project-with-trusted-sources\",\n        Framework = \"nextjs\",\n        TrustedSources = new Vercel.Inputs.ProjectTrustedSourcesArgs\n        {\n            Projects = new[]\n            {\n                new Vercel.Inputs.ProjectTrustedSourcesProjectArgs\n                {\n                    ProjectId = withGit.Id,\n                    Label = \"Source project\",\n                    CustomAllow = new[]\n                    {\n                        \n                        {\n                            { \"from\", \n                            {\n                                { \"slugs\", new[]\n                                {\n                                    \"production\",\n                                } },\n                            } },\n                            { \"to\", \n                            {\n                                { \"slugs\", new[]\n                                {\n                                    \"preview\",\n                                    \"production\",\n                                } },\n                            } },\n                        },\n                    },\n                },\n            },\n            ExternalSources = new[]\n            {\n                githubActionsTrustedSource,\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/v5/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\twithGit, 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\tProtectedSourcemaps: pulumi.Bool(true),\n\t\t\tBuildMachineType:    pulumi.String(\"basic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgithubActionsTrustedSource := map[string]interface{}{\n\t\t\t\"issuer\": \"https://token.actions.githubusercontent.com\",\n\t\t\t\"label\":  \"GitHub Actions\",\n\t\t\t\"to\": map[string]interface{}{\n\t\t\t\t\"slugs\": []string{\n\t\t\t\t\t\"preview\",\n\t\t\t\t},\n\t\t\t},\n\t\t\t\"claims\": map[string]interface{}{\n\t\t\t\t\"aud\": []string{\n\t\t\t\t\t\"example-audience\",\n\t\t\t\t},\n\t\t\t\t\"sub\": []string{\n\t\t\t\t\t\"repo:vercel/some-repo:ref:refs/heads/main\",\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\t\t// A project that allows trusted sources to bypass Deployment Protection.\n\t\t_, err = vercel.NewProject(ctx, \"with_trusted_sources\", \u0026vercel.ProjectArgs{\n\t\t\tName:      pulumi.String(\"example-project-with-trusted-sources\"),\n\t\t\tFramework: pulumi.String(\"nextjs\"),\n\t\t\tTrustedSources: \u0026vercel.ProjectTrustedSourcesArgs{\n\t\t\t\tProjects: vercel.ProjectTrustedSourcesProjectArray{\n\t\t\t\t\t\u0026vercel.ProjectTrustedSourcesProjectArgs{\n\t\t\t\t\t\tProjectId: withGit.ID(),\n\t\t\t\t\t\tLabel:     pulumi.String(\"Source project\"),\n\t\t\t\t\t\tCustomAllow: []map[string]interface{}{\n\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\"from\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"slugs\": []string{\n\t\t\t\t\t\t\t\t\t\t\"production\",\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\t\"to\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"slugs\": []string{\n\t\t\t\t\t\t\t\t\t\t\"preview\",\n\t\t\t\t\t\t\t\t\t\t\"production\",\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},\n\t\t\t\t},\n\t\t\t\tExternalSources: vercel.ProjectTrustedSourcesExternalSourceArray{\n\t\t\t\t\tpulumi.Map(githubActionsTrustedSource),\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.pulumi.vercel.inputs.ProjectTrustedSourcesArgs;\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            .protectedSourcemaps(true)\n            .buildMachineType(\"basic\")\n            .build());\n\n        final var githubActionsTrustedSource = Map.ofEntries(\n            Map.entry(\"issuer\", \"https://token.actions.githubusercontent.com\"),\n            Map.entry(\"label\", \"GitHub Actions\"),\n            Map.entry(\"to\", Map.of(\"slugs\", \"preview\")),\n            Map.entry(\"claims\", Map.ofEntries(\n                Map.entry(\"aud\", \"example-audience\"),\n                Map.entry(\"sub\", \"repo:vercel/some-repo:ref:refs/heads/main\")\n            ))\n        );\n\n        // A project that allows trusted sources to bypass Deployment Protection.\n        var withTrustedSources = new Project(\"withTrustedSources\", ProjectArgs.builder()\n            .name(\"example-project-with-trusted-sources\")\n            .framework(\"nextjs\")\n            .trustedSources(ProjectTrustedSourcesArgs.builder()\n                .projects(ProjectTrustedSourcesProjectArgs.builder()\n                    .projectId(withGit.id())\n                    .label(\"Source project\")\n                    .customAllow(List.of(Map.ofEntries(\n                        Map.entry(\"from\", Map.of(\"slugs\", List.of(\"production\"))),\n                        Map.entry(\"to\", Map.of(\"slugs\", List.of(                        \n                            \"preview\",\n                            \"production\")))\n                    )))\n                    .build())\n                .externalSources(githubActionsTrustedSource)\n                .build())\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      protectedSourcemaps: true # Paid teams must be eligible for Basic build machine routing.\n      buildMachineType: basic\n  # A project that allows trusted sources to bypass Deployment Protection.\n  withTrustedSources:\n    type: vercel:Project\n    name: with_trusted_sources\n    properties:\n      name: example-project-with-trusted-sources\n      framework: nextjs\n      trustedSources:\n        projects:\n          - projectId: ${withGit.id}\n            label: Source project\n            customAllow:\n              - from:\n                  slugs:\n                    - production\n                to:\n                  slugs:\n                    - preview\n                    - production\n        externalSources:\n          - ${githubActionsTrustedSource}\nvariables:\n  githubActionsTrustedSource:\n    issuer: https://token.actions.githubusercontent.com\n    label: GitHub Actions\n    to:\n      slugs:\n        - preview\n    claims:\n      aud:\n        - example-audience\n      sub:\n        - repo:vercel/some-repo:ref:refs/heads/main\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on\nthe provider, simply use the project ID.\n-\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003ecan be found in the project \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e 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\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003eand project_id.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n-\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003ecan be found in the project \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e 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 \"basic\", \"standard\", \"enhanced\", \"turbo\", or \"elastic\". When set to \"elastic\", Vercel automatically adjusts the underlying machine type based on build duration.\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. Deprecated: use \u003cspan pulumi-lang-nodejs=\"`vercel.ProjectEnvironmentVariables`\" pulumi-lang-dotnet=\"`vercel.ProjectEnvironmentVariables`\" pulumi-lang-go=\"`ProjectEnvironmentVariables`\" pulumi-lang-python=\"`ProjectEnvironmentVariables`\" pulumi-lang-yaml=\"`vercel.ProjectEnvironmentVariables`\" pulumi-lang-java=\"`vercel.ProjectEnvironmentVariables`\"\u003e`vercel.ProjectEnvironmentVariables`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vercel.ProjectEnvironmentVariable`\" pulumi-lang-dotnet=\"`vercel.ProjectEnvironmentVariable`\" pulumi-lang-go=\"`ProjectEnvironmentVariable`\" pulumi-lang-python=\"`ProjectEnvironmentVariable`\" pulumi-lang-yaml=\"`vercel.ProjectEnvironmentVariable`\" pulumi-lang-java=\"`vercel.ProjectEnvironmentVariable`\"\u003e`vercel.ProjectEnvironmentVariable`\u003c/span\u003e instead. Retained for backwards compatibility.\n",
                    "deprecationMessage": "The inline environment field is deprecated and retained for backwards compatibility. Use\u003cspan pulumi-lang-nodejs=\" vercel.ProjectEnvironmentVariables \" pulumi-lang-dotnet=\" vercel.ProjectEnvironmentVariables \" pulumi-lang-go=\" ProjectEnvironmentVariables \" pulumi-lang-python=\" ProjectEnvironmentVariables \" pulumi-lang-yaml=\" vercel.ProjectEnvironmentVariables \" pulumi-lang-java=\" vercel.ProjectEnvironmentVariables \"\u003e vercel.ProjectEnvironmentVariables \u003c/span\u003eor\u003cspan pulumi-lang-nodejs=\" vercel.ProjectEnvironmentVariable \" pulumi-lang-dotnet=\" vercel.ProjectEnvironmentVariable \" pulumi-lang-go=\" ProjectEnvironmentVariable \" pulumi-lang-python=\" ProjectEnvironmentVariable \" pulumi-lang-yaml=\" vercel.ProjectEnvironmentVariable \" pulumi-lang-java=\" vercel.ProjectEnvironmentVariable \"\u003e vercel.ProjectEnvironmentVariable \u003c/span\u003einstead. Do not manage the same project with both inline environment and separate environment variable resources."
                },
                "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"
                },
                "passport": {
                    "$ref": "#/types/vercel:index/ProjectPassport:ProjectPassport",
                    "description": "Protect deployments with your own identity provider using an existing Vercel Connect OAuth application. Requires an eligible Enterprise plan and team owner permissions. Omit this attribute to preserve existing settings; set enabled to false to disable Passport. Disabling does not delete the Connect application or its project connections.\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"
                },
                "protectedSourcemaps": {
                    "type": "boolean",
                    "description": "Specifies whether sourcemaps are protected and require authentication to access.\n"
                },
                "publicSource": {
                    "type": "boolean",
                    "description": "Deprecated. The public source feature has been removed from Vercel; this attribute no longer has any effect.\n",
                    "deprecationMessage": "This attribute is deprecated and no longer has any effect. The public source feature has been removed from Vercel, so this value is ignored and no longer sent to the API. It will be removed in a future major version of this provider."
                },
                "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"
                },
                "trustedSources": {
                    "$ref": "#/types/vercel:index/ProjectTrustedSources:ProjectTrustedSources",
                    "description": "Allows configured Vercel projects and external sources to reach this project's protected deployments using short-lived OIDC tokens.\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",
                "passport",
                "previewComments",
                "previewDeploymentsDisabled",
                "prioritiseProductionBuilds",
                "protectedSourcemaps",
                "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 \"basic\", \"standard\", \"enhanced\", \"turbo\", or \"elastic\". When set to \"elastic\", Vercel automatically adjusts the underlying machine type based on build duration.\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. Deprecated: use \u003cspan pulumi-lang-nodejs=\"`vercel.ProjectEnvironmentVariables`\" pulumi-lang-dotnet=\"`vercel.ProjectEnvironmentVariables`\" pulumi-lang-go=\"`ProjectEnvironmentVariables`\" pulumi-lang-python=\"`ProjectEnvironmentVariables`\" pulumi-lang-yaml=\"`vercel.ProjectEnvironmentVariables`\" pulumi-lang-java=\"`vercel.ProjectEnvironmentVariables`\"\u003e`vercel.ProjectEnvironmentVariables`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vercel.ProjectEnvironmentVariable`\" pulumi-lang-dotnet=\"`vercel.ProjectEnvironmentVariable`\" pulumi-lang-go=\"`ProjectEnvironmentVariable`\" pulumi-lang-python=\"`ProjectEnvironmentVariable`\" pulumi-lang-yaml=\"`vercel.ProjectEnvironmentVariable`\" pulumi-lang-java=\"`vercel.ProjectEnvironmentVariable`\"\u003e`vercel.ProjectEnvironmentVariable`\u003c/span\u003e instead. Retained for backwards compatibility.\n",
                    "deprecationMessage": "The inline environment field is deprecated and retained for backwards compatibility. Use\u003cspan pulumi-lang-nodejs=\" vercel.ProjectEnvironmentVariables \" pulumi-lang-dotnet=\" vercel.ProjectEnvironmentVariables \" pulumi-lang-go=\" ProjectEnvironmentVariables \" pulumi-lang-python=\" ProjectEnvironmentVariables \" pulumi-lang-yaml=\" vercel.ProjectEnvironmentVariables \" pulumi-lang-java=\" vercel.ProjectEnvironmentVariables \"\u003e vercel.ProjectEnvironmentVariables \u003c/span\u003eor\u003cspan pulumi-lang-nodejs=\" vercel.ProjectEnvironmentVariable \" pulumi-lang-dotnet=\" vercel.ProjectEnvironmentVariable \" pulumi-lang-go=\" ProjectEnvironmentVariable \" pulumi-lang-python=\" ProjectEnvironmentVariable \" pulumi-lang-yaml=\" vercel.ProjectEnvironmentVariable \" pulumi-lang-java=\" vercel.ProjectEnvironmentVariable \"\u003e vercel.ProjectEnvironmentVariable \u003c/span\u003einstead. Do not manage the same project with both inline environment and separate environment variable resources."
                },
                "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"
                },
                "passport": {
                    "$ref": "#/types/vercel:index/ProjectPassport:ProjectPassport",
                    "description": "Protect deployments with your own identity provider using an existing Vercel Connect OAuth application. Requires an eligible Enterprise plan and team owner permissions. Omit this attribute to preserve existing settings; set enabled to false to disable Passport. Disabling does not delete the Connect application or its project connections.\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"
                },
                "protectedSourcemaps": {
                    "type": "boolean",
                    "description": "Specifies whether sourcemaps are protected and require authentication to access.\n"
                },
                "publicSource": {
                    "type": "boolean",
                    "description": "Deprecated. The public source feature has been removed from Vercel; this attribute no longer has any effect.\n",
                    "deprecationMessage": "This attribute is deprecated and no longer has any effect. The public source feature has been removed from Vercel, so this value is ignored and no longer sent to the API. It will be removed in a future major version of this provider."
                },
                "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"
                },
                "trustedSources": {
                    "$ref": "#/types/vercel:index/ProjectTrustedSources:ProjectTrustedSources",
                    "description": "Allows configured Vercel projects and external sources to reach this project's protected deployments using short-lived OIDC tokens.\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 \"basic\", \"standard\", \"enhanced\", \"turbo\", or \"elastic\". When set to \"elastic\", Vercel automatically adjusts the underlying machine type based on build duration.\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. Deprecated: use \u003cspan pulumi-lang-nodejs=\"`vercel.ProjectEnvironmentVariables`\" pulumi-lang-dotnet=\"`vercel.ProjectEnvironmentVariables`\" pulumi-lang-go=\"`ProjectEnvironmentVariables`\" pulumi-lang-python=\"`ProjectEnvironmentVariables`\" pulumi-lang-yaml=\"`vercel.ProjectEnvironmentVariables`\" pulumi-lang-java=\"`vercel.ProjectEnvironmentVariables`\"\u003e`vercel.ProjectEnvironmentVariables`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vercel.ProjectEnvironmentVariable`\" pulumi-lang-dotnet=\"`vercel.ProjectEnvironmentVariable`\" pulumi-lang-go=\"`ProjectEnvironmentVariable`\" pulumi-lang-python=\"`ProjectEnvironmentVariable`\" pulumi-lang-yaml=\"`vercel.ProjectEnvironmentVariable`\" pulumi-lang-java=\"`vercel.ProjectEnvironmentVariable`\"\u003e`vercel.ProjectEnvironmentVariable`\u003c/span\u003e instead. Retained for backwards compatibility.\n",
                        "deprecationMessage": "The inline environment field is deprecated and retained for backwards compatibility. Use\u003cspan pulumi-lang-nodejs=\" vercel.ProjectEnvironmentVariables \" pulumi-lang-dotnet=\" vercel.ProjectEnvironmentVariables \" pulumi-lang-go=\" ProjectEnvironmentVariables \" pulumi-lang-python=\" ProjectEnvironmentVariables \" pulumi-lang-yaml=\" vercel.ProjectEnvironmentVariables \" pulumi-lang-java=\" vercel.ProjectEnvironmentVariables \"\u003e vercel.ProjectEnvironmentVariables \u003c/span\u003eor\u003cspan pulumi-lang-nodejs=\" vercel.ProjectEnvironmentVariable \" pulumi-lang-dotnet=\" vercel.ProjectEnvironmentVariable \" pulumi-lang-go=\" ProjectEnvironmentVariable \" pulumi-lang-python=\" ProjectEnvironmentVariable \" pulumi-lang-yaml=\" vercel.ProjectEnvironmentVariable \" pulumi-lang-java=\" vercel.ProjectEnvironmentVariable \"\u003e vercel.ProjectEnvironmentVariable \u003c/span\u003einstead. Do not manage the same project with both inline environment and separate environment variable resources."
                    },
                    "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"
                    },
                    "passport": {
                        "$ref": "#/types/vercel:index/ProjectPassport:ProjectPassport",
                        "description": "Protect deployments with your own identity provider using an existing Vercel Connect OAuth application. Requires an eligible Enterprise plan and team owner permissions. Omit this attribute to preserve existing settings; set enabled to false to disable Passport. Disabling does not delete the Connect application or its project connections.\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"
                    },
                    "protectedSourcemaps": {
                        "type": "boolean",
                        "description": "Specifies whether sourcemaps are protected and require authentication to access.\n"
                    },
                    "publicSource": {
                        "type": "boolean",
                        "description": "Deprecated. The public source feature has been removed from Vercel; this attribute no longer has any effect.\n",
                        "deprecationMessage": "This attribute is deprecated and no longer has any effect. The public source feature has been removed from Vercel, so this value is ignored and no longer sent to the API. It will be removed in a future major version of this provider."
                    },
                    "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"
                    },
                    "trustedSources": {
                        "$ref": "#/types/vercel:index/ProjectTrustedSources:ProjectTrustedSources",
                        "description": "Allows configured Vercel projects and external sources to reach this project's protected deployments using short-lived OIDC tokens.\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/v5/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\nThe `pulumi import` command can be used, for example:\n\nIf importing with a team configured on the provider, simply use the project ID.\n-\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003ecan be found in the project \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e 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\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003eand project_id.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n-\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003ecan be found in the project \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e 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/projectDeploymentCheck:ProjectDeploymentCheck": {
            "description": "Creates and manages a Deployment Check for a Vercel project.\n\nThis resource manages a project-level check definition. It does not execute tests, create a GitHub workflow or webhook endpoint, or report check-run results. Configure the corresponding GitHub workflow, external runner, or integration separately.\n\n## Example Usage\n\n### GitHub and webhook checks\n\nUse a Vercel access token authorized for the project. GitHub checks currently support only \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=\"`externalCheckName`\" pulumi-lang-dotnet=\"`ExternalCheckName`\" pulumi-lang-go=\"`externalCheckName`\" pulumi-lang-python=\"`external_check_name`\" pulumi-lang-yaml=\"`externalCheckName`\" pulumi-lang-java=\"`externalCheckName`\"\u003e`external_check_name`\u003c/span\u003e must match the check reported by the workflow. GitHub checks cannot be rerequestable through Vercel.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst config = new pulumi.Config();\n// GitHub repository connected to Vercel, in owner/repository format.\nconst githubRepository = config.require(\"githubRepository\");\nconst example = new vercel.Project(\"example\", {\n    name: \"deployment-checks-example\",\n    gitRepository: {\n        type: \"github\",\n        repo: githubRepository,\n    },\n});\n// The external check name must match the check reported by your GitHub workflow.\n// This resource registers a gate; it does not create or run the workflow.\nconst e2e = new vercel.ProjectDeploymentCheck(\"e2e\", {\n    projectId: example.id,\n    name: \"End-to-end tests\",\n    requires: \"deployment-url\",\n    blocks: \"deployment-alias\",\n    targets: [\"production\"],\n    isRerequestable: false,\n    source: {\n        kind: \"git-provider\",\n        provider: \"github\",\n        externalCheckName: \"e2e\",\n    },\n});\n// A webhook-backed check for an external test runner. The runner must handle\n// check events and report results through the Checks API separately.\nconst webhook = new vercel.ProjectDeploymentCheck(\"webhook\", {\n    projectId: example.id,\n    name: \"External smoke tests\",\n    requires: \"deployment-url\",\n    blocks: \"none\",\n    targets: [\"preview\"],\n    isRerequestable: true,\n    source: {\n        kind: \"webhook\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nconfig = pulumi.Config()\n# GitHub repository connected to Vercel, in owner/repository format.\ngithub_repository = config.require(\"githubRepository\")\nexample = vercel.Project(\"example\",\n    name=\"deployment-checks-example\",\n    git_repository={\n        \"type\": \"github\",\n        \"repo\": github_repository,\n    })\n# The external check name must match the check reported by your GitHub workflow.\n# This resource registers a gate; it does not create or run the workflow.\ne2e = vercel.ProjectDeploymentCheck(\"e2e\",\n    project_id=example.id,\n    name=\"End-to-end tests\",\n    requires=\"deployment-url\",\n    blocks=\"deployment-alias\",\n    targets=[\"production\"],\n    is_rerequestable=False,\n    source={\n        \"kind\": \"git-provider\",\n        \"provider\": \"github\",\n        \"external_check_name\": \"e2e\",\n    })\n# A webhook-backed check for an external test runner. The runner must handle\n# check events and report results through the Checks API separately.\nwebhook = vercel.ProjectDeploymentCheck(\"webhook\",\n    project_id=example.id,\n    name=\"External smoke tests\",\n    requires=\"deployment-url\",\n    blocks=\"none\",\n    targets=[\"preview\"],\n    is_rerequestable=True,\n    source={\n        \"kind\": \"webhook\",\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 config = new Config();\n    // GitHub repository connected to Vercel, in owner/repository format.\n    var githubRepository = config.Require(\"githubRepository\");\n    var example = new Vercel.Project(\"example\", new()\n    {\n        Name = \"deployment-checks-example\",\n        GitRepository = new Vercel.Inputs.ProjectGitRepositoryArgs\n        {\n            Type = \"github\",\n            Repo = githubRepository,\n        },\n    });\n\n    // The external check name must match the check reported by your GitHub workflow.\n    // This resource registers a gate; it does not create or run the workflow.\n    var e2e = new Vercel.ProjectDeploymentCheck(\"e2e\", new()\n    {\n        ProjectId = example.Id,\n        Name = \"End-to-end tests\",\n        Requires = \"deployment-url\",\n        Blocks = \"deployment-alias\",\n        Targets = new[]\n        {\n            \"production\",\n        },\n        IsRerequestable = false,\n        Source = new Vercel.Inputs.ProjectDeploymentCheckSourceArgs\n        {\n            Kind = \"git-provider\",\n            Provider = \"github\",\n            ExternalCheckName = \"e2e\",\n        },\n    });\n\n    // A webhook-backed check for an external test runner. The runner must handle\n    // check events and report results through the Checks API separately.\n    var webhook = new Vercel.ProjectDeploymentCheck(\"webhook\", new()\n    {\n        ProjectId = example.Id,\n        Name = \"External smoke tests\",\n        Requires = \"deployment-url\",\n        Blocks = \"none\",\n        Targets = new[]\n        {\n            \"preview\",\n        },\n        IsRerequestable = true,\n        Source = new Vercel.Inputs.ProjectDeploymentCheckSourceArgs\n        {\n            Kind = \"webhook\",\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/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\t// GitHub repository connected to Vercel, in owner/repository format.\n\t\tgithubRepository := cfg.Require(\"githubRepository\")\n\t\texample, err := vercel.NewProject(ctx, \"example\", \u0026vercel.ProjectArgs{\n\t\t\tName: pulumi.String(\"deployment-checks-example\"),\n\t\t\tGitRepository: \u0026vercel.ProjectGitRepositoryArgs{\n\t\t\t\tType: pulumi.String(\"github\"),\n\t\t\t\tRepo: pulumi.String(githubRepository),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// The external check name must match the check reported by your GitHub workflow.\n\t\t// This resource registers a gate; it does not create or run the workflow.\n\t\t_, err = vercel.NewProjectDeploymentCheck(ctx, \"e2e\", \u0026vercel.ProjectDeploymentCheckArgs{\n\t\t\tProjectId: example.ID(),\n\t\t\tName:      pulumi.String(\"End-to-end tests\"),\n\t\t\tRequires:  pulumi.String(\"deployment-url\"),\n\t\t\tBlocks:    pulumi.String(\"deployment-alias\"),\n\t\t\tTargets: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"production\"),\n\t\t\t},\n\t\t\tIsRerequestable: pulumi.Bool(false),\n\t\t\tSource: \u0026vercel.ProjectDeploymentCheckSourceArgs{\n\t\t\t\tKind:              pulumi.String(\"git-provider\"),\n\t\t\t\tProvider:          pulumi.String(\"github\"),\n\t\t\t\tExternalCheckName: pulumi.String(\"e2e\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// A webhook-backed check for an external test runner. The runner must handle\n\t\t// check events and report results through the Checks API separately.\n\t\t_, err = vercel.NewProjectDeploymentCheck(ctx, \"webhook\", \u0026vercel.ProjectDeploymentCheckArgs{\n\t\t\tProjectId: example.ID(),\n\t\t\tName:      pulumi.String(\"External smoke tests\"),\n\t\t\tRequires:  pulumi.String(\"deployment-url\"),\n\t\t\tBlocks:    pulumi.String(\"none\"),\n\t\t\tTargets: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"preview\"),\n\t\t\t},\n\t\t\tIsRerequestable: pulumi.Bool(true),\n\t\t\tSource: \u0026vercel.ProjectDeploymentCheckSourceArgs{\n\t\t\t\tKind: pulumi.String(\"webhook\"),\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.ProjectDeploymentCheck;\nimport com.pulumiverse.vercel.ProjectDeploymentCheckArgs;\nimport com.pulumi.vercel.inputs.ProjectDeploymentCheckSourceArgs;\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 config = ctx.config();\n        final var githubRepository = config.require(\"githubRepository\");\n        var example = new Project(\"example\", ProjectArgs.builder()\n            .name(\"deployment-checks-example\")\n            .gitRepository(ProjectGitRepositoryArgs.builder()\n                .type(\"github\")\n                .repo(githubRepository)\n                .build())\n            .build());\n\n        // The external check name must match the check reported by your GitHub workflow.\n        // This resource registers a gate; it does not create or run the workflow.\n        var e2e = new ProjectDeploymentCheck(\"e2e\", ProjectDeploymentCheckArgs.builder()\n            .projectId(example.id())\n            .name(\"End-to-end tests\")\n            .requires(\"deployment-url\")\n            .blocks(\"deployment-alias\")\n            .targets(\"production\")\n            .isRerequestable(false)\n            .source(ProjectDeploymentCheckSourceArgs.builder()\n                .kind(\"git-provider\")\n                .provider(\"github\")\n                .externalCheckName(\"e2e\")\n                .build())\n            .build());\n\n        // A webhook-backed check for an external test runner. The runner must handle\n        // check events and report results through the Checks API separately.\n        var webhook = new ProjectDeploymentCheck(\"webhook\", ProjectDeploymentCheckArgs.builder()\n            .projectId(example.id())\n            .name(\"External smoke tests\")\n            .requires(\"deployment-url\")\n            .blocks(\"none\")\n            .targets(\"preview\")\n            .isRerequestable(true)\n            .source(ProjectDeploymentCheckSourceArgs.builder()\n                .kind(\"webhook\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nconfiguration:\n  githubRepository:\n    type: string\nresources:\n  example:\n    type: vercel:Project\n    properties:\n      name: deployment-checks-example\n      gitRepository:\n        type: github\n        repo: ${githubRepository}\n  # The external check name must match the check reported by your GitHub workflow.\n  # This resource registers a gate; it does not create or run the workflow.\n  e2e:\n    type: vercel:ProjectDeploymentCheck\n    properties:\n      projectId: ${example.id}\n      name: End-to-end tests\n      requires: deployment-url\n      blocks: deployment-alias\n      targets:\n        - production\n      isRerequestable: false\n      source:\n        kind: git-provider\n        provider: github\n        externalCheckName: e2e\n  # A webhook-backed check for an external test runner. The runner must handle\n  # check events and report results through the Checks API separately.\n  webhook:\n    type: vercel:ProjectDeploymentCheck\n    properties:\n      projectId: ${example.id}\n      name: External smoke tests\n      requires: deployment-url\n      blocks: none\n      targets:\n        - preview\n      isRerequestable: true\n      source:\n        kind: webhook\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Integration checks\n\nIntegration checks require an integration installation token. The API identifies the integration and installation from that token. Use this token only with an \u003cspan pulumi-lang-nodejs=\"`integration`\" pulumi-lang-dotnet=\"`Integration`\" pulumi-lang-go=\"`integration`\" pulumi-lang-python=\"`integration`\" pulumi-lang-yaml=\"`integration`\" pulumi-lang-java=\"`integration`\"\u003e`integration`\u003c/span\u003e source because it determines the returned source kind. The optional \u003cspan pulumi-lang-nodejs=\"`externalResourceId`\" pulumi-lang-dotnet=\"`ExternalResourceId`\" pulumi-lang-go=\"`externalResourceId`\" pulumi-lang-python=\"`external_resource_id`\" pulumi-lang-yaml=\"`externalResourceId`\" pulumi-lang-java=\"`externalResourceId`\"\u003e`external_resource_id`\u003c/span\u003e must belong to that installation.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as vercel from \"@pulumiverse/vercel\";\n\nconst config = new pulumi.Config();\n// An integration installation token authorized for this project.\nconst integrationToken = config.require(\"integrationToken\");\n// The ID or name of an existing project accessible to the integration.\nconst projectId = config.require(\"projectId\");\n// The team that owns the project.\nconst teamId = config.require(\"teamId\");\nconst integration = new vercel.ProjectDeploymentCheck(\"integration\", {\n    projectId: projectId,\n    name: \"Integration quality gate\",\n    requires: \"build-ready\",\n    blocks: \"deployment-alias\",\n    targets: [\"production\"],\n    source: {\n        kind: \"integration\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nconfig = pulumi.Config()\n# An integration installation token authorized for this project.\nintegration_token = config.require(\"integrationToken\")\n# The ID or name of an existing project accessible to the integration.\nproject_id = config.require(\"projectId\")\n# The team that owns the project.\nteam_id = config.require(\"teamId\")\nintegration = vercel.ProjectDeploymentCheck(\"integration\",\n    project_id=project_id,\n    name=\"Integration quality gate\",\n    requires=\"build-ready\",\n    blocks=\"deployment-alias\",\n    targets=[\"production\"],\n    source={\n        \"kind\": \"integration\",\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 config = new Config();\n    // An integration installation token authorized for this project.\n    var integrationToken = config.Require(\"integrationToken\");\n    // The ID or name of an existing project accessible to the integration.\n    var projectId = config.Require(\"projectId\");\n    // The team that owns the project.\n    var teamId = config.Require(\"teamId\");\n    var integration = new Vercel.ProjectDeploymentCheck(\"integration\", new()\n    {\n        ProjectId = projectId,\n        Name = \"Integration quality gate\",\n        Requires = \"build-ready\",\n        Blocks = \"deployment-alias\",\n        Targets = new[]\n        {\n            \"production\",\n        },\n        Source = new Vercel.Inputs.ProjectDeploymentCheckSourceArgs\n        {\n            Kind = \"integration\",\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/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n\t\"github.com/pulumiverse/pulumi-vercel/sdk/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\t// An integration installation token authorized for this project.\n\t\tintegrationToken := cfg.Require(\"integrationToken\")\n\t\t// The ID or name of an existing project accessible to the integration.\n\t\tprojectId := cfg.Require(\"projectId\")\n\t\t// The team that owns the project.\n\t\tteamId := cfg.Require(\"teamId\")\n\t\t_, err := vercel.NewProjectDeploymentCheck(ctx, \"integration\", \u0026vercel.ProjectDeploymentCheckArgs{\n\t\t\tProjectId: pulumi.String(projectId),\n\t\t\tName:      pulumi.String(\"Integration quality gate\"),\n\t\t\tRequires:  pulumi.String(\"build-ready\"),\n\t\t\tBlocks:    pulumi.String(\"deployment-alias\"),\n\t\t\tTargets: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"production\"),\n\t\t\t},\n\t\t\tSource: \u0026vercel.ProjectDeploymentCheckSourceArgs{\n\t\t\t\tKind: pulumi.String(\"integration\"),\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.ProjectDeploymentCheck;\nimport com.pulumiverse.vercel.ProjectDeploymentCheckArgs;\nimport com.pulumi.vercel.inputs.ProjectDeploymentCheckSourceArgs;\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 config = ctx.config();\n        final var integrationToken = config.require(\"integrationToken\");\n        final var projectId = config.require(\"projectId\");\n        final var teamId = config.require(\"teamId\");\n        var integration = new ProjectDeploymentCheck(\"integration\", ProjectDeploymentCheckArgs.builder()\n            .projectId(projectId)\n            .name(\"Integration quality gate\")\n            .requires(\"build-ready\")\n            .blocks(\"deployment-alias\")\n            .targets(\"production\")\n            .source(ProjectDeploymentCheckSourceArgs.builder()\n                .kind(\"integration\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nconfiguration:\n  integrationToken:\n    type: string\n  projectId:\n    type: string\n  teamId:\n    type: string\nresources:\n  integration:\n    type: vercel:ProjectDeploymentCheck\n    properties:\n      projectId: ${projectId}\n      name: Integration quality gate\n      requires: build-ready\n      blocks: deployment-alias\n      targets:\n        - production\n      source:\n        kind: integration\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Choosing check behavior\n\n- \u003cspan pulumi-lang-nodejs=\"`requires`\" pulumi-lang-dotnet=\"`Requires`\" pulumi-lang-go=\"`requires`\" pulumi-lang-python=\"`requires`\" pulumi-lang-yaml=\"`requires`\" pulumi-lang-java=\"`requires`\"\u003e`requires`\u003c/span\u003e selects when the check can run: `build-ready`, `deployment-url`, 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- `blocks = \"deployment-alias\"` gates domain assignment; `blocks = \"none\"` makes the check non-blocking. Omission uses the API default, `deployment-alias`.\n- \u003cspan pulumi-lang-nodejs=\"`targets`\" pulumi-lang-dotnet=\"`Targets`\" pulumi-lang-go=\"`targets`\" pulumi-lang-python=\"`targets`\" pulumi-lang-yaml=\"`targets`\" pulumi-lang-java=\"`targets`\"\u003e`targets`\u003c/span\u003e accepts \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 custom environment IDs (not slugs). For a custom environment managed by Terraform, use `targets = [vercel_custom_environment.staging.id]`. Omission defaults to production. Use `[\"all\"]` to select every environment; do not combine \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e with other targets or supply an empty set.\n- \u003cspan pulumi-lang-nodejs=\"`isRerequestable`\" pulumi-lang-dotnet=\"`IsRerequestable`\" pulumi-lang-go=\"`isRerequestable`\" pulumi-lang-python=\"`is_rerequestable`\" pulumi-lang-yaml=\"`isRerequestable`\" pulumi-lang-java=\"`isRerequestable`\"\u003e`is_rerequestable`\u003c/span\u003e defaults to false. Enable it only when your webhook runner or integration handles rerun requests.\n- Optional computed settings are populated from the API. Omitting a previously configured setting keeps its current value; it does not reset the setting to its creation default.\n\nChanging \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`project_id`\u003c/span\u003e, an explicitly configured \u003cspan pulumi-lang-nodejs=\"`teamId`\" pulumi-lang-dotnet=\"`TeamId`\" pulumi-lang-go=\"`teamId`\" pulumi-lang-python=\"`team_id`\" pulumi-lang-yaml=\"`teamId`\" pulumi-lang-java=\"`teamId`\"\u003e`team_id`\u003c/span\u003e, or a configured source field replaces the check. Changing \u003cspan pulumi-lang-nodejs=\"`requires`\" pulumi-lang-dotnet=\"`Requires`\" pulumi-lang-go=\"`requires`\" pulumi-lang-python=\"`requires`\" pulumi-lang-yaml=\"`requires`\" pulumi-lang-java=\"`requires`\"\u003e`requires`\u003c/span\u003e to \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 also replaces it because the API does not support that PATCH operation. Other supported settings update in place. Replacement deletes the old check and creates a new check with a new ID.\n\n## Import\n\nUse `team_id/project_id/check_id`, or `project_id/check_id` when the provider supplies the team. Project names are supported; the imported identifier must match the \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`project_id`\u003c/span\u003e value in configuration to avoid replacement.\n\nWith an explicit team:\n\n```sh\n$ pulumi import vercel:index/projectDeploymentCheck:ProjectDeploymentCheck e2e team_xxx/prj_xxx/check_xxx\n```\n\nWith the team configured on the provider:\n\n```sh\n$ pulumi import vercel:index/projectDeploymentCheck:ProjectDeploymentCheck e2e prj_xxx/check_xxx\n```\n\nProject names are also supported. Use the same ID or name as\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003ein config.\n\n```sh\n$ pulumi import vercel:index/projectDeploymentCheck:ProjectDeploymentCheck e2e team_xxx/my-project/check_xxx\n```\n\nFor Terraform 1.5 and later:\n\n\nMatch \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`requires`\" pulumi-lang-dotnet=\"`Requires`\" pulumi-lang-go=\"`requires`\" pulumi-lang-python=\"`requires`\" pulumi-lang-yaml=\"`requires`\" pulumi-lang-java=\"`requires`\"\u003e`requires`\u003c/span\u003e to the existing check before applying. Omit \u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\"\u003e`source`\u003c/span\u003e to preserve an imported source, including Vercel-managed checks and Git-provider variants that this resource cannot create. Likewise, omit \u003cspan pulumi-lang-nodejs=\"`blocks`\" pulumi-lang-dotnet=\"`Blocks`\" pulumi-lang-go=\"`blocks`\" pulumi-lang-python=\"`blocks`\" pulumi-lang-yaml=\"`blocks`\" pulumi-lang-java=\"`blocks`\"\u003e`blocks`\u003c/span\u003e to preserve an API value outside the configurable `deployment-alias` and \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 values. Inspect the imported state with `terraform state show` before configuring additional fields.\n\nA source is required for new checks. For an imported check with an omitted source, configuring a different source replaces it. Supply a writable source before changing \u003cspan pulumi-lang-nodejs=\"`requires`\" pulumi-lang-dotnet=\"`Requires`\" pulumi-lang-go=\"`requires`\" pulumi-lang-python=\"`requires`\" pulumi-lang-yaml=\"`requires`\" pulumi-lang-java=\"`requires`\"\u003e`requires`\u003c/span\u003e to \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; response-only sources cannot be recreated by this resource.\n\n",
            "properties": {
                "blocks": {
                    "type": "string",
                    "description": "The deployment stage blocked by the check. New checks currently support `deployment-alias` and \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"
                },
                "isRerequestable": {
                    "type": "boolean",
                    "description": "Whether users can rerun the check. Defaults to false; must be false for a `git-provider` source.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The human-readable name of the Deployment Check.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID or name of the Vercel project.\n"
                },
                "requires": {
                    "type": "string",
                    "description": "The deployment stage required before the check runs: `build-ready`, `deployment-url`, 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. Changing this to \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 replaces the check because the API does not support that update.\n"
                },
                "source": {
                    "$ref": "#/types/vercel:index/ProjectDeploymentCheckSource:ProjectDeploymentCheckSource",
                    "description": "The system that supplies the Deployment Check. Required when creating a check; changing a configured source field replaces the check. Omit it when managing an imported check whose source is not writable through the API.\n"
                },
                "targets": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Deployment environments to which the check applies: \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 a custom environment ID. Use `[\"all\"]` for every environment; \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e cannot be combined with other targets. The API defaults to `[\"production\"]`.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the Vercel team.\n"
                },
                "timeout": {
                    "type": "integer",
                    "description": "The timeout value supplied to check runners by the Checks API. When omitted, the API determines the value.\n"
                }
            },
            "required": [
                "blocks",
                "isRerequestable",
                "name",
                "projectId",
                "requires",
                "source",
                "targets",
                "teamId",
                "timeout"
            ],
            "inputProperties": {
                "blocks": {
                    "type": "string",
                    "description": "The deployment stage blocked by the check. New checks currently support `deployment-alias` and \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"
                },
                "isRerequestable": {
                    "type": "boolean",
                    "description": "Whether users can rerun the check. Defaults to false; must be false for a `git-provider` source.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The human-readable name of the Deployment Check.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID or name of the Vercel project.\n"
                },
                "requires": {
                    "type": "string",
                    "description": "The deployment stage required before the check runs: `build-ready`, `deployment-url`, 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. Changing this to \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 replaces the check because the API does not support that update.\n"
                },
                "source": {
                    "$ref": "#/types/vercel:index/ProjectDeploymentCheckSource:ProjectDeploymentCheckSource",
                    "description": "The system that supplies the Deployment Check. Required when creating a check; changing a configured source field replaces the check. Omit it when managing an imported check whose source is not writable through the API.\n"
                },
                "targets": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Deployment environments to which the check applies: \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 a custom environment ID. Use `[\"all\"]` for every environment; \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e cannot be combined with other targets. The API defaults to `[\"production\"]`.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the Vercel team.\n"
                },
                "timeout": {
                    "type": "integer",
                    "description": "The timeout value supplied to check runners by the Checks API. When omitted, the API determines the value.\n"
                }
            },
            "requiredInputs": [
                "projectId",
                "requires"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ProjectDeploymentCheck resources.\n",
                "properties": {
                    "blocks": {
                        "type": "string",
                        "description": "The deployment stage blocked by the check. New checks currently support `deployment-alias` and \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"
                    },
                    "isRerequestable": {
                        "type": "boolean",
                        "description": "Whether users can rerun the check. Defaults to false; must be false for a `git-provider` source.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The human-readable name of the Deployment Check.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The ID or name of the Vercel project.\n"
                    },
                    "requires": {
                        "type": "string",
                        "description": "The deployment stage required before the check runs: `build-ready`, `deployment-url`, 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. Changing this to \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 replaces the check because the API does not support that update.\n"
                    },
                    "source": {
                        "$ref": "#/types/vercel:index/ProjectDeploymentCheckSource:ProjectDeploymentCheckSource",
                        "description": "The system that supplies the Deployment Check. Required when creating a check; changing a configured source field replaces the check. Omit it when managing an imported check whose source is not writable through the API.\n"
                    },
                    "targets": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Deployment environments to which the check applies: \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 a custom environment ID. Use `[\"all\"]` for every environment; \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e cannot be combined with other targets. The API defaults to `[\"production\"]`.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the Vercel team.\n"
                    },
                    "timeout": {
                        "type": "integer",
                        "description": "The timeout value supplied to check runners by the Checks API. When omitted, the API determines the value.\n"
                    }
                },
                "type": "object"
            }
        },
        "vercel:index/projectDeploymentRetention:ProjectDeploymentRetention": {
            "description": "Provides a Project Deployment Retention resource.\n\nA Project Deployment Retention resource defines an Deployment Retention on a Vercel Project.\n\nFor more detailed information, please see the [Vercel documentation](https://vercel.com/docs/security/deployment-retention).\n\n\u003e Note that deleting a Deployment Retention will not update the settings in the project, it will only prevent it from being managed via Terraform.\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    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/v5/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\nThe `pulumi import` command can be used, for example:\n\nYou can import via the\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003eand project_id.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n-\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003ecan be found in the project \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e 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// Wait for the domain to be verified before resources that depend on it run.\nconst exampleWaitForReady = new vercel.ProjectDomain(\"example_wait_for_ready\", {\n    projectId: example.id,\n    domain: \"i-wait.vercel.app\",\n    waitForReady: true,\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# Wait for the domain to be verified before resources that depend on it run.\nexample_wait_for_ready = vercel.ProjectDomain(\"example_wait_for_ready\",\n    project_id=example.id,\n    domain=\"i-wait.vercel.app\",\n    wait_for_ready=True)\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    // Wait for the domain to be verified before resources that depend on it run.\n    var exampleWaitForReady = new Vercel.ProjectDomain(\"example_wait_for_ready\", new()\n    {\n        ProjectId = example.Id,\n        Domain = \"i-wait.vercel.app\",\n        WaitForReady = true,\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/v5/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// Wait for the domain to be verified before resources that depend on it run.\n\t\t_, err = vercel.NewProjectDomain(ctx, \"example_wait_for_ready\", \u0026vercel.ProjectDomainArgs{\n\t\t\tProjectId:    example.ID(),\n\t\t\tDomain:       pulumi.String(\"i-wait.vercel.app\"),\n\t\t\tWaitForReady: pulumi.Bool(true),\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        // Wait for the domain to be verified before resources that depend on it run.\n        var exampleWaitForReady = new ProjectDomain(\"exampleWaitForReady\", ProjectDomainArgs.builder()\n            .projectId(example.id())\n            .domain(\"i-wait.vercel.app\")\n            .waitForReady(true)\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  # Wait for the domain to be verified before resources that depend on it run.\n  exampleWaitForReady:\n    type: vercel:ProjectDomain\n    name: example_wait_for_ready\n    properties:\n      projectId: ${example.id}\n      domain: i-wait.vercel.app\n      waitForReady: true\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\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on\nthe provider, simply use the project ID and domain.\n-\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003ecan be found in the project \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e 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,\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003eand domain name.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n-\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003ecan be found in the project \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e 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"
                },
                "misconfigured": {
                    "type": "boolean",
                    "description": "Whether the domain has an invalid DNS configuration or Vercel cannot automatically generate a TLS certificate for it.\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"
                },
                "verifications": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/ProjectDomainVerification:ProjectDomainVerification"
                    },
                    "description": "A list of ownership verification challenges, one of which must be completed to verify the domain for use with the project. These are typically `TXT` records and do not describe the `A` or `CNAME` records needed to route traffic to Vercel.\n"
                },
                "verified": {
                    "type": "boolean",
                    "description": "Whether ownership of the domain is verified for use with the project. This does not indicate whether the domain's DNS records point to Vercel; use \u003cspan pulumi-lang-nodejs=\"`misconfigured`\" pulumi-lang-dotnet=\"`Misconfigured`\" pulumi-lang-go=\"`misconfigured`\" pulumi-lang-python=\"`misconfigured`\" pulumi-lang-yaml=\"`misconfigured`\" pulumi-lang-java=\"`misconfigured`\"\u003e`misconfigured`\u003c/span\u003e for that status.\n"
                },
                "waitForReady": {
                    "type": "boolean",
                    "description": "Wait until the project domain is verified and has a valid DNS configuration before considering it created. DNS records must be configured independently before enabling this option because dependent resources are not created until the wait completes.\n"
                }
            },
            "required": [
                "domain",
                "misconfigured",
                "projectId",
                "teamId",
                "verifications",
                "verified"
            ],
            "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"
                },
                "waitForReady": {
                    "type": "boolean",
                    "description": "Wait until the project domain is verified and has a valid DNS configuration before considering it created. DNS records must be configured independently before enabling this option because dependent resources are not created until the wait completes.\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"
                    },
                    "misconfigured": {
                        "type": "boolean",
                        "description": "Whether the domain has an invalid DNS configuration or Vercel cannot automatically generate a TLS certificate for it.\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"
                    },
                    "verifications": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/vercel:index/ProjectDomainVerification:ProjectDomainVerification"
                        },
                        "description": "A list of ownership verification challenges, one of which must be completed to verify the domain for use with the project. These are typically `TXT` records and do not describe the `A` or `CNAME` records needed to route traffic to Vercel.\n"
                    },
                    "verified": {
                        "type": "boolean",
                        "description": "Whether ownership of the domain is verified for use with the project. This does not indicate whether the domain's DNS records point to Vercel; use \u003cspan pulumi-lang-nodejs=\"`misconfigured`\" pulumi-lang-dotnet=\"`Misconfigured`\" pulumi-lang-go=\"`misconfigured`\" pulumi-lang-python=\"`misconfigured`\" pulumi-lang-yaml=\"`misconfigured`\" pulumi-lang-java=\"`misconfigured`\"\u003e`misconfigured`\u003c/span\u003e for that status.\n"
                    },
                    "waitForReady": {
                        "type": "boolean",
                        "description": "Wait until the project domain is verified and has a valid DNS configuration before considering it created. DNS records must be configured independently before enabling this option because dependent resources are not created until the wait completes.\n"
                    }
                },
                "type": "object"
            }
        },
        "vercel:index/projectEnvironmentVariable:ProjectEnvironmentVariable": {
            "description": "Provides a Project Environment Variable resource.\n\nA Project Environment Variable resource defines an Environment Variable on a Vercel Project.\n\nFor more detailed information, please see the [Vercel documentation](https://vercel.com/docs/concepts/projects/environment-variables).\n\n\u003e Terraform currently provides this Project Environment Variable resource (a single Environment Variable), a Project Environment Variables resource (multiple Environment Variables), and a Project resource with Environment Variables defined in-line via the \u003cspan pulumi-lang-nodejs=\"`environment`\" pulumi-lang-dotnet=\"`Environment`\" pulumi-lang-go=\"`environment`\" pulumi-lang-python=\"`environment`\" pulumi-lang-yaml=\"`environment`\" pulumi-lang-java=\"`environment`\"\u003e`environment`\u003c/span\u003e field.\nAt this time you cannot use a Vercel Project resource with in-line \u003cspan pulumi-lang-nodejs=\"`environment`\" pulumi-lang-dotnet=\"`Environment`\" pulumi-lang-go=\"`environment`\" pulumi-lang-python=\"`environment`\" pulumi-lang-yaml=\"`environment`\" pulumi-lang-java=\"`environment`\"\u003e`environment`\u003c/span\u003e in conjunction with any \u003cspan pulumi-lang-nodejs=\"`vercel.ProjectEnvironmentVariables`\" pulumi-lang-dotnet=\"`vercel.ProjectEnvironmentVariables`\" pulumi-lang-go=\"`ProjectEnvironmentVariables`\" pulumi-lang-python=\"`ProjectEnvironmentVariables`\" pulumi-lang-yaml=\"`vercel.ProjectEnvironmentVariables`\" pulumi-lang-java=\"`vercel.ProjectEnvironmentVariables`\"\u003e`vercel.ProjectEnvironmentVariables`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vercel.ProjectEnvironmentVariable`\" pulumi-lang-dotnet=\"`vercel.ProjectEnvironmentVariable`\" pulumi-lang-go=\"`ProjectEnvironmentVariable`\" pulumi-lang-python=\"`ProjectEnvironmentVariable`\" pulumi-lang-yaml=\"`vercel.ProjectEnvironmentVariable`\" pulumi-lang-java=\"`vercel.ProjectEnvironmentVariable`\"\u003e`vercel.ProjectEnvironmentVariable`\u003c/span\u003e resources. Doing so will cause a conflict of settings and will overwrite Environment Variables.\n\n\u003e **Note:** Starting in provider version `4.8.0`, environment variables require an explicit \u003cspan pulumi-lang-nodejs=\"`sensitive`\" pulumi-lang-dotnet=\"`Sensitive`\" pulumi-lang-go=\"`sensitive`\" pulumi-lang-python=\"`sensitive`\" pulumi-lang-yaml=\"`sensitive`\" pulumi-lang-java=\"`sensitive`\"\u003e`sensitive`\u003c/span\u003e value. Secrets (`sensitive = true`) are supported in all target environments, including Development. Team environment variable policies are enforced by the Vercel API at apply time.\n\n\u003e **Note:** Write-Only argument \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 available to use in place 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. Write-Only arguments are supported in HashiCorp Terraform 1.11.0 and later. Learn more.\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on\nthe provider, simply use the\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003eand environment variable id.\n-\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003ecan be found in the project \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n- environment variable id can be taken from the network tab inside developer tools, while you are on the project page,\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 \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.\n\n```sh\n$ pulumi import vercel:index/projectEnvironmentVariable:ProjectEnvironmentVariable example prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/FdT2e1E5Of6Cihmt\n```\n\nAlternatively, you can import via the team_id,\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003eand\nenvironment variable id.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n-\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003ecan be found in the project \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n- environment variable id can be taken from the network tab inside developer tools, while you are on the project page,\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 \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.\n\n```sh\n$ pulumi import vercel:index/projectEnvironmentVariable:ProjectEnvironmentVariable example team_xxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/FdT2e1E5Of6Cihmt\n```\n\nWhen using value_wo, prefix either import ID format with write-only: to keep the value out of Terraform state. Set\u003cspan pulumi-lang-nodejs=\" valueWoVersion \" pulumi-lang-dotnet=\" ValueWoVersion \" pulumi-lang-go=\" valueWoVersion \" pulumi-lang-python=\" value_wo_version \" pulumi-lang-yaml=\" valueWoVersion \" pulumi-lang-java=\" valueWoVersion \"\u003e value_wo_version \u003c/span\u003eto control subsequent updates.\n\n```sh\n$ pulumi import vercel:index/projectEnvironmentVariable:ProjectEnvironmentVariable example 'write-only:team_xxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/FdT2e1E5Of6Cihmt'\n```\n\n",
            "properties": {
                "comment": {
                    "type": "string",
                    "description": "A comment explaining what the environment variable is for."
                },
                "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."
                },
                "gitBranch": {
                    "type": "string",
                    "description": "The git branch of the Environment Variable."
                },
                "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 (meaning it cannot be read via the API or Vercel Dashboard once set). This must be explicitly set. Secrets are supported in all target environments, including Development.\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."
                },
                "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."
                },
                "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.",
                    "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.",
                    "secret": true
                },
                "valueWoVersion": {
                    "type": "integer",
                    "description": "An integer used to trigger an update to \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. Increment this value when an update to the write-only value is required."
                },
                "visibility": {
                    "type": "string",
                    "description": "Controls how the environment variable is categorized: \u003cspan pulumi-lang-nodejs=\"`config`\" pulumi-lang-dotnet=\"`Config`\" pulumi-lang-go=\"`config`\" pulumi-lang-python=\"`config`\" pulumi-lang-yaml=\"`config`\" pulumi-lang-java=\"`config`\"\u003e`config`\u003c/span\u003e (configuration values) or \u003cspan pulumi-lang-nodejs=\"`secret`\" pulumi-lang-dotnet=\"`Secret`\" pulumi-lang-go=\"`secret`\" pulumi-lang-python=\"`secret`\" pulumi-lang-yaml=\"`secret`\" pulumi-lang-java=\"`secret`\"\u003e`secret`\u003c/span\u003e (secret values). When omitted, visibility is inferred from \u003cspan pulumi-lang-nodejs=\"`sensitive`\" pulumi-lang-dotnet=\"`Sensitive`\" pulumi-lang-go=\"`sensitive`\" pulumi-lang-python=\"`sensitive`\" pulumi-lang-yaml=\"`sensitive`\" pulumi-lang-java=\"`sensitive`\"\u003e`sensitive`\u003c/span\u003e for backwards compatibility and is not sent to the API."
                }
            },
            "required": [
                "comment",
                "customEnvironmentIds",
                "key",
                "projectId",
                "sensitive",
                "targets",
                "teamId",
                "visibility"
            ],
            "inputProperties": {
                "comment": {
                    "type": "string",
                    "description": "A comment explaining what the environment variable is for."
                },
                "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."
                },
                "gitBranch": {
                    "type": "string",
                    "description": "The git branch of the Environment Variable."
                },
                "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 (meaning it cannot be read via the API or Vercel Dashboard once set). This must be explicitly set. Secrets are supported in all target environments, including Development.\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."
                },
                "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."
                },
                "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.",
                    "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.",
                    "secret": true
                },
                "valueWoVersion": {
                    "type": "integer",
                    "description": "An integer used to trigger an update to \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. Increment this value when an update to the write-only value is required."
                },
                "visibility": {
                    "type": "string",
                    "description": "Controls how the environment variable is categorized: \u003cspan pulumi-lang-nodejs=\"`config`\" pulumi-lang-dotnet=\"`Config`\" pulumi-lang-go=\"`config`\" pulumi-lang-python=\"`config`\" pulumi-lang-yaml=\"`config`\" pulumi-lang-java=\"`config`\"\u003e`config`\u003c/span\u003e (configuration values) or \u003cspan pulumi-lang-nodejs=\"`secret`\" pulumi-lang-dotnet=\"`Secret`\" pulumi-lang-go=\"`secret`\" pulumi-lang-python=\"`secret`\" pulumi-lang-yaml=\"`secret`\" pulumi-lang-java=\"`secret`\"\u003e`secret`\u003c/span\u003e (secret values). When omitted, visibility is inferred from \u003cspan pulumi-lang-nodejs=\"`sensitive`\" pulumi-lang-dotnet=\"`Sensitive`\" pulumi-lang-go=\"`sensitive`\" pulumi-lang-python=\"`sensitive`\" pulumi-lang-yaml=\"`sensitive`\" pulumi-lang-java=\"`sensitive`\"\u003e`sensitive`\u003c/span\u003e for backwards compatibility and is not sent to the API."
                }
            },
            "requiredInputs": [
                "key",
                "projectId",
                "sensitive"
            ],
            "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."
                    },
                    "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."
                    },
                    "gitBranch": {
                        "type": "string",
                        "description": "The git branch of the Environment Variable."
                    },
                    "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 (meaning it cannot be read via the API or Vercel Dashboard once set). This must be explicitly set. Secrets are supported in all target environments, including Development.\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."
                    },
                    "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."
                    },
                    "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.",
                        "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.",
                        "secret": true
                    },
                    "valueWoVersion": {
                        "type": "integer",
                        "description": "An integer used to trigger an update to \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. Increment this value when an update to the write-only value is required."
                    },
                    "visibility": {
                        "type": "string",
                        "description": "Controls how the environment variable is categorized: \u003cspan pulumi-lang-nodejs=\"`config`\" pulumi-lang-dotnet=\"`Config`\" pulumi-lang-go=\"`config`\" pulumi-lang-python=\"`config`\" pulumi-lang-yaml=\"`config`\" pulumi-lang-java=\"`config`\"\u003e`config`\u003c/span\u003e (configuration values) or \u003cspan pulumi-lang-nodejs=\"`secret`\" pulumi-lang-dotnet=\"`Secret`\" pulumi-lang-go=\"`secret`\" pulumi-lang-python=\"`secret`\" pulumi-lang-yaml=\"`secret`\" pulumi-lang-java=\"`secret`\"\u003e`secret`\u003c/span\u003e (secret values). When omitted, visibility is inferred from \u003cspan pulumi-lang-nodejs=\"`sensitive`\" pulumi-lang-dotnet=\"`Sensitive`\" pulumi-lang-go=\"`sensitive`\" pulumi-lang-python=\"`sensitive`\" pulumi-lang-yaml=\"`sensitive`\" pulumi-lang-java=\"`sensitive`\"\u003e`sensitive`\u003c/span\u003e for backwards compatibility and is not sent to the API."
                    }
                },
                "type": "object"
            }
        },
        "vercel:index/projectEnvironmentVariables:ProjectEnvironmentVariables": {
            "description": "Provides a resource for managing a number of Project Environment Variables.\n\n\u003e Removing entries from the \u003cspan pulumi-lang-nodejs=\"`variables`\" pulumi-lang-dotnet=\"`Variables`\" pulumi-lang-go=\"`variables`\" pulumi-lang-python=\"`variables`\" pulumi-lang-yaml=\"`variables`\" pulumi-lang-java=\"`variables`\"\u003e`variables`\u003c/span\u003e attribute deletes the corresponding Environment Variables from the Vercel Project. Destroying this resource deletes all Environment Variables it manages. Environment Variables not managed by this resource are left unchanged.\n\nThis resource defines multiple Environment Variables on a Vercel Project.\n\nFor more detailed information, please see the [Vercel documentation](https://vercel.com/docs/concepts/projects/environment-variables).\n\n\u003e Terraform currently provides this Project Environment Variables resource (multiple Environment Variables), a single Project Environment Variable Resource, and a Project resource with Environment Variables defined in-line via the \u003cspan pulumi-lang-nodejs=\"`environment`\" pulumi-lang-dotnet=\"`Environment`\" pulumi-lang-go=\"`environment`\" pulumi-lang-python=\"`environment`\" pulumi-lang-yaml=\"`environment`\" pulumi-lang-java=\"`environment`\"\u003e`environment`\u003c/span\u003e field.\nAt this time you cannot use a Vercel Project resource with in-line \u003cspan pulumi-lang-nodejs=\"`environment`\" pulumi-lang-dotnet=\"`Environment`\" pulumi-lang-go=\"`environment`\" pulumi-lang-python=\"`environment`\" pulumi-lang-yaml=\"`environment`\" pulumi-lang-java=\"`environment`\"\u003e`environment`\u003c/span\u003e in conjunction with any \u003cspan pulumi-lang-nodejs=\"`vercel.ProjectEnvironmentVariables`\" pulumi-lang-dotnet=\"`vercel.ProjectEnvironmentVariables`\" pulumi-lang-go=\"`ProjectEnvironmentVariables`\" pulumi-lang-python=\"`ProjectEnvironmentVariables`\" pulumi-lang-yaml=\"`vercel.ProjectEnvironmentVariables`\" pulumi-lang-java=\"`vercel.ProjectEnvironmentVariables`\"\u003e`vercel.ProjectEnvironmentVariables`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vercel.ProjectEnvironmentVariable`\" pulumi-lang-dotnet=\"`vercel.ProjectEnvironmentVariable`\" pulumi-lang-go=\"`ProjectEnvironmentVariable`\" pulumi-lang-python=\"`ProjectEnvironmentVariable`\" pulumi-lang-yaml=\"`vercel.ProjectEnvironmentVariable`\" pulumi-lang-java=\"`vercel.ProjectEnvironmentVariable`\"\u003e`vercel.ProjectEnvironmentVariable`\u003c/span\u003e resources. Doing so will cause a conflict of settings and will overwrite Environment Variables.\n\n\u003e **Note:** Starting in provider version `4.8.0`, environment variables require an explicit \u003cspan pulumi-lang-nodejs=\"`sensitive`\" pulumi-lang-dotnet=\"`Sensitive`\" pulumi-lang-go=\"`sensitive`\" pulumi-lang-python=\"`sensitive`\" pulumi-lang-yaml=\"`sensitive`\" pulumi-lang-java=\"`sensitive`\"\u003e`sensitive`\u003c/span\u003e value. Secrets (`sensitive = true`) are supported in all target environments, including Development. Team environment variable policies are enforced by the Vercel API at apply time.\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    gitRepository: {\n        type: \"github\",\n        repo: \"vercel/some-repo\",\n    },\n});\nconst exampleProjectEnvironmentVariables = new vercel.ProjectEnvironmentVariables(\"example\", {\n    projectId: example.id,\n    variables: [\n        {\n            key: \"SOME_VARIABLE\",\n            value: \"some_value\",\n            target: [\n                \"production\",\n                \"preview\",\n            ],\n            sensitive: true,\n        },\n        {\n            key: \"ANOTHER_VARIABLE\",\n            value: \"another_value\",\n            gitBranch: \"staging\",\n            target: [\"preview\"],\n            sensitive: true,\n        },\n        {\n            key: \"DEVELOPMENT_VARIABLE\",\n            value: \"development_value\",\n            target: [\"development\"],\n            sensitive: false,\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=example.id,\n    variables=[\n        {\n            \"key\": \"SOME_VARIABLE\",\n            \"value\": \"some_value\",\n            \"target\": [\n                \"production\",\n                \"preview\",\n            ],\n            \"sensitive\": True,\n        },\n        {\n            \"key\": \"ANOTHER_VARIABLE\",\n            \"value\": \"another_value\",\n            \"git_branch\": \"staging\",\n            \"target\": [\"preview\"],\n            \"sensitive\": True,\n        },\n        {\n            \"key\": \"DEVELOPMENT_VARIABLE\",\n            \"value\": \"development_value\",\n            \"target\": [\"development\"],\n            \"sensitive\": False,\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 = example.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                Sensitive = true,\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                Sensitive = true,\n            },\n            new Vercel.Inputs.ProjectEnvironmentVariablesVariableArgs\n            {\n                Key = \"DEVELOPMENT_VARIABLE\",\n                Value = \"development_value\",\n                Target = new[]\n                {\n                    \"development\",\n                },\n                Sensitive = false,\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/v5/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_, err = vercel.NewProjectEnvironmentVariables(ctx, \"example\", \u0026vercel.ProjectEnvironmentVariablesArgs{\n\t\t\tProjectId: example.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\tSensitive: pulumi.Bool(true),\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\tSensitive: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\t\u0026vercel.ProjectEnvironmentVariablesVariableArgs{\n\t\t\t\t\tKey:   pulumi.String(\"DEVELOPMENT_VARIABLE\"),\n\t\t\t\t\tValue: pulumi.String(\"development_value\"),\n\t\t\t\t\tTarget: []string{\n\t\t\t\t\t\t\"development\",\n\t\t\t\t\t},\n\t\t\t\t\tSensitive: pulumi.Bool(false),\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(example.id())\n            .variables(            \n                ProjectEnvironmentVariablesVariableArgs.builder()\n                    .key(\"SOME_VARIABLE\")\n                    .value(\"some_value\")\n                    .target(List.of(                    \n                        \"production\",\n                        \"preview\"))\n                    .sensitive(true)\n                    .build(),\n                ProjectEnvironmentVariablesVariableArgs.builder()\n                    .key(\"ANOTHER_VARIABLE\")\n                    .value(\"another_value\")\n                    .gitBranch(\"staging\")\n                    .target(List.of(\"preview\"))\n                    .sensitive(true)\n                    .build(),\n                ProjectEnvironmentVariablesVariableArgs.builder()\n                    .key(\"DEVELOPMENT_VARIABLE\")\n                    .value(\"development_value\")\n                    .target(List.of(\"development\"))\n                    .sensitive(false)\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: ${example.id}\n      variables:\n        - key: SOME_VARIABLE\n          value: some_value\n          target:\n            - production\n            - preview\n          sensitive: true\n        - key: ANOTHER_VARIABLE\n          value: another_value\n          gitBranch: staging\n          target:\n            - preview\n          sensitive: true\n        - key: DEVELOPMENT_VARIABLE\n          value: development_value\n          target:\n            - development\n          sensitive: false\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": "Manages members and their roles for a Vercel Project.\n\n\u003e Note that this resource does not manage the complete set of members for a project, only the members that\nare explicitly configured here. This is deliberately done to allow granular additions.\nThis, however, means config drift will not be detected for members that are added or removed outside of terraform.\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-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/v5/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/projectProtectionBypass:ProjectProtectionBypass": {
            "description": "Provides a Project Protection Bypass resource.\n\nA Project Protection Bypass is an automation bypass token that allows automation services\nto bypass Deployment Protection on 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 using the `x-vercel-protection-bypass` HTTP header.\n\nMultiple bypasses can be created per project. Exactly one bypass per project may have\n\u003cspan pulumi-lang-nodejs=\"`isEnvVar \" pulumi-lang-dotnet=\"`IsEnvVar \" pulumi-lang-go=\"`isEnvVar \" pulumi-lang-python=\"`is_env_var \" pulumi-lang-yaml=\"`isEnvVar \" pulumi-lang-java=\"`isEnvVar \"\u003e`is_env_var \u003c/span\u003e= true`; that bypass is exposed as the `VERCEL_AUTOMATION_BYPASS_SECRET` environment variable on 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 bypass for a CI pipeline. Because this is the first bypass on the project,\n// Vercel automatically marks it as the env-var default (is_env_var = true), and\n// the secret is exposed as VERCEL_AUTOMATION_BYPASS_SECRET on deployments.\nconst ci = new vercel.ProjectProtectionBypass(\"ci\", {\n    projectId: example.id,\n    note: \"ci pipeline\",\n});\n// A second bypass for QA, with a caller-supplied secret.\nconst qa = new vercel.ProjectProtectionBypass(\"qa\", {\n    projectId: example.id,\n    note: \"preview QA\",\n    secret: \"abcdefghijklmnopqrstuvwxyz123456\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.Project(\"example\", name=\"example-project\")\n# A bypass for a CI pipeline. Because this is the first bypass on the project,\n# Vercel automatically marks it as the env-var default (is_env_var = true), and\n# the secret is exposed as VERCEL_AUTOMATION_BYPASS_SECRET on deployments.\nci = vercel.ProjectProtectionBypass(\"ci\",\n    project_id=example.id,\n    note=\"ci pipeline\")\n# A second bypass for QA, with a caller-supplied secret.\nqa = vercel.ProjectProtectionBypass(\"qa\",\n    project_id=example.id,\n    note=\"preview QA\",\n    secret=\"abcdefghijklmnopqrstuvwxyz123456\")\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 bypass for a CI pipeline. Because this is the first bypass on the project,\n    // Vercel automatically marks it as the env-var default (is_env_var = true), and\n    // the secret is exposed as VERCEL_AUTOMATION_BYPASS_SECRET on deployments.\n    var ci = new Vercel.ProjectProtectionBypass(\"ci\", new()\n    {\n        ProjectId = example.Id,\n        Note = \"ci pipeline\",\n    });\n\n    // A second bypass for QA, with a caller-supplied secret.\n    var qa = new Vercel.ProjectProtectionBypass(\"qa\", new()\n    {\n        ProjectId = example.Id,\n        Note = \"preview QA\",\n        Secret = \"abcdefghijklmnopqrstuvwxyz123456\",\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/v5/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 bypass for a CI pipeline. Because this is the first bypass on the project,\n\t\t// Vercel automatically marks it as the env-var default (is_env_var = true), and\n\t\t// the secret is exposed as VERCEL_AUTOMATION_BYPASS_SECRET on deployments.\n\t\t_, err = vercel.NewProjectProtectionBypass(ctx, \"ci\", \u0026vercel.ProjectProtectionBypassArgs{\n\t\t\tProjectId: example.ID(),\n\t\t\tNote:      pulumi.String(\"ci pipeline\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// A second bypass for QA, with a caller-supplied secret.\n\t\t_, err = vercel.NewProjectProtectionBypass(ctx, \"qa\", \u0026vercel.ProjectProtectionBypassArgs{\n\t\t\tProjectId: example.ID(),\n\t\t\tNote:      pulumi.String(\"preview QA\"),\n\t\t\tSecret:    pulumi.String(\"abcdefghijklmnopqrstuvwxyz123456\"),\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.ProjectProtectionBypass;\nimport com.pulumiverse.vercel.ProjectProtectionBypassArgs;\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 bypass for a CI pipeline. Because this is the first bypass on the project,\n        // Vercel automatically marks it as the env-var default (is_env_var = true), and\n        // the secret is exposed as VERCEL_AUTOMATION_BYPASS_SECRET on deployments.\n        var ci = new ProjectProtectionBypass(\"ci\", ProjectProtectionBypassArgs.builder()\n            .projectId(example.id())\n            .note(\"ci pipeline\")\n            .build());\n\n        // A second bypass for QA, with a caller-supplied secret.\n        var qa = new ProjectProtectionBypass(\"qa\", ProjectProtectionBypassArgs.builder()\n            .projectId(example.id())\n            .note(\"preview QA\")\n            .secret(\"abcdefghijklmnopqrstuvwxyz123456\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:Project\n    properties:\n      name: example-project\n  # A bypass for a CI pipeline. Because this is the first bypass on the project,\n  # Vercel automatically marks it as the env-var default (is_env_var = true), and\n  # the secret is exposed as VERCEL_AUTOMATION_BYPASS_SECRET on deployments.\n  ci:\n    type: vercel:ProjectProtectionBypass\n    properties:\n      projectId: ${example.id}\n      note: ci pipeline\n  # A second bypass for QA, with a caller-supplied secret.\n  qa:\n    type: vercel:ProjectProtectionBypass\n    properties:\n      projectId: ${example.id}\n      note: preview QA\n      secret: abcdefghijklmnopqrstuvwxyz123456\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on\nthe provider, use the project ID and bypass secret.\n-\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003ecan be found in the project \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n- secret is the 32-character bypass value (the map key under `protectionBypass` in the API).\n\n```sh\n$ pulumi import vercel:index/projectProtectionBypass:ProjectProtectionBypass example prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/abcdefghijklmnopqrstuvwxyz123456\n```\n\nAlternatively, you can import via team_id, project_id, and the bypass secret.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n\n```sh\n$ pulumi import vercel:index/projectProtectionBypass:ProjectProtectionBypass example team_xxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/abcdefghijklmnopqrstuvwxyz123456\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "integer",
                    "description": "The unix timestamp in milliseconds at which the bypass was created.\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "The ID of the user who created the bypass.\n"
                },
                "isEnvVar": {
                    "type": "boolean",
                    "description": "Whether this bypass is exposed as the `VERCEL_AUTOMATION_BYPASS_SECRET` environment variable on deployments. Exactly one bypass per project may have this set to true; promoting a different bypass automatically demotes the previous one. Setting this to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e when no other bypass on the project has \u003cspan pulumi-lang-nodejs=\"`isEnvVar \" pulumi-lang-dotnet=\"`IsEnvVar \" pulumi-lang-go=\"`isEnvVar \" pulumi-lang-python=\"`is_env_var \" pulumi-lang-yaml=\"`isEnvVar \" pulumi-lang-java=\"`isEnvVar \"\u003e`is_env_var \u003c/span\u003e= true` is invalid — Vercel requires exactly one default per project, and a solo bypass is always the default.\n"
                },
                "note": {
                    "type": "string",
                    "description": "An optional note shown in the Vercel UI for this bypass. Maximum 100 characters.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project the bypass belongs to.\n"
                },
                "scope": {
                    "type": "string",
                    "description": "The scope of the bypass. Always `automation-bypass` for bypasses managed by this resource.\n"
                },
                "secret": {
                    "type": "string",
                    "description": "The 32-character alphanumeric secret used as the value of the `x-vercel-protection-bypass` header. If omitted, Vercel generates one.\n",
                    "secret": true
                },
                "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": [
                "createdAt",
                "createdBy",
                "isEnvVar",
                "projectId",
                "scope",
                "secret",
                "teamId"
            ],
            "inputProperties": {
                "isEnvVar": {
                    "type": "boolean",
                    "description": "Whether this bypass is exposed as the `VERCEL_AUTOMATION_BYPASS_SECRET` environment variable on deployments. Exactly one bypass per project may have this set to true; promoting a different bypass automatically demotes the previous one. Setting this to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e when no other bypass on the project has \u003cspan pulumi-lang-nodejs=\"`isEnvVar \" pulumi-lang-dotnet=\"`IsEnvVar \" pulumi-lang-go=\"`isEnvVar \" pulumi-lang-python=\"`is_env_var \" pulumi-lang-yaml=\"`isEnvVar \" pulumi-lang-java=\"`isEnvVar \"\u003e`is_env_var \u003c/span\u003e= true` is invalid — Vercel requires exactly one default per project, and a solo bypass is always the default.\n"
                },
                "note": {
                    "type": "string",
                    "description": "An optional note shown in the Vercel UI for this bypass. Maximum 100 characters.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project the bypass belongs to.\n"
                },
                "secret": {
                    "type": "string",
                    "description": "The 32-character alphanumeric secret used as the value of the `x-vercel-protection-bypass` header. If omitted, Vercel generates one.\n",
                    "secret": true
                },
                "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": [
                "projectId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ProjectProtectionBypass resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "integer",
                        "description": "The unix timestamp in milliseconds at which the bypass was created.\n"
                    },
                    "createdBy": {
                        "type": "string",
                        "description": "The ID of the user who created the bypass.\n"
                    },
                    "isEnvVar": {
                        "type": "boolean",
                        "description": "Whether this bypass is exposed as the `VERCEL_AUTOMATION_BYPASS_SECRET` environment variable on deployments. Exactly one bypass per project may have this set to true; promoting a different bypass automatically demotes the previous one. Setting this to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e when no other bypass on the project has \u003cspan pulumi-lang-nodejs=\"`isEnvVar \" pulumi-lang-dotnet=\"`IsEnvVar \" pulumi-lang-go=\"`isEnvVar \" pulumi-lang-python=\"`is_env_var \" pulumi-lang-yaml=\"`isEnvVar \" pulumi-lang-java=\"`isEnvVar \"\u003e`is_env_var \u003c/span\u003e= true` is invalid — Vercel requires exactly one default per project, and a solo bypass is always the default.\n"
                    },
                    "note": {
                        "type": "string",
                        "description": "An optional note shown in the Vercel UI for this bypass. Maximum 100 characters.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the project the bypass belongs to.\n"
                    },
                    "scope": {
                        "type": "string",
                        "description": "The scope of the bypass. Always `automation-bypass` for bypasses managed by this resource.\n"
                    },
                    "secret": {
                        "type": "string",
                        "description": "The 32-character alphanumeric secret used as the value of the `x-vercel-protection-bypass` header. If omitted, Vercel generates one.\n",
                        "secret": true
                    },
                    "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/projectRollingRelease:ProjectRollingRelease": {
            "description": "Resource for a Vercel project rolling release configuration.\n\nThis provider supports two to ten stages, including a non-final stage whose native rules identify the advancement type. This is a provider support restriction, not a claim that the REST API rejects every single-stage policy.\n\nEarlier provider versions accepted one stage. Policies containing only the final 100% stage now fail validation, refresh and import. Keep the prior provider pin until you have reviewed their conversion to supported stages. This provider does not infer missing advancement rules from old state.\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: 100,\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\": 100,\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 = 100,\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/v5/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(100),\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(100)\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: 100\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": "Two to ten stages supported by this provider. Include at least one non-final stage and end with\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": "Two to ten stages supported by this provider. Include at least one non-final stage and end with\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": "Two to ten stages supported by this provider. Include at least one non-final stage and end with\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/projectRoute:ProjectRoute": {
            "description": "Provides a Project Route resource.\n\nThis resource manages one live project-level routing rule for a Vercel project. Each mutation stages a new routing-rules version and promotes it immediately so Terraform state reflects production traffic behavior.\n\nReads and imports intentionally target the live version and ignore unpublished staged drafts created outside Terraform.\n\nPosition is applied when the rule is created or replaced. Use before and after with\u003cspan pulumi-lang-nodejs=\" referenceRouteId \" pulumi-lang-dotnet=\" ReferenceRouteId \" pulumi-lang-go=\" referenceRouteId \" pulumi-lang-python=\" reference_route_id \" pulumi-lang-yaml=\" referenceRouteId \" pulumi-lang-java=\" referenceRouteId \"\u003e reference_route_id \u003c/span\u003ewhen you need deterministic ordering across multiple Terraform-managed rules.\n\nThe Vercel API does not return placement metadata for an individual rule. Terraform preserves the configured position on normal reads, but imported routes start with no position in state.\n\n\u003e This resource refuses to mutate a project while it has an unpublished staged routing-rules version. Publish, restore, or discard the draft first.\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 exampleProjectRoute = new vercel.ProjectRoute(\"example\", {\n    projectId: example.id,\n    name: \"redirect-legacy-docs\",\n    position: {\n        placement: \"start\",\n    },\n    route: {\n        src: \"/docs/:path*\",\n        dest: \"/guides/:path*\",\n        status: 308,\n    },\n});\nconst rewriteEuCampaign = new vercel.ProjectRoute(\"rewrite_eu_campaign\", {\n    projectId: example.id,\n    name: \"rewrite-eu-campaign\",\n    position: {\n        placement: \"after\",\n        referenceRouteId: exampleProjectRoute.id,\n    },\n    route: {\n        src: \"/promo\",\n        dest: \"/campaigns/eu\",\n        has: [{\n            type: \"header\",\n            key: \"x-region\",\n            value: \"eu\",\n        }],\n        missings: [{\n            type: \"cookie\",\n            key: \"preview\",\n            value: \"1\",\n        }],\n    },\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.Project(\"example\", name=\"example-project\")\nexample_project_route = vercel.ProjectRoute(\"example\",\n    project_id=example.id,\n    name=\"redirect-legacy-docs\",\n    position={\n        \"placement\": \"start\",\n    },\n    route={\n        \"src\": \"/docs/:path*\",\n        \"dest\": \"/guides/:path*\",\n        \"status\": 308,\n    })\nrewrite_eu_campaign = vercel.ProjectRoute(\"rewrite_eu_campaign\",\n    project_id=example.id,\n    name=\"rewrite-eu-campaign\",\n    position={\n        \"placement\": \"after\",\n        \"reference_route_id\": example_project_route.id,\n    },\n    route={\n        \"src\": \"/promo\",\n        \"dest\": \"/campaigns/eu\",\n        \"has\": [{\n            \"type\": \"header\",\n            \"key\": \"x-region\",\n            \"value\": \"eu\",\n        }],\n        \"missings\": [{\n            \"type\": \"cookie\",\n            \"key\": \"preview\",\n            \"value\": \"1\",\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    });\n\n    var exampleProjectRoute = new Vercel.ProjectRoute(\"example\", new()\n    {\n        ProjectId = example.Id,\n        Name = \"redirect-legacy-docs\",\n        Position = new Vercel.Inputs.ProjectRoutePositionArgs\n        {\n            Placement = \"start\",\n        },\n        Route = new Vercel.Inputs.ProjectRouteRouteArgs\n        {\n            Src = \"/docs/:path*\",\n            Dest = \"/guides/:path*\",\n            Status = 308,\n        },\n    });\n\n    var rewriteEuCampaign = new Vercel.ProjectRoute(\"rewrite_eu_campaign\", new()\n    {\n        ProjectId = example.Id,\n        Name = \"rewrite-eu-campaign\",\n        Position = new Vercel.Inputs.ProjectRoutePositionArgs\n        {\n            Placement = \"after\",\n            ReferenceRouteId = exampleProjectRoute.Id,\n        },\n        Route = new Vercel.Inputs.ProjectRouteRouteArgs\n        {\n            Src = \"/promo\",\n            Dest = \"/campaigns/eu\",\n            Has = new[]\n            {\n                new Vercel.Inputs.ProjectRouteRouteHaArgs\n                {\n                    Type = \"header\",\n                    Key = \"x-region\",\n                    Value = \"eu\",\n                },\n            },\n            Missings = new[]\n            {\n                new Vercel.Inputs.ProjectRouteRouteMissingArgs\n                {\n                    Type = \"cookie\",\n                    Key = \"preview\",\n                    Value = \"1\",\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/v5/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\texampleProjectRoute, err := vercel.NewProjectRoute(ctx, \"example\", \u0026vercel.ProjectRouteArgs{\n\t\t\tProjectId: example.ID(),\n\t\t\tName:      pulumi.String(\"redirect-legacy-docs\"),\n\t\t\tPosition: \u0026vercel.ProjectRoutePositionArgs{\n\t\t\t\tPlacement: pulumi.String(\"start\"),\n\t\t\t},\n\t\t\tRoute: \u0026vercel.ProjectRouteRouteArgs{\n\t\t\t\tSrc:    pulumi.String(\"/docs/:path*\"),\n\t\t\t\tDest:   pulumi.String(\"/guides/:path*\"),\n\t\t\t\tStatus: pulumi.Int(308),\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.NewProjectRoute(ctx, \"rewrite_eu_campaign\", \u0026vercel.ProjectRouteArgs{\n\t\t\tProjectId: example.ID(),\n\t\t\tName:      pulumi.String(\"rewrite-eu-campaign\"),\n\t\t\tPosition: \u0026vercel.ProjectRoutePositionArgs{\n\t\t\t\tPlacement:        pulumi.String(\"after\"),\n\t\t\t\tReferenceRouteId: exampleProjectRoute.ID(),\n\t\t\t},\n\t\t\tRoute: \u0026vercel.ProjectRouteRouteArgs{\n\t\t\t\tSrc:  pulumi.String(\"/promo\"),\n\t\t\t\tDest: pulumi.String(\"/campaigns/eu\"),\n\t\t\t\tHas: vercel.ProjectRouteRouteHaArray{\n\t\t\t\t\t\u0026vercel.ProjectRouteRouteHaArgs{\n\t\t\t\t\t\tType:  pulumi.String(\"header\"),\n\t\t\t\t\t\tKey:   pulumi.String(\"x-region\"),\n\t\t\t\t\t\tValue: pulumi.String(\"eu\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMissings: vercel.ProjectRouteRouteMissingArray{\n\t\t\t\t\t\u0026vercel.ProjectRouteRouteMissingArgs{\n\t\t\t\t\t\tType:  pulumi.String(\"cookie\"),\n\t\t\t\t\t\tKey:   pulumi.String(\"preview\"),\n\t\t\t\t\t\tValue: pulumi.String(\"1\"),\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.ProjectRoute;\nimport com.pulumiverse.vercel.ProjectRouteArgs;\nimport com.pulumi.vercel.inputs.ProjectRoutePositionArgs;\nimport com.pulumi.vercel.inputs.ProjectRouteRouteArgs;\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 exampleProjectRoute = new ProjectRoute(\"exampleProjectRoute\", ProjectRouteArgs.builder()\n            .projectId(example.id())\n            .name(\"redirect-legacy-docs\")\n            .position(ProjectRoutePositionArgs.builder()\n                .placement(\"start\")\n                .build())\n            .route(ProjectRouteRouteArgs.builder()\n                .src(\"/docs/:path*\")\n                .dest(\"/guides/:path*\")\n                .status(308)\n                .build())\n            .build());\n\n        var rewriteEuCampaign = new ProjectRoute(\"rewriteEuCampaign\", ProjectRouteArgs.builder()\n            .projectId(example.id())\n            .name(\"rewrite-eu-campaign\")\n            .position(ProjectRoutePositionArgs.builder()\n                .placement(\"after\")\n                .referenceRouteId(exampleProjectRoute.id())\n                .build())\n            .route(ProjectRouteRouteArgs.builder()\n                .src(\"/promo\")\n                .dest(\"/campaigns/eu\")\n                .has(ProjectRouteRouteHaArgs.builder()\n                    .type(\"header\")\n                    .key(\"x-region\")\n                    .value(\"eu\")\n                    .build())\n                .missings(ProjectRouteRouteMissingArgs.builder()\n                    .type(\"cookie\")\n                    .key(\"preview\")\n                    .value(\"1\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:Project\n    properties:\n      name: example-project\n  exampleProjectRoute:\n    type: vercel:ProjectRoute\n    name: example\n    properties:\n      projectId: ${example.id}\n      name: redirect-legacy-docs\n      position:\n        placement: start\n      route:\n        src: /docs/:path*\n        dest: /guides/:path*\n        status: 308\n  rewriteEuCampaign:\n    type: vercel:ProjectRoute\n    name: rewrite_eu_campaign\n    properties:\n      projectId: ${example.id}\n      name: rewrite-eu-campaign\n      position:\n        placement: after\n        referenceRouteId: ${exampleProjectRoute.id}\n      route:\n        src: /promo\n        dest: /campaigns/eu\n        has:\n          - type: header\n            key: x-region\n            value: eu\n        missings:\n          - type: cookie\n            key: preview\n            value: '1'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nIf importing with a team configured on the provider, use the project ID and route ID.\n-\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003ecan be found in the project \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n-\u003cspan pulumi-lang-nodejs=\" routeId \" pulumi-lang-dotnet=\" RouteId \" pulumi-lang-go=\" routeId \" pulumi-lang-python=\" route_id \" pulumi-lang-yaml=\" routeId \" pulumi-lang-java=\" routeId \"\u003e route_id \u003c/span\u003ecan be read from `data.vercel_project_routes` or the Vercel routing-rules API.\n\n```sh\n$ pulumi import vercel:index/projectRoute:ProjectRoute example prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/rt_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nAlternatively, you can import via the team_id, project_id, and route_id.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n-\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003ecan be found in the project \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n-\u003cspan pulumi-lang-nodejs=\" routeId \" pulumi-lang-dotnet=\" RouteId \" pulumi-lang-go=\" routeId \" pulumi-lang-python=\" route_id \" pulumi-lang-yaml=\" routeId \" pulumi-lang-java=\" routeId \"\u003e route_id \u003c/span\u003ecan be read from `data.vercel_project_routes` or the Vercel routing-rules API.\n\n```sh\n$ pulumi import vercel:index/projectRoute:ProjectRoute example team_xxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/rt_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n",
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the rule.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Whether the rule is enabled.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A human-readable name for the rule.\n"
                },
                "position": {
                    "$ref": "#/types/vercel:index/ProjectRoutePosition:ProjectRoutePosition",
                    "description": "Where to insert the rule when it is created or replaced. This metadata is not returned by the API, so imported routes do not infer it.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project to manage a routing rule for.\n"
                },
                "route": {
                    "$ref": "#/types/vercel:index/ProjectRouteRoute:ProjectRouteRoute",
                    "description": "The routing rule definition.\n"
                },
                "routeType": {
                    "type": "string",
                    "description": "The computed route type returned by Vercel. One of \u003cspan pulumi-lang-nodejs=\"`rewrite`\" pulumi-lang-dotnet=\"`Rewrite`\" pulumi-lang-go=\"`rewrite`\" pulumi-lang-python=\"`rewrite`\" pulumi-lang-yaml=\"`rewrite`\" pulumi-lang-java=\"`rewrite`\"\u003e`rewrite`\u003c/span\u003e, \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, \u003cspan pulumi-lang-nodejs=\"`setStatus`\" pulumi-lang-dotnet=\"`SetStatus`\" pulumi-lang-go=\"`setStatus`\" pulumi-lang-python=\"`set_status`\" pulumi-lang-yaml=\"`setStatus`\" pulumi-lang-java=\"`setStatus`\"\u003e`set_status`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`transform`\" pulumi-lang-dotnet=\"`Transform`\" pulumi-lang-go=\"`transform`\" pulumi-lang-python=\"`transform`\" pulumi-lang-yaml=\"`transform`\" pulumi-lang-java=\"`transform`\"\u003e`transform`\u003c/span\u003e.\n"
                },
                "srcSyntax": {
                    "type": "string",
                    "description": "The source pattern syntax. You can usually omit this and let Vercel infer it from `route.src`.\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": [
                "description",
                "enabled",
                "name",
                "projectId",
                "route",
                "routeType",
                "srcSyntax",
                "teamId"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the rule.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Whether the rule is enabled.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A human-readable name for the rule.\n"
                },
                "position": {
                    "$ref": "#/types/vercel:index/ProjectRoutePosition:ProjectRoutePosition",
                    "description": "Where to insert the rule when it is created or replaced. This metadata is not returned by the API, so imported routes do not infer it.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project to manage a routing rule for.\n"
                },
                "route": {
                    "$ref": "#/types/vercel:index/ProjectRouteRoute:ProjectRouteRoute",
                    "description": "The routing rule definition.\n"
                },
                "srcSyntax": {
                    "type": "string",
                    "description": "The source pattern syntax. You can usually omit this and let Vercel infer it from `route.src`.\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": [
                "projectId",
                "route"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ProjectRoute resources.\n",
                "properties": {
                    "description": {
                        "type": "string",
                        "description": "An optional description of the rule.\n"
                    },
                    "enabled": {
                        "type": "boolean",
                        "description": "Whether the rule is enabled.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "A human-readable name for the rule.\n"
                    },
                    "position": {
                        "$ref": "#/types/vercel:index/ProjectRoutePosition:ProjectRoutePosition",
                        "description": "Where to insert the rule when it is created or replaced. This metadata is not returned by the API, so imported routes do not infer it.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the project to manage a routing rule for.\n"
                    },
                    "route": {
                        "$ref": "#/types/vercel:index/ProjectRouteRoute:ProjectRouteRoute",
                        "description": "The routing rule definition.\n"
                    },
                    "routeType": {
                        "type": "string",
                        "description": "The computed route type returned by Vercel. One of \u003cspan pulumi-lang-nodejs=\"`rewrite`\" pulumi-lang-dotnet=\"`Rewrite`\" pulumi-lang-go=\"`rewrite`\" pulumi-lang-python=\"`rewrite`\" pulumi-lang-yaml=\"`rewrite`\" pulumi-lang-java=\"`rewrite`\"\u003e`rewrite`\u003c/span\u003e, \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, \u003cspan pulumi-lang-nodejs=\"`setStatus`\" pulumi-lang-dotnet=\"`SetStatus`\" pulumi-lang-go=\"`setStatus`\" pulumi-lang-python=\"`set_status`\" pulumi-lang-yaml=\"`setStatus`\" pulumi-lang-java=\"`setStatus`\"\u003e`set_status`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`transform`\" pulumi-lang-dotnet=\"`Transform`\" pulumi-lang-go=\"`transform`\" pulumi-lang-python=\"`transform`\" pulumi-lang-yaml=\"`transform`\" pulumi-lang-java=\"`transform`\"\u003e`transform`\u003c/span\u003e.\n"
                    },
                    "srcSyntax": {
                        "type": "string",
                        "description": "The source pattern syntax. You can usually omit this and let Vercel infer it from `route.src`.\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/projectTracing:ProjectTracing": {
            "description": "Provides a Project Tracing resource.\n\nProject Tracing sends OpenTelemetry traces from a project's deployments to Vercel. Ordered sampling rules can limit which traces are retained.\n\nDeleting this resource disables tracing for the 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.ProjectTracing(\"example\", {\n    projectId: exampleVercelProject.id,\n    samplingRules: [{\n        rate: 0.2,\n        environment: \"production\",\n        requestPath: \"/api\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.ProjectTracing(\"example\",\n    project_id=example_vercel_project[\"id\"],\n    sampling_rules=[{\n        \"rate\": 0.2,\n        \"environment\": \"production\",\n        \"request_path\": \"/api\",\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.ProjectTracing(\"example\", new()\n    {\n        ProjectId = exampleVercelProject.Id,\n        SamplingRules = new[]\n        {\n            new Vercel.Inputs.ProjectTracingSamplingRuleArgs\n            {\n                Rate = 0.2,\n                Environment = \"production\",\n                RequestPath = \"/api\",\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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.NewProjectTracing(ctx, \"example\", \u0026vercel.ProjectTracingArgs{\n\t\t\tProjectId: pulumi.Any(exampleVercelProject.Id),\n\t\t\tSamplingRules: vercel.ProjectTracingSamplingRuleArray{\n\t\t\t\t\u0026vercel.ProjectTracingSamplingRuleArgs{\n\t\t\t\t\tRate:        pulumi.Float64(0.2),\n\t\t\t\t\tEnvironment: pulumi.String(\"production\"),\n\t\t\t\t\tRequestPath: pulumi.String(\"/api\"),\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.ProjectTracing;\nimport com.pulumiverse.vercel.ProjectTracingArgs;\nimport com.pulumi.vercel.inputs.ProjectTracingSamplingRuleArgs;\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 ProjectTracing(\"example\", ProjectTracingArgs.builder()\n            .projectId(exampleVercelProject.id())\n            .samplingRules(ProjectTracingSamplingRuleArgs.builder()\n                .rate(0.2)\n                .environment(\"production\")\n                .requestPath(\"/api\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:ProjectTracing\n    properties:\n      projectId: ${exampleVercelProject.id}\n      samplingRules:\n        - rate: 0.2\n          environment: production\n          requestPath: /api\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nProject Tracing can be imported by specifying the project ID.\n\n```sh\n$ pulumi import vercel:index/projectTracing:ProjectTracing example prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nAlternatively, specify the team ID and project ID.\n\n```sh\n$ pulumi import vercel:index/projectTracing:ProjectTracing example team_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n",
            "properties": {
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Project to configure tracing for.\n"
                },
                "samplingRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/ProjectTracingSamplingRule:ProjectTracingSamplingRule"
                    },
                    "description": "Ordered head-sampling rules for traces. If omitted, all traces are retained.\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": [
                "projectId",
                "teamId"
            ],
            "inputProperties": {
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Project to configure tracing for.\n"
                },
                "samplingRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/ProjectTracingSamplingRule:ProjectTracingSamplingRule"
                    },
                    "description": "Ordered head-sampling rules for traces. If omitted, all traces are retained.\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": [
                "projectId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ProjectTracing resources.\n",
                "properties": {
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the Project to configure tracing for.\n"
                    },
                    "samplingRules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/vercel:index/ProjectTracingSamplingRule:ProjectTracingSamplingRule"
                        },
                        "description": "Ordered head-sampling rules for traces. If omitted, all traces are retained.\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/shareableLink:ShareableLink": {
            "description": "Manages a shareable link for an existing Vercel alias. Anyone with the link can bypass Deployment Protection for that alias. Ordinary deployment URLs without an alias record are not supported.\n\n\u003e **Hobby plans:** Only one shareable link can exist per account. Creating a link automatically revokes other shareable links across the account, including links managed outside Terraform. Managing multiple links on a Hobby account will cause recurring drift.\n\nThe secret and URL are sensitive but are stored in Terraform state. Protect access to your state. Only one shareable link can exist per alias; import an existing link before managing it. Custom shareable-link parameters are not supported.\n\nChanging\u003cspan pulumi-lang-nodejs=\" ttlSeconds \" pulumi-lang-dotnet=\" TtlSeconds \" pulumi-lang-go=\" ttlSeconds \" pulumi-lang-python=\" ttl_seconds \" pulumi-lang-yaml=\" ttlSeconds \" pulumi-lang-java=\" ttlSeconds \"\u003e ttl_seconds \u003c/span\u003eor\u003cspan pulumi-lang-nodejs=\" rotationId \" pulumi-lang-dotnet=\" RotationId \" pulumi-lang-go=\" rotationId \" pulumi-lang-python=\" rotation_id \" pulumi-lang-yaml=\" rotationId \" pulumi-lang-java=\" rotationId \"\u003e rotation_id \u003c/span\u003erotates the secret and immediately invalidates the old link. Expired links remain managed and are not automatically renewed. Create-before-destroy is not supported for the same alias.\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 preview = new vercel.ShareableLink(\"preview\", {\n    alias: \"my-project-git-staging.vercel.app\",\n    ttlSeconds: 604800,\n    rotationId: \"1\",\n});\nexport const previewShareUrl = preview.url;\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\npreview = vercel.ShareableLink(\"preview\",\n    alias=\"my-project-git-staging.vercel.app\",\n    ttl_seconds=604800,\n    rotation_id=\"1\")\npulumi.export(\"previewShareUrl\", preview.url)\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 preview = new Vercel.ShareableLink(\"preview\", new()\n    {\n        Alias = \"my-project-git-staging.vercel.app\",\n        TtlSeconds = 604800,\n        RotationId = \"1\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"previewShareUrl\"] = preview.Url,\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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpreview, err := vercel.NewShareableLink(ctx, \"preview\", \u0026vercel.ShareableLinkArgs{\n\t\t\tAlias:      pulumi.String(\"my-project-git-staging.vercel.app\"),\n\t\t\tTtlSeconds: pulumi.Int(604800),\n\t\t\tRotationId: pulumi.String(\"1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"previewShareUrl\", preview.Url)\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.ShareableLink;\nimport com.pulumiverse.vercel.ShareableLinkArgs;\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 preview = new ShareableLink(\"preview\", ShareableLinkArgs.builder()\n            .alias(\"my-project-git-staging.vercel.app\")\n            .ttlSeconds(604800)\n            .rotationId(\"1\")\n            .build());\n\n        ctx.export(\"previewShareUrl\", preview.url());\n    }\n}\n```\n```yaml\nresources:\n  preview:\n    type: vercel:ShareableLink\n    properties:\n      alias: my-project-git-staging.vercel.app\n      ttlSeconds: 604800\n      rotationId: '1'\noutputs:\n  previewShareUrl: ${preview.url}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nImport using an alias hostname, optionally prefixed with the team ID.\n\n```sh\n$ pulumi import vercel:index/shareableLink:ShareableLink preview my-project-git-staging.vercel.app\n$ pulumi import vercel:index/shareableLink:ShareableLink preview team_xxxxxxxxxxxxxxxxxxxxxxxx/my-project-git-staging.vercel.app\n```\n\n",
            "properties": {
                "active": {
                    "type": "boolean",
                    "description": "Whether the link has not expired, as of the last refresh.\n"
                },
                "alias": {
                    "type": "string",
                    "description": "The existing alias hostname, without a scheme or path.\n"
                },
                "createdAt": {
                    "type": "integer",
                    "description": "Creation time in Unix milliseconds.\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "The creator's ID.\n"
                },
                "expiresAt": {
                    "type": "integer",
                    "description": "Expiry time in Unix seconds, or null for no expiry.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The project owning the alias.\n"
                },
                "rotationId": {
                    "type": "string",
                    "description": "Change this value to explicitly rotate the link, including renewing an expired link.\n"
                },
                "secret": {
                    "type": "string",
                    "description": "The generated bearer secret. Stored in Terraform state.\n",
                    "secret": true
                },
                "teamId": {
                    "type": "string",
                    "description": "The team ID. Defaults to the team configured in the provider.\n"
                },
                "ttlSeconds": {
                    "type": "integer",
                    "description": "How long a newly created or rotated link is valid, in seconds (1 to 63072000). Omit for no expiry. Changing this rotates the link.\n"
                },
                "url": {
                    "type": "string",
                    "description": "The HTTPS shareable URL, including the secret. Stored in Terraform state.\n",
                    "secret": true
                }
            },
            "required": [
                "active",
                "alias",
                "createdAt",
                "createdBy",
                "expiresAt",
                "projectId",
                "secret",
                "teamId",
                "url"
            ],
            "inputProperties": {
                "alias": {
                    "type": "string",
                    "description": "The existing alias hostname, without a scheme or path.\n"
                },
                "rotationId": {
                    "type": "string",
                    "description": "Change this value to explicitly rotate the link, including renewing an expired link.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The team ID. Defaults to the team configured in the provider.\n"
                },
                "ttlSeconds": {
                    "type": "integer",
                    "description": "How long a newly created or rotated link is valid, in seconds (1 to 63072000). Omit for no expiry. Changing this rotates the link.\n"
                }
            },
            "requiredInputs": [
                "alias"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ShareableLink resources.\n",
                "properties": {
                    "active": {
                        "type": "boolean",
                        "description": "Whether the link has not expired, as of the last refresh.\n"
                    },
                    "alias": {
                        "type": "string",
                        "description": "The existing alias hostname, without a scheme or path.\n"
                    },
                    "createdAt": {
                        "type": "integer",
                        "description": "Creation time in Unix milliseconds.\n"
                    },
                    "createdBy": {
                        "type": "string",
                        "description": "The creator's ID.\n"
                    },
                    "expiresAt": {
                        "type": "integer",
                        "description": "Expiry time in Unix seconds, or null for no expiry.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The project owning the alias.\n"
                    },
                    "rotationId": {
                        "type": "string",
                        "description": "Change this value to explicitly rotate the link, including renewing an expired link.\n"
                    },
                    "secret": {
                        "type": "string",
                        "description": "The generated bearer secret. Stored in Terraform state.\n",
                        "secret": true
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The team ID. Defaults to the team configured in the provider.\n"
                    },
                    "ttlSeconds": {
                        "type": "integer",
                        "description": "How long a newly created or rotated link is valid, in seconds (1 to 63072000). Omit for no expiry. Changing this rotates the link.\n"
                    },
                    "url": {
                        "type": "string",
                        "description": "The HTTPS shareable URL, including the secret. Stored in Terraform state.\n",
                        "secret": true
                    }
                },
                "type": "object"
            }
        },
        "vercel:index/sharedEnvironmentVariable:SharedEnvironmentVariable": {
            "description": "Provides a Shared Environment Variable resource.\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\u003e **Note:** Starting in provider version `4.8.0`, environment variables require an explicit \u003cspan pulumi-lang-nodejs=\"`sensitive`\" pulumi-lang-dotnet=\"`Sensitive`\" pulumi-lang-go=\"`sensitive`\" pulumi-lang-python=\"`sensitive`\" pulumi-lang-yaml=\"`sensitive`\" pulumi-lang-java=\"`sensitive`\"\u003e`sensitive`\u003c/span\u003e value. Variables targeting \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 must set `sensitive = false`. Team sensitive-environment-variable policy is enforced by the Vercel API at apply time.\n\n\u003e **Note:** Write-Only argument \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 available to use in place 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. Write-Only arguments are supported in HashiCorp Terraform 1.11.0 and later. Learn more.\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nYou can import via the\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003eand environment variable id.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\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 \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.\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."
                },
                "comment": {
                    "type": "string",
                    "description": "A comment explaining what the environment variable is for."
                },
                "key": {
                    "type": "string",
                    "description": "The name of the Environment Variable.\n"
                },
                "projectIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The ID of the Vercel project."
                },
                "sensitive": {
                    "type": "boolean",
                    "description": "Whether the Environment Variable is sensitive (meaning it cannot be read via the API or Vercel Dashboard once set). This must be explicitly set. Variables targeting \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 must set this to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\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."
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the Vercel team. Shared environment variables require a team."
                },
                "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.",
                    "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.",
                    "secret": true
                },
                "valueWoVersion": {
                    "type": "integer",
                    "description": "An integer used to trigger an update to \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. Increment this value when an update to the write-only value is required."
                }
            },
            "required": [
                "applyToAllCustomEnvironments",
                "comment",
                "key",
                "sensitive",
                "targets",
                "teamId"
            ],
            "inputProperties": {
                "applyToAllCustomEnvironments": {
                    "type": "boolean",
                    "description": "Whether the shared environment variable should be applied to all custom environments in the linked projects."
                },
                "comment": {
                    "type": "string",
                    "description": "A comment explaining what the environment variable is for."
                },
                "key": {
                    "type": "string",
                    "description": "The name of the Environment Variable.\n"
                },
                "projectIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The ID of the Vercel project."
                },
                "sensitive": {
                    "type": "boolean",
                    "description": "Whether the Environment Variable is sensitive (meaning it cannot be read via the API or Vercel Dashboard once set). This must be explicitly set. Variables targeting \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 must set this to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\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."
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the Vercel team. Shared environment variables require a team."
                },
                "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.",
                    "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.",
                    "secret": true
                },
                "valueWoVersion": {
                    "type": "integer",
                    "description": "An integer used to trigger an update to \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. Increment this value when an update to the write-only value is required."
                }
            },
            "requiredInputs": [
                "key",
                "sensitive"
            ],
            "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."
                    },
                    "comment": {
                        "type": "string",
                        "description": "A comment explaining what the environment variable is for."
                    },
                    "key": {
                        "type": "string",
                        "description": "The name of the Environment Variable.\n"
                    },
                    "projectIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The ID of the Vercel project."
                    },
                    "sensitive": {
                        "type": "boolean",
                        "description": "Whether the Environment Variable is sensitive (meaning it cannot be read via the API or Vercel Dashboard once set). This must be explicitly set. Variables targeting \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 must set this to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\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."
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the Vercel team. Shared environment variables require a team."
                    },
                    "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.",
                        "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.",
                        "secret": true
                    },
                    "valueWoVersion": {
                        "type": "integer",
                        "description": "An integer used to trigger an update to \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. Increment this value when an update to the write-only value is required."
                    }
                },
                "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/v5/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    defaultBuildMachineType: \"basic\",\n    sensitiveEnvironmentVariablePolicy: \"off\",\n    defaultDeploymentProtection: {\n        vercelAuthentication: {\n            deploymentType: \"all_deployments\",\n        },\n    },\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    default_build_machine_type=\"basic\",\n    sensitive_environment_variable_policy=\"off\",\n    default_deployment_protection={\n        \"vercel_authentication\": {\n            \"deployment_type\": \"all_deployments\",\n        },\n    },\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        DefaultBuildMachineType = \"basic\",\n        SensitiveEnvironmentVariablePolicy = \"off\",\n        DefaultDeploymentProtection = new Vercel.Inputs.TeamConfigDefaultDeploymentProtectionArgs\n        {\n            VercelAuthentication = new Vercel.Inputs.TeamConfigDefaultDeploymentProtectionVercelAuthenticationArgs\n            {\n                DeploymentType = \"all_deployments\",\n            },\n        },\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/v5/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\tDefaultBuildMachineType:            pulumi.String(\"basic\"),\n\t\t\tSensitiveEnvironmentVariablePolicy: pulumi.String(\"off\"),\n\t\t\tDefaultDeploymentProtection: \u0026vercel.TeamConfigDefaultDeploymentProtectionArgs{\n\t\t\t\tVercelAuthentication: \u0026vercel.TeamConfigDefaultDeploymentProtectionVercelAuthenticationArgs{\n\t\t\t\t\tDeploymentType: pulumi.String(\"all_deployments\"),\n\t\t\t\t},\n\t\t\t},\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.TeamConfigDefaultDeploymentProtectionArgs;\nimport com.pulumi.vercel.inputs.TeamConfigDefaultDeploymentProtectionVercelAuthenticationArgs;\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            .defaultBuildMachineType(\"basic\")\n            .sensitiveEnvironmentVariablePolicy(\"off\")\n            .defaultDeploymentProtection(TeamConfigDefaultDeploymentProtectionArgs.builder()\n                .vercelAuthentication(TeamConfigDefaultDeploymentProtectionVercelAuthenticationArgs.builder()\n                    .deploymentType(\"all_deployments\")\n                    .build())\n                .build())\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      defaultBuildMachineType: basic\n      sensitiveEnvironmentVariablePolicy: off\n      defaultDeploymentProtection:\n        vercelAuthentication:\n          deploymentType: all_deployments\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\nThe `pulumi import` command can be used, for example:\n\nTeam config can be imported via the team ID.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e 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"
                },
                "defaultBuildMachineType": {
                    "type": "string",
                    "description": "The default build machine type for new projects. Must be one of \"basic\", \"standard\", \"enhanced\", \"turbo\", or \"elastic\".\n"
                },
                "defaultDeploymentProtection": {
                    "$ref": "#/types/vercel:index/TeamConfigDefaultDeploymentProtection:TeamConfigDefaultDeploymentProtection",
                    "description": "Deployment Protection defaults copied to new projects. Existing projects are unaffected. Removing this attribute leaves the team default unchanged.\n"
                },
                "defaultPassport": {
                    "$ref": "#/types/vercel:index/TeamConfigDefaultPassport:TeamConfigDefaultPassport",
                    "description": "Default Passport configuration for new projects. Existing projects keep their settings. Requires an eligible Enterprise plan and team owner permissions. Omit this attribute to preserve existing settings; set enabled to false to disable Passport. Disabling does not delete the Connect application or its project connections.\n"
                },
                "description": {
                    "type": "string",
                    "description": "A description of the team.\n"
                },
                "disjunctiveProductionSecretPolicy": {
                    "type": "string",
                    "description": "When enabled, secrets cannot be scoped to both Production and non-Production targets on the same environment variable. One of \u003cspan pulumi-lang-nodejs=\"`on`\" pulumi-lang-dotnet=\"`On`\" pulumi-lang-go=\"`on`\" pulumi-lang-python=\"`on`\" pulumi-lang-yaml=\"`on`\" pulumi-lang-java=\"`on`\"\u003e`on`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`off`\" pulumi-lang-dotnet=\"`Off`\" pulumi-lang-go=\"`off`\" pulumi-lang-python=\"`off`\" pulumi-lang-yaml=\"`off`\" pulumi-lang-java=\"`off`\"\u003e`off`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\"\u003e`default`\u003c/span\u003e.\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",
                    "secret": true
                },
                "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 \u003cspan pulumi-lang-nodejs=\"`on`\" pulumi-lang-dotnet=\"`On`\" pulumi-lang-go=\"`on`\" pulumi-lang-python=\"`on`\" pulumi-lang-yaml=\"`on`\" pulumi-lang-java=\"`on`\"\u003e`on`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`off`\" pulumi-lang-dotnet=\"`Off`\" pulumi-lang-go=\"`off`\" pulumi-lang-python=\"`off`\" pulumi-lang-yaml=\"`off`\" pulumi-lang-java=\"`off`\"\u003e`off`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\"\u003e`default`\u003c/span\u003e.\n",
                    "deprecationMessage": "This attribute is deprecated and will be removed in a future major version. It is not replaced by \u003cspan pulumi-lang-nodejs=\"`disjunctiveProductionSecretPolicy`\" pulumi-lang-dotnet=\"`DisjunctiveProductionSecretPolicy`\" pulumi-lang-go=\"`disjunctiveProductionSecretPolicy`\" pulumi-lang-python=\"`disjunctive_production_secret_policy`\" pulumi-lang-yaml=\"`disjunctiveProductionSecretPolicy`\" pulumi-lang-java=\"`disjunctiveProductionSecretPolicy`\"\u003e`disjunctive_production_secret_policy`\u003c/span\u003e, which enforces a different rule."
                },
                "slug": {
                    "type": "string",
                    "description": "The slug of the team. Will be used in the URL of the team's dashboard.\n"
                }
            },
            "required": [
                "defaultBuildMachineType",
                "defaultDeploymentProtection",
                "defaultPassport",
                "description",
                "disjunctiveProductionSecretPolicy",
                "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"
                },
                "defaultBuildMachineType": {
                    "type": "string",
                    "description": "The default build machine type for new projects. Must be one of \"basic\", \"standard\", \"enhanced\", \"turbo\", or \"elastic\".\n"
                },
                "defaultDeploymentProtection": {
                    "$ref": "#/types/vercel:index/TeamConfigDefaultDeploymentProtection:TeamConfigDefaultDeploymentProtection",
                    "description": "Deployment Protection defaults copied to new projects. Existing projects are unaffected. Removing this attribute leaves the team default unchanged.\n"
                },
                "defaultPassport": {
                    "$ref": "#/types/vercel:index/TeamConfigDefaultPassport:TeamConfigDefaultPassport",
                    "description": "Default Passport configuration for new projects. Existing projects keep their settings. Requires an eligible Enterprise plan and team owner permissions. Omit this attribute to preserve existing settings; set enabled to false to disable Passport. Disabling does not delete the Connect application or its project connections.\n"
                },
                "description": {
                    "type": "string",
                    "description": "A description of the team.\n"
                },
                "disjunctiveProductionSecretPolicy": {
                    "type": "string",
                    "description": "When enabled, secrets cannot be scoped to both Production and non-Production targets on the same environment variable. One of \u003cspan pulumi-lang-nodejs=\"`on`\" pulumi-lang-dotnet=\"`On`\" pulumi-lang-go=\"`on`\" pulumi-lang-python=\"`on`\" pulumi-lang-yaml=\"`on`\" pulumi-lang-java=\"`on`\"\u003e`on`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`off`\" pulumi-lang-dotnet=\"`Off`\" pulumi-lang-go=\"`off`\" pulumi-lang-python=\"`off`\" pulumi-lang-yaml=\"`off`\" pulumi-lang-java=\"`off`\"\u003e`off`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\"\u003e`default`\u003c/span\u003e.\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 \u003cspan pulumi-lang-nodejs=\"`on`\" pulumi-lang-dotnet=\"`On`\" pulumi-lang-go=\"`on`\" pulumi-lang-python=\"`on`\" pulumi-lang-yaml=\"`on`\" pulumi-lang-java=\"`on`\"\u003e`on`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`off`\" pulumi-lang-dotnet=\"`Off`\" pulumi-lang-go=\"`off`\" pulumi-lang-python=\"`off`\" pulumi-lang-yaml=\"`off`\" pulumi-lang-java=\"`off`\"\u003e`off`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\"\u003e`default`\u003c/span\u003e.\n",
                    "deprecationMessage": "This attribute is deprecated and will be removed in a future major version. It is not replaced by \u003cspan pulumi-lang-nodejs=\"`disjunctiveProductionSecretPolicy`\" pulumi-lang-dotnet=\"`DisjunctiveProductionSecretPolicy`\" pulumi-lang-go=\"`disjunctiveProductionSecretPolicy`\" pulumi-lang-python=\"`disjunctive_production_secret_policy`\" pulumi-lang-yaml=\"`disjunctiveProductionSecretPolicy`\" pulumi-lang-java=\"`disjunctiveProductionSecretPolicy`\"\u003e`disjunctive_production_secret_policy`\u003c/span\u003e, which enforces a different rule."
                },
                "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"
                    },
                    "defaultBuildMachineType": {
                        "type": "string",
                        "description": "The default build machine type for new projects. Must be one of \"basic\", \"standard\", \"enhanced\", \"turbo\", or \"elastic\".\n"
                    },
                    "defaultDeploymentProtection": {
                        "$ref": "#/types/vercel:index/TeamConfigDefaultDeploymentProtection:TeamConfigDefaultDeploymentProtection",
                        "description": "Deployment Protection defaults copied to new projects. Existing projects are unaffected. Removing this attribute leaves the team default unchanged.\n"
                    },
                    "defaultPassport": {
                        "$ref": "#/types/vercel:index/TeamConfigDefaultPassport:TeamConfigDefaultPassport",
                        "description": "Default Passport configuration for new projects. Existing projects keep their settings. Requires an eligible Enterprise plan and team owner permissions. Omit this attribute to preserve existing settings; set enabled to false to disable Passport. Disabling does not delete the Connect application or its project connections.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "A description of the team.\n"
                    },
                    "disjunctiveProductionSecretPolicy": {
                        "type": "string",
                        "description": "When enabled, secrets cannot be scoped to both Production and non-Production targets on the same environment variable. One of \u003cspan pulumi-lang-nodejs=\"`on`\" pulumi-lang-dotnet=\"`On`\" pulumi-lang-go=\"`on`\" pulumi-lang-python=\"`on`\" pulumi-lang-yaml=\"`on`\" pulumi-lang-java=\"`on`\"\u003e`on`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`off`\" pulumi-lang-dotnet=\"`Off`\" pulumi-lang-go=\"`off`\" pulumi-lang-python=\"`off`\" pulumi-lang-yaml=\"`off`\" pulumi-lang-java=\"`off`\"\u003e`off`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\"\u003e`default`\u003c/span\u003e.\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",
                        "secret": true
                    },
                    "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 \u003cspan pulumi-lang-nodejs=\"`on`\" pulumi-lang-dotnet=\"`On`\" pulumi-lang-go=\"`on`\" pulumi-lang-python=\"`on`\" pulumi-lang-yaml=\"`on`\" pulumi-lang-java=\"`on`\"\u003e`on`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`off`\" pulumi-lang-dotnet=\"`Off`\" pulumi-lang-go=\"`off`\" pulumi-lang-python=\"`off`\" pulumi-lang-yaml=\"`off`\" pulumi-lang-java=\"`off`\"\u003e`off`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\"\u003e`default`\u003c/span\u003e.\n",
                        "deprecationMessage": "This attribute is deprecated and will be removed in a future major version. It is not replaced by \u003cspan pulumi-lang-nodejs=\"`disjunctiveProductionSecretPolicy`\" pulumi-lang-dotnet=\"`DisjunctiveProductionSecretPolicy`\" pulumi-lang-go=\"`disjunctiveProductionSecretPolicy`\" pulumi-lang-python=\"`disjunctive_production_secret_policy`\" pulumi-lang-yaml=\"`disjunctiveProductionSecretPolicy`\" pulumi-lang-java=\"`disjunctiveProductionSecretPolicy`\"\u003e`disjunctive_production_secret_policy`\u003c/span\u003e, which enforces a different rule."
                    },
                    "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/v5/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\nThe `pulumi import` command can be used, for example:\n\nTo import, use the\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003eand 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/traceDrain:TraceDrain": {
            "description": "Provides a configurable Trace Drain resource.\n\nTrace Drains forward OpenTelemetry trace data from your deployments to an OTLP/HTTP compatible endpoint.\n\n\u003e Only Pro and Enterprise teams can create configurable Trace 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 = new vercel.TraceDrain(\"example\", {\n    name: \"example-trace-drain\",\n    deliveryFormat: \"json\",\n    endpoint: \"https://example.com/v1/traces\",\n    projectIds: [exampleVercelProject.id],\n    samplingRules: [{\n        rate: 0.8,\n        environment: \"production\",\n        requestPath: \"/api\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.TraceDrain(\"example\",\n    name=\"example-trace-drain\",\n    delivery_format=\"json\",\n    endpoint=\"https://example.com/v1/traces\",\n    project_ids=[example_vercel_project[\"id\"]],\n    sampling_rules=[{\n        \"rate\": 0.8,\n        \"environment\": \"production\",\n        \"request_path\": \"/api\",\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.TraceDrain(\"example\", new()\n    {\n        Name = \"example-trace-drain\",\n        DeliveryFormat = \"json\",\n        Endpoint = \"https://example.com/v1/traces\",\n        ProjectIds = new[]\n        {\n            exampleVercelProject.Id,\n        },\n        SamplingRules = new[]\n        {\n            new Vercel.Inputs.TraceDrainSamplingRuleArgs\n            {\n                Rate = 0.8,\n                Environment = \"production\",\n                RequestPath = \"/api\",\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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.NewTraceDrain(ctx, \"example\", \u0026vercel.TraceDrainArgs{\n\t\t\tName:           pulumi.String(\"example-trace-drain\"),\n\t\t\tDeliveryFormat: pulumi.String(\"json\"),\n\t\t\tEndpoint:       pulumi.String(\"https://example.com/v1/traces\"),\n\t\t\tProjectIds: pulumi.StringArray{\n\t\t\t\texampleVercelProject.Id,\n\t\t\t},\n\t\t\tSamplingRules: vercel.TraceDrainSamplingRuleArray{\n\t\t\t\t\u0026vercel.TraceDrainSamplingRuleArgs{\n\t\t\t\t\tRate:        pulumi.Float64(0.8),\n\t\t\t\t\tEnvironment: pulumi.String(\"production\"),\n\t\t\t\t\tRequestPath: pulumi.String(\"/api\"),\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.TraceDrain;\nimport com.pulumiverse.vercel.TraceDrainArgs;\nimport com.pulumi.vercel.inputs.TraceDrainSamplingRuleArgs;\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 TraceDrain(\"example\", TraceDrainArgs.builder()\n            .name(\"example-trace-drain\")\n            .deliveryFormat(\"json\")\n            .endpoint(\"https://example.com/v1/traces\")\n            .projectIds(exampleVercelProject.id())\n            .samplingRules(TraceDrainSamplingRuleArgs.builder()\n                .rate(0.8)\n                .environment(\"production\")\n                .requestPath(\"/api\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:TraceDrain\n    properties:\n      name: example-trace-drain\n      deliveryFormat: json\n      endpoint: https://example.com/v1/traces\n      projectIds:\n        - ${exampleVercelProject.id}\n      samplingRules:\n        - rate: 0.8\n          environment: production\n          requestPath: /api\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a default team configured in\nthe provider, simply use the trace_drain_id.\n\n```sh\n$ pulumi import vercel:index/traceDrain:TraceDrain example drn_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nAlternatively, you can import via team_id/trace_drain_id.\n\n```sh\n$ pulumi import vercel:index/traceDrain:TraceDrain example team_xxxxxxxxxxxxxxxxxxxxxxxx/drn_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\n",
            "properties": {
                "deliveryFormat": {
                    "type": "string",
                    "description": "The OTLP/HTTP format trace 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=\"`proto`\" pulumi-lang-dotnet=\"`Proto`\" pulumi-lang-go=\"`proto`\" pulumi-lang-python=\"`proto`\" pulumi-lang-yaml=\"`proto`\" pulumi-lang-java=\"`proto`\"\u003e`proto`\u003c/span\u003e.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "The OTLP/HTTP traces endpoint. This should be the full traces endpoint URL, commonly ending in `/v1/traces`.\n"
                },
                "headers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Custom headers to include in requests to the trace drain endpoint.\n",
                    "secret": true
                },
                "name": {
                    "type": "string",
                    "description": "A human-readable name for the trace drain.\n"
                },
                "projectIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of project IDs that the trace drain should be associated with. If omitted, traces will be sent for all projects.\n"
                },
                "samplingRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/TraceDrainSamplingRule:TraceDrainSamplingRule"
                    },
                    "description": "Ordered sampling rules for traces sent to this drain. If omitted, all traces are sent.\n"
                },
                "secret": {
                    "type": "string",
                    "description": "A custom secret used to sign trace drain events. If omitted, Vercel generates one.\n",
                    "secret": true
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team the Trace 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",
                "name",
                "secret",
                "teamId"
            ],
            "inputProperties": {
                "deliveryFormat": {
                    "type": "string",
                    "description": "The OTLP/HTTP format trace 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=\"`proto`\" pulumi-lang-dotnet=\"`Proto`\" pulumi-lang-go=\"`proto`\" pulumi-lang-python=\"`proto`\" pulumi-lang-yaml=\"`proto`\" pulumi-lang-java=\"`proto`\"\u003e`proto`\u003c/span\u003e.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "The OTLP/HTTP traces endpoint. This should be the full traces endpoint URL, commonly ending in `/v1/traces`.\n"
                },
                "headers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Custom headers to include in requests to the trace drain endpoint.\n",
                    "secret": true
                },
                "name": {
                    "type": "string",
                    "description": "A human-readable name for the trace drain.\n"
                },
                "projectIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of project IDs that the trace drain should be associated with. If omitted, traces will be sent for all projects.\n"
                },
                "samplingRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/vercel:index/TraceDrainSamplingRule:TraceDrainSamplingRule"
                    },
                    "description": "Ordered sampling rules for traces sent to this drain. If omitted, all traces are sent.\n"
                },
                "secret": {
                    "type": "string",
                    "description": "A custom secret used to sign trace drain events. If omitted, Vercel generates one.\n",
                    "secret": true
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team the Trace 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"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering TraceDrain resources.\n",
                "properties": {
                    "deliveryFormat": {
                        "type": "string",
                        "description": "The OTLP/HTTP format trace 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=\"`proto`\" pulumi-lang-dotnet=\"`Proto`\" pulumi-lang-go=\"`proto`\" pulumi-lang-python=\"`proto`\" pulumi-lang-yaml=\"`proto`\" pulumi-lang-java=\"`proto`\"\u003e`proto`\u003c/span\u003e.\n"
                    },
                    "endpoint": {
                        "type": "string",
                        "description": "The OTLP/HTTP traces endpoint. This should be the full traces endpoint URL, commonly ending in `/v1/traces`.\n"
                    },
                    "headers": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "Custom headers to include in requests to the trace drain endpoint.\n",
                        "secret": true
                    },
                    "name": {
                        "type": "string",
                        "description": "A human-readable name for the trace drain.\n"
                    },
                    "projectIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of project IDs that the trace drain should be associated with. If omitted, traces will be sent for all projects.\n"
                    },
                    "samplingRules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/vercel:index/TraceDrainSamplingRule:TraceDrainSamplingRule"
                        },
                        "description": "Ordered sampling rules for traces sent to this drain. If omitted, all traces are sent.\n"
                    },
                    "secret": {
                        "type": "string",
                        "description": "A custom secret used to sign trace drain events. If omitted, Vercel generates one.\n",
                        "secret": true
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the team the Trace 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/userToken:UserToken": {
            "description": "Provides a User Token resource.\n\nA User Token is an authentication token that can be used to access the Vercel API.\n\nCreating user tokens requires a Vercel API token with full account access. Limited tokens cannot create additional user tokens.\n\nThe \u003cspan pulumi-lang-nodejs=\"`bearerToken`\" pulumi-lang-dotnet=\"`BearerToken`\" pulumi-lang-go=\"`bearerToken`\" pulumi-lang-python=\"`bearer_token`\" pulumi-lang-yaml=\"`bearerToken`\" pulumi-lang-java=\"`bearerToken`\"\u003e`bearer_token`\u003c/span\u003e value is only returned during creation and cannot be retrieved again later. Imported resources will not populate \u003cspan pulumi-lang-nodejs=\"`bearerToken`\" pulumi-lang-dotnet=\"`BearerToken`\" pulumi-lang-go=\"`bearerToken`\" pulumi-lang-python=\"`bearer_token`\" pulumi-lang-yaml=\"`bearerToken`\" pulumi-lang-java=\"`bearerToken`\"\u003e`bearer_token`\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\nconst example = new vercel.UserToken(\"example\", {name: \"example-token\"});\nconst exampleExpiring = new vercel.UserToken(\"example_expiring\", {\n    name: \"example-expiring-token\",\n    expiresAt: 1767225600000,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.UserToken(\"example\", name=\"example-token\")\nexample_expiring = vercel.UserToken(\"example_expiring\",\n    name=\"example-expiring-token\",\n    expires_at=1767225600000)\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.UserToken(\"example\", new()\n    {\n        Name = \"example-token\",\n    });\n\n    var exampleExpiring = new Vercel.UserToken(\"example_expiring\", new()\n    {\n        Name = \"example-expiring-token\",\n        ExpiresAt = 1767225600000,\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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.NewUserToken(ctx, \"example\", \u0026vercel.UserTokenArgs{\n\t\t\tName: 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.NewUserToken(ctx, \"example_expiring\", \u0026vercel.UserTokenArgs{\n\t\t\tName:      pulumi.String(\"example-expiring-token\"),\n\t\t\tExpiresAt: pulumi.Int(1767225600000),\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.UserToken;\nimport com.pulumiverse.vercel.UserTokenArgs;\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 UserToken(\"example\", UserTokenArgs.builder()\n            .name(\"example-token\")\n            .build());\n\n        var exampleExpiring = new UserToken(\"exampleExpiring\", UserTokenArgs.builder()\n            .name(\"example-expiring-token\")\n            .expiresAt(1767225600000)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:UserToken\n    properties:\n      name: example-token\n  exampleExpiring:\n    type: vercel:UserToken\n    name: example_expiring\n    properties:\n      name: example-expiring-token\n      expiresAt: 1.7672256e+12\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on\nthe provider, simply use the token ID.\n-\u003cspan pulumi-lang-nodejs=\" tokenId \" pulumi-lang-dotnet=\" TokenId \" pulumi-lang-go=\" tokenId \" pulumi-lang-python=\" token_id \" pulumi-lang-yaml=\" tokenId \" pulumi-lang-java=\" tokenId \"\u003e token_id \u003c/span\u003ecan be found in the Vercel UI under Account Settings, Tokens.\n\n```sh\n$ pulumi import vercel:index/userToken:UserToken example 5d9f2ebd38ddca62e5d51e9c1704c72530bdc8bfdd41e782a6687c48399e8391\n```\n\nAlternatively, you can import via the\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003eand token_id.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n-\u003cspan pulumi-lang-nodejs=\" tokenId \" pulumi-lang-dotnet=\" TokenId \" pulumi-lang-go=\" tokenId \" pulumi-lang-python=\" token_id \" pulumi-lang-yaml=\" tokenId \" pulumi-lang-java=\" tokenId \"\u003e token_id \u003c/span\u003ecan be found in the Vercel UI under Account Settings, Tokens.\n\n```sh\n$ pulumi import vercel:index/userToken:UserToken example team_xxxxxxxxxxxxxxxxxxxxxxxx/5d9f2ebd38ddca62e5d51e9c1704c72530bdc8bfdd41e782a6687c48399e8391\n```\n\n",
            "properties": {
                "activeAt": {
                    "type": "integer",
                    "description": "The Unix timestamp in milliseconds when the token was last active.\n"
                },
                "bearerToken": {
                    "type": "string",
                    "description": "The actual token value. This is only returned during create and then preserved from Terraform state.\n",
                    "secret": true
                },
                "createdAt": {
                    "type": "integer",
                    "description": "The Unix timestamp in milliseconds when the token was created.\n"
                },
                "expiresAt": {
                    "type": "integer",
                    "description": "The Unix timestamp in milliseconds when the token should expire.\n"
                },
                "leakedAt": {
                    "type": "integer",
                    "description": "The Unix timestamp in milliseconds when the token was marked as leaked.\n"
                },
                "leakedUrl": {
                    "type": "string",
                    "description": "The URL where the token was discovered as leaked.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The human-readable name of the token.\n"
                },
                "origin": {
                    "type": "string",
                    "description": "How the token was created.\n"
                },
                "prefix": {
                    "type": "string",
                    "description": "The token prefix used for identification.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project this token should be scoped to. Requires team scope.\n"
                },
                "suffix": {
                    "type": "string",
                    "description": "The token suffix used for identification.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the Vercel team scope for this token. Required when creating a team-scoped token if a default team has not been set in the provider.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the token.\n"
                }
            },
            "required": [
                "activeAt",
                "bearerToken",
                "createdAt",
                "leakedAt",
                "leakedUrl",
                "name",
                "origin",
                "prefix",
                "suffix",
                "teamId",
                "type"
            ],
            "inputProperties": {
                "expiresAt": {
                    "type": "integer",
                    "description": "The Unix timestamp in milliseconds when the token should expire.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The human-readable name of the token.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project this token should be scoped to. Requires team scope.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the Vercel team scope for this token. Required when creating a team-scoped token if a default team has not been set in the provider.\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering UserToken resources.\n",
                "properties": {
                    "activeAt": {
                        "type": "integer",
                        "description": "The Unix timestamp in milliseconds when the token was last active.\n"
                    },
                    "bearerToken": {
                        "type": "string",
                        "description": "The actual token value. This is only returned during create and then preserved from Terraform state.\n",
                        "secret": true
                    },
                    "createdAt": {
                        "type": "integer",
                        "description": "The Unix timestamp in milliseconds when the token was created.\n"
                    },
                    "expiresAt": {
                        "type": "integer",
                        "description": "The Unix timestamp in milliseconds when the token should expire.\n"
                    },
                    "leakedAt": {
                        "type": "integer",
                        "description": "The Unix timestamp in milliseconds when the token was marked as leaked.\n"
                    },
                    "leakedUrl": {
                        "type": "string",
                        "description": "The URL where the token was discovered as leaked.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The human-readable name of the token.\n"
                    },
                    "origin": {
                        "type": "string",
                        "description": "How the token was created.\n"
                    },
                    "prefix": {
                        "type": "string",
                        "description": "The token prefix used for identification.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the project this token should be scoped to. Requires team scope.\n"
                    },
                    "suffix": {
                        "type": "string",
                        "description": "The token suffix used for identification.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the Vercel team scope for this token. Required when creating a team-scoped token if a default team has not been set in the provider.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The type of the token.\n"
                    }
                },
                "type": "object"
            }
        },
        "vercel:index/vcrRepository:VcrRepository": {
            "description": "Provides a Vercel Container Registry (VCR) Repository resource.\n\nA VCR Repository belongs to a Vercel Project and stores container images that can be\nused by Vercel Functions and Vercel Sandbox. Images are pushed to and pulled from\n`vcr.vercel.com/team-slug/project-slug/repository-name` using Docker-compatible tooling.\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-vcr-repository\"});\nconst exampleVcrRepository = new vercel.VcrRepository(\"example\", {\n    projectId: example.id,\n    name: \"my-repository\",\n    \"public\": true,\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.Project(\"example\", name=\"example-project-with-vcr-repository\")\nexample_vcr_repository = vercel.VcrRepository(\"example\",\n    project_id=example.id,\n    name=\"my-repository\",\n    public=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-with-vcr-repository\",\n    });\n\n    var exampleVcrRepository = new Vercel.VcrRepository(\"example\", new()\n    {\n        ProjectId = example.Id,\n        Name = \"my-repository\",\n        Public = 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/v5/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-vcr-repository\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewVcrRepository(ctx, \"example\", \u0026vercel.VcrRepositoryArgs{\n\t\t\tProjectId: example.ID(),\n\t\t\tName:      pulumi.String(\"my-repository\"),\n\t\t\tPublic:    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.pulumiverse.vercel.VcrRepository;\nimport com.pulumiverse.vercel.VcrRepositoryArgs;\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-vcr-repository\")\n            .build());\n\n        var exampleVcrRepository = new VcrRepository(\"exampleVcrRepository\", VcrRepositoryArgs.builder()\n            .projectId(example.id())\n            .name(\"my-repository\")\n            .public_(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:Project\n    properties:\n      name: example-project-with-vcr-repository\n  exampleVcrRepository:\n    type: vercel:VcrRepository\n    name: example\n    properties:\n      projectId: ${example.id}\n      name: my-repository\n      public: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on\nthe provider, simply use the\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003eand repository name.\n-\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003ecan be found in the project \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n\n```sh\n$ pulumi import vercel:index/vcrRepository:VcrRepository example prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/my-repository\n```\n\nAlternatively, you can import via the team_id,\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003eand repository name.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n-\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003ecan be found in the project \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n\n```sh\n$ pulumi import vercel:index/vcrRepository:VcrRepository example team_xxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/my-repository\n```\n\n",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the repository. Can contain lowercase letters, numbers, periods, underscores, and dashes, but cannot start or end with a period, underscore, or dash.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the existing Vercel Project the repository belongs to.\n"
                },
                "public": {
                    "type": "boolean",
                    "description": "Whether the repository is pullable by any Vercel team. Private repositories are only accessible within the same project. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team the repository should be created under. Required when configuring a team resource if a default team has not been set in the provider.\n"
                },
                "url": {
                    "type": "string",
                    "description": "The URL of the repository, composed of the owner slug, the project slug and the repository name (e.g. `vcr.vercel.com/team-slug/project-slug/repository-name`). Use it to push and pull images with Docker-compatible tooling.\n"
                }
            },
            "required": [
                "name",
                "projectId",
                "public",
                "teamId",
                "url"
            ],
            "inputProperties": {
                "name": {
                    "type": "string",
                    "description": "The name of the repository. Can contain lowercase letters, numbers, periods, underscores, and dashes, but cannot start or end with a period, underscore, or dash.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the existing Vercel Project the repository belongs to.\n"
                },
                "public": {
                    "type": "boolean",
                    "description": "Whether the repository is pullable by any Vercel team. Private repositories are only accessible within the same project. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team the repository should be created under. 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 VcrRepository resources.\n",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "The name of the repository. Can contain lowercase letters, numbers, periods, underscores, and dashes, but cannot start or end with a period, underscore, or dash.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the existing Vercel Project the repository belongs to.\n"
                    },
                    "public": {
                        "type": "boolean",
                        "description": "Whether the repository is pullable by any Vercel team. Private repositories are only accessible within the same project. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the team the repository should be created under. Required when configuring a team resource if a default team has not been set in the provider.\n"
                    },
                    "url": {
                        "type": "string",
                        "description": "The URL of the repository, composed of the owner slug, the project slug and the repository name (e.g. `vcr.vercel.com/team-slug/project-slug/repository-name`). Use it to push and pull images with Docker-compatible tooling.\n"
                    }
                },
                "type": "object"
            }
        },
        "vercel:index/vcrRepositoryPermission:VcrRepositoryPermission": {
            "description": "Provides a Vercel Container Registry (VCR) Repository Permission resource.\n\nA VCR Repository Permission shares a VCR Repository with another Vercel Team, granting\nit read (pull) access to the repository's images. One resource manages a single grant,\nidentified by the repository and the team the permission is granted to.\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-vcr-repository\"});\nconst exampleVcrRepository = new vercel.VcrRepository(\"example\", {\n    projectId: example.id,\n    name: \"my-repository\",\n});\n// Share the repository with another team, granting it\n// read (pull) access to the repository's images.\nconst exampleVcrRepositoryPermission = new vercel.VcrRepositoryPermission(\"example\", {\n    projectId: example.id,\n    repository: exampleVcrRepository.name,\n    grantedTeamId: \"team_xxxxxxxxxxxxxxxxxxxxxxxx\",\n});\n// The granted team can alternatively be referenced by its slug.\nconst exampleBySlug = new vercel.VcrRepositoryPermission(\"example_by_slug\", {\n    projectId: example.id,\n    repository: exampleVcrRepository.name,\n    grantedTeamSlug: \"my-other-team\",\n});\n```\n```python\nimport pulumi\nimport pulumiverse_vercel as vercel\n\nexample = vercel.Project(\"example\", name=\"example-project-with-vcr-repository\")\nexample_vcr_repository = vercel.VcrRepository(\"example\",\n    project_id=example.id,\n    name=\"my-repository\")\n# Share the repository with another team, granting it\n# read (pull) access to the repository's images.\nexample_vcr_repository_permission = vercel.VcrRepositoryPermission(\"example\",\n    project_id=example.id,\n    repository=example_vcr_repository.name,\n    granted_team_id=\"team_xxxxxxxxxxxxxxxxxxxxxxxx\")\n# The granted team can alternatively be referenced by its slug.\nexample_by_slug = vercel.VcrRepositoryPermission(\"example_by_slug\",\n    project_id=example.id,\n    repository=example_vcr_repository.name,\n    granted_team_slug=\"my-other-team\")\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-vcr-repository\",\n    });\n\n    var exampleVcrRepository = new Vercel.VcrRepository(\"example\", new()\n    {\n        ProjectId = example.Id,\n        Name = \"my-repository\",\n    });\n\n    // Share the repository with another team, granting it\n    // read (pull) access to the repository's images.\n    var exampleVcrRepositoryPermission = new Vercel.VcrRepositoryPermission(\"example\", new()\n    {\n        ProjectId = example.Id,\n        Repository = exampleVcrRepository.Name,\n        GrantedTeamId = \"team_xxxxxxxxxxxxxxxxxxxxxxxx\",\n    });\n\n    // The granted team can alternatively be referenced by its slug.\n    var exampleBySlug = new Vercel.VcrRepositoryPermission(\"example_by_slug\", new()\n    {\n        ProjectId = example.Id,\n        Repository = exampleVcrRepository.Name,\n        GrantedTeamSlug = \"my-other-team\",\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/v5/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-vcr-repository\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleVcrRepository, err := vercel.NewVcrRepository(ctx, \"example\", \u0026vercel.VcrRepositoryArgs{\n\t\t\tProjectId: example.ID(),\n\t\t\tName:      pulumi.String(\"my-repository\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Share the repository with another team, granting it\n\t\t// read (pull) access to the repository's images.\n\t\t_, err = vercel.NewVcrRepositoryPermission(ctx, \"example\", \u0026vercel.VcrRepositoryPermissionArgs{\n\t\t\tProjectId:     example.ID(),\n\t\t\tRepository:    exampleVcrRepository.Name,\n\t\t\tGrantedTeamId: pulumi.String(\"team_xxxxxxxxxxxxxxxxxxxxxxxx\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// The granted team can alternatively be referenced by its slug.\n\t\t_, err = vercel.NewVcrRepositoryPermission(ctx, \"example_by_slug\", \u0026vercel.VcrRepositoryPermissionArgs{\n\t\t\tProjectId:       example.ID(),\n\t\t\tRepository:      exampleVcrRepository.Name,\n\t\t\tGrantedTeamSlug: pulumi.String(\"my-other-team\"),\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.VcrRepository;\nimport com.pulumiverse.vercel.VcrRepositoryArgs;\nimport com.pulumiverse.vercel.VcrRepositoryPermission;\nimport com.pulumiverse.vercel.VcrRepositoryPermissionArgs;\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-vcr-repository\")\n            .build());\n\n        var exampleVcrRepository = new VcrRepository(\"exampleVcrRepository\", VcrRepositoryArgs.builder()\n            .projectId(example.id())\n            .name(\"my-repository\")\n            .build());\n\n        // Share the repository with another team, granting it\n        // read (pull) access to the repository's images.\n        var exampleVcrRepositoryPermission = new VcrRepositoryPermission(\"exampleVcrRepositoryPermission\", VcrRepositoryPermissionArgs.builder()\n            .projectId(example.id())\n            .repository(exampleVcrRepository.name())\n            .grantedTeamId(\"team_xxxxxxxxxxxxxxxxxxxxxxxx\")\n            .build());\n\n        // The granted team can alternatively be referenced by its slug.\n        var exampleBySlug = new VcrRepositoryPermission(\"exampleBySlug\", VcrRepositoryPermissionArgs.builder()\n            .projectId(example.id())\n            .repository(exampleVcrRepository.name())\n            .grantedTeamSlug(\"my-other-team\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: vercel:Project\n    properties:\n      name: example-project-with-vcr-repository\n  exampleVcrRepository:\n    type: vercel:VcrRepository\n    name: example\n    properties:\n      projectId: ${example.id}\n      name: my-repository\n  # Share the repository with another team, granting it\n  # read (pull) access to the repository's images.\n  exampleVcrRepositoryPermission:\n    type: vercel:VcrRepositoryPermission\n    name: example\n    properties:\n      projectId: ${example.id}\n      repository: ${exampleVcrRepository.name}\n      grantedTeamId: team_xxxxxxxxxxxxxxxxxxxxxxxx\n  # The granted team can alternatively be referenced by its slug.\n  exampleBySlug:\n    type: vercel:VcrRepositoryPermission\n    name: example_by_slug\n    properties:\n      projectId: ${example.id}\n      repository: ${exampleVcrRepository.name}\n      grantedTeamSlug: my-other-team\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nIf importing into a personal account, or with a team configured on\nthe provider, use the project_id, repository name and granted team ID.\n-\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003ecan be found in the project \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n-\u003cspan pulumi-lang-nodejs=\" grantedTeamId \" pulumi-lang-dotnet=\" GrantedTeamId \" pulumi-lang-go=\" grantedTeamId \" pulumi-lang-python=\" granted_team_id \" pulumi-lang-yaml=\" grantedTeamId \" pulumi-lang-java=\" grantedTeamId \"\u003e granted_team_id \u003c/span\u003eis the ID of the team the repository is shared with.\n\n```sh\n$ pulumi import vercel:index/vcrRepositoryPermission:VcrRepositoryPermission example prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx/my-repository/team_xxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nAlternatively, you can import via the owning team_id, project_id,\nrepository name and granted team ID.\n-\u003cspan pulumi-lang-nodejs=\" teamId \" pulumi-lang-dotnet=\" TeamId \" pulumi-lang-go=\" teamId \" pulumi-lang-python=\" team_id \" pulumi-lang-yaml=\" teamId \" pulumi-lang-java=\" teamId \"\u003e team_id \u003c/span\u003ecan be found in the team \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n-\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003ecan be found in the project \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e tab in the Vercel UI.\n-\u003cspan pulumi-lang-nodejs=\" grantedTeamId \" pulumi-lang-dotnet=\" GrantedTeamId \" pulumi-lang-go=\" grantedTeamId \" pulumi-lang-python=\" granted_team_id \" pulumi-lang-yaml=\" grantedTeamId \" pulumi-lang-java=\" grantedTeamId \"\u003e granted_team_id \u003c/span\u003eis the ID of the team the repository is shared with.\n\n```sh\n$ pulumi import vercel:index/vcrRepositoryPermission:VcrRepositoryPermission example team_xxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxx/my-repository/team_yyyyyyyyyyyyyyyyyyyyyyyy\n```\n\n",
            "properties": {
                "grantedTeamId": {
                    "type": "string",
                    "description": "The ID of the team to grant pull access to. Must specify one of granted*team*id or granted*team*slug.\n"
                },
                "grantedTeamSlug": {
                    "type": "string",
                    "description": "The slug of the team to grant pull access to. Must specify one of granted*team*id or granted*team*slug.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Vercel Project the repository belongs to.\n"
                },
                "repository": {
                    "type": "string",
                    "description": "The ID or name of the VCR Repository to share.\n"
                },
                "repositoryId": {
                    "type": "string",
                    "description": "The ID of the VCR Repository the permission is granted on.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team that owns the repository. Required when configuring a team resource if a default team has not been set in the provider.\n"
                }
            },
            "required": [
                "grantedTeamId",
                "grantedTeamSlug",
                "projectId",
                "repository",
                "repositoryId",
                "teamId"
            ],
            "inputProperties": {
                "grantedTeamId": {
                    "type": "string",
                    "description": "The ID of the team to grant pull access to. Must specify one of granted*team*id or granted*team*slug.\n"
                },
                "grantedTeamSlug": {
                    "type": "string",
                    "description": "The slug of the team to grant pull access to. Must specify one of granted*team*id or granted*team*slug.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the Vercel Project the repository belongs to.\n"
                },
                "repository": {
                    "type": "string",
                    "description": "The ID or name of the VCR Repository to share.\n"
                },
                "teamId": {
                    "type": "string",
                    "description": "The ID of the team that owns the repository. Required when configuring a team resource if a default team has not been set in the provider.\n"
                }
            },
            "requiredInputs": [
                "projectId",
                "repository"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering VcrRepositoryPermission resources.\n",
                "properties": {
                    "grantedTeamId": {
                        "type": "string",
                        "description": "The ID of the team to grant pull access to. Must specify one of granted*team*id or granted*team*slug.\n"
                    },
                    "grantedTeamSlug": {
                        "type": "string",
                        "description": "The slug of the team to grant pull access to. Must specify one of granted*team*id or granted*team*slug.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the Vercel Project the repository belongs to.\n"
                    },
                    "repository": {
                        "type": "string",
                        "description": "The ID or name of the VCR Repository to share.\n"
                    },
                    "repositoryId": {
                        "type": "string",
                        "description": "The ID of the VCR Repository the permission is granted on.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the team that owns the repository. Required when configuring a team resource if a default team has not been set in the provider.\n"
                    }
                },
                "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/v5/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\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nIf a team is configured on the provider, use the webhook ID.\n\n```sh\n$ pulumi import vercel:index/webhook:Webhook example hook_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nAlternatively, import using the team ID and webhook ID.\n\n```sh\n$ pulumi import vercel:index/webhook:Webhook example team_xxxxxxxxxxxxxxxxxxxxxxxx/hook_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nVercel does not return an existing webhook's signing secret, so the imported\nsecret value will be null.\n\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/v5/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/v5/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/v5/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/getBlobObject:getBlobObject": {
            "description": "Provides metadata about an existing object in a Vercel Blob store.\n\n",
            "inputs": {
                "description": "A collection of arguments for invoking getBlobObject.\n",
                "properties": {
                    "pathname": {
                        "type": "string",
                        "description": "The pathname of the Blob object within the store.\n"
                    },
                    "storeId": {
                        "type": "string",
                        "description": "The ID of the Blob store that contains the object.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the team that owns the Blob store. Required when configuring a team resource if a default team has not been set in the provider.\n"
                    }
                },
                "type": "object",
                "required": [
                    "pathname",
                    "storeId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getBlobObject.\n",
                "properties": {
                    "cacheControl": {
                        "description": "The full Cache-Control header stored on the Blob object.\n",
                        "type": "string"
                    },
                    "cacheControlMaxAge": {
                        "description": "The cache max-age, in seconds, stored on the Blob object.\n",
                        "type": "integer"
                    },
                    "contentDisposition": {
                        "description": "The content disposition returned for the Blob object.\n",
                        "type": "string"
                    },
                    "contentType": {
                        "description": "The content type stored on the Blob object.\n",
                        "type": "string"
                    },
                    "downloadUrl": {
                        "description": "The Blob object URL with download semantics enabled.\n",
                        "type": "string"
                    },
                    "etag": {
                        "description": "The current ETag for the Blob object.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The unique identifier for this Blob object. Format: `store_id/pathname`.\n",
                        "type": "string"
                    },
                    "pathname": {
                        "description": "The pathname of the Blob object within the store.\n",
                        "type": "string"
                    },
                    "size": {
                        "description": "The size of the Blob object in bytes.\n",
                        "type": "integer"
                    },
                    "storeId": {
                        "description": "The ID of the Blob store that contains the object.\n",
                        "type": "string"
                    },
                    "teamId": {
                        "description": "The ID of the team that owns the Blob store. Required when configuring a team resource if a default team has not been set in the provider.\n",
                        "type": "string"
                    },
                    "uploadedAt": {
                        "description": "The timestamp at which the Blob object was uploaded.\n",
                        "type": "string"
                    },
                    "url": {
                        "description": "The canonical URL for the Blob object.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "cacheControl",
                    "cacheControlMaxAge",
                    "contentDisposition",
                    "contentType",
                    "downloadUrl",
                    "etag",
                    "id",
                    "pathname",
                    "size",
                    "storeId",
                    "teamId",
                    "uploadedAt",
                    "url"
                ],
                "type": "object"
            }
        },
        "vercel:index/getBlobProjectConnections:getBlobProjectConnections": {
            "description": "Provides the project connections for a Vercel Blob store.\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 exampleBlobStore = new vercel.BlobStore(\"example\", {name: \"example-blob-store\"});\nconst exampleProject = new vercel.Project(\"example\", {name: \"example-blob-project\"});\nconst exampleBlobProjectConnection = new vercel.BlobProjectConnection(\"example\", {\n    blobStoreId: exampleBlobStore.id,\n    projectId: exampleProject.id,\n});\nconst example = vercel.getBlobProjectConnectionsOutput({\n    storeId: exampleBlobStore.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\nimport pulumiverse_vercel as vercel\n\nexample_blob_store = vercel.BlobStore(\"example\", name=\"example-blob-store\")\nexample_project = vercel.Project(\"example\", name=\"example-blob-project\")\nexample_blob_project_connection = vercel.BlobProjectConnection(\"example\",\n    blob_store_id=example_blob_store.id,\n    project_id=example_project.id)\nexample = vercel.get_blob_project_connections_output(store_id=example_blob_store.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 exampleBlobStore = new Vercel.BlobStore(\"example\", new()\n    {\n        Name = \"example-blob-store\",\n    });\n\n    var exampleProject = new Vercel.Project(\"example\", new()\n    {\n        Name = \"example-blob-project\",\n    });\n\n    var exampleBlobProjectConnection = new Vercel.BlobProjectConnection(\"example\", new()\n    {\n        BlobStoreId = exampleBlobStore.Id,\n        ProjectId = exampleProject.Id,\n    });\n\n    var example = Vercel.GetBlobProjectConnections.Invoke(new()\n    {\n        StoreId = exampleBlobStore.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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleBlobStore, err := vercel.NewBlobStore(ctx, \"example\", \u0026vercel.BlobStoreArgs{\n\t\t\tName: pulumi.String(\"example-blob-store\"),\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(\"example-blob-project\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewBlobProjectConnection(ctx, \"example\", \u0026vercel.BlobProjectConnectionArgs{\n\t\t\tBlobStoreId: exampleBlobStore.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\t_ = vercel.GetBlobProjectConnectionsOutput(ctx, vercel.GetBlobProjectConnectionsOutputArgs{\n\t\t\tStoreId: exampleBlobStore.ID(),\n\t\t}, nil)\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.BlobStore;\nimport com.pulumiverse.vercel.BlobStoreArgs;\nimport com.pulumiverse.vercel.Project;\nimport com.pulumiverse.vercel.ProjectArgs;\nimport com.pulumiverse.vercel.BlobProjectConnection;\nimport com.pulumiverse.vercel.BlobProjectConnectionArgs;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetBlobProjectConnectionsArgs;\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 exampleBlobStore = new BlobStore(\"exampleBlobStore\", BlobStoreArgs.builder()\n            .name(\"example-blob-store\")\n            .build());\n\n        var exampleProject = new Project(\"exampleProject\", ProjectArgs.builder()\n            .name(\"example-blob-project\")\n            .build());\n\n        var exampleBlobProjectConnection = new BlobProjectConnection(\"exampleBlobProjectConnection\", BlobProjectConnectionArgs.builder()\n            .blobStoreId(exampleBlobStore.id())\n            .projectId(exampleProject.id())\n            .build());\n\n        final var example = VercelFunctions.getBlobProjectConnections(GetBlobProjectConnectionsArgs.builder()\n            .storeId(exampleBlobStore.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleBlobStore:\n    type: vercel:BlobStore\n    name: example\n    properties:\n      name: example-blob-store\n  exampleProject:\n    type: vercel:Project\n    name: example\n    properties:\n      name: example-blob-project\n  exampleBlobProjectConnection:\n    type: vercel:BlobProjectConnection\n    name: example\n    properties:\n      blobStoreId: ${exampleBlobStore.id}\n      projectId: ${exampleProject.id}\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getBlobProjectConnections\n      arguments:\n        storeId: ${exampleBlobStore.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getBlobProjectConnections.\n",
                "properties": {
                    "storeId": {
                        "type": "string",
                        "description": "The ID of the Blob store whose project connections should be read.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the team that owns the Blob store. Required when configuring a team resource if a default team has not been set in the provider.\n"
                    }
                },
                "type": "object",
                "required": [
                    "storeId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getBlobProjectConnections.\n",
                "properties": {
                    "connections": {
                        "description": "The active project connections for the Blob store.\n",
                        "items": {
                            "$ref": "#/types/vercel:index/getBlobProjectConnectionsConnection:getBlobProjectConnectionsConnection"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "storeId": {
                        "description": "The ID of the Blob store whose project connections should be read.\n",
                        "type": "string"
                    },
                    "teamId": {
                        "description": "The ID of the team that owns the Blob store. Required when configuring a team resource if a default team has not been set in the provider.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "connections",
                    "storeId",
                    "teamId",
                    "id"
                ],
                "type": "object"
            }
        },
        "vercel:index/getBlobStore:getBlobStore": {
            "description": "Provides information about an existing Vercel Blob store.\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 exampleBlobStore = new vercel.BlobStore(\"example\", {name: \"example-blob-store\"});\nconst example = vercel.getBlobStoreOutput({\n    id: exampleBlobStore.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\nimport pulumiverse_vercel as vercel\n\nexample_blob_store = vercel.BlobStore(\"example\", name=\"example-blob-store\")\nexample = vercel.get_blob_store_output(id=example_blob_store.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 exampleBlobStore = new Vercel.BlobStore(\"example\", new()\n    {\n        Name = \"example-blob-store\",\n    });\n\n    var example = Vercel.GetBlobStore.Invoke(new()\n    {\n        Id = exampleBlobStore.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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleBlobStore, err := vercel.NewBlobStore(ctx, \"example\", \u0026vercel.BlobStoreArgs{\n\t\t\tName: pulumi.String(\"example-blob-store\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_ = vercel.LookupBlobStoreOutput(ctx, vercel.GetBlobStoreOutputArgs{\n\t\t\tId: exampleBlobStore.ID(),\n\t\t}, nil)\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.BlobStore;\nimport com.pulumiverse.vercel.BlobStoreArgs;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetBlobStoreArgs;\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 exampleBlobStore = new BlobStore(\"exampleBlobStore\", BlobStoreArgs.builder()\n            .name(\"example-blob-store\")\n            .build());\n\n        final var example = VercelFunctions.getBlobStore(GetBlobStoreArgs.builder()\n            .id(exampleBlobStore.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleBlobStore:\n    type: vercel:BlobStore\n    name: example\n    properties:\n      name: example-blob-store\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getBlobStore\n      arguments:\n        id: ${exampleBlobStore.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getBlobStore.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "The ID of the Blob store.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the team that owns the Blob store. 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 getBlobStore.\n",
                "properties": {
                    "access": {
                        "description": "Whether blobs created in this store are \u003cspan pulumi-lang-nodejs=\"`public`\" pulumi-lang-dotnet=\"`Public`\" pulumi-lang-go=\"`public`\" pulumi-lang-python=\"`public`\" pulumi-lang-yaml=\"`public`\" pulumi-lang-java=\"`public`\"\u003e`public`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`private`\" pulumi-lang-dotnet=\"`Private`\" pulumi-lang-go=\"`private`\" pulumi-lang-python=\"`private`\" pulumi-lang-yaml=\"`private`\" pulumi-lang-java=\"`private`\"\u003e`private`\u003c/span\u003e by default.\n",
                        "type": "string"
                    },
                    "createdAt": {
                        "description": "The Unix timestamp, in milliseconds, when the Blob store was created.\n",
                        "type": "integer"
                    },
                    "fileCount": {
                        "description": "The number of files currently stored in the Blob store.\n",
                        "type": "integer"
                    },
                    "id": {
                        "description": "The ID of the Blob store.\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the Blob store.\n",
                        "type": "string"
                    },
                    "region": {
                        "description": "The region in which the Blob store exists.\n",
                        "type": "string"
                    },
                    "size": {
                        "description": "The size of the Blob store in bytes.\n",
                        "type": "integer"
                    },
                    "status": {
                        "description": "The current status of the Blob store.\n",
                        "type": "string"
                    },
                    "teamId": {
                        "description": "The ID of the team that owns the Blob store. Required when configuring a team resource if a default team has not been set in the provider.\n",
                        "type": "string"
                    },
                    "updatedAt": {
                        "description": "The Unix timestamp, in milliseconds, when the Blob store was last updated.\n",
                        "type": "integer"
                    }
                },
                "required": [
                    "access",
                    "createdAt",
                    "fileCount",
                    "id",
                    "name",
                    "region",
                    "size",
                    "status",
                    "teamId",
                    "updatedAt"
                ],
                "type": "object"
            }
        },
        "vercel:index/getBlobStoreSecrets:getBlobStoreSecrets": {
            "description": "Provides the default read/write token for a Vercel Blob store.\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 exampleBlobStore = new vercel.BlobStore(\"example\", {name: \"example-blob-store\"});\nconst example = vercel.getBlobStoreSecretsOutput({\n    storeId: exampleBlobStore.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\nimport pulumiverse_vercel as vercel\n\nexample_blob_store = vercel.BlobStore(\"example\", name=\"example-blob-store\")\nexample = vercel.get_blob_store_secrets_output(store_id=example_blob_store.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 exampleBlobStore = new Vercel.BlobStore(\"example\", new()\n    {\n        Name = \"example-blob-store\",\n    });\n\n    var example = Vercel.GetBlobStoreSecrets.Invoke(new()\n    {\n        StoreId = exampleBlobStore.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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleBlobStore, err := vercel.NewBlobStore(ctx, \"example\", \u0026vercel.BlobStoreArgs{\n\t\t\tName: pulumi.String(\"example-blob-store\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_ = vercel.GetBlobStoreSecretsOutput(ctx, vercel.GetBlobStoreSecretsOutputArgs{\n\t\t\tStoreId: exampleBlobStore.ID(),\n\t\t}, nil)\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.BlobStore;\nimport com.pulumiverse.vercel.BlobStoreArgs;\nimport com.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetBlobStoreSecretsArgs;\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 exampleBlobStore = new BlobStore(\"exampleBlobStore\", BlobStoreArgs.builder()\n            .name(\"example-blob-store\")\n            .build());\n\n        final var example = VercelFunctions.getBlobStoreSecrets(GetBlobStoreSecretsArgs.builder()\n            .storeId(exampleBlobStore.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleBlobStore:\n    type: vercel:BlobStore\n    name: example\n    properties:\n      name: example-blob-store\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getBlobStoreSecrets\n      arguments:\n        storeId: ${exampleBlobStore.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getBlobStoreSecrets.\n",
                "properties": {
                    "storeId": {
                        "type": "string",
                        "description": "The ID of the Blob store whose secrets should be read.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the team that owns the Blob store. Required when configuring a team resource if a default team has not been set in the provider.\n"
                    }
                },
                "type": "object",
                "required": [
                    "storeId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getBlobStoreSecrets.\n",
                "properties": {
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "readWriteToken": {
                        "description": "The default Blob read/write token for the store.\n",
                        "secret": true,
                        "type": "string"
                    },
                    "storeId": {
                        "description": "The ID of the Blob store whose secrets should be read.\n",
                        "type": "string"
                    },
                    "teamId": {
                        "description": "The ID of the team that owns the Blob store. Required when configuring a team resource if a default team has not been set in the provider.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "readWriteToken",
                    "storeId",
                    "teamId",
                    "id"
                ],
                "type": "object"
            }
        },
        "vercel:index/getBlobStores:getBlobStores": {
            "description": "Provides the Blob stores available to the configured team or personal account.\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.getBlobStores({});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\nexample = vercel.get_blob_stores()\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.GetBlobStores.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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.GetBlobStores(ctx, \u0026vercel.GetBlobStoresArgs{}, 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.GetBlobStoresArgs;\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.getBlobStores(GetBlobStoresArgs.builder()\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getBlobStores\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getBlobStores.\n",
                "properties": {
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the team whose Blob stores should be listed. 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 getBlobStores.\n",
                "properties": {
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "stores": {
                        "description": "The Blob stores available to the configured team or personal account.\n",
                        "items": {
                            "$ref": "#/types/vercel:index/getBlobStoresStore:getBlobStoresStore"
                        },
                        "type": "array"
                    },
                    "teamId": {
                        "description": "The ID of the team whose Blob stores should be listed. Required when configuring a team resource if a default team has not been set in the provider.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "stores",
                    "teamId",
                    "id"
                ],
                "type": "object"
            }
        },
        "vercel:index/getBulkRedirects:getBulkRedirects": {
            "description": "Provides a Bulk Redirects data source.\n\nIf\u003cspan pulumi-lang-nodejs=\" versionId \" pulumi-lang-dotnet=\" VersionId \" pulumi-lang-go=\" versionId \" pulumi-lang-python=\" version_id \" pulumi-lang-yaml=\" versionId \" pulumi-lang-java=\" versionId \"\u003e version_id \u003c/span\u003eis omitted, the data source reads the live production bulk redirects for the 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 exampleProject = new vercel.Project(\"example\", {name: \"example-project\"});\nconst example = vercel.getBulkRedirectsOutput({\n    projectId: exampleProject.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\nimport pulumiverse_vercel as vercel\n\nexample_project = vercel.Project(\"example\", name=\"example-project\")\nexample = vercel.get_bulk_redirects_output(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 exampleProject = new Vercel.Project(\"example\", new()\n    {\n        Name = \"example-project\",\n    });\n\n    var example = Vercel.GetBulkRedirects.Invoke(new()\n    {\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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleProject, 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_ = vercel.LookupBulkRedirectsOutput(ctx, vercel.GetBulkRedirectsOutputArgs{\n\t\t\tProjectId: exampleProject.ID(),\n\t\t}, nil)\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.GetBulkRedirectsArgs;\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 exampleProject = new Project(\"exampleProject\", ProjectArgs.builder()\n            .name(\"example-project\")\n            .build());\n\n        final var example = VercelFunctions.getBulkRedirects(GetBulkRedirectsArgs.builder()\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-project\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getBulkRedirects\n      arguments:\n        projectId: ${exampleProject.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getBulkRedirects.\n",
                "properties": {
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the Vercel project.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the Vercel team.\n"
                    },
                    "versionId": {
                        "type": "string",
                        "description": "The redirects version to read. If omitted, the live production version is used.\n"
                    }
                },
                "type": "object",
                "required": [
                    "projectId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getBulkRedirects.\n",
                "properties": {
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "projectId": {
                        "description": "The ID of the Vercel project.\n",
                        "type": "string"
                    },
                    "redirects": {
                        "description": "The redirects for the selected version.\n",
                        "items": {
                            "$ref": "#/types/vercel:index/getBulkRedirectsRedirect:getBulkRedirectsRedirect"
                        },
                        "type": "array"
                    },
                    "teamId": {
                        "description": "The ID of the Vercel team.\n",
                        "type": "string"
                    },
                    "versionId": {
                        "description": "The redirects version to read. If omitted, the live production version is used.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "projectId",
                    "redirects",
                    "teamId",
                    "versionId",
                    "id"
                ],
                "type": "object"
            }
        },
        "vercel:index/getConnectApplication:getConnectApplication": {
            "description": "Looks up an existing Vercel Connect application by its stable ID or team-scoped UID. Use the returned id as a Passport connector_id. This data source exposes application identity only; it does not expose OAuth credentials or runtime tokens.\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 passport = vercel.getConnectApplication({\n    teamId: \"team_...\",\n    uid: \"oauth/company-sso\",\n});\nconst internalApp = new vercel.Project(\"internal_app\", {\n    teamId: passport.then(passport =\u003e passport.teamId),\n    name: \"internal-app\",\n    passport: {\n        connectorId: passport.then(passport =\u003e passport.id),\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\nimport pulumiverse_vercel as vercel\n\npassport = vercel.get_connect_application(team_id=\"team_...\",\n    uid=\"oauth/company-sso\")\ninternal_app = vercel.Project(\"internal_app\",\n    team_id=passport.team_id,\n    name=\"internal-app\",\n    passport={\n        \"connector_id\": passport.id,\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 passport = Vercel.GetConnectApplication.Invoke(new()\n    {\n        TeamId = \"team_...\",\n        Uid = \"oauth/company-sso\",\n    });\n\n    var internalApp = new Vercel.Project(\"internal_app\", new()\n    {\n        TeamId = passport.Apply(getConnectApplicationResult =\u003e getConnectApplicationResult.TeamId),\n        Name = \"internal-app\",\n        Passport = new Vercel.Inputs.ProjectPassportArgs\n        {\n            ConnectorId = passport.Apply(getConnectApplicationResult =\u003e getConnectApplicationResult.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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpassport, err := vercel.GetConnectApplication(ctx, \u0026vercel.GetConnectApplicationArgs{\n\t\t\tTeamId: pulumi.StringRef(\"team_...\"),\n\t\t\tUid:    pulumi.StringRef(\"oauth/company-sso\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vercel.NewProject(ctx, \"internal_app\", \u0026vercel.ProjectArgs{\n\t\t\tTeamId: pulumi.String(passport.TeamId),\n\t\t\tName:   pulumi.String(\"internal-app\"),\n\t\t\tPassport: \u0026vercel.ProjectPassportArgs{\n\t\t\t\tConnectorId: pulumi.String(passport.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.pulumi.vercel.VercelFunctions;\nimport com.pulumi.vercel.inputs.GetConnectApplicationArgs;\nimport com.pulumiverse.vercel.Project;\nimport com.pulumiverse.vercel.ProjectArgs;\nimport com.pulumi.vercel.inputs.ProjectPassportArgs;\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 passport = VercelFunctions.getConnectApplication(GetConnectApplicationArgs.builder()\n            .teamId(\"team_...\")\n            .uid(\"oauth/company-sso\")\n            .build());\n\n        var internalApp = new Project(\"internalApp\", ProjectArgs.builder()\n            .teamId(passport.teamId())\n            .name(\"internal-app\")\n            .passport(ProjectPassportArgs.builder()\n                .connectorId(passport.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  internalApp:\n    type: vercel:Project\n    name: internal_app\n    properties:\n      teamId: ${passport.teamId}\n      name: internal-app\n      passport:\n        connectorId: ${passport.id}\nvariables:\n  passport:\n    fn::invoke:\n      function: vercel:getConnectApplication\n      arguments:\n        teamId: team_...\n        uid: oauth/company-sso\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getConnectApplication.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "The stable Connect application ID (scl_...). Specify exactly one of id or uid.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The team that owns the application. Required unless the provider has a default team.\n"
                    },
                    "uid": {
                        "type": "string",
                        "description": "The team's unique application identifier, such as oauth/company-sso. Specify the literal UID; the provider URL-encodes it.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getConnectApplication.\n",
                "properties": {
                    "id": {
                        "description": "The stable Connect application ID (scl_...). Specify exactly one of id or uid.\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "The application's display name.\n",
                        "type": "string"
                    },
                    "teamId": {
                        "description": "The team that owns the application. Required unless the provider has a default team.\n",
                        "type": "string"
                    },
                    "type": {
                        "description": "The Connect application type. Passport uses an OAuth/OIDC application.\n",
                        "type": "string"
                    },
                    "uid": {
                        "description": "The team's unique application identifier, such as oauth/company-sso. Specify the literal UID; the provider URL-encodes it.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "id",
                    "name",
                    "teamId",
                    "type",
                    "uid"
                ],
                "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/v5/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/v5/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 its DNS configuration status and 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/v5/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"
                    },
                    "misconfigured": {
                        "description": "Whether the domain has an invalid DNS configuration or Vercel cannot automatically generate a TLS certificate for it.\n",
                        "type": "boolean"
                    },
                    "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",
                    "misconfigured",
                    "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/v5/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/v5/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/v5/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/v5/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/v5/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/v5/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/getFeatureFlag:getFeatureFlag": {
            "description": "Provides information about an existing Feature Flag.\n\nThis data source reads the simplified static flag shape exposed by this provider and looks up the flag by its stable \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 within a 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.getFeatureFlag({\n    projectId: \"prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    key: \"checkout-redesign\",\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\nexample = vercel.get_feature_flag(project_id=\"prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    key=\"checkout-redesign\")\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.GetFeatureFlag.Invoke(new()\n    {\n        ProjectId = \"prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n        Key = \"checkout-redesign\",\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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.GetFeatureFlag(ctx, \u0026vercel.GetFeatureFlagArgs{\n\t\t\tProjectId: \"prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n\t\t\tKey:       \"checkout-redesign\",\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.GetFeatureFlagArgs;\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.getFeatureFlag(GetFeatureFlagArgs.builder()\n            .projectId(\"prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\n            .key(\"checkout-redesign\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getFeatureFlag\n      arguments:\n        projectId: prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n        key: checkout-redesign\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getFeatureFlag.\n",
                "properties": {
                    "key": {
                        "type": "string",
                        "description": "The stable flag key used in your application code.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the Vercel project that owns the flag.\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",
                "required": [
                    "key",
                    "projectId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getFeatureFlag.\n",
                "properties": {
                    "archived": {
                        "description": "Whether the flag is archived.\n",
                        "type": "boolean"
                    },
                    "description": {
                        "description": "A human-readable description of the flag.\n",
                        "type": "string"
                    },
                    "development": {
                        "$ref": "#/types/vercel:index/getFeatureFlagDevelopment:getFeatureFlagDevelopment",
                        "description": "The development environment behavior for this flag.\n"
                    },
                    "id": {
                        "description": "The ID of the feature flag.\n",
                        "type": "string"
                    },
                    "key": {
                        "description": "The stable flag key used in your application code.\n",
                        "type": "string"
                    },
                    "kind": {
                        "description": "The type of value this flag returns.\n",
                        "type": "string"
                    },
                    "preview": {
                        "$ref": "#/types/vercel:index/getFeatureFlagPreview:getFeatureFlagPreview",
                        "description": "The preview environment behavior for this flag.\n"
                    },
                    "production": {
                        "$ref": "#/types/vercel:index/getFeatureFlagProduction:getFeatureFlagProduction",
                        "description": "The production environment behavior for this flag.\n"
                    },
                    "projectId": {
                        "description": "The ID of the Vercel project that owns the flag.\n",
                        "type": "string"
                    },
                    "teamId": {
                        "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": "string"
                    },
                    "variants": {
                        "description": "The variants available for this flag.\n",
                        "items": {
                            "$ref": "#/types/vercel:index/getFeatureFlagVariant:getFeatureFlagVariant"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "archived",
                    "description",
                    "development",
                    "id",
                    "key",
                    "kind",
                    "preview",
                    "production",
                    "projectId",
                    "teamId",
                    "variants"
                ],
                "type": "object"
            }
        },
        "vercel:index/getFeatureFlagSdkKey:getFeatureFlagSdkKey": {
            "description": "Provides information about an existing Feature Flag SDK Key.\n\nVercel only returns the cleartext SDK key and connection string at creation time, so this data source exposes lookup metadata only.\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.getFeatureFlagSdkKey({\n    projectId: \"prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    id: \"sdk_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\nexample = vercel.get_feature_flag_sdk_key(project_id=\"prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    id=\"sdk_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.GetFeatureFlagSdkKey.Invoke(new()\n    {\n        ProjectId = \"prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n        Id = \"sdk_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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.LookupFeatureFlagSdkKey(ctx, \u0026vercel.LookupFeatureFlagSdkKeyArgs{\n\t\t\tProjectId: \"prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n\t\t\tId:        \"sdk_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.GetFeatureFlagSdkKeyArgs;\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.getFeatureFlagSdkKey(GetFeatureFlagSdkKeyArgs.builder()\n            .projectId(\"prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\n            .id(\"sdk_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getFeatureFlagSdkKey\n      arguments:\n        projectId: prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n        id: sdk_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getFeatureFlagSdkKey.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "The hash key identifier for the SDK key.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the Vercel project that owns the SDK key.\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",
                "required": [
                    "id",
                    "projectId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getFeatureFlagSdkKey.\n",
                "properties": {
                    "environment": {
                        "description": "The environment this SDK key authenticates against.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The hash key identifier for the SDK key.\n",
                        "type": "string"
                    },
                    "label": {
                        "description": "An optional label used to identify this key in the Vercel dashboard.\n",
                        "type": "string"
                    },
                    "projectId": {
                        "description": "The ID of the Vercel project that owns the SDK key.\n",
                        "type": "string"
                    },
                    "teamId": {
                        "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": "string"
                    },
                    "type": {
                        "description": "The SDK key type.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "environment",
                    "id",
                    "label",
                    "projectId",
                    "teamId",
                    "type"
                ],
                "type": "object"
            }
        },
        "vercel:index/getFeatureFlagSegment:getFeatureFlagSegment": {
            "description": "Provides information about an existing Feature Flag Segment.\n\nThis data source reads the simplified exact-match segment shape exposed by this provider and looks up the segment by its stable \u003cspan pulumi-lang-nodejs=\"`slug`\" pulumi-lang-dotnet=\"`Slug`\" pulumi-lang-go=\"`slug`\" pulumi-lang-python=\"`slug`\" pulumi-lang-yaml=\"`slug`\" pulumi-lang-java=\"`slug`\"\u003e`slug`\u003c/span\u003e within a 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.getFeatureFlagSegment({\n    projectId: \"prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    slug: \"internal-users\",\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\nexample = vercel.get_feature_flag_segment(project_id=\"prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    slug=\"internal-users\")\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.GetFeatureFlagSegment.Invoke(new()\n    {\n        ProjectId = \"prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n        Slug = \"internal-users\",\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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.LookupFeatureFlagSegment(ctx, \u0026vercel.LookupFeatureFlagSegmentArgs{\n\t\t\tProjectId: \"prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n\t\t\tSlug:      \"internal-users\",\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.GetFeatureFlagSegmentArgs;\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.getFeatureFlagSegment(GetFeatureFlagSegmentArgs.builder()\n            .projectId(\"prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\n            .slug(\"internal-users\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getFeatureFlagSegment\n      arguments:\n        projectId: prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n        slug: internal-users\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getFeatureFlagSegment.\n",
                "properties": {
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the Vercel project that owns the segment.\n"
                    },
                    "slug": {
                        "type": "string",
                        "description": "The stable segment slug used by the Vercel Flags API.\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",
                "required": [
                    "projectId",
                    "slug"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getFeatureFlagSegment.\n",
                "properties": {
                    "description": {
                        "description": "A human-readable description of the segment.\n",
                        "type": "string"
                    },
                    "excludes": {
                        "description": "Exact entity attribute values that are always excluded from this segment.\n",
                        "items": {
                            "$ref": "#/types/vercel:index/getFeatureFlagSegmentExclude:getFeatureFlagSegmentExclude"
                        },
                        "type": "array"
                    },
                    "hint": {
                        "description": "An optional dashboard hint for the segment.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The ID of the segment.\n",
                        "type": "string"
                    },
                    "includes": {
                        "description": "Exact entity attribute values that are always part of this segment.\n",
                        "items": {
                            "$ref": "#/types/vercel:index/getFeatureFlagSegmentInclude:getFeatureFlagSegmentInclude"
                        },
                        "type": "array"
                    },
                    "name": {
                        "description": "The human-readable segment name shown in the Vercel dashboard.\n",
                        "type": "string"
                    },
                    "projectId": {
                        "description": "The ID of the Vercel project that owns the segment.\n",
                        "type": "string"
                    },
                    "slug": {
                        "description": "The stable segment slug used by the Vercel Flags API.\n",
                        "type": "string"
                    },
                    "teamId": {
                        "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": "string"
                    }
                },
                "required": [
                    "description",
                    "excludes",
                    "hint",
                    "id",
                    "includes",
                    "name",
                    "projectId",
                    "slug",
                    "teamId"
                ],
                "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/v5/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",
                        "description": "The path to the file on your filesystem. Note that the path is relative to the root of the terraform files.\n"
                    }
                },
                "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": {
                        "description": "The path to the file on your filesystem. Note that the path is relative to the root of the terraform files.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "file",
                    "id",
                    "path"
                ],
                "type": "object"
            }
        },
        "vercel:index/getKmsIssuer:getKmsIssuer": {
            "description": "Provides information about an existing Vercel KMS Issuer.\n\n\u003e **Note:** Vercel KMS is currently in beta. Its resources, data sources, and the underlying API may change in backwards-incompatible ways in future releases of the provider.\n\nA KMS Issuer signs JSON Web Tokens (JWTs) and exposes a JWKS endpoint at\n`https://kms.vercel.com/{id}/jwks.json`.\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.getKmsIssuer({\n    id: \"iss_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\nexample = vercel.get_kms_issuer(id=\"iss_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.GetKmsIssuer.Invoke(new()\n    {\n        Id = \"iss_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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.LookupKmsIssuer(ctx, \u0026vercel.LookupKmsIssuerArgs{\n\t\t\tId: \"iss_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.GetKmsIssuerArgs;\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.getKmsIssuer(GetKmsIssuerArgs.builder()\n            .id(\"iss_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getKmsIssuer\n      arguments:\n        id: iss_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getKmsIssuer.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "The ID of the issuer.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the team the issuer exists under. 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 getKmsIssuer.\n",
                "properties": {
                    "algorithm": {
                        "description": "The signing algorithm used by the issuer.\n",
                        "type": "string"
                    },
                    "createdAt": {
                        "description": "The time the issuer was created.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The ID of the issuer.\n",
                        "type": "string"
                    },
                    "managedBy": {
                        "description": "Identifies the policy that manages this issuer, if any.\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the issuer.\n",
                        "type": "string"
                    },
                    "origin": {
                        "description": "The origin of the issuer's key material, either \u003cspan pulumi-lang-nodejs=\"`vercel`\" pulumi-lang-dotnet=\"`Vercel`\" pulumi-lang-go=\"`vercel`\" pulumi-lang-python=\"`vercel`\" pulumi-lang-yaml=\"`vercel`\" pulumi-lang-java=\"`vercel`\"\u003e`vercel`\u003c/span\u003e or \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.\n",
                        "type": "string"
                    },
                    "ownerId": {
                        "description": "The ID of the team that owns the issuer.\n",
                        "type": "string"
                    },
                    "policies": {
                        "description": "The authorization policies attached to the issuer.\n",
                        "items": {
                            "$ref": "#/types/vercel:index/getKmsIssuerPolicy:getKmsIssuerPolicy"
                        },
                        "type": "array"
                    },
                    "signingKeys": {
                        "description": "The signing keys belonging to the issuer.\n",
                        "items": {
                            "$ref": "#/types/vercel:index/getKmsIssuerSigningKey:getKmsIssuerSigningKey"
                        },
                        "type": "array"
                    },
                    "teamId": {
                        "description": "The ID of the team the issuer exists under. Required when reading a team resource if a default team has not been set in the provider.\n",
                        "type": "string"
                    },
                    "updatedAt": {
                        "description": "The time the issuer was last updated.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "algorithm",
                    "createdAt",
                    "id",
                    "managedBy",
                    "name",
                    "origin",
                    "ownerId",
                    "policies",
                    "signingKeys",
                    "teamId",
                    "updatedAt"
                ],
                "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/v5/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/v5/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/v5/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": {
            "description": "Provides the output of a project built via `vercel build` and provides 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\nThe [build command](https://vercel.com/docs/cli#commands/build) can be used to build a project locally or in your own CI environment.\nBuild artifacts are placed into the `.vercel/output` directory according to the [Build Output API](https://vercel.com/docs/build-output-api/v3).\n\nThis allows a Vercel Deployment to be created without sharing the Project's source code with Vercel.\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 nextjs UI exists in a `ui` directory \n// and has been prebuilt via `vercel build`. \n// We assume any terraform code exists in a separate `terraform` directory.\n// E.g.\n// ```\n// ui/\n//    .vercel/\n//        output/ \n//            ...\n//    src/\n//        index.js\n//    package.json\n//    ...\n// terraform/\n//    main.tf\n//    ...\n// ```\nconst example = vercel.getProject({\n    name: \"my-awesome-project\",\n});\nconst exampleGetPrebuiltProject = vercel.getPrebuiltProject({\n    path: \"../ui\",\n});\nconst exampleDeployment = new vercel.Deployment(\"example\", {\n    projectId: example.then(example =\u003e example.id),\n    files: exampleGetPrebuiltProject.then(exampleGetPrebuiltProject =\u003e exampleGetPrebuiltProject.output),\n    pathPrefix: exampleGetPrebuiltProject.then(exampleGetPrebuiltProject =\u003e exampleGetPrebuiltProject.path),\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 nextjs UI exists in a `ui` directory \n# and has been prebuilt via `vercel build`. \n# We assume any terraform code exists in a separate `terraform` directory.\n# E.g.\n# ```\n# ui/\n#    .vercel/\n#        output/ \n#            ...\n#    src/\n#        index.js\n#    package.json\n#    ...\n# terraform/\n#    main.tf\n#    ...\n# ```\nexample = vercel.get_project(name=\"my-awesome-project\")\nexample_get_prebuilt_project = vercel.get_prebuilt_project(path=\"../ui\")\nexample_deployment = vercel.Deployment(\"example\",\n    project_id=example.id,\n    files=example_get_prebuilt_project.output,\n    path_prefix=example_get_prebuilt_project.path)\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 nextjs UI exists in a `ui` directory \n    // and has been prebuilt via `vercel build`. \n    // We assume any terraform code exists in a separate `terraform` directory.\n    // E.g.\n    // ```\n    // ui/\n    //    .vercel/\n    //        output/ \n    //            ...\n    //    src/\n    //        index.js\n    //    package.json\n    //    ...\n    // terraform/\n    //    main.tf\n    //    ...\n    // ```\n    var example = Vercel.GetProject.Invoke(new()\n    {\n        Name = \"my-awesome-project\",\n    });\n\n    var exampleGetPrebuiltProject = Vercel.GetPrebuiltProject.Invoke(new()\n    {\n        Path = \"../ui\",\n    });\n\n    var exampleDeployment = new Vercel.Deployment(\"example\", new()\n    {\n        ProjectId = example.Apply(getProjectResult =\u003e getProjectResult.Id),\n        Files = exampleGetPrebuiltProject.Apply(getPrebuiltProjectResult =\u003e getPrebuiltProjectResult.Output),\n        PathPrefix = exampleGetPrebuiltProject.Apply(getPrebuiltProjectResult =\u003e getPrebuiltProjectResult.Path),\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/v5/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 nextjs UI exists in a `ui` directory\n\t\t// and has been prebuilt via `vercel build`.\n\t\t// We assume any terraform code exists in a separate `terraform` directory.\n\t\t// E.g.\n\t\t// ```\n\t\t// ui/\n\t\t//\n\t\t//\t.vercel/\n\t\t//\t    output/\n\t\t//\t        ...\n\t\t//\tsrc/\n\t\t//\t    index.js\n\t\t//\tpackage.json\n\t\t//\t...\n\t\t//\n\t\t// terraform/\n\t\t//\n\t\t//\tmain.tf\n\t\t//\t...\n\t\t//\n\t\t// ```\n\t\texample, err := vercel.LookupProject(ctx, \u0026vercel.LookupProjectArgs{\n\t\t\tName: \"my-awesome-project\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleGetPrebuiltProject, err := vercel.GetPrebuiltProject(ctx, \u0026vercel.GetPrebuiltProjectArgs{\n\t\t\tPath: \"../ui\",\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(example.Id),\n\t\t\tFiles:      pulumi.StringMap(exampleGetPrebuiltProject.Output),\n\t\t\tPathPrefix: pulumi.String(exampleGetPrebuiltProject.Path),\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.pulumi.vercel.inputs.GetPrebuiltProjectArgs;\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 nextjs UI exists in a `ui` directory \n        // and has been prebuilt via `vercel build`. \n        // We assume any terraform code exists in a separate `terraform` directory.\n        // E.g.\n        // ```\n        // ui/\n        //    .vercel/\n        //        output/ \n        //            ...\n        //    src/\n        //        index.js\n        //    package.json\n        //    ...\n        // terraform/\n        //    main.tf\n        //    ...\n        // ```\n        final var example = VercelFunctions.getProject(GetProjectArgs.builder()\n            .name(\"my-awesome-project\")\n            .build());\n\n        final var exampleGetPrebuiltProject = VercelFunctions.getPrebuiltProject(GetPrebuiltProjectArgs.builder()\n            .path(\"../ui\")\n            .build());\n\n        var exampleDeployment = new Deployment(\"exampleDeployment\", DeploymentArgs.builder()\n            .projectId(example.id())\n            .files(exampleGetPrebuiltProject.output())\n            .pathPrefix(exampleGetPrebuiltProject.path())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDeployment:\n    type: vercel:Deployment\n    name: example\n    properties:\n      projectId: ${example.id}\n      files: ${exampleGetPrebuiltProject.output}\n      pathPrefix: ${exampleGetPrebuiltProject.path}\nvariables:\n  # In this example, we are assuming that a nextjs UI exists in a `ui` directory \n  # and has been prebuilt via `vercel build`. \n  # We assume any terraform code exists in a separate `terraform` directory.\n  # E.g.\n  # ```\n  # ui/\n  #    .vercel/\n  #        output/ \n  #            ...\n  #    src/\n  #        index.js\n  #    package.json\n  #    ...\n  # terraform/\n  #    main.tf\n  #    ...\n  # ```\n  example:\n    fn::invoke:\n      function: vercel:getProject\n      arguments:\n        name: my-awesome-project\n  exampleGetPrebuiltProject:\n    fn::invoke:\n      function: vercel:getPrebuiltProject\n      arguments:\n        path: ../ui\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getPrebuiltProject.\n",
                "properties": {
                    "path": {
                        "type": "string",
                        "description": "The path to the project. Note that this path is relative to the root of your terraform files. This should be the directory that contains the `.vercel/output` directory.\n"
                    }
                },
                "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": {
                        "description": "The path to the project. Note that this path is relative to the root of your terraform files. This should be the directory that contains the `.vercel/output` directory.\n",
                        "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/v5/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"
                    },
                    "passport": {
                        "$ref": "#/types/vercel:index/getProjectPassport:getProjectPassport",
                        "description": "Passport configuration for the project.\n"
                    },
                    "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"
                    },
                    "protectedSourcemaps": {
                        "description": "Specifies whether sourcemaps are protected and require authentication to access.\n",
                        "type": "boolean"
                    },
                    "protectionBypassForAutomation": {
                        "deprecationMessage": "Use the \u003cspan pulumi-lang-nodejs=\"`vercel.ProjectProtectionBypass`\" pulumi-lang-dotnet=\"`vercel.ProjectProtectionBypass`\" pulumi-lang-go=\"`ProjectProtectionBypass`\" pulumi-lang-python=\"`ProjectProtectionBypass`\" pulumi-lang-yaml=\"`vercel.ProjectProtectionBypass`\" pulumi-lang-java=\"`vercel.ProjectProtectionBypass`\"\u003e`vercel.ProjectProtectionBypass`\u003c/span\u003e resource instead. This deprecated attribute will be removed in a future major release.",
                        "description": "Allows automation services to bypass Deployment Protection on this project when using an HTTP header named `x-vercel-protection-bypass` with a 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. Deprecated: use the \u003cspan pulumi-lang-nodejs=\"`vercel.ProjectProtectionBypass`\" pulumi-lang-dotnet=\"`vercel.ProjectProtectionBypass`\" pulumi-lang-go=\"`ProjectProtectionBypass`\" pulumi-lang-python=\"`ProjectProtectionBypass`\" pulumi-lang-yaml=\"`vercel.ProjectProtectionBypass`\" pulumi-lang-java=\"`vercel.ProjectProtectionBypass`\"\u003e`vercel.ProjectProtectionBypass`\u003c/span\u003e resource instead.\n",
                        "type": "boolean"
                    },
                    "protectionBypassForAutomationSecrets": {
                        "deprecationMessage": "Use the \u003cspan pulumi-lang-nodejs=\"`vercel.ProjectProtectionBypass`\" pulumi-lang-dotnet=\"`vercel.ProjectProtectionBypass`\" pulumi-lang-go=\"`ProjectProtectionBypass`\" pulumi-lang-python=\"`ProjectProtectionBypass`\" pulumi-lang-yaml=\"`vercel.ProjectProtectionBypass`\" pulumi-lang-java=\"`vercel.ProjectProtectionBypass`\"\u003e`vercel.ProjectProtectionBypass`\u003c/span\u003e resource instead. This deprecated attribute will be removed in a future major release.",
                        "description": "The automation bypass secrets for this project. Use each value as the `x-vercel-protection-bypass` header. Deprecated: use the \u003cspan pulumi-lang-nodejs=\"`vercel.ProjectProtectionBypass`\" pulumi-lang-dotnet=\"`vercel.ProjectProtectionBypass`\" pulumi-lang-go=\"`ProjectProtectionBypass`\" pulumi-lang-python=\"`ProjectProtectionBypass`\" pulumi-lang-yaml=\"`vercel.ProjectProtectionBypass`\" pulumi-lang-java=\"`vercel.ProjectProtectionBypass`\"\u003e`vercel.ProjectProtectionBypass`\u003c/span\u003e resource instead.\n",
                        "items": {
                            "type": "string"
                        },
                        "secret": true,
                        "type": "array"
                    },
                    "publicSource": {
                        "deprecationMessage": "This attribute is deprecated and no longer has any effect. The public source feature has been removed from Vercel and is no longer returned by the API. It will be removed in a future major version of this provider.",
                        "description": "Deprecated. The public source feature has been removed from Vercel; this attribute is no longer populated.\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"
                    },
                    "trustedSources": {
                        "$ref": "#/types/vercel:index/getProjectTrustedSources:getProjectTrustedSources",
                        "description": "Vercel projects and external sources that can reach this project's protected deployments using short-lived OIDC tokens.\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",
                    "passport",
                    "passwordProtection",
                    "previewComments",
                    "previewDeploymentSuffix",
                    "previewDeploymentsDisabled",
                    "prioritiseProductionBuilds",
                    "protectedSourcemaps",
                    "protectionBypassForAutomation",
                    "protectionBypassForAutomationSecrets",
                    "publicSource",
                    "resourceConfig",
                    "rootDirectory",
                    "serverlessFunctionRegion",
                    "skewProtection",
                    "teamId",
                    "trustedIps",
                    "trustedSources",
                    "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": {
            "description": "Provides information about files within a directory on disk.\n\nThis will recursively read files, 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\u003e If you want to prevent files from being included, this can be done with a [vercelignore file](https://vercel.com/guides/prevent-uploading-sourcepaths-with-vercelignore).\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 nextjs UI\n// exists in a `ui` directory and any terraform exists in a `terraform` directory.\n// E.g.\n// ```\n// ui/\n//    src/\n//        index.js\n//    package.json\n//    // etc...\n// terraform/\n//    main.tf\n// ```\nconst example = vercel.getProjectDirectory({\n    path: \"../ui\",\n});\nconst exampleGetProject = vercel.getProject({\n    name: \"my-awesome-project\",\n});\nconst exampleDeployment = new vercel.Deployment(\"example\", {\n    projectId: exampleGetProject.then(exampleGetProject =\u003e exampleGetProject.id),\n    files: example.then(example =\u003e example.files),\n    pathPrefix: example.then(example =\u003e example.path),\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 nextjs UI\n# exists in a `ui` directory and any terraform exists in a `terraform` directory.\n# E.g.\n# ```\n# ui/\n#    src/\n#        index.js\n#    package.json\n#    // etc...\n# terraform/\n#    main.tf\n# ```\nexample = vercel.get_project_directory(path=\"../ui\")\nexample_get_project = vercel.get_project(name=\"my-awesome-project\")\nexample_deployment = vercel.Deployment(\"example\",\n    project_id=example_get_project.id,\n    files=example.files,\n    path_prefix=example.path)\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 nextjs UI\n    // exists in a `ui` directory and any terraform exists in a `terraform` directory.\n    // E.g.\n    // ```\n    // ui/\n    //    src/\n    //        index.js\n    //    package.json\n    //    // etc...\n    // terraform/\n    //    main.tf\n    // ```\n    var example = Vercel.GetProjectDirectory.Invoke(new()\n    {\n        Path = \"../ui\",\n    });\n\n    var exampleGetProject = Vercel.GetProject.Invoke(new()\n    {\n        Name = \"my-awesome-project\",\n    });\n\n    var exampleDeployment = new Vercel.Deployment(\"example\", new()\n    {\n        ProjectId = exampleGetProject.Apply(getProjectResult =\u003e getProjectResult.Id),\n        Files = example.Apply(getProjectDirectoryResult =\u003e getProjectDirectoryResult.Files),\n        PathPrefix = example.Apply(getProjectDirectoryResult =\u003e getProjectDirectoryResult.Path),\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/v5/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 nextjs UI\n\t\t// exists in a `ui` directory and any terraform exists in a `terraform` directory.\n\t\t// E.g.\n\t\t// ```\n\t\t// ui/\n\t\t//\n\t\t//\tsrc/\n\t\t//\t    index.js\n\t\t//\tpackage.json\n\t\t//\t// etc...\n\t\t//\n\t\t// terraform/\n\t\t//\n\t\t//\tmain.tf\n\t\t//\n\t\t// ```\n\t\texample, err := vercel.GetProjectDirectory(ctx, \u0026vercel.GetProjectDirectoryArgs{\n\t\t\tPath: \"../ui\",\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-awesome-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.Files),\n\t\t\tPathPrefix: pulumi.String(example.Path),\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.GetProjectDirectoryArgs;\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 nextjs UI\n        // exists in a `ui` directory and any terraform exists in a `terraform` directory.\n        // E.g.\n        // ```\n        // ui/\n        //    src/\n        //        index.js\n        //    package.json\n        //    // etc...\n        // terraform/\n        //    main.tf\n        // ```\n        final var example = VercelFunctions.getProjectDirectory(GetProjectDirectoryArgs.builder()\n            .path(\"../ui\")\n            .build());\n\n        final var exampleGetProject = VercelFunctions.getProject(GetProjectArgs.builder()\n            .name(\"my-awesome-project\")\n            .build());\n\n        var exampleDeployment = new Deployment(\"exampleDeployment\", DeploymentArgs.builder()\n            .projectId(exampleGetProject.id())\n            .files(example.files())\n            .pathPrefix(example.path())\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.files}\n      pathPrefix: ${example.path}\nvariables:\n  # In this example, we are assuming that a nextjs UI\n  # exists in a `ui` directory and any terraform exists in a `terraform` directory.\n  # E.g.\n  # ```\n  # ui/\n  #    src/\n  #        index.js\n  #    package.json\n  #    // etc...\n  # terraform/\n  #    main.tf\n  # ```\n  example:\n    fn::invoke:\n      function: vercel:getProjectDirectory\n      arguments:\n        path: ../ui\n  exampleGetProject:\n    fn::invoke:\n      function: vercel:getProject\n      arguments:\n        name: my-awesome-project\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getProjectDirectory.\n",
                "properties": {
                    "path": {
                        "type": "string",
                        "description": "The path to the directory on your filesystem. Note that the path is relative to the root of the terraform files.\n"
                    }
                },
                "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": {
                        "description": "The path to the directory on your filesystem. Note that the path is relative to the root of the terraform files.\n",
                        "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/v5/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\nThis provider supports two to ten stages, including a non-final stage whose native rules identify the advancement type. This is a provider support restriction, not a claim that the REST API rejects every single-stage policy.\n\nEarlier provider versions accepted one stage. Policies containing only the final 100% stage now fail validation, refresh and import. Keep the prior provider pin until you have reviewed their conversion to supported stages. This provider does not infer missing advancement rules from old state.\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/v5/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/getProjectRoutes:getProjectRoutes": {
            "description": "Provides information about the live project routing rules configured for a Vercel project.\n\nThis data source intentionally reads the current live version and ignores unpublished staged drafts.\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 exampleGetProjectRoutes = example.then(example =\u003e vercel.getProjectRoutes({\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_routes = vercel.get_project_routes(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 exampleGetProjectRoutes = Vercel.GetProjectRoutes.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/v5/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.GetProjectRoutes(ctx, \u0026vercel.GetProjectRoutesArgs{\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.GetProjectRoutesArgs;\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 exampleGetProjectRoutes = VercelFunctions.getProjectRoutes(GetProjectRoutesArgs.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  exampleGetProjectRoutes:\n    fn::invoke:\n      function: vercel:getProjectRoutes\n      arguments:\n        projectId: ${example.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getProjectRoutes.\n",
                "properties": {
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the project to read routing rules 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 getProjectRoutes.\n",
                "properties": {
                    "id": {
                        "description": "The unique identifier for this data source. Format: team*id/project*id or\u003cspan pulumi-lang-nodejs=\" projectId \" pulumi-lang-dotnet=\" ProjectId \" pulumi-lang-go=\" projectId \" pulumi-lang-python=\" project_id \" pulumi-lang-yaml=\" projectId \" pulumi-lang-java=\" projectId \"\u003e project_id \u003c/span\u003efor personal accounts.\n",
                        "type": "string"
                    },
                    "projectId": {
                        "description": "The ID of the project to read routing rules for.\n",
                        "type": "string"
                    },
                    "rules": {
                        "description": "The ordered list of live routing rules for the project.\n",
                        "items": {
                            "$ref": "#/types/vercel:index/getProjectRoutesRule:getProjectRoutesRule"
                        },
                        "type": "array"
                    },
                    "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": [
                    "id",
                    "projectId",
                    "rules",
                    "teamId"
                ],
                "type": "object"
            }
        },
        "vercel:index/getShareableLink:getShareableLink": {
            "description": "Reads an existing shareable link for a Vercel alias without creating or revoking it. Ordinary deployment URLs without an alias record are not supported. The secret and URL are sensitive but are stored in Terraform state.\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 preview = vercel.getShareableLink({\n    alias: \"my-project-git-staging.vercel.app\",\n});\nexport const previewShareUrl = preview.then(preview =\u003e preview.url);\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\npreview = vercel.get_shareable_link(alias=\"my-project-git-staging.vercel.app\")\npulumi.export(\"previewShareUrl\", preview.url)\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 preview = Vercel.GetShareableLink.Invoke(new()\n    {\n        Alias = \"my-project-git-staging.vercel.app\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"previewShareUrl\"] = preview.Apply(getShareableLinkResult =\u003e getShareableLinkResult.Url),\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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpreview, err := vercel.LookupShareableLink(ctx, \u0026vercel.LookupShareableLinkArgs{\n\t\t\tAlias: \"my-project-git-staging.vercel.app\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"previewShareUrl\", preview.Url)\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.GetShareableLinkArgs;\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 preview = VercelFunctions.getShareableLink(GetShareableLinkArgs.builder()\n            .alias(\"my-project-git-staging.vercel.app\")\n            .build());\n\n        ctx.export(\"previewShareUrl\", preview.url());\n    }\n}\n```\n```yaml\nvariables:\n  preview:\n    fn::invoke:\n      function: vercel:getShareableLink\n      arguments:\n        alias: my-project-git-staging.vercel.app\noutputs:\n  previewShareUrl: ${preview.url}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getShareableLink.\n",
                "properties": {
                    "alias": {
                        "type": "string",
                        "description": "The alias hostname, without a scheme or path.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The team ID. Defaults to the team configured in the provider.\n"
                    }
                },
                "type": "object",
                "required": [
                    "alias"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getShareableLink.\n",
                "properties": {
                    "active": {
                        "description": "Whether the link has not expired, as of the last read.\n",
                        "type": "boolean"
                    },
                    "alias": {
                        "description": "The alias hostname, without a scheme or path.\n",
                        "type": "string"
                    },
                    "createdAt": {
                        "description": "Creation time in Unix milliseconds.\n",
                        "type": "integer"
                    },
                    "createdBy": {
                        "description": "The creator's ID.\n",
                        "type": "string"
                    },
                    "expiresAt": {
                        "description": "Expiry time in Unix seconds, or null for no expiry.\n",
                        "type": "integer"
                    },
                    "id": {
                        "description": "The non-secret ID of the alias owning the link.\n",
                        "type": "string"
                    },
                    "projectId": {
                        "description": "The project owning the alias.\n",
                        "type": "string"
                    },
                    "secret": {
                        "description": "The bearer secret. Stored in Terraform state.\n",
                        "secret": true,
                        "type": "string"
                    },
                    "teamId": {
                        "description": "The team ID. Defaults to the team configured in the provider.\n",
                        "type": "string"
                    },
                    "url": {
                        "description": "The HTTPS shareable URL, including the secret. Stored in Terraform state.\n",
                        "secret": true,
                        "type": "string"
                    }
                },
                "required": [
                    "active",
                    "alias",
                    "createdAt",
                    "createdBy",
                    "expiresAt",
                    "id",
                    "projectId",
                    "secret",
                    "teamId",
                    "url"
                ],
                "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/v5/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/v5/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": {
                    "defaultBuildMachineType": {
                        "description": "The default build machine type for new projects.\n",
                        "type": "string"
                    },
                    "defaultDeploymentProtection": {
                        "$ref": "#/types/vercel:index/getTeamConfigDefaultDeploymentProtection:getTeamConfigDefaultDeploymentProtection",
                        "description": "Deployment Protection defaults copied to new projects. Existing projects are unaffected.\n"
                    },
                    "defaultPassport": {
                        "$ref": "#/types/vercel:index/getTeamConfigDefaultPassport:getTeamConfigDefaultPassport",
                        "description": "Default Passport configuration for new projects.\n"
                    },
                    "description": {
                        "description": "A description of the team.\n",
                        "type": "string"
                    },
                    "disjunctiveProductionSecretPolicy": {
                        "description": "When enabled, secrets cannot be scoped to both Production and non-Production targets on the same environment variable.\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",
                        "secret": true,
                        "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": {
                        "deprecationMessage": "This attribute is deprecated and will be removed in a future major version. It is not replaced by \u003cspan pulumi-lang-nodejs=\"`disjunctiveProductionSecretPolicy`\" pulumi-lang-dotnet=\"`DisjunctiveProductionSecretPolicy`\" pulumi-lang-go=\"`disjunctiveProductionSecretPolicy`\" pulumi-lang-python=\"`disjunctive_production_secret_policy`\" pulumi-lang-yaml=\"`disjunctiveProductionSecretPolicy`\" pulumi-lang-java=\"`disjunctiveProductionSecretPolicy`\"\u003e`disjunctive_production_secret_policy`\u003c/span\u003e, which enforces a different rule.",
                        "description": "The legacy 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": [
                    "defaultBuildMachineType",
                    "defaultDeploymentProtection",
                    "defaultPassport",
                    "description",
                    "disjunctiveProductionSecretPolicy",
                    "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/v5/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"
            }
        },
        "vercel:index/getTraceDrain:getTraceDrain": {
            "description": "Provides information about an existing Trace Drain.\n\nTrace Drains forward OpenTelemetry trace data from your deployments to an OTLP/HTTP compatible 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 = vercel.getTraceDrain({\n    id: \"drn_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\nexample = vercel.get_trace_drain(id=\"drn_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\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.GetTraceDrain.Invoke(new()\n    {\n        Id = \"drn_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.LookupTraceDrain(ctx, \u0026vercel.LookupTraceDrainArgs{\n\t\t\tId: \"drn_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\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.GetTraceDrainArgs;\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.getTraceDrain(GetTraceDrainArgs.builder()\n            .id(\"drn_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getTraceDrain\n      arguments:\n        id: drn_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getTraceDrain.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "The ID of the Trace Drain.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the team the Trace Drain exists under. 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 getTraceDrain.\n",
                "properties": {
                    "deliveryFormat": {
                        "description": "The OTLP/HTTP format trace data is 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=\"`proto`\" pulumi-lang-dotnet=\"`Proto`\" pulumi-lang-go=\"`proto`\" pulumi-lang-python=\"`proto`\" pulumi-lang-yaml=\"`proto`\" pulumi-lang-java=\"`proto`\"\u003e`proto`\u003c/span\u003e.\n",
                        "type": "string"
                    },
                    "endpoint": {
                        "description": "The OTLP/HTTP traces endpoint.\n",
                        "type": "string"
                    },
                    "headers": {
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "Custom headers included in requests to the trace drain endpoint.\n",
                        "secret": true,
                        "type": "object"
                    },
                    "id": {
                        "description": "The ID of the Trace Drain.\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "The human-readable name of the Trace Drain.\n",
                        "type": "string"
                    },
                    "projectIds": {
                        "description": "A list of project IDs that the trace drain is associated with. If omitted, traces are sent for all projects.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "samplingRules": {
                        "description": "Ordered sampling rules for traces sent to this drain.\n",
                        "items": {
                            "$ref": "#/types/vercel:index/getTraceDrainSamplingRule:getTraceDrainSamplingRule"
                        },
                        "type": "array"
                    },
                    "teamId": {
                        "description": "The ID of the team the Trace Drain exists under. Required when reading a team resource if a default team has not been set in the provider.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "deliveryFormat",
                    "endpoint",
                    "headers",
                    "id",
                    "name",
                    "projectIds",
                    "samplingRules",
                    "teamId"
                ],
                "type": "object"
            }
        },
        "vercel:index/getVcrRepository:getVcrRepository": {
            "description": "Provides information about an existing Vercel Container Registry (VCR) Repository.\n\nA VCR Repository belongs to a Vercel Project and stores container images that can be\nused by Vercel Functions and Vercel Sandbox.\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.getVcrRepository({\n    projectId: \"prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    name: \"my-repository\",\n});\n```\n```python\nimport pulumi\nimport pulumi_vercel as vercel\n\nexample = vercel.get_vcr_repository(project_id=\"prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    name=\"my-repository\")\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.GetVcrRepository.Invoke(new()\n    {\n        ProjectId = \"prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n        Name = \"my-repository\",\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/v5/go/vercel\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vercel.LookupVcrRepository(ctx, \u0026vercel.LookupVcrRepositoryArgs{\n\t\t\tProjectId: \"prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n\t\t\tName:      \"my-repository\",\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.GetVcrRepositoryArgs;\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.getVcrRepository(GetVcrRepositoryArgs.builder()\n            .projectId(\"prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\")\n            .name(\"my-repository\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: vercel:getVcrRepository\n      arguments:\n        projectId: prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx\n        name: my-repository\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getVcrRepository.\n",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "The name of the repository.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the existing Vercel Project the repository belongs to.\n"
                    },
                    "teamId": {
                        "type": "string",
                        "description": "The ID of the team the repository exists under. 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 getVcrRepository.\n",
                "properties": {
                    "id": {
                        "description": "The ID of the VCR Repository.\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the repository.\n",
                        "type": "string"
                    },
                    "projectId": {
                        "description": "The ID of the existing Vercel Project the repository belongs to.\n",
                        "type": "string"
                    },
                    "public": {
                        "description": "Whether the repository is pullable by any Vercel team.\n",
                        "type": "boolean"
                    },
                    "teamId": {
                        "description": "The ID of the team the repository exists under. Required when configuring a team resource if a default team has not been set in the provider.\n",
                        "type": "string"
                    },
                    "url": {
                        "description": "The URL of the repository, composed of the owner slug, the project slug and the repository name (e.g. `vcr.vercel.com/team-slug/project-slug/repository-name`). Use it to push and pull images with Docker-compatible tooling.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "id",
                    "name",
                    "projectId",
                    "public",
                    "teamId",
                    "url"
                ],
                "type": "object"
            }
        }
    }
}