# coding: utf-8
# Copyright (c) 2016, 2026, Oracle and/or its affiliates.  All rights reserved.
# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.

# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20230222


from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel  # noqa: F401
from oci.decorators import init_model_state_from_kwargs


@init_model_state_from_kwargs
class DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary(object):
    """
    Description of a database API gateway config setting to be provided as an advanced property.
    """

    #: A constant which can be used with the data_type property of a DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
    #: This constant has a value of "STRING"
    DATA_TYPE_STRING = "STRING"

    #: A constant which can be used with the data_type property of a DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
    #: This constant has a value of "NUMBER"
    DATA_TYPE_NUMBER = "NUMBER"

    #: A constant which can be used with the data_type property of a DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
    #: This constant has a value of "DURATION"
    DATA_TYPE_DURATION = "DURATION"

    #: A constant which can be used with the data_type property of a DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
    #: This constant has a value of "BOOLEAN"
    DATA_TYPE_BOOLEAN = "BOOLEAN"

    #: A constant which can be used with the config_types property of a DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
    #: This constant has a value of "GLOBAL"
    CONFIG_TYPES_GLOBAL = "GLOBAL"

    #: A constant which can be used with the config_types property of a DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
    #: This constant has a value of "POOL"
    CONFIG_TYPES_POOL = "POOL"

    #: A constant which can be used with the database_tools_connection_types property of a DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
    #: This constant has a value of "ORACLE_DATABASE"
    DATABASE_TOOLS_CONNECTION_TYPES_ORACLE_DATABASE = "ORACLE_DATABASE"

    #: A constant which can be used with the database_tools_connection_types property of a DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
    #: This constant has a value of "MYSQL"
    DATABASE_TOOLS_CONNECTION_TYPES_MYSQL = "MYSQL"

    def __init__(self, **kwargs):
        """
        Initializes a new DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary object with values from keyword arguments.
        The following keyword arguments are supported (corresponding to the getters/setters of this class):

        :param key:
            The value to assign to the key property of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :type key: str

        :param display_name:
            The value to assign to the display_name property of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :type display_name: str

        :param data_type:
            The value to assign to the data_type property of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
            Allowed values for this property are: "STRING", "NUMBER", "DURATION", "BOOLEAN", 'UNKNOWN_ENUM_VALUE'.
            Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
        :type data_type: str

        :param config_types:
            The value to assign to the config_types property of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
            Allowed values for items in this list are: "GLOBAL", "POOL", 'UNKNOWN_ENUM_VALUE'.
            Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
        :type config_types: list[str]

        :param category_key:
            The value to assign to the category_key property of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :type category_key: str

        :param category_display_name:
            The value to assign to the category_display_name property of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :type category_display_name: str

        :param database_tools_connection_types:
            The value to assign to the database_tools_connection_types property of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
            Allowed values for items in this list are: "ORACLE_DATABASE", "MYSQL", 'UNKNOWN_ENUM_VALUE'.
            Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.
        :type database_tools_connection_types: list[str]

        :param documentation_url:
            The value to assign to the documentation_url property of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :type documentation_url: str

        :param description:
            The value to assign to the description property of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :type description: str

        :param default_value:
            The value to assign to the default_value property of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :type default_value: str

        :param min_value:
            The value to assign to the min_value property of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :type min_value: int

        :param max_value:
            The value to assign to the max_value property of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :type max_value: int

        :param list_of_values:
            The value to assign to the list_of_values property of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :type list_of_values: list[str]

        :param hint_text:
            The value to assign to the hint_text property of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :type hint_text: str

        """
        self.swagger_types = {
            'key': 'str',
            'display_name': 'str',
            'data_type': 'str',
            'config_types': 'list[str]',
            'category_key': 'str',
            'category_display_name': 'str',
            'database_tools_connection_types': 'list[str]',
            'documentation_url': 'str',
            'description': 'str',
            'default_value': 'str',
            'min_value': 'int',
            'max_value': 'int',
            'list_of_values': 'list[str]',
            'hint_text': 'str'
        }
        self.attribute_map = {
            'key': 'key',
            'display_name': 'displayName',
            'data_type': 'dataType',
            'config_types': 'configTypes',
            'category_key': 'categoryKey',
            'category_display_name': 'categoryDisplayName',
            'database_tools_connection_types': 'databaseToolsConnectionTypes',
            'documentation_url': 'documentationUrl',
            'description': 'description',
            'default_value': 'defaultValue',
            'min_value': 'minValue',
            'max_value': 'maxValue',
            'list_of_values': 'listOfValues',
            'hint_text': 'hintText'
        }
        self._key = None
        self._display_name = None
        self._data_type = None
        self._config_types = None
        self._category_key = None
        self._category_display_name = None
        self._database_tools_connection_types = None
        self._documentation_url = None
        self._description = None
        self._default_value = None
        self._min_value = None
        self._max_value = None
        self._list_of_values = None
        self._hint_text = None

    @property
    def key(self):
        """
        **[Required]** Gets the key of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        A string that uniquely identifies a Database Tools database API gateway config global settings resource.


        :return: The key of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :rtype: str
        """
        return self._key

    @key.setter
    def key(self, key):
        """
        Sets the key of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        A string that uniquely identifies a Database Tools database API gateway config global settings resource.


        :param key: The key of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :type: str
        """
        self._key = key

    @property
    def display_name(self):
        """
        **[Required]** Gets the display_name of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        A user-friendly name.


        :return: The display_name of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :rtype: str
        """
        return self._display_name

    @display_name.setter
    def display_name(self, display_name):
        """
        Sets the display_name of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        A user-friendly name.


        :param display_name: The display_name of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :type: str
        """
        self._display_name = display_name

    @property
    def data_type(self):
        """
        **[Required]** Gets the data_type of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        The data type of a database API gateway config setting.

        Allowed values for this property are: "STRING", "NUMBER", "DURATION", "BOOLEAN", 'UNKNOWN_ENUM_VALUE'.
        Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.


        :return: The data_type of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :rtype: str
        """
        return self._data_type

    @data_type.setter
    def data_type(self, data_type):
        """
        Sets the data_type of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        The data type of a database API gateway config setting.


        :param data_type: The data_type of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :type: str
        """
        allowed_values = ["STRING", "NUMBER", "DURATION", "BOOLEAN"]
        if not value_allowed_none_or_none_sentinel(data_type, allowed_values):
            data_type = 'UNKNOWN_ENUM_VALUE'
        self._data_type = data_type

    @property
    def config_types(self):
        """
        Gets the config_types of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        The config types that support this advanced property. The supported types are GLOBAL and POOL.

        Allowed values for items in this list are: "GLOBAL", "POOL", 'UNKNOWN_ENUM_VALUE'.
        Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.


        :return: The config_types of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :rtype: list[str]
        """
        return self._config_types

    @config_types.setter
    def config_types(self, config_types):
        """
        Sets the config_types of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        The config types that support this advanced property. The supported types are GLOBAL and POOL.


        :param config_types: The config_types of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :type: list[str]
        """
        allowed_values = ["GLOBAL", "POOL"]
        if config_types:
            config_types[:] = ['UNKNOWN_ENUM_VALUE' if not value_allowed_none_or_none_sentinel(x, allowed_values) else x for x in config_types]
        self._config_types = config_types

    @property
    def category_key(self):
        """
        Gets the category_key of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        The category of the Database Tools database API gateway config global setting.


        :return: The category_key of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :rtype: str
        """
        return self._category_key

    @category_key.setter
    def category_key(self, category_key):
        """
        Sets the category_key of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        The category of the Database Tools database API gateway config global setting.


        :param category_key: The category_key of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :type: str
        """
        self._category_key = category_key

    @property
    def category_display_name(self):
        """
        Gets the category_display_name of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        A user-friendly name of a category.


        :return: The category_display_name of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :rtype: str
        """
        return self._category_display_name

    @category_display_name.setter
    def category_display_name(self, category_display_name):
        """
        Sets the category_display_name of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        A user-friendly name of a category.


        :param category_display_name: The category_display_name of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :type: str
        """
        self._category_display_name = category_display_name

    @property
    def database_tools_connection_types(self):
        """
        Gets the database_tools_connection_types of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        The type of database (as determined by a type of Database Tools connection) to which this setting applies.
        The advancedProperty applies to all types of Database Tools connection when null. This is only applicable
        when configTypes includes POOL.

        Allowed values for items in this list are: "ORACLE_DATABASE", "MYSQL", 'UNKNOWN_ENUM_VALUE'.
        Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'.


        :return: The database_tools_connection_types of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :rtype: list[str]
        """
        return self._database_tools_connection_types

    @database_tools_connection_types.setter
    def database_tools_connection_types(self, database_tools_connection_types):
        """
        Sets the database_tools_connection_types of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        The type of database (as determined by a type of Database Tools connection) to which this setting applies.
        The advancedProperty applies to all types of Database Tools connection when null. This is only applicable
        when configTypes includes POOL.


        :param database_tools_connection_types: The database_tools_connection_types of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :type: list[str]
        """
        allowed_values = ["ORACLE_DATABASE", "MYSQL"]
        if database_tools_connection_types:
            database_tools_connection_types[:] = ['UNKNOWN_ENUM_VALUE' if not value_allowed_none_or_none_sentinel(x, allowed_values) else x for x in database_tools_connection_types]
        self._database_tools_connection_types = database_tools_connection_types

    @property
    def documentation_url(self):
        """
        Gets the documentation_url of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        Uniform resource locator (URL) of documentation related to this setting.


        :return: The documentation_url of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :rtype: str
        """
        return self._documentation_url

    @documentation_url.setter
    def documentation_url(self, documentation_url):
        """
        Sets the documentation_url of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        Uniform resource locator (URL) of documentation related to this setting.


        :param documentation_url: The documentation_url of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :type: str
        """
        self._documentation_url = documentation_url

    @property
    def description(self):
        """
        Gets the description of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        A user-friendly description of a database API gateway config setting.


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

    @description.setter
    def description(self, description):
        """
        Sets the description of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        A user-friendly description of a database API gateway config setting.


        :param description: The description of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :type: str
        """
        self._description = description

    @property
    def default_value(self):
        """
        Gets the default_value of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        The default value (if applicable) of a database API gateway config setting.


        :return: The default_value of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :rtype: str
        """
        return self._default_value

    @default_value.setter
    def default_value(self, default_value):
        """
        Sets the default_value of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        The default value (if applicable) of a database API gateway config setting.


        :param default_value: The default_value of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :type: str
        """
        self._default_value = default_value

    @property
    def min_value(self):
        """
        Gets the min_value of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        A minimum numeric value (if applicable) of a database API gateway config setting.


        :return: The min_value of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :rtype: int
        """
        return self._min_value

    @min_value.setter
    def min_value(self, min_value):
        """
        Sets the min_value of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        A minimum numeric value (if applicable) of a database API gateway config setting.


        :param min_value: The min_value of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :type: int
        """
        self._min_value = min_value

    @property
    def max_value(self):
        """
        Gets the max_value of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        A maximum numeric value (if applicable) of a database API gateway config setting.


        :return: The max_value of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :rtype: int
        """
        return self._max_value

    @max_value.setter
    def max_value(self, max_value):
        """
        Sets the max_value of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        A maximum numeric value (if applicable) of a database API gateway config setting.


        :param max_value: The max_value of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :type: int
        """
        self._max_value = max_value

    @property
    def list_of_values(self):
        """
        Gets the list_of_values of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        A list of string values (if applicable) supported by this database API gateway config setting.


        :return: The list_of_values of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :rtype: list[str]
        """
        return self._list_of_values

    @list_of_values.setter
    def list_of_values(self, list_of_values):
        """
        Sets the list_of_values of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        A list of string values (if applicable) supported by this database API gateway config setting.


        :param list_of_values: The list_of_values of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :type: list[str]
        """
        self._list_of_values = list_of_values

    @property
    def hint_text(self):
        """
        Gets the hint_text of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        Hint text for a database API gateway config setting.


        :return: The hint_text of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :rtype: str
        """
        return self._hint_text

    @hint_text.setter
    def hint_text(self, hint_text):
        """
        Sets the hint_text of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        Hint text for a database API gateway config setting.


        :param hint_text: The hint_text of this DatabaseToolsDatabaseApiGatewayConfigAdvancedPropertySummary.
        :type: str
        """
        self._hint_text = hint_text

    def __repr__(self):
        return formatted_flat_dict(self)

    def __eq__(self, other):
        if other is None:
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        return not self == other
