# 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

__all__ = [
    'DeploymentExpense',
    'DeploymentLastRequest',
    'DeploymentProject',
    'DeploymentResource',
    'DeploymentResourceExpense',
    'GetDeploymentExpenseResult',
    'GetDeploymentLastRequestResult',
    'GetDeploymentProjectResult',
    'GetDeploymentResourceResult',
    'GetDeploymentResourceExpenseResult',
]

@pulumi.output_type
class DeploymentExpense(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "additionalExpense":
            suggest = "additional_expense"
        elif key == "computeExpense":
            suggest = "compute_expense"
        elif key == "lastUpdateTime":
            suggest = "last_update_time"
        elif key == "networkExpense":
            suggest = "network_expense"
        elif key == "storageExpense":
            suggest = "storage_expense"
        elif key == "totalExpense":
            suggest = "total_expense"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentExpense. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentExpense.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentExpense.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 additional_expense: Optional[float] = None,
                 code: Optional[str] = None,
                 compute_expense: Optional[float] = None,
                 last_update_time: Optional[str] = None,
                 message: Optional[str] = None,
                 network_expense: Optional[float] = None,
                 storage_expense: Optional[float] = None,
                 total_expense: Optional[float] = None,
                 unit: Optional[str] = None):
        """
        :param float additional_expense: Additional expense incurred for the resource.
        :param str code: Expense sync message code if any.
        :param float compute_expense: Compute expense of the entity.
        :param str last_update_time: Last expense sync time.
        :param str message: Expense sync message if any.
        :param float network_expense: Network expense of the entity.
        :param float storage_expense: Storage expense of the entity.
        :param float total_expense: Total expense of the entity.
        :param str unit: Monetary unit.
        """
        if additional_expense is not None:
            pulumi.set(__self__, "additional_expense", additional_expense)
        if code is not None:
            pulumi.set(__self__, "code", code)
        if compute_expense is not None:
            pulumi.set(__self__, "compute_expense", compute_expense)
        if last_update_time is not None:
            pulumi.set(__self__, "last_update_time", last_update_time)
        if message is not None:
            pulumi.set(__self__, "message", message)
        if network_expense is not None:
            pulumi.set(__self__, "network_expense", network_expense)
        if storage_expense is not None:
            pulumi.set(__self__, "storage_expense", storage_expense)
        if total_expense is not None:
            pulumi.set(__self__, "total_expense", total_expense)
        if unit is not None:
            pulumi.set(__self__, "unit", unit)

    @property
    @pulumi.getter(name="additionalExpense")
    def additional_expense(self) -> Optional[float]:
        """
        Additional expense incurred for the resource.
        """
        return pulumi.get(self, "additional_expense")

    @property
    @pulumi.getter
    def code(self) -> Optional[str]:
        """
        Expense sync message code if any.
        """
        return pulumi.get(self, "code")

    @property
    @pulumi.getter(name="computeExpense")
    def compute_expense(self) -> Optional[float]:
        """
        Compute expense of the entity.
        """
        return pulumi.get(self, "compute_expense")

    @property
    @pulumi.getter(name="lastUpdateTime")
    def last_update_time(self) -> Optional[str]:
        """
        Last expense sync time.
        """
        return pulumi.get(self, "last_update_time")

    @property
    @pulumi.getter
    def message(self) -> Optional[str]:
        """
        Expense sync message if any.
        """
        return pulumi.get(self, "message")

    @property
    @pulumi.getter(name="networkExpense")
    def network_expense(self) -> Optional[float]:
        """
        Network expense of the entity.
        """
        return pulumi.get(self, "network_expense")

    @property
    @pulumi.getter(name="storageExpense")
    def storage_expense(self) -> Optional[float]:
        """
        Storage expense of the entity.
        """
        return pulumi.get(self, "storage_expense")

    @property
    @pulumi.getter(name="totalExpense")
    def total_expense(self) -> Optional[float]:
        """
        Total expense of the entity.
        """
        return pulumi.get(self, "total_expense")

    @property
    @pulumi.getter
    def unit(self) -> Optional[str]:
        """
        Monetary unit.
        """
        return pulumi.get(self, "unit")


