# 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

__all__ = [
    'ItemEntitlementDefinition',
    'SourceEntitlementDefinition',
    'GetItemEntitlementDefinitionResult',
    'GetItemProjectResult',
    'GetItemTypeResult',
    'GetItemVersionResult',
    'GetSourceEntitlementDefinitionResult',
]

@pulumi.output_type
class ItemEntitlementDefinition(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "iconId":
            suggest = "icon_id"
        elif key == "numberOfItems":
            suggest = "number_of_items"
        elif key == "sourceName":
            suggest = "source_name"
        elif key == "sourceType":
            suggest = "source_type"

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

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

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

    def __init__(__self__, *,
                 description: Optional[str] = None,
                 icon_id: Optional[str] = None,
                 id: Optional[str] = None,
                 name: Optional[str] = None,
                 number_of_items: Optional[int] = None,
                 source_name: Optional[str] = None,
                 source_type: Optional[str] = None,
                 type: Optional[str] = None):
        """
        :param str description: Description of the catalog item.
        :param str icon_id: Icon id of associated catalog item.
        :param str id: Id of the catalog item.
        :param str name: Name of the catalog item.
        :param int number_of_items: Number of items in the associated catalog source.
        :param str source_name: Catalog source name.
        :param str source_type: Catalog source type.
        :param str type: Content definition type.
        """
        if description is not None:
            pulumi.set(__self__, "description", description)
        if icon_id is not None:
            pulumi.set(__self__, "icon_id", icon_id)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if number_of_items is not None:
            pulumi.set(__self__, "number_of_items", number_of_items)
        if source_name is not None:
            pulumi.set(__self__, "source_name", source_name)
        if source_type is not None:
            pulumi.set(__self__, "source_type", source_type)
        if type is not None:
            pulumi.set(__self__, "type", type)

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

    @property
    @pulumi.getter(name="iconId")
    def icon_id(self) -> Optional[str]:
        """
        Icon id of associated catalog item.
        """
        return pulumi.get(self, "icon_id")

    @property
    @pulumi.getter
    def id(self) -> Optional[str]:
        """
        Id of the catalog item.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def name(self) -> Optional[str]:
        """
        Name of the catalog item.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="numberOfItems")
    def number_of_items(self) -> Optional[int]:
        """
        Number of items in the associated catalog source.
        """
        return pulumi.get(self, "number_of_items")

    @property
    @pulumi.getter(name="sourceName")
    def source_name(self) -> Optional[str]:
        """
        Catalog source name.
        """
        return pulumi.get(self, "source_name")

    @property
    @pulumi.getter(name="sourceType")
    def source_type(self) -> Optional[str]:
        """
        Catalog source type.
        """
        return pulumi.get(self, "source_type")

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


