# coding=utf-8
# *** WARNING: this file was generated by pulumi-language-python. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import builtins as _builtins
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from . import _utilities
from . import outputs
from ._inputs import *

__all__ = ['PostgresProjectArgs', 'PostgresProject']

@pulumi.input_type
class PostgresProjectArgs:
    def __init__(__self__, *,
                 project_id: pulumi.Input[_builtins.str],
                 initial_endpoint_spec: Optional[pulumi.Input['PostgresProjectInitialEndpointSpecArgs']] = None,
                 provider_config: Optional[pulumi.Input['PostgresProjectProviderConfigArgs']] = None,
                 spec: Optional[pulumi.Input['PostgresProjectSpecArgs']] = None):
        """
        The set of arguments for constructing a PostgresProject resource.
        :param pulumi.Input[_builtins.str] project_id: The ID to use for the Project. This becomes the final component of the project's resource name.
               The ID is required and must be 1-63 characters long, start with a lowercase letter, and contain only lowercase letters, numbers, and hyphens.
               For example, `my-app` becomes `projects/my-app`
        :param pulumi.Input['PostgresProjectInitialEndpointSpecArgs'] initial_endpoint_spec: Configuration settings for the initial Read/Write endpoint created inside the default branch for a newly
               created project. If omitted, the initial endpoint created will have default settings, without high availability
               configured. This field does not apply to any endpoints created after project creation. Use
               spec.default_endpoint_settings to configure default settings for endpoints created after project creation
        :param pulumi.Input['PostgresProjectProviderConfigArgs'] provider_config: Configure the provider for management through account provider.
        :param pulumi.Input['PostgresProjectSpecArgs'] spec: The spec contains the project configuration, including display_name, pg_version (Postgres version), history_retention_duration, and default_endpoint_settings
        """
        pulumi.set(__self__, "project_id", project_id)
        if initial_endpoint_spec is not None:
            pulumi.set(__self__, "initial_endpoint_spec", initial_endpoint_spec)
        if provider_config is not None:
            pulumi.set(__self__, "provider_config", provider_config)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)

    @_builtins.property
    @pulumi.getter(name="projectId")
    def project_id(self) -> pulumi.Input[_builtins.str]:
        """
        The ID to use for the Project. This becomes the final component of the project's resource name.
        The ID is required and must be 1-63 characters long, start with a lowercase letter, and contain only lowercase letters, numbers, and hyphens.
        For example, `my-app` becomes `projects/my-app`
        """
        return pulumi.get(self, "project_id")

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

    @_builtins.property
    @pulumi.getter(name="initialEndpointSpec")
    def initial_endpoint_spec(self) -> Optional[pulumi.Input['PostgresProjectInitialEndpointSpecArgs']]:
        """
        Configuration settings for the initial Read/Write endpoint created inside the default branch for a newly
        created project. If omitted, the initial endpoint created will have default settings, without high availability
        configured. This field does not apply to any endpoints created after project creation. Use
        spec.default_endpoint_settings to configure default settings for endpoints created after project creation
        """
        return pulumi.get(self, "initial_endpoint_spec")

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

    @_builtins.property
    @pulumi.getter(name="providerConfig")
    def provider_config(self) -> Optional[pulumi.Input['PostgresProjectProviderConfigArgs']]:
        """
        Configure the provider for management through account provider.
        """
        return pulumi.get(self, "provider_config")

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

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional[pulumi.Input['PostgresProjectSpecArgs']]:
        """
        The spec contains the project configuration, including display_name, pg_version (Postgres version), history_retention_duration, and default_endpoint_settings
        """
        return pulumi.get(self, "spec")

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