@pulumi.output_type
class DeploymentLastRequest(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "actionId":
            suggest = "action_id"
        elif key == "approvedAt":
            suggest = "approved_at"
        elif key == "blueprintId":
            suggest = "blueprint_id"
        elif key == "catalogItemId":
            suggest = "catalog_item_id"
        elif key == "completedAt":
            suggest = "completed_at"
        elif key == "completedTasks":
            suggest = "completed_tasks"
        elif key == "createdAt":
            suggest = "created_at"
        elif key == "initializedAt":
            suggest = "initialized_at"
        elif key == "requestedBy":
            suggest = "requested_by"
        elif key == "resourceIds":
            suggest = "resource_ids"
        elif key == "totalTasks":
            suggest = "total_tasks"
        elif key == "updatedAt":
            suggest = "updated_at"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentLastRequest. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentLastRequest.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentLastRequest.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 action_id: Optional[str] = None,
                 approved_at: Optional[str] = None,
                 blueprint_id: Optional[str] = None,
                 cancelable: Optional[bool] = None,
                 catalog_item_id: Optional[str] = None,
                 completed_at: Optional[str] = None,
                 completed_tasks: Optional[int] = None,
                 created_at: Optional[str] = None,
                 details: Optional[str] = None,
                 dismissed: Optional[bool] = None,
                 id: Optional[str] = None,
                 initialized_at: Optional[str] = None,
                 inputs: Optional[Mapping[str, str]] = None,
                 name: Optional[str] = None,
                 outputs: Optional[Mapping[str, str]] = None,
                 requested_by: Optional[str] = None,
                 resource_ids: Optional[Sequence[str]] = None,
                 status: Optional[str] = None,
                 total_tasks: Optional[int] = None,
                 updated_at: Optional[str] = None):
        """
        :param str action_id: Identifier of the requested action.
        :param str approved_at: Time at which the request was approved.
        :param str blueprint_id: Identifier of the requested blueprint in the form ‘UUID:version’.
        :param bool cancelable: Indicates whether request can be canceled or not.
        :param str catalog_item_id: The id of the vRA catalog item to request the deployment. Conflicts with `blueprint_id` and `blueprint_content`.
        :param str completed_at: Time at which the request completed.
        :param int completed_tasks: The number of tasks completed while fulfilling this request.
        :param str created_at: Creation time (e.g. date format ‘2019-07-13T23:16:49.310Z’).
        :param str details: Longer user-friendly details of the request.
        :param bool dismissed: Indicates whether request is in dismissed state.
        :param str id: Unique identifier of the resource.
        :param str initialized_at: Time at which the request was initialized.
        :param Mapping[str, str] inputs: Inputs provided by the user. For inputs including those with default values, refer to `inputs_including_defaults`.
        :param str name: A human-friendly name used as an identifier in APIs that support this option.
        :param Mapping[str, str] outputs: Request outputs.
        :param str requested_by: The user that initiated the request.
        :param str status: Deployment status. Supported values are: `CREATE_SUCCESSFUL`, `CREATE_INPROGRESS`, `CREATE_FAILED`, `UPDATE_SUCCESSFUL`, `UPDATE_INPROGRESS`, `UPDATE_FAILED`, `DELETE_SUCCESSFUL`, `DELETE_INPROGRESS`, `DELETE_FAILED`, `ACTION_SUCCESSFUL`, `ACTION_INPROGRESS`, `ACTION_FAILED`.
        :param str updated_at: Last update time (e.g. date format ‘2019-07-13T23:16:49.310Z’).
        """
        if action_id is not None:
            pulumi.set(__self__, "action_id", action_id)
        if approved_at is not None:
            pulumi.set(__self__, "approved_at", approved_at)
        if blueprint_id is not None:
            pulumi.set(__self__, "blueprint_id", blueprint_id)
        if cancelable is not None:
            pulumi.set(__self__, "cancelable", cancelable)
        if catalog_item_id is not None:
            pulumi.set(__self__, "catalog_item_id", catalog_item_id)
        if completed_at is not None:
            pulumi.set(__self__, "completed_at", completed_at)
        if completed_tasks is not None:
            pulumi.set(__self__, "completed_tasks", completed_tasks)
        if created_at is not None:
            pulumi.set(__self__, "created_at", created_at)
        if details is not None:
            pulumi.set(__self__, "details", details)
        if dismissed is not None:
            pulumi.set(__self__, "dismissed", dismissed)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if initialized_at is not None:
            pulumi.set(__self__, "initialized_at", initialized_at)
        if inputs is not None:
            pulumi.set(__self__, "inputs", inputs)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if outputs is not None:
            pulumi.set(__self__, "outputs", outputs)
        if requested_by is not None:
            pulumi.set(__self__, "requested_by", requested_by)
        if resource_ids is not None:
            pulumi.set(__self__, "resource_ids", resource_ids)
        if status is not None:
            pulumi.set(__self__, "status", status)
        if total_tasks is not None:
            pulumi.set(__self__, "total_tasks", total_tasks)
        if updated_at is not None:
            pulumi.set(__self__, "updated_at", updated_at)

    @property
    @pulumi.getter(name="actionId")
    def action_id(self) -> Optional[str]:
        """
        Identifier of the requested action.
        """
        return pulumi.get(self, "action_id")

    @property
    @pulumi.getter(name="approvedAt")
    def approved_at(self) -> Optional[str]:
        """
        Time at which the request was approved.
        """
        return pulumi.get(self, "approved_at")

    @property
    @pulumi.getter(name="blueprintId")
    def blueprint_id(self) -> Optional[str]:
        """
        Identifier of the requested blueprint in the form ‘UUID:version’.
        """
        return pulumi.get(self, "blueprint_id")

    @property
    @pulumi.getter
    def cancelable(self) -> Optional[bool]:
        """
        Indicates whether request can be canceled or not.
        """
        return pulumi.get(self, "cancelable")

    @property
    @pulumi.getter(name="catalogItemId")
    def catalog_item_id(self) -> Optional[str]:
        """
        The id of the vRA catalog item to request the deployment. Conflicts with `blueprint_id` and `blueprint_content`.
        """
        return pulumi.get(self, "catalog_item_id")

    @property
    @pulumi.getter(name="completedAt")
    def completed_at(self) -> Optional[str]:
        """
        Time at which the request completed.
        """
        return pulumi.get(self, "completed_at")

    @property
    @pulumi.getter(name="completedTasks")
    def completed_tasks(self) -> Optional[int]:
        """
        The number of tasks completed while fulfilling this request.
        """
        return pulumi.get(self, "completed_tasks")

    @property
    @pulumi.getter(name="createdAt")
    def created_at(self) -> Optional[str]:
        """
        Creation time (e.g. date format ‘2019-07-13T23:16:49.310Z’).
        """
        return pulumi.get(self, "created_at")

    @property
    @pulumi.getter
    def details(self) -> Optional[str]:
        """
        Longer user-friendly details of the request.
        """
        return pulumi.get(self, "details")

    @property
    @pulumi.getter
    def dismissed(self) -> Optional[bool]:
        """
        Indicates whether request is in dismissed state.
        """
        return pulumi.get(self, "dismissed")

    @property
    @pulumi.getter
    def id(self) -> Optional[str]:
        """
        Unique identifier of the resource.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="initializedAt")
    def initialized_at(self) -> Optional[str]:
        """
        Time at which the request was initialized.
        """
        return pulumi.get(self, "initialized_at")

    @property
    @pulumi.getter
    def inputs(self) -> Optional[Mapping[str, str]]:
        """
        Inputs provided by the user. For inputs including those with default values, refer to `inputs_including_defaults`.
        """
        return pulumi.get(self, "inputs")

    @property
    @pulumi.getter
    def name(self) -> Optional[str]:
        """
        A human-friendly name used as an identifier in APIs that support this option.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def outputs(self) -> Optional[Mapping[str, str]]:
        """
        Request outputs.
        """
        return pulumi.get(self, "outputs")

    @property
    @pulumi.getter(name="requestedBy")
    def requested_by(self) -> Optional[str]:
        """
        The user that initiated the request.
        """
        return pulumi.get(self, "requested_by")

    @property
    @pulumi.getter(name="resourceIds")
    def resource_ids(self) -> Optional[Sequence[str]]:
        return pulumi.get(self, "resource_ids")

    @property
    @pulumi.getter
    def status(self) -> Optional[str]:
        """
        Deployment status. Supported values are: `CREATE_SUCCESSFUL`, `CREATE_INPROGRESS`, `CREATE_FAILED`, `UPDATE_SUCCESSFUL`, `UPDATE_INPROGRESS`, `UPDATE_FAILED`, `DELETE_SUCCESSFUL`, `DELETE_INPROGRESS`, `DELETE_FAILED`, `ACTION_SUCCESSFUL`, `ACTION_INPROGRESS`, `ACTION_FAILED`.
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter(name="totalTasks")
    def total_tasks(self) -> Optional[int]:
        return pulumi.get(self, "total_tasks")

    @property
    @pulumi.getter(name="updatedAt")
    def updated_at(self) -> Optional[str]:
        """
        Last update time (e.g. date format ‘2019-07-13T23:16:49.310Z’).
        """
        return pulumi.get(self, "updated_at")


@pulumi.output_type
class DeploymentProject(dict):
    def __init__(__self__, *,
                 description: Optional[str] = None,
                 id: Optional[str] = None,
                 name: Optional[str] = None,
                 version: Optional[str] = None):
        """
        :param str description: A human-friendly description.
        :param str id: Unique identifier of the resource.
        :param str name: A human-friendly name used as an identifier in APIs that support this option.
        :param str version: Version of the entity, if applicable.
        """
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @property
    @pulumi.getter
    def description(self) -> Optional[str]:
        """
        A human-friendly description.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def id(self) -> Optional[str]:
        """
        Unique identifier of the resource.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def name(self) -> Optional[str]:
        """
        A human-friendly name used as an identifier in APIs that support this option.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def version(self) -> Optional[str]:
        """
        Version of the entity, if applicable.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class DeploymentResource(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "createdAt":
            suggest = "created_at"
        elif key == "dependsOns":
            suggest = "depends_ons"
        elif key == "propertiesJson":
            suggest = "properties_json"
        elif key == "syncStatus":
            suggest = "sync_status"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentResource. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentResource.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentResource.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 id: str,
                 name: str,
                 created_at: Optional[str] = None,
                 depends_ons: Optional[Sequence[str]] = None,
                 description: Optional[str] = None,
                 expenses: Optional[Sequence['outputs.DeploymentResourceExpense']] = None,
                 properties_json: Optional[str] = None,
                 state: Optional[str] = None,
                 sync_status: Optional[str] = None,
                 type: Optional[str] = None):
        """
        :param str id: Unique identifier of the resource.
        :param str name: A human-friendly name used as an identifier in APIs that support this option.
        :param str created_at: Creation time (e.g. date format ‘2019-07-13T23:16:49.310Z’).
        :param Sequence[str] depends_ons: A list of other resources this resource depends on.
        :param str description: A human-friendly description.
        :param Sequence['DeploymentResourceExpenseArgs'] expenses: Expense incurred for the deployment.
        :param str properties_json: List of properties in the encoded JSON string format.
        :param str state: The current state of the resource. Supported values are `PARTIAL`, `TAINTED`, `OK.`
        :param str sync_status: The current sync status. Supported values are `SUCCESS`, `MISSING`, `STALE`.
        :param str type: Type of the resource.
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)
        if created_at is not None:
            pulumi.set(__self__, "created_at", created_at)
        if depends_ons is not None:
            pulumi.set(__self__, "depends_ons", depends_ons)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if expenses is not None:
            pulumi.set(__self__, "expenses", expenses)
        if properties_json is not None:
            pulumi.set(__self__, "properties_json", properties_json)
        if state is not None:
            pulumi.set(__self__, "state", state)
        if sync_status is not None:
            pulumi.set(__self__, "sync_status", sync_status)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        Unique identifier of the resource.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A human-friendly name used as an identifier in APIs that support this option.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="createdAt")
    def created_at(self) -> Optional[str]:
        """
        Creation time (e.g. date format ‘2019-07-13T23:16:49.310Z’).
        """
        return pulumi.get(self, "created_at")

    @property
    @pulumi.getter(name="dependsOns")
    def depends_ons(self) -> Optional[Sequence[str]]:
        """
        A list of other resources this resource depends on.
        """
        return pulumi.get(self, "depends_ons")

    @property
    @pulumi.getter
    def description(self) -> Optional[str]:
        """
        A human-friendly description.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def expenses(self) -> Optional[Sequence['outputs.DeploymentResourceExpense']]:
        """
        Expense incurred for the deployment.
        """
        return pulumi.get(self, "expenses")

    @property
    @pulumi.getter(name="propertiesJson")
    def properties_json(self) -> Optional[str]:
        """
        List of properties in the encoded JSON string format.
        """
        return pulumi.get(self, "properties_json")

    @property
    @pulumi.getter
    def state(self) -> Optional[str]:
        """
        The current state of the resource. Supported values are `PARTIAL`, `TAINTED`, `OK.`
        """
        return pulumi.get(self, "state")

    @property
    @pulumi.getter(name="syncStatus")
    def sync_status(self) -> Optional[str]:
        """
        The current sync status. Supported values are `SUCCESS`, `MISSING`, `STALE`.
        """
        return pulumi.get(self, "sync_status")

    @property
    @pulumi.getter
    def type(self) -> Optional[str]:
        """
        Type of the resource.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class DeploymentResourceExpense(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "additionalExpense":
            suggest = "additional_expense"
        elif key == "computeExpense":
            suggest = "compute_expense"
        elif key == "lastUpdateTime":
            suggest = "last_update_time"
        elif key == "networkExpense":
            suggest = "network_expense"
        elif key == "storageExpense":
            suggest = "storage_expense"
        elif key == "totalExpense":
            suggest = "total_expense"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in DeploymentResourceExpense. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        DeploymentResourceExpense.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        DeploymentResourceExpense.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 additional_expense: Optional[float] = None,
                 code: Optional[str] = None,
                 compute_expense: Optional[float] = None,
                 last_update_time: Optional[str] = None,
                 message: Optional[str] = None,
                 network_expense: Optional[float] = None,
                 storage_expense: Optional[float] = None,
                 total_expense: Optional[float] = None,
                 unit: Optional[str] = None):
        """
        :param float additional_expense: Additional expense incurred for the resource.
        :param str code: Expense sync message code if any.
        :param float compute_expense: Compute expense of the entity.
        :param str last_update_time: Last expense sync time.
        :param str message: Expense sync message if any.
        :param float network_expense: Network expense of the entity.
        :param float storage_expense: Storage expense of the entity.
        :param float total_expense: Total expense of the entity.
        :param str unit: Monetary unit.
        """
        if additional_expense is not None:
            pulumi.set(__self__, "additional_expense", additional_expense)
        if code is not None:
            pulumi.set(__self__, "code", code)
        if compute_expense is not None:
            pulumi.set(__self__, "compute_expense", compute_expense)
        if last_update_time is not None:
            pulumi.set(__self__, "last_update_time", last_update_time)
        if message is not None:
            pulumi.set(__self__, "message", message)
        if network_expense is not None:
            pulumi.set(__self__, "network_expense", network_expense)
        if storage_expense is not None:
            pulumi.set(__self__, "storage_expense", storage_expense)
        if total_expense is not None:
            pulumi.set(__self__, "total_expense", total_expense)
        if unit is not None:
            pulumi.set(__self__, "unit", unit)

    @property
    @pulumi.getter(name="additionalExpense")
    def additional_expense(self) -> Optional[float]:
        """
        Additional expense incurred for the resource.
        """
        return pulumi.get(self, "additional_expense")

    @property
    @pulumi.getter
    def code(self) -> Optional[str]:
        """
        Expense sync message code if any.
        """
        return pulumi.get(self, "code")

    @property
    @pulumi.getter(name="computeExpense")
    def compute_expense(self) -> Optional[float]:
        """
        Compute expense of the entity.
        """
        return pulumi.get(self, "compute_expense")

    @property
    @pulumi.getter(name="lastUpdateTime")
    def last_update_time(self) -> Optional[str]:
        """
        Last expense sync time.
        """
        return pulumi.get(self, "last_update_time")

    @property
    @pulumi.getter
    def message(self) -> Optional[str]:
        """
        Expense sync message if any.
        """
        return pulumi.get(self, "message")

    @property
    @pulumi.getter(name="networkExpense")
    def network_expense(self) -> Optional[float]:
        """
        Network expense of the entity.
        """
        return pulumi.get(self, "network_expense")

    @property
    @pulumi.getter(name="storageExpense")
    def storage_expense(self) -> Optional[float]:
        """
        Storage expense of the entity.
        """
        return pulumi.get(self, "storage_expense")

    @property
    @pulumi.getter(name="totalExpense")
    def total_expense(self) -> Optional[float]:
        """
        Total expense of the entity.
        """
        return pulumi.get(self, "total_expense")

    @property
    @pulumi.getter
    def unit(self) -> Optional[str]:
        """
        Monetary unit.
        """
        return pulumi.get(self, "unit")


