<reponame>elastest/elastest-service-manager<filename>src/esm/models/service_type.py
# coding: utf-8

from __future__ import absolute_import
from esm.models.dashboard_client import DashboardClient
from esm.models.plan import Plan
from esm.models.service_metadata import ServiceMetadata
from .base_model_ import Model
from datetime import date, datetime
from typing import List, Dict
from ..util import deserialize_model


class ServiceType(Model):
    """
    NOTE: This class is auto generated by the swagger code generator program.
    Do not edit the class manually.
    """
    def __init__(self, id: str=None, name: str=None, short_name: str=None, description: str=None, bindable: bool=None, tags: List[str]=None, metadata: ServiceMetadata=None, requires: List[str]=None, plan_updateable: bool=False, plans: List[Plan]=None, dashboard_client: DashboardClient=None):
        """
        ServiceType - a model defined in Swagger

        :param id: The id of this ServiceType.
        :type id: str
        :param name: The name of this ServiceType.
        :type name: str
        :param short_name: The short_name of this ServiceType.
        :type short_name: str
        :param description: The description of this ServiceType.
        :type description: str
        :param bindable: The bindable of this ServiceType.
        :type bindable: bool
        :param tags: The tags of this ServiceType.
        :type tags: List[str]
        :param metadata: The metadata of this ServiceType.
        :type metadata: ServiceMetadata
        :param requires: The requires of this ServiceType.
        :type requires: List[str]
        :param plan_updateable: The plan_updateable of this ServiceType.
        :type plan_updateable: bool
        :param plans: The plans of this ServiceType.
        :type plans: List[Plan]
        :param dashboard_client: The dashboard_client of this ServiceType.
        :type dashboard_client: DashboardClient
        """
        self.swagger_types = {
            'id': str,
            'name': str,
            'short_name': str,
            'description': str,
            'bindable': bool,
            'tags': List[str],
            'metadata': ServiceMetadata,
            'requires': List[str],
            'plan_updateable': bool,
            'plans': List[Plan],
            'dashboard_client': DashboardClient
        }

        self.attribute_map = {
            'id': 'id',
            'name': 'name',
            'short_name': 'short_name',
            'description': 'description',
            'bindable': 'bindable',
            'tags': 'tags',
            'metadata': 'metadata',
            'requires': 'requires',
            'plan_updateable': 'plan_updateable',
            'plans': 'plans',
            'dashboard_client': 'dashboard_client'
        }

        self._id = id
        self._name = name
        self._short_name = short_name
        self._description = description
        self._bindable = bindable
        self._tags = tags
        self._metadata = metadata
        self._requires = requires
        self._plan_updateable = plan_updateable
        self._plans = plans
        self._dashboard_client = dashboard_client

    @classmethod
    def from_dict(cls, dikt) -> 'ServiceType':
        """
        Returns the dict as a model

        :param dikt: A dict.
        :type: dict
        :return: The ServiceType of this ServiceType.
        :rtype: ServiceType
        """
        return deserialize_model(dikt, cls)

    @property
    def id(self) -> str:
        """
        Gets the id of this ServiceType.
        An identifier used to correlate this service in future requests to the broker. This MUST be globally unique within a platform marketplace. MUST be a non-empty string. Using a GUID is RECOMMENDED. 

        :return: The id of this ServiceType.
        :rtype: str
        """
        return self._id

    @id.setter
    def id(self, id: str):
        """
        Sets the id of this ServiceType.
        An identifier used to correlate this service in future requests to the broker. This MUST be globally unique within a platform marketplace. MUST be a non-empty string. Using a GUID is RECOMMENDED. 

        :param id: The id of this ServiceType.
        :type id: str
        """
        if id is None:
            raise ValueError("Invalid value for `id`, must not be `None`")

        self._id = id

    @property
    def name(self) -> str:
        """
        Gets the name of this ServiceType.
        A CLI-friendly name of the service. All lowercase, no spaces. This MUST be globally unique within a platform marketplace. MUST be a non-empty string. 

        :return: The name of this ServiceType.
        :rtype: str
        """
        return self._name

    @name.setter
    def name(self, name: str):
        """
        Sets the name of this ServiceType.
        A CLI-friendly name of the service. All lowercase, no spaces. This MUST be globally unique within a platform marketplace. MUST be a non-empty string. 

        :param name: The name of this ServiceType.
        :type name: str
        """
        if name is None:
            raise ValueError("Invalid value for `name`, must not be `None`")

        self._name = name

    @property
    def short_name(self) -> str:
        """
        Gets the short_name of this ServiceType.
        the textual identifier, typically a 3 character acronym, used for ElasTest services (e.g. elastest-monitoring-service is EMS) 

        :return: The short_name of this ServiceType.
        :rtype: str
        """
        return self._short_name

    @short_name.setter
    def short_name(self, short_name: str):
        """
        Sets the short_name of this ServiceType.
        the textual identifier, typically a 3 character acronym, used for ElasTest services (e.g. elastest-monitoring-service is EMS) 

        :param short_name: The short_name of this ServiceType.
        :type short_name: str
        """

        self._short_name = short_name

    @property
    def description(self) -> str:
        """
        Gets the description of this ServiceType.
        A short description of the service. MUST be a non-empty string.

        :return: The description of this ServiceType.
        :rtype: str
        """
        return self._description

    @description.setter
    def description(self, description: str):
        """
        Sets the description of this ServiceType.
        A short description of the service. MUST be a non-empty string.

        :param description: The description of this ServiceType.
        :type description: str
        """
        if description is None:
            raise ValueError("Invalid value for `description`, must not be `None`")

        self._description = description

    @property
    def bindable(self) -> bool:
        """
        Gets the bindable of this ServiceType.
        Specifies whether service instances of the service can be bound to applications. This specifies the default for all plans of this service. Plans can override this field. 

        :return: The bindable of this ServiceType.
        :rtype: bool
        """
        return self._bindable

    @bindable.setter
    def bindable(self, bindable: bool):
        """
        Sets the bindable of this ServiceType.
        Specifies whether service instances of the service can be bound to applications. This specifies the default for all plans of this service. Plans can override this field. 

        :param bindable: The bindable of this ServiceType.
        :type bindable: bool
        """
        if bindable is None:
            raise ValueError("Invalid value for `bindable`, must not be `None`")

        self._bindable = bindable

    @property
    def tags(self) -> List[str]:
        """
        Gets the tags of this ServiceType.
        Tags provide a flexible mechanism to expose a classification, attribute, or base technology of a service, enabling equivalent services to be swapped out without changes to dependent logic in applications, buildpacks, or other services. E.g. mysql, relational, redis, key-value, caching, messaging, amqp. 

        :return: The tags of this ServiceType.
        :rtype: List[str]
        """
        return self._tags

    @tags.setter
    def tags(self, tags: List[str]):
        """
        Sets the tags of this ServiceType.
        Tags provide a flexible mechanism to expose a classification, attribute, or base technology of a service, enabling equivalent services to be swapped out without changes to dependent logic in applications, buildpacks, or other services. E.g. mysql, relational, redis, key-value, caching, messaging, amqp. 

        :param tags: The tags of this ServiceType.
        :type tags: List[str]
        """

        self._tags = tags

    @property
    def metadata(self) -> ServiceMetadata:
        """
        Gets the metadata of this ServiceType.
        An opaque object of metadata for a service offering. Controller treats this as a blob. Note that there are conventions in existing brokers and controllers for fields that aid in the display of catalog data. 

        :return: The metadata of this ServiceType.
        :rtype: ServiceMetadata
        """
        return self._metadata

    @metadata.setter
    def metadata(self, metadata: ServiceMetadata):
        """
        Sets the metadata of this ServiceType.
        An opaque object of metadata for a service offering. Controller treats this as a blob. Note that there are conventions in existing brokers and controllers for fields that aid in the display of catalog data. 

        :param metadata: The metadata of this ServiceType.
        :type metadata: ServiceMetadata
        """

        self._metadata = metadata

    @property
    def requires(self) -> List[str]:
        """
        Gets the requires of this ServiceType.
        A list of permissions that the user would have to give the service, if they provision it. The only permissions currently supported are `syslog_drain`, `route_forwarding` and `volume_mount`. 

        :return: The requires of this ServiceType.
        :rtype: List[str]
        """
        return self._requires

    @requires.setter
    def requires(self, requires: List[str]):
        """
        Sets the requires of this ServiceType.
        A list of permissions that the user would have to give the service, if they provision it. The only permissions currently supported are `syslog_drain`, `route_forwarding` and `volume_mount`. 

        :param requires: The requires of this ServiceType.
        :type requires: List[str]
        """

        self._requires = requires

    @property
    def plan_updateable(self) -> bool:
        """
        Gets the plan_updateable of this ServiceType.
        Whether the service supports upgrade/downgrade for some plans. Please note that the misspelling of the attribute `plan_updatable` to `plan_updateable` was done by mistake. We have opted to keep that misspelling instead of fixing it and thus breaking backward compatibility. Defaults to `false`. 

        :return: The plan_updateable of this ServiceType.
        :rtype: bool
        """
        return self._plan_updateable

    @plan_updateable.setter
    def plan_updateable(self, plan_updateable: bool):
        """
        Sets the plan_updateable of this ServiceType.
        Whether the service supports upgrade/downgrade for some plans. Please note that the misspelling of the attribute `plan_updatable` to `plan_updateable` was done by mistake. We have opted to keep that misspelling instead of fixing it and thus breaking backward compatibility. Defaults to `false`. 

        :param plan_updateable: The plan_updateable of this ServiceType.
        :type plan_updateable: bool
        """

        self._plan_updateable = plan_updateable

    @property
    def plans(self) -> List[Plan]:
        """
        Gets the plans of this ServiceType.
        A list of plans for this service, schema is defined below. MUST contain at least one plan. 

        :return: The plans of this ServiceType.
        :rtype: List[Plan]
        """
        return self._plans

    @plans.setter
    def plans(self, plans: List[Plan]):
        """
        Sets the plans of this ServiceType.
        A list of plans for this service, schema is defined below. MUST contain at least one plan. 

        :param plans: The plans of this ServiceType.
        :type plans: List[Plan]
        """
        if plans is None:
            raise ValueError("Invalid value for `plans`, must not be `None`")

        self._plans = plans

    @property
    def dashboard_client(self) -> DashboardClient:
        """
        Gets the dashboard_client of this ServiceType.
        Contains the data necessary to activate the Dashboard SSO feature for this service. 

        :return: The dashboard_client of this ServiceType.
        :rtype: DashboardClient
        """
        return self._dashboard_client

    @dashboard_client.setter
    def dashboard_client(self, dashboard_client: DashboardClient):
        """
        Sets the dashboard_client of this ServiceType.
        Contains the data necessary to activate the Dashboard SSO feature for this service. 

        :param dashboard_client: The dashboard_client of this ServiceType.
        :type dashboard_client: DashboardClient
        """

        self._dashboard_client = dashboard_client