@pulumi.input_type
class _PostgresProjectState:
    def __init__(__self__, *,
                 create_time: Optional[pulumi.Input[_builtins.str]] = None,
                 initial_endpoint_spec: Optional[pulumi.Input['PostgresProjectInitialEndpointSpecArgs']] = None,
                 name: Optional[pulumi.Input[_builtins.str]] = None,
                 project_id: Optional[pulumi.Input[_builtins.str]] = None,
                 provider_config: Optional[pulumi.Input['PostgresProjectProviderConfigArgs']] = None,
                 spec: Optional[pulumi.Input['PostgresProjectSpecArgs']] = None,
                 status: Optional[pulumi.Input['PostgresProjectStatusArgs']] = None,
                 uid: Optional[pulumi.Input[_builtins.str]] = None,
                 update_time: Optional[pulumi.Input[_builtins.str]] = None):
        """
        Input properties used for looking up and filtering PostgresProject resources.
        :param pulumi.Input[_builtins.str] create_time: (string) - A timestamp indicating when the project was created
        :param pulumi.Input['PostgresProjectInitialEndpointSpecArgs'] initial_endpoint_spec: Configuration settings for the initial Read/Write endpoint created inside the default branch for a newly
               created project. If omitted, the initial endpoint created will have default settings, without high availability
               configured. This field does not apply to any endpoints created after project creation. Use
               spec.default_endpoint_settings to configure default settings for endpoints created after project creation
        :param pulumi.Input[_builtins.str] name: (string) - Output only. The full resource path of the project.
               Format: projects/{project_id}
        :param pulumi.Input[_builtins.str] project_id: The ID to use for the Project. This becomes the final component of the project's resource name.
               The ID is required and must be 1-63 characters long, start with a lowercase letter, and contain only lowercase letters, numbers, and hyphens.
               For example, `my-app` becomes `projects/my-app`
        :param pulumi.Input['PostgresProjectProviderConfigArgs'] provider_config: Configure the provider for management through account provider.
        :param pulumi.Input['PostgresProjectSpecArgs'] spec: The spec contains the project configuration, including display_name, pg_version (Postgres version), history_retention_duration, and default_endpoint_settings
        :param pulumi.Input['PostgresProjectStatusArgs'] status: (ProjectStatus) - The current status of a Project
        :param pulumi.Input[_builtins.str] uid: (string) - System-generated unique ID for the project
        :param pulumi.Input[_builtins.str] update_time: (string) - A timestamp indicating when the project was last updated
        """
        if create_time is not None:
            pulumi.set(__self__, "create_time", create_time)
        if initial_endpoint_spec is not None:
            pulumi.set(__self__, "initial_endpoint_spec", initial_endpoint_spec)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if project_id is not None:
            pulumi.set(__self__, "project_id", project_id)
        if provider_config is not None:
            pulumi.set(__self__, "provider_config", provider_config)
        if spec is not None:
            pulumi.set(__self__, "spec", spec)
        if status is not None:
            pulumi.set(__self__, "status", status)
        if uid is not None:
            pulumi.set(__self__, "uid", uid)
        if update_time is not None:
            pulumi.set(__self__, "update_time", update_time)

    @_builtins.property
    @pulumi.getter(name="createTime")
    def create_time(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        (string) - A timestamp indicating when the project was created
        """
        return pulumi.get(self, "create_time")

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

    @_builtins.property
    @pulumi.getter(name="initialEndpointSpec")
    def initial_endpoint_spec(self) -> Optional[pulumi.Input['PostgresProjectInitialEndpointSpecArgs']]:
        """
        Configuration settings for the initial Read/Write endpoint created inside the default branch for a newly
        created project. If omitted, the initial endpoint created will have default settings, without high availability
        configured. This field does not apply to any endpoints created after project creation. Use
        spec.default_endpoint_settings to configure default settings for endpoints created after project creation
        """
        return pulumi.get(self, "initial_endpoint_spec")

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

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        (string) - Output only. The full resource path of the project.
        Format: projects/{project_id}
        """
        return pulumi.get(self, "name")

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

    @_builtins.property
    @pulumi.getter(name="projectId")
    def project_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The ID to use for the Project. This becomes the final component of the project's resource name.
        The ID is required and must be 1-63 characters long, start with a lowercase letter, and contain only lowercase letters, numbers, and hyphens.
        For example, `my-app` becomes `projects/my-app`
        """
        return pulumi.get(self, "project_id")

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

    @_builtins.property
    @pulumi.getter(name="providerConfig")
    def provider_config(self) -> Optional[pulumi.Input['PostgresProjectProviderConfigArgs']]:
        """
        Configure the provider for management through account provider.
        """
        return pulumi.get(self, "provider_config")

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

    @_builtins.property
    @pulumi.getter
    def spec(self) -> Optional[pulumi.Input['PostgresProjectSpecArgs']]:
        """
        The spec contains the project configuration, including display_name, pg_version (Postgres version), history_retention_duration, and default_endpoint_settings
        """
        return pulumi.get(self, "spec")

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

    @_builtins.property
    @pulumi.getter
    def status(self) -> Optional[pulumi.Input['PostgresProjectStatusArgs']]:
        """
        (ProjectStatus) - The current status of a Project
        """
        return pulumi.get(self, "status")

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

    @_builtins.property
    @pulumi.getter
    def uid(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        (string) - System-generated unique ID for the project
        """
        return pulumi.get(self, "uid")

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

    @_builtins.property
    @pulumi.getter(name="updateTime")
    def update_time(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        (string) - A timestamp indicating when the project was last updated
        """
        return pulumi.get(self, "update_time")

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


@pulumi.type_token("databricks:index/postgresProject:PostgresProject")
class PostgresProject(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 initial_endpoint_spec: Optional[pulumi.Input[Union['PostgresProjectInitialEndpointSpecArgs', 'PostgresProjectInitialEndpointSpecArgsDict']]] = None,
                 project_id: Optional[pulumi.Input[_builtins.str]] = None,
                 provider_config: Optional[pulumi.Input[Union['PostgresProjectProviderConfigArgs', 'PostgresProjectProviderConfigArgsDict']]] = None,
                 spec: Optional[pulumi.Input[Union['PostgresProjectSpecArgs', 'PostgresProjectSpecArgsDict']]] = None,
                 __props__=None):
        """
        [![Public Beta](https://img.shields.io/badge/Release_Stage-Public_Beta-orange)](https://docs.databricks.com/aws/en/release-notes/release-types)

        ## Example Usage

        ### Basic Project Creation

        ```python
        import pulumi
        import pulumi_databricks as databricks

        this = databricks.PostgresProject("this",
            project_id="my-project",
            spec={
                "pg_version": 17,
                "display_name": "My Application Project",
            })
        ```

        ### Project with Custom Settings

        ```python
        import pulumi
        import pulumi_databricks as databricks

        this = databricks.PostgresProject("this",
            project_id="analytics-project",
            spec={
                "pg_version": 16,
                "display_name": "Analytics Workloads",
                "history_retention_duration": "1209600s",
                "default_endpoint_settings": {
                    "autoscaling_limit_min_cu": 1,
                    "autoscaling_limit_max_cu": 8,
                    "suspend_timeout_duration": "300s",
                },
            })
        ```

        ### Referencing in Other Resources

        ```python
        import pulumi
        import pulumi_databricks as databricks

        this = databricks.PostgresProject("this",
            project_id="my-project",
            spec={
                "pg_version": 17,
                "display_name": "My Project",
            })
        dev = databricks.PostgresBranch("dev",
            branch_id="dev-branch",
            parent=this.name,
            spec={
                "no_expiry": True,
            })
        ```

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[Union['PostgresProjectInitialEndpointSpecArgs', 'PostgresProjectInitialEndpointSpecArgsDict']] initial_endpoint_spec: Configuration settings for the initial Read/Write endpoint created inside the default branch for a newly
               created project. If omitted, the initial endpoint created will have default settings, without high availability
               configured. This field does not apply to any endpoints created after project creation. Use
               spec.default_endpoint_settings to configure default settings for endpoints created after project creation
        :param pulumi.Input[_builtins.str] project_id: The ID to use for the Project. This becomes the final component of the project's resource name.
               The ID is required and must be 1-63 characters long, start with a lowercase letter, and contain only lowercase letters, numbers, and hyphens.
               For example, `my-app` becomes `projects/my-app`
        :param pulumi.Input[Union['PostgresProjectProviderConfigArgs', 'PostgresProjectProviderConfigArgsDict']] provider_config: Configure the provider for management through account provider.
        :param pulumi.Input[Union['PostgresProjectSpecArgs', 'PostgresProjectSpecArgsDict']] spec: The spec contains the project configuration, including display_name, pg_version (Postgres version), history_retention_duration, and default_endpoint_settings
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: PostgresProjectArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        [![Public Beta](https://img.shields.io/badge/Release_Stage-Public_Beta-orange)](https://docs.databricks.com/aws/en/release-notes/release-types)

        ## Example Usage

        ### Basic Project Creation

        ```python
        import pulumi
        import pulumi_databricks as databricks

        this = databricks.PostgresProject("this",
            project_id="my-project",
            spec={
                "pg_version": 17,
                "display_name": "My Application Project",
            })
        ```

        ### Project with Custom Settings

        ```python
        import pulumi
        import pulumi_databricks as databricks

        this = databricks.PostgresProject("this",
            project_id="analytics-project",
            spec={
                "pg_version": 16,
                "display_name": "Analytics Workloads",
                "history_retention_duration": "1209600s",
                "default_endpoint_settings": {
                    "autoscaling_limit_min_cu": 1,
                    "autoscaling_limit_max_cu": 8,
                    "suspend_timeout_duration": "300s",
                },
            })
        ```

        ### Referencing in Other Resources

        ```python
        import pulumi
        import pulumi_databricks as databricks

        this = databricks.PostgresProject("this",
            project_id="my-project",
            spec={
                "pg_version": 17,
                "display_name": "My Project",
            })
        dev = databricks.PostgresBranch("dev",
            branch_id="dev-branch",
            parent=this.name,
            spec={
                "no_expiry": True,
            })
        ```

        :param str resource_name: The name of the resource.
        :param PostgresProjectArgs 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(PostgresProjectArgs, 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,
                 initial_endpoint_spec: Optional[pulumi.Input[Union['PostgresProjectInitialEndpointSpecArgs', 'PostgresProjectInitialEndpointSpecArgsDict']]] = None,
                 project_id: Optional[pulumi.Input[_builtins.str]] = None,
                 provider_config: Optional[pulumi.Input[Union['PostgresProjectProviderConfigArgs', 'PostgresProjectProviderConfigArgsDict']]] = None,
                 spec: Optional[pulumi.Input[Union['PostgresProjectSpecArgs', 'PostgresProjectSpecArgsDict']]] = 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__ = PostgresProjectArgs.__new__(PostgresProjectArgs)

            __props__.__dict__["initial_endpoint_spec"] = initial_endpoint_spec
            if project_id is None and not opts.urn:
                raise TypeError("Missing required property 'project_id'")
            __props__.__dict__["project_id"] = project_id
            __props__.__dict__["provider_config"] = provider_config
            __props__.__dict__["spec"] = spec
            __props__.__dict__["create_time"] = None
            __props__.__dict__["name"] = None
            __props__.__dict__["status"] = None
            __props__.__dict__["uid"] = None
            __props__.__dict__["update_time"] = None
        super(PostgresProject, __self__).__init__(
            'databricks:index/postgresProject:PostgresProject',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            create_time: Optional[pulumi.Input[_builtins.str]] = None,
            initial_endpoint_spec: Optional[pulumi.Input[Union['PostgresProjectInitialEndpointSpecArgs', 'PostgresProjectInitialEndpointSpecArgsDict']]] = None,
            name: Optional[pulumi.Input[_builtins.str]] = None,
            project_id: Optional[pulumi.Input[_builtins.str]] = None,
            provider_config: Optional[pulumi.Input[Union['PostgresProjectProviderConfigArgs', 'PostgresProjectProviderConfigArgsDict']]] = None,
            spec: Optional[pulumi.Input[Union['PostgresProjectSpecArgs', 'PostgresProjectSpecArgsDict']]] = None,
            status: Optional[pulumi.Input[Union['PostgresProjectStatusArgs', 'PostgresProjectStatusArgsDict']]] = None,
            uid: Optional[pulumi.Input[_builtins.str]] = None,
            update_time: Optional[pulumi.Input[_builtins.str]] = None) -> 'PostgresProject':
        """
        Get an existing PostgresProject 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[_builtins.str] create_time: (string) - A timestamp indicating when the project was created
        :param pulumi.Input[Union['PostgresProjectInitialEndpointSpecArgs', 'PostgresProjectInitialEndpointSpecArgsDict']] initial_endpoint_spec: Configuration settings for the initial Read/Write endpoint created inside the default branch for a newly
               created project. If omitted, the initial endpoint created will have default settings, without high availability
               configured. This field does not apply to any endpoints created after project creation. Use
               spec.default_endpoint_settings to configure default settings for endpoints created after project creation
        :param pulumi.Input[_builtins.str] name: (string) - Output only. The full resource path of the project.
               Format: projects/{project_id}
        :param pulumi.Input[_builtins.str] project_id: The ID to use for the Project. This becomes the final component of the project's resource name.
               The ID is required and must be 1-63 characters long, start with a lowercase letter, and contain only lowercase letters, numbers, and hyphens.
               For example, `my-app` becomes `projects/my-app`
        :param pulumi.Input[Union['PostgresProjectProviderConfigArgs', 'PostgresProjectProviderConfigArgsDict']] provider_config: Configure the provider for management through account provider.
        :param pulumi.Input[Union['PostgresProjectSpecArgs', 'PostgresProjectSpecArgsDict']] spec: The spec contains the project configuration, including display_name, pg_version (Postgres version), history_retention_duration, and default_endpoint_settings
        :param pulumi.Input[Union['PostgresProjectStatusArgs', 'PostgresProjectStatusArgsDict']] status: (ProjectStatus) - The current status of a Project
        :param pulumi.Input[_builtins.str] uid: (string) - System-generated unique ID for the project
        :param pulumi.Input[_builtins.str] update_time: (string) - A timestamp indicating when the project was last updated
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _PostgresProjectState.__new__(_PostgresProjectState)

        __props__.__dict__["create_time"] = create_time
        __props__.__dict__["initial_endpoint_spec"] = initial_endpoint_spec
        __props__.__dict__["name"] = name
        __props__.__dict__["project_id"] = project_id
        __props__.__dict__["provider_config"] = provider_config
        __props__.__dict__["spec"] = spec
        __props__.__dict__["status"] = status
        __props__.__dict__["uid"] = uid
        __props__.__dict__["update_time"] = update_time
        return PostgresProject(resource_name, opts=opts, __props__=__props__)

    @_builtins.property
    @pulumi.getter(name="createTime")
    def create_time(self) -> pulumi.Output[_builtins.str]:
        """
        (string) - A timestamp indicating when the project was created
        """
        return pulumi.get(self, "create_time")

    @_builtins.property
    @pulumi.getter(name="initialEndpointSpec")
    def initial_endpoint_spec(self) -> pulumi.Output['outputs.PostgresProjectInitialEndpointSpec']:
        """
        Configuration settings for the initial Read/Write endpoint created inside the default branch for a newly
        created project. If omitted, the initial endpoint created will have default settings, without high availability
        configured. This field does not apply to any endpoints created after project creation. Use
        spec.default_endpoint_settings to configure default settings for endpoints created after project creation
        """
        return pulumi.get(self, "initial_endpoint_spec")

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Output[_builtins.str]:
        """
        (string) - Output only. The full resource path of the project.
        Format: projects/{project_id}
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter(name="projectId")
    def project_id(self) -> pulumi.Output[_builtins.str]:
        """
        The ID to use for the Project. This becomes the final component of the project's resource name.
        The ID is required and must be 1-63 characters long, start with a lowercase letter, and contain only lowercase letters, numbers, and hyphens.
        For example, `my-app` becomes `projects/my-app`
        """
        return pulumi.get(self, "project_id")

    @_builtins.property
    @pulumi.getter(name="providerConfig")
    def provider_config(self) -> pulumi.Output[Optional['outputs.PostgresProjectProviderConfig']]:
        """
        Configure the provider for management through account provider.
        """
        return pulumi.get(self, "provider_config")

    @_builtins.property
    @pulumi.getter
    def spec(self) -> pulumi.Output['outputs.PostgresProjectSpec']:
        """
        The spec contains the project configuration, including display_name, pg_version (Postgres version), history_retention_duration, and default_endpoint_settings
        """
        return pulumi.get(self, "spec")

    @_builtins.property
    @pulumi.getter
    def status(self) -> pulumi.Output['outputs.PostgresProjectStatus']:
        """
        (ProjectStatus) - The current status of a Project
        """
        return pulumi.get(self, "status")

    @_builtins.property
    @pulumi.getter
    def uid(self) -> pulumi.Output[_builtins.str]:
        """
        (string) - System-generated unique ID for the project
        """
        return pulumi.get(self, "uid")

    @_builtins.property
    @pulumi.getter(name="updateTime")
    def update_time(self) -> pulumi.Output[_builtins.str]:
        """
        (string) - A timestamp indicating when the project was last updated
        """
        return pulumi.get(self, "update_time")