@pulumi.output_type
class GetDeploymentExpenseResult(dict):
    def __init__(__self__, *,
                 additional_expense: float,
                 code: str,
                 compute_expense: float,
                 last_update_time: str,
                 message: str,
                 network_expense: float,
                 storage_expense: float,
                 total_expense: float,
                 unit: str):
        """
        :param float additional_expense: Additional expense incurred for the resource.
        :param str code: Expense sync message code if any.
        :param float compute_expense: Compute expense of the entity.
        :param str last_update_time: Last expense sync time.
        :param str message: Expense sync message if any.
        :param float network_expense: Network expense of the entity.
        :param float storage_expense: Storage expense of the entity.
        :param float total_expense: Total expense of the entity.
        :param str unit: Monetary unit.
        """
        pulumi.set(__self__, "additional_expense", additional_expense)
        pulumi.set(__self__, "code", code)
        pulumi.set(__self__, "compute_expense", compute_expense)
        pulumi.set(__self__, "last_update_time", last_update_time)
        pulumi.set(__self__, "message", message)
        pulumi.set(__self__, "network_expense", network_expense)
        pulumi.set(__self__, "storage_expense", storage_expense)
        pulumi.set(__self__, "total_expense", total_expense)
        pulumi.set(__self__, "unit", unit)

    @property
    @pulumi.getter(name="additionalExpense")
    def additional_expense(self) -> float:
        """
        Additional expense incurred for the resource.
        """
        return pulumi.get(self, "additional_expense")

    @property
    @pulumi.getter
    def code(self) -> str:
        """
        Expense sync message code if any.
        """
        return pulumi.get(self, "code")

    @property
    @pulumi.getter(name="computeExpense")
    def compute_expense(self) -> float:
        """
        Compute expense of the entity.
        """
        return pulumi.get(self, "compute_expense")

    @property
    @pulumi.getter(name="lastUpdateTime")
    def last_update_time(self) -> str:
        """
        Last expense sync time.
        """
        return pulumi.get(self, "last_update_time")

    @property
    @pulumi.getter
    def message(self) -> str:
        """
        Expense sync message if any.
        """
        return pulumi.get(self, "message")

    @property
    @pulumi.getter(name="networkExpense")
    def network_expense(self) -> float:
        """
        Network expense of the entity.
        """
        return pulumi.get(self, "network_expense")

    @property
    @pulumi.getter(name="storageExpense")
    def storage_expense(self) -> float:
        """
        Storage expense of the entity.
        """
        return pulumi.get(self, "storage_expense")

    @property
    @pulumi.getter(name="totalExpense")
    def total_expense(self) -> float:
        """
        Total expense of the entity.
        """
        return pulumi.get(self, "total_expense")

    @property
    @pulumi.getter
    def unit(self) -> str:
        """
        Monetary unit.
        """
        return pulumi.get(self, "unit")