# coding: utf-8

from __future__ import absolute_import
from esm.models.dashboard_client import DashboardClient
from esm.models.plan import Plan
from esm.models.service_metadata import ServiceMetadata
from .base_model_ import Model
from datetime import date, datetime
from typing import List, Dict
from ..util import deserialize_model


class ServiceType(Model):
    """
    NOTE: This class is auto generated by the swagger code generator program.
    Do not edit the class manually.
    """
    def __init__(self, id: str=None, name: str=None, short_name: str=None, description: str=None, bindable: bool=None, tags: List[str]=None, metadata: ServiceMetadata=None, requires: List[str]=None, plan_updateable: bool=False, plans: List[Plan]=None, dashboard_client: DashboardClient=None):
        """
        ServiceType - a model defined in Swagger

        :param id: The id of this ServiceType.
        :type id: str
        :param name: The name of this ServiceType.
        :type name: str
        :param short_name: The short_name of this ServiceType.
        :type short_name: str
        :param description: The description of this ServiceType.
        :type description: str
        :param bindable: The bindable of this ServiceType.
        :type bindable: bool
        :param tags: The tags of this ServiceType.
        :type tags: List[str]
        :param metadata: The metadata of this ServiceType.
        :type metadata: ServiceMetadata
        :param requires: The requires of this ServiceType.
        :type requires: List[str]
        :param plan_updateable: The plan_updateable of this ServiceType.
        :type plan_updateable: bool
        :param plans: The plans of this ServiceType.
        :type plans: List[Plan]
        :param dashboard_client: The dashboard_client of this ServiceType.
        :type dashboard_client: DashboardClient
        """
        self.swagger_types = {
            'id': str,
            'name': str,
            'short_name': str,
            'description': str,
            'bindable': bool,
            'tags': List[str],
            'metadata': ServiceMetadata,
            'requires': List[str],
            'plan_updateable': bool,
            'plans': List[Plan],
            'dashboard_client': DashboardClient
        }

        self.attribute_map = {
            'id': 'id',
            'name': 'name',
            'short_name': 'short_name',
            'description': 'description',
            'bindable': 'bindable',
            'tags': 'tags',
            'metadata': 'metadata',
            'requires': 'requires',
            'plan_updateable': 'plan_updateable',
            'plans': 'plans',
            'dashboard_client': 'dashboard_client'
        }

        self._id = id
        self._name = name
        self._short_name = short_name
        self._description = description
        self._bindable = bindable
        self._tags = tags
        self._metadata = metadata
        self._requires = requires
        self._plan_updateable = plan_updateable
        self._plans = plans
        self._dashboard_client = dashboard_client

    @classmethod
    def from_dict(cls, dikt) -> 'ServiceType':
        """
        Returns the dict as a model

        :param dikt: A dict.
        :type: dict
        :return: The ServiceType of this ServiceType.
        :rtype: ServiceType
        """
        return deserialize_model(dikt, cls)

    @property
    def id(self) -> str:
        """
        Gets the id of this ServiceType.
        An identifier used to correlate this service in future requests to the broker. This MUST be globally unique within a platform marketplace. MUST be a non-empty string. Using a GUID is RECOMMENDED. 

        :return: The id of this ServiceType.
        :rtype: str
        """
        return self._id

    @id.setter
    def id(self, id: str):
        """
        Sets the id of this ServiceType.
        An identifier used to correlate this service in future requests to the broker. This MUST be globally unique within a platform marketplace. MUST be a non-empty string. Using a GUID is RECOMMENDED. 

        :param id: The id of this ServiceType.
        :type id: str
        """
        if id is None:
            raise ValueError("Invalid value for `id`, must not be `None`")

        self._id = id

    @property
    def name(self) -> str:
        """
        Gets the name of this ServiceType.
        A CLI-friendly name of the service. All lowercase, no spaces. This MUST be globally unique within a platform marketplace. MUST be a non-empty string. 

        :return: The name of this ServiceType.
        :rtype: str
        """
        return self._name

    @name.setter
    def name(self, name: str):
        """
        Sets the name of this ServiceType.
        A CLI-friendly name of the service. All lowercase, no spaces. This MUST be globally unique within a platform marketplace. MUST be a non-empty string. 

        :param name: The name of this ServiceType.
        :type name: str
        """
        if name is None:
            raise ValueError("Invalid value for `name`, must not be `None`")

        self._name = name

    @property
    def short_name(self) -> str:
        """
        Gets the short_name of this ServiceType.
        the textual identifier, typically a 3 character acronym, used for ElasTest services (e.g. elastest-monitoring-service is EMS) 

        :return: The short_name of this ServiceType.
        :rtype: str
        """
        return self._short_name

    @short_name.setter
    def short_name(self, short_name: str):
        """
        Sets the short_name of this ServiceType.
        the textual identifier, typically a 3 character acronym, used for ElasTest services (e.g. elastest-monitoring-service is EMS) 

        :param short_name: The short_name of this ServiceType.
        :type short_name: str
        """

        self._short_name = short_name

    @property
    def description(self) -> str:
        """
        Gets the description of this ServiceType.
        A short description of the service. MUST be a non-empty string.

        :return: The description of this ServiceType.
        :rtype: str
        """
        return self._description

    @description.setter
    def description(self, description: str):
        """
        Sets the description of this ServiceType.
        A short description of the service. MUST be a non-empty string.

        :param description: The description of this ServiceType.
        :type description: str
        """
        if description is None:
            raise ValueError("Invalid value for `description`, must not be `None`")

        self._description = description

    @property
    def bindable(self) -> bool:
        """
        Gets the bindable of this ServiceType.
        Specifies whether service instances of the service can be bound to applications. This specifies the default for all plans of this service. Plans can override this field. 

        :return: The bindable of this ServiceType.
        :rtype: bool
        """
        return self._bindable

    @bindable.setter
    def bindable(self, bindable: bool):
        """
        Sets the bindable of this ServiceType.
        Specifies whether service instances of the service can be bound to applications. This specifies the default for all plans of this service. Plans can override this field. 

        :param bindable: The bindable of this ServiceType.
        :type bindable: bool
        """
        if bindable is None:
            raise ValueError("Invalid value for `bindable`, must not be `None`")

        self._bindable = bindable

    @property
    def tags(self) -> List[str]:
        """
        Gets the tags of this ServiceType.
        Tags provide a flexible mechanism to expose a classification, attribute, or base technology of a service, enabling equivalent services to be swapped out without changes to dependent logic in applications, buildpacks, or other services. E.g. mysql, relational, redis, key-value, caching, messaging, amqp. 

        :return: The tags of this ServiceType.
        :rtype: List[str]
        """
        return self._tags

    @tags.setter
    def tags(self, tags: List[str]):
        """
        Sets the tags of this ServiceType.
        Tags provide a flexible mechanism to expose a classification, attribute, or base technology of a service, enabling equivalent services to be swapped out without changes to dependent logic in applications, buildpacks, or other services. E.g. mysql, relational, redis, key-value, caching, messaging, amqp. 

        :param tags: The tags of this ServiceType.
        :type tags: List[str]
        """

        self._tags = tags

    @property
    def metadata(self) -> ServiceMetadata:
        """
        Gets the metadata of this ServiceType.
        An opaque object of metadata for a service offering. Controller treats this as a blob. Note that there are conventions in existing brokers and controllers for fields that aid in the display of catalog data. 

        :return: The metadata of this ServiceType.
        :rtype: ServiceMetadata
        """
        return self._metadata

    @metadata.setter
    def metadata(self, metadata: ServiceMetadata):
        """
        Sets the metadata of this ServiceType.
        An opaque object of metadata for a service offering. Controller treats this as a blob. Note that there are conventions in existing brokers and controllers for fields that aid in the display of catalog data. 

        :param metadata: The metadata of this ServiceType.
        :type metadata: ServiceMetadata
        """

        self._metadata = metadata

    @property
    def requires(self) -> List[str]:
        """
        Gets the requires of this ServiceType.
        A list of permissions that the user would have to give the service, if they provision it. The only permissions currently supported are `syslog_drain`, `route_forwarding` and `volume_mount`. 

        :return: The requires of this ServiceType.
        :rtype: List[str]
        """
        return self._requires

    @requires.setter
    def requires(self, requires: List[str]):
        """
        Sets the requires of this ServiceType.
        A list of permissions that the user would have to give the service, if they provision it. The only permissions currently supported are `syslog_drain`, `route_forwarding` and `volume_mount`. 

        :param requires: The requires of this ServiceType.
        :type requires: List[str]
        """

        self._requires = requires

    @property
    def plan_updateable(self) -> bool:
        """
        Gets the plan_updateable of this ServiceType.
        Whether the service supports upgrade/downgrade for some plans. Please note that the misspelling of the attribute `plan_updatable` to `plan_updateable` was done by mistake. We have opted to keep that misspelling instead of fixing it and thus breaking backward compatibility. Defaults to `false`. 

        :return: The plan_updateable of this ServiceType.
        :rtype: bool
        """
        return self._plan_updateable

    @plan_updateable.setter
    def plan_updateable(self, plan_updateable: bool):
        """
        Sets the plan_updateable of this ServiceType.
        Whether the service supports upgrade/downgrade for some plans. Please note that the misspelling of the attribute `plan_updatable` to `plan_updateable` was done by mistake. We have opted to keep that misspelling instead of fixing it and thus breaking backward compatibility. Defaults to `false`. 

        :param plan_updateable: The plan_updateable of this ServiceType.
        :type plan_updateable: bool
        """

        self._plan_updateable = plan_updateable

    @property
    def plans(self) -> List[Plan]:
        """
        Gets the plans of this ServiceType.
        A list of plans for this service, schema is defined below. MUST contain at least one plan. 

        :return: The plans of this ServiceType.
        :rtype: List[Plan]
        """
        return self._plans

    @plans.setter
    def plans(self, plans: List[Plan]):
        """
        Sets the plans of this ServiceType.
        A list of plans for this service, schema is defined below. MUST contain at least one plan. 

        :param plans: The plans of this ServiceType.
        :type plans: List[Plan]
        """
        if plans is None:
            raise ValueError("Invalid value for `plans`, must not be `None`")

        self._plans = plans

    @property
    def dashboard_client(self) -> DashboardClient:
        """
        Gets the dashboard_client of this ServiceType.
        Contains the data necessary to activate the Dashboard SSO feature for this service. 

        :return: The dashboard_client of this ServiceType.
        :rtype: DashboardClient
        """
        return self._dashboard_client

    @dashboard_client.setter
    def dashboard_client(self, dashboard_client: DashboardClient):
        """
        Sets the dashboard_client of this ServiceType.
        Contains the data necessary to activate the Dashboard SSO feature for this service. 

        :param dashboard_client: The dashboard_client of this ServiceType.
        :type dashboard_client: DashboardClient
        """

        self._dashboard_client = dashboard_client
