# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import copy
import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from . import _utilities
from . import outputs
from ._inputs import *

__all__ = ['ProjectArgs', 'Project']

@pulumi.input_type
class ProjectArgs:
    def __init__(__self__, *,
                 build_command: Optional[pulumi.Input[str]] = None,
                 dev_command: Optional[pulumi.Input[str]] = None,
                 environments: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectEnvironmentArgs']]]] = None,
                 framework: Optional[pulumi.Input[str]] = None,
                 git_repository: Optional[pulumi.Input['ProjectGitRepositoryArgs']] = None,
                 ignore_command: Optional[pulumi.Input[str]] = None,
                 install_command: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 output_directory: Optional[pulumi.Input[str]] = None,
                 password_protection: Optional[pulumi.Input['ProjectPasswordProtectionArgs']] = None,
                 protection_bypass_for_automation: Optional[pulumi.Input[bool]] = None,
                 public_source: Optional[pulumi.Input[bool]] = None,
                 root_directory: Optional[pulumi.Input[str]] = None,
                 serverless_function_region: Optional[pulumi.Input[str]] = None,
                 team_id: Optional[pulumi.Input[str]] = None,
                 vercel_authentication: Optional[pulumi.Input['ProjectVercelAuthenticationArgs']] = None):
        """
        The set of arguments for constructing a Project resource.
        :param pulumi.Input[str] build_command: The build command for this project. If omitted, this value will be automatically detected.
        :param pulumi.Input[str] dev_command: The dev command for this project. If omitted, this value will be automatically detected.
        :param pulumi.Input[Sequence[pulumi.Input['ProjectEnvironmentArgs']]] environments: A set of Environment Variables that should be configured for the project.
        :param pulumi.Input[str] framework: The framework that is being used for this project. If omitted, no framework is selected.
        :param pulumi.Input['ProjectGitRepositoryArgs'] git_repository: 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.
        :param pulumi.Input[str] ignore_command: 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.
        :param pulumi.Input[str] install_command: The install command for this project. If omitted, this value will be automatically detected.
        :param pulumi.Input[str] name: The desired name for the project.
        :param pulumi.Input[str] output_directory: The output directory of the project. If omitted, this value will be automatically detected.
        :param pulumi.Input['ProjectPasswordProtectionArgs'] password_protection: Ensures visitors of your Preview Deployments must enter a password in order to gain access.
        :param pulumi.Input[bool] protection_bypass_for_automation: Allow automation services to bypass Vercel Authentication and Password Protection for both Preview and Production Deployments on this project when using an HTTP header named `x-vercel-protection-bypass` with a value of the `password_protection_for_automation_secret` field.
        :param pulumi.Input[bool] public_source: By default, visitors to the `/_logs` and `/_src` paths of your Production and Preview Deployments must log in with Vercel (requires being a member of your team) to see the Source, Logs and Deployment Status of your project. Setting `public_source` to `true` disables this behaviour, meaning the Source, Logs and Deployment Status can be publicly viewed.
        :param pulumi.Input[str] root_directory: The name of a directory or relative path to the source code of your project. If omitted, it will default to the project root.
        :param pulumi.Input[str] serverless_function_region: 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.
        :param pulumi.Input[str] team_id: 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.
        :param pulumi.Input['ProjectVercelAuthenticationArgs'] vercel_authentication: Ensures visitors to your Preview Deployments are logged into Vercel and have a minimum of Viewer access on your team.
        """
        if build_command is not None:
            pulumi.set(__self__, "build_command", build_command)
        if dev_command is not None:
            pulumi.set(__self__, "dev_command", dev_command)
        if environments is not None:
            pulumi.set(__self__, "environments", environments)
        if framework is not None:
            pulumi.set(__self__, "framework", framework)
        if git_repository is not None:
            pulumi.set(__self__, "git_repository", git_repository)
        if ignore_command is not None:
            pulumi.set(__self__, "ignore_command", ignore_command)
        if install_command is not None:
            pulumi.set(__self__, "install_command", install_command)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if output_directory is not None:
            pulumi.set(__self__, "output_directory", output_directory)
        if password_protection is not None:
            pulumi.set(__self__, "password_protection", password_protection)
        if protection_bypass_for_automation is not None:
            pulumi.set(__self__, "protection_bypass_for_automation", protection_bypass_for_automation)
        if public_source is not None:
            pulumi.set(__self__, "public_source", public_source)
        if root_directory is not None:
            pulumi.set(__self__, "root_directory", root_directory)
        if serverless_function_region is not None:
            pulumi.set(__self__, "serverless_function_region", serverless_function_region)
        if team_id is not None:
            pulumi.set(__self__, "team_id", team_id)
        if vercel_authentication is not None:
            pulumi.set(__self__, "vercel_authentication", vercel_authentication)

    @property
    @pulumi.getter(name="buildCommand")
    def build_command(self) -> Optional[pulumi.Input[str]]:
        """
        The build command for this project. If omitted, this value will be automatically detected.
        """
        return pulumi.get(self, "build_command")

    @build_command.setter
    def build_command(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "build_command", value)

    @property
    @pulumi.getter(name="devCommand")
    def dev_command(self) -> Optional[pulumi.Input[str]]:
        """
        The dev command for this project. If omitted, this value will be automatically detected.
        """
        return pulumi.get(self, "dev_command")

    @dev_command.setter
    def dev_command(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "dev_command", value)

    @property
    @pulumi.getter
    def environments(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectEnvironmentArgs']]]]:
        """
        A set of Environment Variables that should be configured for the project.
        """
        return pulumi.get(self, "environments")

    @environments.setter
    def environments(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectEnvironmentArgs']]]]):
        pulumi.set(self, "environments", value)

    @property
    @pulumi.getter
    def framework(self) -> Optional[pulumi.Input[str]]:
        """
        The framework that is being used for this project. If omitted, no framework is selected.
        """
        return pulumi.get(self, "framework")

    @framework.setter
    def framework(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "framework", value)

    @property
    @pulumi.getter(name="gitRepository")
    def git_repository(self) -> Optional[pulumi.Input['ProjectGitRepositoryArgs']]:
        """
        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.
        """
        return pulumi.get(self, "git_repository")

    @git_repository.setter
    def git_repository(self, value: Optional[pulumi.Input['ProjectGitRepositoryArgs']]):
        pulumi.set(self, "git_repository", value)

    @property
    @pulumi.getter(name="ignoreCommand")
    def ignore_command(self) -> Optional[pulumi.Input[str]]:
        """
        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.
        """
        return pulumi.get(self, "ignore_command")

    @ignore_command.setter
    def ignore_command(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "ignore_command", value)

    @property
    @pulumi.getter(name="installCommand")
    def install_command(self) -> Optional[pulumi.Input[str]]:
        """
        The install command for this project. If omitted, this value will be automatically detected.
        """
        return pulumi.get(self, "install_command")

    @install_command.setter
    def install_command(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "install_command", value)

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        The desired name for the project.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter(name="outputDirectory")
    def output_directory(self) -> Optional[pulumi.Input[str]]:
        """
        The output directory of the project. If omitted, this value will be automatically detected.
        """
        return pulumi.get(self, "output_directory")

    @output_directory.setter
    def output_directory(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "output_directory", value)

    @property
    @pulumi.getter(name="passwordProtection")
    def password_protection(self) -> Optional[pulumi.Input['ProjectPasswordProtectionArgs']]:
        """
        Ensures visitors of your Preview Deployments must enter a password in order to gain access.
        """
        return pulumi.get(self, "password_protection")

    @password_protection.setter
    def password_protection(self, value: Optional[pulumi.Input['ProjectPasswordProtectionArgs']]):
        pulumi.set(self, "password_protection", value)

    @property
    @pulumi.getter(name="protectionBypassForAutomation")
    def protection_bypass_for_automation(self) -> Optional[pulumi.Input[bool]]:
        """
        Allow automation services to bypass Vercel Authentication and Password Protection for both Preview and Production Deployments on this project when using an HTTP header named `x-vercel-protection-bypass` with a value of the `password_protection_for_automation_secret` field.
        """
        return pulumi.get(self, "protection_bypass_for_automation")

    @protection_bypass_for_automation.setter
    def protection_bypass_for_automation(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "protection_bypass_for_automation", value)

    @property
    @pulumi.getter(name="publicSource")
    def public_source(self) -> Optional[pulumi.Input[bool]]:
        """
        By default, visitors to the `/_logs` and `/_src` paths of your Production and Preview Deployments must log in with Vercel (requires being a member of your team) to see the Source, Logs and Deployment Status of your project. Setting `public_source` to `true` disables this behaviour, meaning the Source, Logs and Deployment Status can be publicly viewed.
        """
        return pulumi.get(self, "public_source")

    @public_source.setter
    def public_source(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "public_source", value)

    @property
    @pulumi.getter(name="rootDirectory")
    def root_directory(self) -> Optional[pulumi.Input[str]]:
        """
        The name of a directory or relative path to the source code of your project. If omitted, it will default to the project root.
        """
        return pulumi.get(self, "root_directory")

    @root_directory.setter
    def root_directory(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "root_directory", value)

    @property
    @pulumi.getter(name="serverlessFunctionRegion")
    def serverless_function_region(self) -> Optional[pulumi.Input[str]]:
        """
        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.
        """
        return pulumi.get(self, "serverless_function_region")

    @serverless_function_region.setter
    def serverless_function_region(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "serverless_function_region", value)

    @property
    @pulumi.getter(name="teamId")
    def team_id(self) -> Optional[pulumi.Input[str]]:
        """
        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.
        """
        return pulumi.get(self, "team_id")

    @team_id.setter
    def team_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "team_id", value)

    @property
    @pulumi.getter(name="vercelAuthentication")
    def vercel_authentication(self) -> Optional[pulumi.Input['ProjectVercelAuthenticationArgs']]:
        """
        Ensures visitors to your Preview Deployments are logged into Vercel and have a minimum of Viewer access on your team.
        """
        return pulumi.get(self, "vercel_authentication")

    @vercel_authentication.setter
    def vercel_authentication(self, value: Optional[pulumi.Input['ProjectVercelAuthenticationArgs']]):
        pulumi.set(self, "vercel_authentication", value)


@pulumi.input_type
class _ProjectState:
    def __init__(__self__, *,
                 build_command: Optional[pulumi.Input[str]] = None,
                 dev_command: Optional[pulumi.Input[str]] = None,
                 environments: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectEnvironmentArgs']]]] = None,
                 framework: Optional[pulumi.Input[str]] = None,
                 git_repository: Optional[pulumi.Input['ProjectGitRepositoryArgs']] = None,
                 ignore_command: Optional[pulumi.Input[str]] = None,
                 install_command: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 output_directory: Optional[pulumi.Input[str]] = None,
                 password_protection: Optional[pulumi.Input['ProjectPasswordProtectionArgs']] = None,
                 protection_bypass_for_automation: Optional[pulumi.Input[bool]] = None,
                 protection_bypass_for_automation_secret: Optional[pulumi.Input[str]] = None,
                 public_source: Optional[pulumi.Input[bool]] = None,
                 root_directory: Optional[pulumi.Input[str]] = None,
                 serverless_function_region: Optional[pulumi.Input[str]] = None,
                 team_id: Optional[pulumi.Input[str]] = None,
                 vercel_authentication: Optional[pulumi.Input['ProjectVercelAuthenticationArgs']] = None):
        """
        Input properties used for looking up and filtering Project resources.
        :param pulumi.Input[str] build_command: The build command for this project. If omitted, this value will be automatically detected.
        :param pulumi.Input[str] dev_command: The dev command for this project. If omitted, this value will be automatically detected.
        :param pulumi.Input[Sequence[pulumi.Input['ProjectEnvironmentArgs']]] environments: A set of Environment Variables that should be configured for the project.
        :param pulumi.Input[str] framework: The framework that is being used for this project. If omitted, no framework is selected.
        :param pulumi.Input['ProjectGitRepositoryArgs'] git_repository: 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.
        :param pulumi.Input[str] ignore_command: 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.
        :param pulumi.Input[str] install_command: The install command for this project. If omitted, this value will be automatically detected.
        :param pulumi.Input[str] name: The desired name for the project.
        :param pulumi.Input[str] output_directory: The output directory of the project. If omitted, this value will be automatically detected.
        :param pulumi.Input['ProjectPasswordProtectionArgs'] password_protection: Ensures visitors of your Preview Deployments must enter a password in order to gain access.
        :param pulumi.Input[bool] protection_bypass_for_automation: Allow automation services to bypass Vercel Authentication and Password Protection for both Preview and Production Deployments on this project when using an HTTP header named `x-vercel-protection-bypass` with a value of the `password_protection_for_automation_secret` field.
        :param pulumi.Input[str] protection_bypass_for_automation_secret: If `protection_bypass_for_automation` is enabled, use this value in the `x-vercel-protection-bypass` header to bypass Vercel Authentication and Password Protection for both Preview and Production Deployments.
        :param pulumi.Input[bool] public_source: By default, visitors to the `/_logs` and `/_src` paths of your Production and Preview Deployments must log in with Vercel (requires being a member of your team) to see the Source, Logs and Deployment Status of your project. Setting `public_source` to `true` disables this behaviour, meaning the Source, Logs and Deployment Status can be publicly viewed.
        :param pulumi.Input[str] root_directory: The name of a directory or relative path to the source code of your project. If omitted, it will default to the project root.
        :param pulumi.Input[str] serverless_function_region: 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.
        :param pulumi.Input[str] team_id: 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.
        :param pulumi.Input['ProjectVercelAuthenticationArgs'] vercel_authentication: Ensures visitors to your Preview Deployments are logged into Vercel and have a minimum of Viewer access on your team.
        """
        if build_command is not None:
            pulumi.set(__self__, "build_command", build_command)
        if dev_command is not None:
            pulumi.set(__self__, "dev_command", dev_command)
        if environments is not None:
            pulumi.set(__self__, "environments", environments)
        if framework is not None:
            pulumi.set(__self__, "framework", framework)
        if git_repository is not None:
            pulumi.set(__self__, "git_repository", git_repository)
        if ignore_command is not None:
            pulumi.set(__self__, "ignore_command", ignore_command)
        if install_command is not None:
            pulumi.set(__self__, "install_command", install_command)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if output_directory is not None:
            pulumi.set(__self__, "output_directory", output_directory)
        if password_protection is not None:
            pulumi.set(__self__, "password_protection", password_protection)
        if protection_bypass_for_automation is not None:
            pulumi.set(__self__, "protection_bypass_for_automation", protection_bypass_for_automation)
        if protection_bypass_for_automation_secret is not None:
            pulumi.set(__self__, "protection_bypass_for_automation_secret", protection_bypass_for_automation_secret)
        if public_source is not None:
            pulumi.set(__self__, "public_source", public_source)
        if root_directory is not None:
            pulumi.set(__self__, "root_directory", root_directory)
        if serverless_function_region is not None:
            pulumi.set(__self__, "serverless_function_region", serverless_function_region)
        if team_id is not None:
            pulumi.set(__self__, "team_id", team_id)
        if vercel_authentication is not None:
            pulumi.set(__self__, "vercel_authentication", vercel_authentication)

    @property
    @pulumi.getter(name="buildCommand")
    def build_command(self) -> Optional[pulumi.Input[str]]:
        """
        The build command for this project. If omitted, this value will be automatically detected.
        """
        return pulumi.get(self, "build_command")

    @build_command.setter
    def build_command(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "build_command", value)

    @property
    @pulumi.getter(name="devCommand")
    def dev_command(self) -> Optional[pulumi.Input[str]]:
        """
        The dev command for this project. If omitted, this value will be automatically detected.
        """
        return pulumi.get(self, "dev_command")

    @dev_command.setter
    def dev_command(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "dev_command", value)

    @property
    @pulumi.getter
    def environments(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ProjectEnvironmentArgs']]]]:
        """
        A set of Environment Variables that should be configured for the project.
        """
        return pulumi.get(self, "environments")

    @environments.setter
    def environments(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ProjectEnvironmentArgs']]]]):
        pulumi.set(self, "environments", value)

    @property
    @pulumi.getter
    def framework(self) -> Optional[pulumi.Input[str]]:
        """
        The framework that is being used for this project. If omitted, no framework is selected.
        """
        return pulumi.get(self, "framework")

    @framework.setter
    def framework(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "framework", value)

    @property
    @pulumi.getter(name="gitRepository")
    def git_repository(self) -> Optional[pulumi.Input['ProjectGitRepositoryArgs']]:
        """
        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.
        """
        return pulumi.get(self, "git_repository")

    @git_repository.setter
    def git_repository(self, value: Optional[pulumi.Input['ProjectGitRepositoryArgs']]):
        pulumi.set(self, "git_repository", value)

    @property
    @pulumi.getter(name="ignoreCommand")
    def ignore_command(self) -> Optional[pulumi.Input[str]]:
        """
        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.
        """
        return pulumi.get(self, "ignore_command")

    @ignore_command.setter
    def ignore_command(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "ignore_command", value)

    @property
    @pulumi.getter(name="installCommand")
    def install_command(self) -> Optional[pulumi.Input[str]]:
        """
        The install command for this project. If omitted, this value will be automatically detected.
        """
        return pulumi.get(self, "install_command")

    @install_command.setter
    def install_command(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "install_command", value)

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        The desired name for the project.
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter(name="outputDirectory")
    def output_directory(self) -> Optional[pulumi.Input[str]]:
        """
        The output directory of the project. If omitted, this value will be automatically detected.
        """
        return pulumi.get(self, "output_directory")

    @output_directory.setter
    def output_directory(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "output_directory", value)

    @property
    @pulumi.getter(name="passwordProtection")
    def password_protection(self) -> Optional[pulumi.Input['ProjectPasswordProtectionArgs']]:
        """
        Ensures visitors of your Preview Deployments must enter a password in order to gain access.
        """
        return pulumi.get(self, "password_protection")

    @password_protection.setter
    def password_protection(self, value: Optional[pulumi.Input['ProjectPasswordProtectionArgs']]):
        pulumi.set(self, "password_protection", value)

    @property
    @pulumi.getter(name="protectionBypassForAutomation")
    def protection_bypass_for_automation(self) -> Optional[pulumi.Input[bool]]:
        """
        Allow automation services to bypass Vercel Authentication and Password Protection for both Preview and Production Deployments on this project when using an HTTP header named `x-vercel-protection-bypass` with a value of the `password_protection_for_automation_secret` field.
        """
        return pulumi.get(self, "protection_bypass_for_automation")

    @protection_bypass_for_automation.setter
    def protection_bypass_for_automation(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "protection_bypass_for_automation", value)

    @property
    @pulumi.getter(name="protectionBypassForAutomationSecret")
    def protection_bypass_for_automation_secret(self) -> Optional[pulumi.Input[str]]:
        """
        If `protection_bypass_for_automation` is enabled, use this value in the `x-vercel-protection-bypass` header to bypass Vercel Authentication and Password Protection for both Preview and Production Deployments.
        """
        return pulumi.get(self, "protection_bypass_for_automation_secret")

    @protection_bypass_for_automation_secret.setter
    def protection_bypass_for_automation_secret(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "protection_bypass_for_automation_secret", value)

    @property
    @pulumi.getter(name="publicSource")
    def public_source(self) -> Optional[pulumi.Input[bool]]:
        """
        By default, visitors to the `/_logs` and `/_src` paths of your Production and Preview Deployments must log in with Vercel (requires being a member of your team) to see the Source, Logs and Deployment Status of your project. Setting `public_source` to `true` disables this behaviour, meaning the Source, Logs and Deployment Status can be publicly viewed.
        """
        return pulumi.get(self, "public_source")

    @public_source.setter
    def public_source(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "public_source", value)

    @property
    @pulumi.getter(name="rootDirectory")
    def root_directory(self) -> Optional[pulumi.Input[str]]:
        """
        The name of a directory or relative path to the source code of your project. If omitted, it will default to the project root.
        """
        return pulumi.get(self, "root_directory")

    @root_directory.setter
    def root_directory(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "root_directory", value)

    @property
    @pulumi.getter(name="serverlessFunctionRegion")
    def serverless_function_region(self) -> Optional[pulumi.Input[str]]:
        """
        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.
        """
        return pulumi.get(self, "serverless_function_region")

    @serverless_function_region.setter
    def serverless_function_region(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "serverless_function_region", value)

    @property
    @pulumi.getter(name="teamId")
    def team_id(self) -> Optional[pulumi.Input[str]]:
        """
        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.
        """
        return pulumi.get(self, "team_id")

    @team_id.setter
    def team_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "team_id", value)

    @property
    @pulumi.getter(name="vercelAuthentication")
    def vercel_authentication(self) -> Optional[pulumi.Input['ProjectVercelAuthenticationArgs']]:
        """
        Ensures visitors to your Preview Deployments are logged into Vercel and have a minimum of Viewer access on your team.
        """
        return pulumi.get(self, "vercel_authentication")

    @vercel_authentication.setter
    def vercel_authentication(self, value: Optional[pulumi.Input['ProjectVercelAuthenticationArgs']]):
        pulumi.set(self, "vercel_authentication", value)


class Project(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 build_command: Optional[pulumi.Input[str]] = None,
                 dev_command: Optional[pulumi.Input[str]] = None,
                 environments: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ProjectEnvironmentArgs']]]]] = None,
                 framework: Optional[pulumi.Input[str]] = None,
                 git_repository: Optional[pulumi.Input[pulumi.InputType['ProjectGitRepositoryArgs']]] = None,
                 ignore_command: Optional[pulumi.Input[str]] = None,
                 install_command: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 output_directory: Optional[pulumi.Input[str]] = None,
                 password_protection: Optional[pulumi.Input[pulumi.InputType['ProjectPasswordProtectionArgs']]] = None,
                 protection_bypass_for_automation: Optional[pulumi.Input[bool]] = None,
                 public_source: Optional[pulumi.Input[bool]] = None,
                 root_directory: Optional[pulumi.Input[str]] = None,
                 serverless_function_region: Optional[pulumi.Input[str]] = None,
                 team_id: Optional[pulumi.Input[str]] = None,
                 vercel_authentication: Optional[pulumi.Input[pulumi.InputType['ProjectVercelAuthenticationArgs']]] = None,
                 __props__=None):
        """
        ## Example Usage

        ```python
        import pulumi
        import pulumiverse_vercel as vercel

        # A project that is connected to a git repository.
        # Deployments will be created automatically
        # on every branch push and merges onto the Production Branch.
        with_git = vercel.Project("withGit",
            framework="nextjs",
            git_repository=vercel.ProjectGitRepositoryArgs(
                repo="vercel/some-repo",
                type="github",
            ))
        # A project that is not connected to a git repository.
        # Deployments will need to be created manually through
        # terraform, or via the vercel CLI.
        example = vercel.Project("example", framework="nextjs")
        ```

        ## Import

        If importing into a personal account, or with a team configured on the provider, simply use the project ID. - project_id can be found in the project `settings` tab in the Vercel UI.

        ```sh
         $ pulumi import vercel:index/project:Project example prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx
        ```

         Alternatively, you can import via the team_id and project_id. - team_id can be found in the team `settings` tab in the Vercel UI. - project_id can be found in the project `settings` tab in the Vercel UI.

        ```sh
         $ pulumi import vercel:index/project:Project example team_xxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx
        ```

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[str] build_command: The build command for this project. If omitted, this value will be automatically detected.
        :param pulumi.Input[str] dev_command: The dev command for this project. If omitted, this value will be automatically detected.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ProjectEnvironmentArgs']]]] environments: A set of Environment Variables that should be configured for the project.
        :param pulumi.Input[str] framework: The framework that is being used for this project. If omitted, no framework is selected.
        :param pulumi.Input[pulumi.InputType['ProjectGitRepositoryArgs']] git_repository: 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.
        :param pulumi.Input[str] ignore_command: 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.
        :param pulumi.Input[str] install_command: The install command for this project. If omitted, this value will be automatically detected.
        :param pulumi.Input[str] name: The desired name for the project.
        :param pulumi.Input[str] output_directory: The output directory of the project. If omitted, this value will be automatically detected.
        :param pulumi.Input[pulumi.InputType['ProjectPasswordProtectionArgs']] password_protection: Ensures visitors of your Preview Deployments must enter a password in order to gain access.
        :param pulumi.Input[bool] protection_bypass_for_automation: Allow automation services to bypass Vercel Authentication and Password Protection for both Preview and Production Deployments on this project when using an HTTP header named `x-vercel-protection-bypass` with a value of the `password_protection_for_automation_secret` field.
        :param pulumi.Input[bool] public_source: By default, visitors to the `/_logs` and `/_src` paths of your Production and Preview Deployments must log in with Vercel (requires being a member of your team) to see the Source, Logs and Deployment Status of your project. Setting `public_source` to `true` disables this behaviour, meaning the Source, Logs and Deployment Status can be publicly viewed.
        :param pulumi.Input[str] root_directory: The name of a directory or relative path to the source code of your project. If omitted, it will default to the project root.
        :param pulumi.Input[str] serverless_function_region: 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.
        :param pulumi.Input[str] team_id: 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.
        :param pulumi.Input[pulumi.InputType['ProjectVercelAuthenticationArgs']] vercel_authentication: Ensures visitors to your Preview Deployments are logged into Vercel and have a minimum of Viewer access on your team.
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: Optional[ProjectArgs] = None,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        ## Example Usage

        ```python
        import pulumi
        import pulumiverse_vercel as vercel

        # A project that is connected to a git repository.
        # Deployments will be created automatically
        # on every branch push and merges onto the Production Branch.
        with_git = vercel.Project("withGit",
            framework="nextjs",
            git_repository=vercel.ProjectGitRepositoryArgs(
                repo="vercel/some-repo",
                type="github",
            ))
        # A project that is not connected to a git repository.
        # Deployments will need to be created manually through
        # terraform, or via the vercel CLI.
        example = vercel.Project("example", framework="nextjs")
        ```

        ## Import

        If importing into a personal account, or with a team configured on the provider, simply use the project ID. - project_id can be found in the project `settings` tab in the Vercel UI.

        ```sh
         $ pulumi import vercel:index/project:Project example prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx
        ```

         Alternatively, you can import via the team_id and project_id. - team_id can be found in the team `settings` tab in the Vercel UI. - project_id can be found in the project `settings` tab in the Vercel UI.

        ```sh
         $ pulumi import vercel:index/project:Project example team_xxxxxxxxxxxxxxxxxxxxxxxx/prj_xxxxxxxxxxxxxxxxxxxxxxxxxxxx
        ```

        :param str resource_name: The name of the resource.
        :param ProjectArgs args: The arguments to use to populate this resource's properties.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    def __init__(__self__, resource_name: str, *args, **kwargs):
        resource_args, opts = _utilities.get_resource_args_opts(ProjectArgs, pulumi.ResourceOptions, *args, **kwargs)
        if resource_args is not None:
            __self__._internal_init(resource_name, opts, **resource_args.__dict__)
        else:
            __self__._internal_init(resource_name, *args, **kwargs)

    def _internal_init(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 build_command: Optional[pulumi.Input[str]] = None,
                 dev_command: Optional[pulumi.Input[str]] = None,
                 environments: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ProjectEnvironmentArgs']]]]] = None,
                 framework: Optional[pulumi.Input[str]] = None,
                 git_repository: Optional[pulumi.Input[pulumi.InputType['ProjectGitRepositoryArgs']]] = None,
                 ignore_command: Optional[pulumi.Input[str]] = None,
                 install_command: Optional[pulumi.Input[str]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 output_directory: Optional[pulumi.Input[str]] = None,
                 password_protection: Optional[pulumi.Input[pulumi.InputType['ProjectPasswordProtectionArgs']]] = None,
                 protection_bypass_for_automation: Optional[pulumi.Input[bool]] = None,
                 public_source: Optional[pulumi.Input[bool]] = None,
                 root_directory: Optional[pulumi.Input[str]] = None,
                 serverless_function_region: Optional[pulumi.Input[str]] = None,
                 team_id: Optional[pulumi.Input[str]] = None,
                 vercel_authentication: Optional[pulumi.Input[pulumi.InputType['ProjectVercelAuthenticationArgs']]] = None,
                 __props__=None):
        opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = ProjectArgs.__new__(ProjectArgs)

            __props__.__dict__["build_command"] = build_command
            __props__.__dict__["dev_command"] = dev_command
            __props__.__dict__["environments"] = environments
            __props__.__dict__["framework"] = framework
            __props__.__dict__["git_repository"] = git_repository
            __props__.__dict__["ignore_command"] = ignore_command
            __props__.__dict__["install_command"] = install_command
            __props__.__dict__["name"] = name
            __props__.__dict__["output_directory"] = output_directory
            __props__.__dict__["password_protection"] = password_protection
            __props__.__dict__["protection_bypass_for_automation"] = protection_bypass_for_automation
            __props__.__dict__["public_source"] = public_source
            __props__.__dict__["root_directory"] = root_directory
            __props__.__dict__["serverless_function_region"] = serverless_function_region
            __props__.__dict__["team_id"] = team_id
            __props__.__dict__["vercel_authentication"] = vercel_authentication
            __props__.__dict__["protection_bypass_for_automation_secret"] = None
        super(Project, __self__).__init__(
            'vercel:index/project:Project',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            build_command: Optional[pulumi.Input[str]] = None,
            dev_command: Optional[pulumi.Input[str]] = None,
            environments: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ProjectEnvironmentArgs']]]]] = None,
            framework: Optional[pulumi.Input[str]] = None,
            git_repository: Optional[pulumi.Input[pulumi.InputType['ProjectGitRepositoryArgs']]] = None,
            ignore_command: Optional[pulumi.Input[str]] = None,
            install_command: Optional[pulumi.Input[str]] = None,
            name: Optional[pulumi.Input[str]] = None,
            output_directory: Optional[pulumi.Input[str]] = None,
            password_protection: Optional[pulumi.Input[pulumi.InputType['ProjectPasswordProtectionArgs']]] = None,
            protection_bypass_for_automation: Optional[pulumi.Input[bool]] = None,
            protection_bypass_for_automation_secret: Optional[pulumi.Input[str]] = None,
            public_source: Optional[pulumi.Input[bool]] = None,
            root_directory: Optional[pulumi.Input[str]] = None,
            serverless_function_region: Optional[pulumi.Input[str]] = None,
            team_id: Optional[pulumi.Input[str]] = None,
            vercel_authentication: Optional[pulumi.Input[pulumi.InputType['ProjectVercelAuthenticationArgs']]] = None) -> 'Project':
        """
        Get an existing Project resource's state with the given name, id, and optional extra
        properties used to qualify the lookup.

        :param str resource_name: The unique name of the resulting resource.
        :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[str] build_command: The build command for this project. If omitted, this value will be automatically detected.
        :param pulumi.Input[str] dev_command: The dev command for this project. If omitted, this value will be automatically detected.
        :param pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ProjectEnvironmentArgs']]]] environments: A set of Environment Variables that should be configured for the project.
        :param pulumi.Input[str] framework: The framework that is being used for this project. If omitted, no framework is selected.
        :param pulumi.Input[pulumi.InputType['ProjectGitRepositoryArgs']] git_repository: 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.
        :param pulumi.Input[str] ignore_command: 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.
        :param pulumi.Input[str] install_command: The install command for this project. If omitted, this value will be automatically detected.
        :param pulumi.Input[str] name: The desired name for the project.
        :param pulumi.Input[str] output_directory: The output directory of the project. If omitted, this value will be automatically detected.
        :param pulumi.Input[pulumi.InputType['ProjectPasswordProtectionArgs']] password_protection: Ensures visitors of your Preview Deployments must enter a password in order to gain access.
        :param pulumi.Input[bool] protection_bypass_for_automation: Allow automation services to bypass Vercel Authentication and Password Protection for both Preview and Production Deployments on this project when using an HTTP header named `x-vercel-protection-bypass` with a value of the `password_protection_for_automation_secret` field.
        :param pulumi.Input[str] protection_bypass_for_automation_secret: If `protection_bypass_for_automation` is enabled, use this value in the `x-vercel-protection-bypass` header to bypass Vercel Authentication and Password Protection for both Preview and Production Deployments.
        :param pulumi.Input[bool] public_source: By default, visitors to the `/_logs` and `/_src` paths of your Production and Preview Deployments must log in with Vercel (requires being a member of your team) to see the Source, Logs and Deployment Status of your project. Setting `public_source` to `true` disables this behaviour, meaning the Source, Logs and Deployment Status can be publicly viewed.
        :param pulumi.Input[str] root_directory: The name of a directory or relative path to the source code of your project. If omitted, it will default to the project root.
        :param pulumi.Input[str] serverless_function_region: 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.
        :param pulumi.Input[str] team_id: 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.
        :param pulumi.Input[pulumi.InputType['ProjectVercelAuthenticationArgs']] vercel_authentication: Ensures visitors to your Preview Deployments are logged into Vercel and have a minimum of Viewer access on your team.
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _ProjectState.__new__(_ProjectState)

        __props__.__dict__["build_command"] = build_command
        __props__.__dict__["dev_command"] = dev_command
        __props__.__dict__["environments"] = environments
        __props__.__dict__["framework"] = framework
        __props__.__dict__["git_repository"] = git_repository
        __props__.__dict__["ignore_command"] = ignore_command
        __props__.__dict__["install_command"] = install_command
        __props__.__dict__["name"] = name
        __props__.__dict__["output_directory"] = output_directory
        __props__.__dict__["password_protection"] = password_protection
        __props__.__dict__["protection_bypass_for_automation"] = protection_bypass_for_automation
        __props__.__dict__["protection_bypass_for_automation_secret"] = protection_bypass_for_automation_secret
        __props__.__dict__["public_source"] = public_source
        __props__.__dict__["root_directory"] = root_directory
        __props__.__dict__["serverless_function_region"] = serverless_function_region
        __props__.__dict__["team_id"] = team_id
        __props__.__dict__["vercel_authentication"] = vercel_authentication
        return Project(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter(name="buildCommand")
    def build_command(self) -> pulumi.Output[Optional[str]]:
        """
        The build command for this project. If omitted, this value will be automatically detected.
        """
        return pulumi.get(self, "build_command")

    @property
    @pulumi.getter(name="devCommand")
    def dev_command(self) -> pulumi.Output[Optional[str]]:
        """
        The dev command for this project. If omitted, this value will be automatically detected.
        """
        return pulumi.get(self, "dev_command")

    @property
    @pulumi.getter
    def environments(self) -> pulumi.Output[Optional[Sequence['outputs.ProjectEnvironment']]]:
        """
        A set of Environment Variables that should be configured for the project.
        """
        return pulumi.get(self, "environments")

    @property
    @pulumi.getter
    def framework(self) -> pulumi.Output[Optional[str]]:
        """
        The framework that is being used for this project. If omitted, no framework is selected.
        """
        return pulumi.get(self, "framework")

    @property
    @pulumi.getter(name="gitRepository")
    def git_repository(self) -> pulumi.Output[Optional['outputs.ProjectGitRepository']]:
        """
        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.
        """
        return pulumi.get(self, "git_repository")

    @property
    @pulumi.getter(name="ignoreCommand")
    def ignore_command(self) -> pulumi.Output[Optional[str]]:
        """
        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.
        """
        return pulumi.get(self, "ignore_command")

    @property
    @pulumi.getter(name="installCommand")
    def install_command(self) -> pulumi.Output[Optional[str]]:
        """
        The install command for this project. If omitted, this value will be automatically detected.
        """
        return pulumi.get(self, "install_command")

    @property
    @pulumi.getter
    def name(self) -> pulumi.Output[str]:
        """
        The desired name for the project.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="outputDirectory")
    def output_directory(self) -> pulumi.Output[Optional[str]]:
        """
        The output directory of the project. If omitted, this value will be automatically detected.
        """
        return pulumi.get(self, "output_directory")

    @property
    @pulumi.getter(name="passwordProtection")
    def password_protection(self) -> pulumi.Output[Optional['outputs.ProjectPasswordProtection']]:
        """
        Ensures visitors of your Preview Deployments must enter a password in order to gain access.
        """
        return pulumi.get(self, "password_protection")

    @property
    @pulumi.getter(name="protectionBypassForAutomation")
    def protection_bypass_for_automation(self) -> pulumi.Output[Optional[bool]]:
        """
        Allow automation services to bypass Vercel Authentication and Password Protection for both Preview and Production Deployments on this project when using an HTTP header named `x-vercel-protection-bypass` with a value of the `password_protection_for_automation_secret` field.
        """
        return pulumi.get(self, "protection_bypass_for_automation")

    @property
    @pulumi.getter(name="protectionBypassForAutomationSecret")
    def protection_bypass_for_automation_secret(self) -> pulumi.Output[str]:
        """
        If `protection_bypass_for_automation` is enabled, use this value in the `x-vercel-protection-bypass` header to bypass Vercel Authentication and Password Protection for both Preview and Production Deployments.
        """
        return pulumi.get(self, "protection_bypass_for_automation_secret")

    @property
    @pulumi.getter(name="publicSource")
    def public_source(self) -> pulumi.Output[Optional[bool]]:
        """
        By default, visitors to the `/_logs` and `/_src` paths of your Production and Preview Deployments must log in with Vercel (requires being a member of your team) to see the Source, Logs and Deployment Status of your project. Setting `public_source` to `true` disables this behaviour, meaning the Source, Logs and Deployment Status can be publicly viewed.
        """
        return pulumi.get(self, "public_source")

    @property
    @pulumi.getter(name="rootDirectory")
    def root_directory(self) -> pulumi.Output[Optional[str]]:
        """
        The name of a directory or relative path to the source code of your project. If omitted, it will default to the project root.
        """
        return pulumi.get(self, "root_directory")

    @property
    @pulumi.getter(name="serverlessFunctionRegion")
    def serverless_function_region(self) -> pulumi.Output[str]:
        """
        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.
        """
        return pulumi.get(self, "serverless_function_region")

    @property
    @pulumi.getter(name="teamId")
    def team_id(self) -> pulumi.Output[str]:
        """
        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.
        """
        return pulumi.get(self, "team_id")

    @property
    @pulumi.getter(name="vercelAuthentication")
    def vercel_authentication(self) -> pulumi.Output['outputs.ProjectVercelAuthentication']:
        """
        Ensures visitors to your Preview Deployments are logged into Vercel and have a minimum of Viewer access on your team.
        """
        return pulumi.get(self, "vercel_authentication")