@pulumi.output_type
class GetDeploymentLastRequestResult(dict):
    def __init__(__self__, *,
                 action_id: str,
                 approved_at: str,
                 blueprint_id: str,
                 cancelable: bool,
                 catalog_item_id: str,
                 completed_at: str,
                 completed_tasks: int,
                 created_at: str,
                 details: str,
                 dismissed: bool,
                 id: str,
                 initialized_at: str,
                 inputs: Mapping[str, str],
                 name: str,
                 outputs: Mapping[str, str],
                 requested_by: str,
                 resource_ids: Sequence[str],
                 status: str,
                 total_tasks: int,
                 updated_at: str):
        """
        :param str action_id: Identifier of the requested action.
        :param str approved_at: Time at which the request was approved.
        :param str blueprint_id: Identifier of the requested blueprint in the form ‘UUID:version’.
        :param bool cancelable: Indicates whether request can be canceled or not.
        :param str catalog_item_id: Identifier of the requested catalog item in the form ‘UUID:version’.
        :param str completed_at: Time at which the request completed.
        :param int completed_tasks: The number of tasks completed while fulfilling this request.
        :param str created_at: Creation time (e.g. date format ‘2019-07-13T23:16:49.310Z’).
        :param str details: Longer user-friendly details of the request.
        :param bool dismissed: Indicates whether request is in dismissed state.
        :param str id: The id of the deployment. One of `id` or `name` must be provided.
        :param str initialized_at: Time at which the request was initialized.
        :param Mapping[str, str] inputs: List of request inputs.
        :param str name: Name of the deployment. One of `id` or `name` must be provided.
        :param Mapping[str, str] outputs: Request outputs.
        :param str requested_by: The user that initiated the request.
        :param str status: Deployment status. Supported values are: `CREATE_SUCCESSFUL`, `CREATE_INPROGRESS`, `CREATE_FAILED`, `UPDATE_SUCCESSFUL`, `UPDATE_INPROGRESS`, `UPDATE_FAILED`, `DELETE_SUCCESSFUL`, `DELETE_INPROGRESS`, `DELETE_FAILED`, `ACTION_SUCCESSFUL`, `ACTION_INPROGRESS`, `ACTION_FAILED`.
        :param str updated_at: Last update time (e.g. date format ‘2019-07-13T23:16:49.310Z’).
        """
        pulumi.set(__self__, "action_id", action_id)
        pulumi.set(__self__, "approved_at", approved_at)
        pulumi.set(__self__, "blueprint_id", blueprint_id)
        pulumi.set(__self__, "cancelable", cancelable)
        pulumi.set(__self__, "catalog_item_id", catalog_item_id)
        pulumi.set(__self__, "completed_at", completed_at)
        pulumi.set(__self__, "completed_tasks", completed_tasks)
        pulumi.set(__self__, "created_at", created_at)
        pulumi.set(__self__, "details", details)
        pulumi.set(__self__, "dismissed", dismissed)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "initialized_at", initialized_at)
        pulumi.set(__self__, "inputs", inputs)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "outputs", outputs)
        pulumi.set(__self__, "requested_by", requested_by)
        pulumi.set(__self__, "resource_ids", resource_ids)
        pulumi.set(__self__, "status", status)
        pulumi.set(__self__, "total_tasks", total_tasks)
        pulumi.set(__self__, "updated_at", updated_at)

    @property
    @pulumi.getter(name="actionId")
    def action_id(self) -> str:
        """
        Identifier of the requested action.
        """
        return pulumi.get(self, "action_id")

    @property
    @pulumi.getter(name="approvedAt")
    def approved_at(self) -> str:
        """
        Time at which the request was approved.
        """
        return pulumi.get(self, "approved_at")

    @property
    @pulumi.getter(name="blueprintId")
    def blueprint_id(self) -> str:
        """
        Identifier of the requested blueprint in the form ‘UUID:version’.
        """
        return pulumi.get(self, "blueprint_id")

    @property
    @pulumi.getter
    def cancelable(self) -> bool:
        """
        Indicates whether request can be canceled or not.
        """
        return pulumi.get(self, "cancelable")

    @property
    @pulumi.getter(name="catalogItemId")
    def catalog_item_id(self) -> str:
        """
        Identifier of the requested catalog item in the form ‘UUID:version’.
        """
        return pulumi.get(self, "catalog_item_id")

    @property
    @pulumi.getter(name="completedAt")
    def completed_at(self) -> str:
        """
        Time at which the request completed.
        """
        return pulumi.get(self, "completed_at")

    @property
    @pulumi.getter(name="completedTasks")
    def completed_tasks(self) -> int:
        """
        The number of tasks completed while fulfilling this request.
        """
        return pulumi.get(self, "completed_tasks")

    @property
    @pulumi.getter(name="createdAt")
    def created_at(self) -> str:
        """
        Creation time (e.g. date format ‘2019-07-13T23:16:49.310Z’).
        """
        return pulumi.get(self, "created_at")

    @property
    @pulumi.getter
    def details(self) -> str:
        """
        Longer user-friendly details of the request.
        """
        return pulumi.get(self, "details")

    @property
    @pulumi.getter
    def dismissed(self) -> bool:
        """
        Indicates whether request is in dismissed state.
        """
        return pulumi.get(self, "dismissed")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The id of the deployment. One of `id` or `name` must be provided.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="initializedAt")
    def initialized_at(self) -> str:
        """
        Time at which the request was initialized.
        """
        return pulumi.get(self, "initialized_at")

    @property
    @pulumi.getter
    def inputs(self) -> Mapping[str, str]:
        """
        List of request inputs.
        """
        return pulumi.get(self, "inputs")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        Name of the deployment. One of `id` or `name` must be provided.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def outputs(self) -> Mapping[str, str]:
        """
        Request outputs.
        """
        return pulumi.get(self, "outputs")

    @property
    @pulumi.getter(name="requestedBy")
    def requested_by(self) -> str:
        """
        The user that initiated the request.
        """
        return pulumi.get(self, "requested_by")

    @property
    @pulumi.getter(name="resourceIds")
    def resource_ids(self) -> Sequence[str]:
        return pulumi.get(self, "resource_ids")

    @property
    @pulumi.getter
    def status(self) -> str:
        """
        Deployment status. Supported values are: `CREATE_SUCCESSFUL`, `CREATE_INPROGRESS`, `CREATE_FAILED`, `UPDATE_SUCCESSFUL`, `UPDATE_INPROGRESS`, `UPDATE_FAILED`, `DELETE_SUCCESSFUL`, `DELETE_INPROGRESS`, `DELETE_FAILED`, `ACTION_SUCCESSFUL`, `ACTION_INPROGRESS`, `ACTION_FAILED`.
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter(name="totalTasks")
    def total_tasks(self) -> int:
        return pulumi.get(self, "total_tasks")

    @property
    @pulumi.getter(name="updatedAt")
    def updated_at(self) -> str:
        """
        Last update time (e.g. date format ‘2019-07-13T23:16:49.310Z’).
        """
        return pulumi.get(self, "updated_at")


@pulumi.output_type
class GetDeploymentProjectResult(dict):
    def __init__(__self__, *,
                 description: Optional[str] = None,
                 id: Optional[str] = None,
                 name: Optional[str] = None,
                 version: Optional[str] = None):
        """
        :param str description: A description of the resource.
        :param str id: The id of the deployment. One of `id` or `name` must be provided.
        :param str name: Name of the deployment. One of `id` or `name` must be provided.
        :param str version: Version of the entity, if applicable.
        """
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if version is not None:
            pulumi.set(__self__, "version", version)

    @property
    @pulumi.getter
    def description(self) -> Optional[str]:
        """
        A description of the resource.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def id(self) -> Optional[str]:
        """
        The id of the deployment. One of `id` or `name` must be provided.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def name(self) -> Optional[str]:
        """
        Name of the deployment. One of `id` or `name` must be provided.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def version(self) -> Optional[str]:
        """
        Version of the entity, if applicable.
        """
        return pulumi.get(self, "version")