# coding: utf-8 NOTE: This class is auto generated by the swagger code generator program.     Do not edit the class manually. ServiceType - a model defined in Swagger          :param id: The id of this ServiceType.         :type id: str         :param name: The name of this ServiceType.         :type name: str         :param short_name: The short_name of this ServiceType.         :type short_name: str         :param description: The description of this ServiceType.         :type description: str         :param bindable: The bindable of this ServiceType.         :type bindable: bool         :param tags: The tags of this ServiceType.         :type tags: List[str]         :param metadata: The metadata of this ServiceType.         :type metadata: ServiceMetadata         :param requires: The requires of this ServiceType.         :type requires: List[str]         :param plan_updateable: The plan_updateable of this ServiceType.         :type plan_updateable: bool         :param plans: The plans of this ServiceType.         :type plans: List[Plan]         :param dashboard_client: The dashboard_client of this ServiceType.         :type dashboard_client: DashboardClient Returns the dict as a model          :param dikt: A dict.         :type: dict         :return: The ServiceType of this ServiceType.         :rtype: ServiceType Gets the id of this ServiceType.         An identifier used to correlate this service in future requests to the broker. This MUST be globally unique within a platform marketplace. MUST be a non-empty string. Using a GUID is RECOMMENDED.           :return: The id of this ServiceType.         :rtype: str Sets the id of this ServiceType.         An identifier used to correlate this service in future requests to the broker. This MUST be globally unique within a platform marketplace. MUST be a non-empty string. Using a GUID is RECOMMENDED.           :param id: The id of this ServiceType.         :type id: str Gets the name of this ServiceType.         A CLI-friendly name of the service. All lowercase, no spaces. This MUST be globally unique within a platform marketplace. MUST be a non-empty string.           :return: The name of this ServiceType.         :rtype: str Sets the name of this ServiceType.         A CLI-friendly name of the service. All lowercase, no spaces. This MUST be globally unique within a platform marketplace. MUST be a non-empty string.           :param name: The name of this ServiceType.         :type name: str Gets the short_name of this ServiceType.         the textual identifier, typically a 3 character acronym, used for ElasTest services (e.g. elastest-monitoring-service is EMS)           :return: The short_name of this ServiceType.         :rtype: str Sets the short_name of this ServiceType.         the textual identifier, typically a 3 character acronym, used for ElasTest services (e.g. elastest-monitoring-service is EMS)           :param short_name: The short_name of this ServiceType.         :type short_name: str Gets the description of this ServiceType.         A short description of the service. MUST be a non-empty string.          :return: The description of this ServiceType.         :rtype: str Sets the description of this ServiceType.         A short description of the service. MUST be a non-empty string.          :param description: The description of this ServiceType.         :type description: str Gets the bindable of this ServiceType.         Specifies whether service instances of the service can be bound to applications. This specifies the default for all plans of this service. Plans can override this field.           :return: The bindable of this ServiceType.         :rtype: bool Sets the bindable of this ServiceType.         Specifies whether service instances of the service can be bound to applications. This specifies the default for all plans of this service. Plans can override this field.           :param bindable: The bindable of this ServiceType.         :type bindable: bool Gets the tags of this ServiceType.         Tags provide a flexible mechanism to expose a classification, attribute, or base technology of a service, enabling equivalent services to be swapped out without changes to dependent logic in applications, buildpacks, or other services. E.g. mysql, relational, redis, key-value, caching, messaging, amqp.           :return: The tags of this ServiceType.         :rtype: List[str] Sets the tags of this ServiceType.         Tags provide a flexible mechanism to expose a classification, attribute, or base technology of a service, enabling equivalent services to be swapped out without changes to dependent logic in applications, buildpacks, or other services. E.g. mysql, relational, redis, key-value, caching, messaging, amqp.           :param tags: The tags of this ServiceType.         :type tags: List[str] Gets the metadata of this ServiceType.         An opaque object of metadata for a service offering. Controller treats this as a blob. Note that there are conventions in existing brokers and controllers for fields that aid in the display of catalog data.           :return: The metadata of this ServiceType.         :rtype: ServiceMetadata Sets the metadata of this ServiceType.         An opaque object of metadata for a service offering. Controller treats this as a blob. Note that there are conventions in existing brokers and controllers for fields that aid in the display of catalog data.           :param metadata: The metadata of this ServiceType.         :type metadata: ServiceMetadata Gets the requires of this ServiceType.         A list of permissions that the user would have to give the service, if they provision it. The only permissions currently supported are `syslog_drain`, `route_forwarding` and `volume_mount`.           :return: The requires of this ServiceType.         :rtype: List[str] Sets the requires of this ServiceType.         A list of permissions that the user would have to give the service, if they provision it. The only permissions currently supported are `syslog_drain`, `route_forwarding` and `volume_mount`.           :param requires: The requires of this ServiceType.         :type requires: List[str] Gets the plan_updateable of this ServiceType.         Whether the service supports upgrade/downgrade for some plans. Please note that the misspelling of the attribute `plan_updatable` to `plan_updateable` was done by mistake. We have opted to keep that misspelling instead of fixing it and thus breaking backward compatibility. Defaults to `false`.           :return: The plan_updateable of this ServiceType.         :rtype: bool Sets the plan_updateable of this ServiceType.         Whether the service supports upgrade/downgrade for some plans. Please note that the misspelling of the attribute `plan_updatable` to `plan_updateable` was done by mistake. We have opted to keep that misspelling instead of fixing it and thus breaking backward compatibility. Defaults to `false`.           :param plan_updateable: The plan_updateable of this ServiceType.         :type plan_updateable: bool Gets the plans of this ServiceType.         A list of plans for this service, schema is defined below. MUST contain at least one plan.           :return: The plans of this ServiceType.         :rtype: List[Plan] Sets the plans of this ServiceType.         A list of plans for this service, schema is defined below. MUST contain at least one plan.           :param plans: The plans of this ServiceType.         :type plans: List[Plan] Gets the dashboard_client of this ServiceType.         Contains the data necessary to activate the Dashboard SSO feature for this service.           :return: The dashboard_client of this ServiceType.         :rtype: DashboardClient Sets the dashboard_client of this ServiceType.         Contains the data necessary to activate the Dashboard SSO feature for this service.           :param dashboard_client: The dashboard_client of this ServiceType.         :type dashboard_client: DashboardClient