@pulumi.output_type
class SourceEntitlementDefinition(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "iconId":
            suggest = "icon_id"
        elif key == "numberOfItems":
            suggest = "number_of_items"
        elif key == "sourceName":
            suggest = "source_name"
        elif key == "sourceType":
            suggest = "source_type"

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

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

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

    def __init__(__self__, *,
                 description: Optional[str] = None,
                 icon_id: Optional[str] = None,
                 id: Optional[str] = None,
                 name: Optional[str] = None,
                 number_of_items: Optional[int] = None,
                 source_name: Optional[str] = None,
                 source_type: Optional[str] = None,
                 type: Optional[str] = None):
        if description is not None:
            pulumi.set(__self__, "description", description)
        if icon_id is not None:
            pulumi.set(__self__, "icon_id", icon_id)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if number_of_items is not None:
            pulumi.set(__self__, "number_of_items", number_of_items)
        if source_name is not None:
            pulumi.set(__self__, "source_name", source_name)
        if source_type is not None:
            pulumi.set(__self__, "source_type", source_type)
        if type is not None:
            pulumi.set(__self__, "type", type)

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

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

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

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

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

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

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

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


@pulumi.output_type
class GetItemEntitlementDefinitionResult(dict):
    def __init__(__self__, *,
                 description: str,
                 icon_id: str,
                 id: str,
                 name: str,
                 number_of_items: int,
                 source_name: str,
                 source_type: str,
                 type: str):
        """
        :param str description: Description of the catalog item.
        :param str icon_id: Icon id of associated catalog item.
        :param str id: The id of entitlement. One of `catalog_item_id` or `id` must be provided.
        :param str name: Name of the catalog item.
        :param int number_of_items: Number of items in the associated catalog source.
        :param str source_name: Catalog source name.
        :param str source_type: Catalog source type.
        :param str type: Content definition type.
        """
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "icon_id", icon_id)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "number_of_items", number_of_items)
        pulumi.set(__self__, "source_name", source_name)
        pulumi.set(__self__, "source_type", source_type)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        Description of the catalog item.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="iconId")
    def icon_id(self) -> str:
        """
        Icon id of associated catalog item.
        """
        return pulumi.get(self, "icon_id")

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

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        Name of the catalog item.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="numberOfItems")
    def number_of_items(self) -> int:
        """
        Number of items in the associated catalog source.
        """
        return pulumi.get(self, "number_of_items")

    @property
    @pulumi.getter(name="sourceName")
    def source_name(self) -> str:
        """
        Catalog source name.
        """
        return pulumi.get(self, "source_name")

    @property
    @pulumi.getter(name="sourceType")
    def source_type(self) -> str:
        """
        Catalog source type.
        """
        return pulumi.get(self, "source_type")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Content definition type.
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetItemProjectResult(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: The id of catalog item. One of `id`, or `name` must be provided.
        :param str name: Name of the catalog item. 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 human-friendly description.
        """
        return pulumi.get(self, "description")

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

    @property
    @pulumi.getter
    def name(self) -> Optional[str]:
        """
        Name of the catalog item. 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 GetItemTypeResult(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: The id of catalog item. One of `id`, or `name` must be provided.
        :param str name: Name of the catalog item. 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 human-friendly description.
        """
        return pulumi.get(self, "description")

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

    @property
    @pulumi.getter
    def name(self) -> Optional[str]:
        """
        Name of the catalog item. 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 GetItemVersionResult(dict):
    def __init__(__self__, *,
                 created_at: Optional[str] = None,
                 description: Optional[str] = None,
                 id: Optional[str] = None):
        """
        :param str created_at: Date-time when catalog item version was created at.
        :param str description: A human-friendly description.
        :param str id: The id of catalog item. One of `id`, or `name` must be provided.
        """
        if created_at is not None:
            pulumi.set(__self__, "created_at", created_at)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if id is not None:
            pulumi.set(__self__, "id", id)

    @property
    @pulumi.getter(name="createdAt")
    def created_at(self) -> Optional[str]:
        """
        Date-time when catalog item version was created at.
        """
        return pulumi.get(self, "created_at")

    @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]:
        """
        The id of catalog item. One of `id`, or `name` must be provided.
        """
        return pulumi.get(self, "id")


@pulumi.output_type
class GetSourceEntitlementDefinitionResult(dict):
    def __init__(__self__, *,
                 description: str,
                 icon_id: str,
                 id: str,
                 name: str,
                 number_of_items: int,
                 source_name: str,
                 source_type: str,
                 type: str):
        """
        :param str description: Description of the catalog source.
        :param str icon_id: Icon id of associated catalog source.
        :param str id: The id of entitlement. One of `catalog_source_id` or `id` must be provided.
        :param str name: Name of the catalog source.
        :param int number_of_items: Number of items in the associated catalog source.
        :param str source_name: Catalog source name.
        :param str source_type: Catalog source type.
        :param str type: Content definition type.
        """
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "icon_id", icon_id)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "number_of_items", number_of_items)
        pulumi.set(__self__, "source_name", source_name)
        pulumi.set(__self__, "source_type", source_type)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        Description of the catalog source.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="iconId")
    def icon_id(self) -> str:
        """
        Icon id of associated catalog source.
        """
        return pulumi.get(self, "icon_id")

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

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        Name of the catalog source.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="numberOfItems")
    def number_of_items(self) -> int:
        """
        Number of items in the associated catalog source.
        """
        return pulumi.get(self, "number_of_items")

    @property
    @pulumi.getter(name="sourceName")
    def source_name(self) -> str:
        """
        Catalog source name.
        """
        return pulumi.get(self, "source_name")

    @property
    @pulumi.getter(name="sourceType")
    def source_type(self) -> str:
        """
        Catalog source type.
        """
        return pulumi.get(self, "source_type")

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        Content definition type.
        """
        return pulumi.get(self, "type")