@pulumi.output_type
class GetDeploymentResourceResult(dict):
    def __init__(__self__, *,
                 expenses: Sequence['outputs.GetDeploymentResourceExpenseResult'],
                 id: str,
                 name: str,
                 created_at: Optional[str] = None,
                 depends_ons: Optional[Sequence[str]] = None,
                 description: Optional[str] = None,
                 properties_json: Optional[str] = None,
                 state: Optional[str] = None,
                 sync_status: Optional[str] = None,
                 type: Optional[str] = None):
        """
        :param Sequence['GetDeploymentResourceExpenseArgs'] expenses: Expense incurred for this resource.
        :param str id: The id of the deployment. One of `id` or `name` must be provided.
        :param str name: Name of the deployment. One of `id` or `name` must be provided.
        :param str created_at: Creation time (e.g. date format ‘2019-07-13T23:16:49.310Z’).
        :param Sequence[str] depends_ons: A list of other resources this resource depends on.
        :param str description: A description of the resource.
        :param str properties_json: List of properties in the encoded JSON string format.
        :param str state: The current state of the resource. Supported values are `PARTIAL`, `TAINTED`, `OK.`
        :param str sync_status: The current sync status. Supported values are `SUCCESS`, `MISSING`, `STALE`.
        :param str type: Type of the resource.
        """
        pulumi.set(__self__, "expenses", expenses)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)
        if created_at is not None:
            pulumi.set(__self__, "created_at", created_at)
        if depends_ons is not None:
            pulumi.set(__self__, "depends_ons", depends_ons)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if properties_json is not None:
            pulumi.set(__self__, "properties_json", properties_json)
        if state is not None:
            pulumi.set(__self__, "state", state)
        if sync_status is not None:
            pulumi.set(__self__, "sync_status", sync_status)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def expenses(self) -> Sequence['outputs.GetDeploymentResourceExpenseResult']:
        """
        Expense incurred for this resource.
        """
        return pulumi.get(self, "expenses")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The id of the deployment. One of `id` or `name` must be provided.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        Name of the deployment. One of `id` or `name` must be provided.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="createdAt")
    def created_at(self) -> Optional[str]:
        """
        Creation time (e.g. date format ‘2019-07-13T23:16:49.310Z’).
        """
        return pulumi.get(self, "created_at")

    @property
    @pulumi.getter(name="dependsOns")
    def depends_ons(self) -> Optional[Sequence[str]]:
        """
        A list of other resources this resource depends on.
        """
        return pulumi.get(self, "depends_ons")

    @property
    @pulumi.getter
    def description(self) -> Optional[str]:
        """
        A description of the resource.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="propertiesJson")
    def properties_json(self) -> Optional[str]:
        """
        List of properties in the encoded JSON string format.
        """
        return pulumi.get(self, "properties_json")

    @property
    @pulumi.getter
    def state(self) -> Optional[str]:
        """
        The current state of the resource. Supported values are `PARTIAL`, `TAINTED`, `OK.`
        """
        return pulumi.get(self, "state")

    @property
    @pulumi.getter(name="syncStatus")
    def sync_status(self) -> Optional[str]:
        """
        The current sync status. Supported values are `SUCCESS`, `MISSING`, `STALE`.
        """
        return pulumi.get(self, "sync_status")

    @property
    @pulumi.getter
    def type(self) -> Optional[str]:
        """
        Type of the resource.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetDeploymentResourceExpenseResult(dict):
    def __init__(__self__, *,
                 additional_expense: float,
                 code: str,
                 compute_expense: float,
                 last_update_time: str,
                 message: str,
                 network_expense: float,
                 storage_expense: float,
                 total_expense: float,
                 unit: str):
        """
        :param float additional_expense: Additional expense incurred for the resource.
        :param str code: Expense sync message code if any.
        :param float compute_expense: Compute expense of the entity.
        :param str last_update_time: Last expense sync time.
        :param str message: Expense sync message if any.
        :param float network_expense: Network expense of the entity.
        :param float storage_expense: Storage expense of the entity.
        :param float total_expense: Total expense of the entity.
        :param str unit: Monetary unit.
        """
        pulumi.set(__self__, "additional_expense", additional_expense)
        pulumi.set(__self__, "code", code)
        pulumi.set(__self__, "compute_expense", compute_expense)
        pulumi.set(__self__, "last_update_time", last_update_time)
        pulumi.set(__self__, "message", message)
        pulumi.set(__self__, "network_expense", network_expense)
        pulumi.set(__self__, "storage_expense", storage_expense)
        pulumi.set(__self__, "total_expense", total_expense)
        pulumi.set(__self__, "unit", unit)

    @property
    @pulumi.getter(name="additionalExpense")
    def additional_expense(self) -> float:
        """
        Additional expense incurred for the resource.
        """
        return pulumi.get(self, "additional_expense")

    @property
    @pulumi.getter
    def code(self) -> str:
        """
        Expense sync message code if any.
        """
        return pulumi.get(self, "code")

    @property
    @pulumi.getter(name="computeExpense")
    def compute_expense(self) -> float:
        """
        Compute expense of the entity.
        """
        return pulumi.get(self, "compute_expense")

    @property
    @pulumi.getter(name="lastUpdateTime")
    def last_update_time(self) -> str:
        """
        Last expense sync time.
        """
        return pulumi.get(self, "last_update_time")

    @property
    @pulumi.getter
    def message(self) -> str:
        """
        Expense sync message if any.
        """
        return pulumi.get(self, "message")

    @property
    @pulumi.getter(name="networkExpense")
    def network_expense(self) -> float:
        """
        Network expense of the entity.
        """
        return pulumi.get(self, "network_expense")

    @property
    @pulumi.getter(name="storageExpense")
    def storage_expense(self) -> float:
        """
        Storage expense of the entity.
        """
        return pulumi.get(self, "storage_expense")

    @property
    @pulumi.getter(name="totalExpense")
    def total_expense(self) -> float:
        """
        Total expense of the entity.
        """
        return pulumi.get(self, "total_expense")

    @property
    @pulumi.getter
    def unit(self) -> str:
        """
        Monetary unit.
        """
        return pulumi.get(self, "unit")


