# coding: utf-8

"""
    Example.com

    This is an **example** API to demonstrate features of the OpenAPI specification. # Introduction This API definition is intended to to be a good starting point for describing your API in [OpenAPI/Swagger format](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md). It also demonstrates features of the [create-openapi-repo](https://github.com/Redocly/create-openapi-repo) tool and the [Redoc](https://github.com/Redocly/Redoc) documentation engine. Beyond the standard OpenAPI syntax, we use a few  [vendor extensions](https://github.com/Redocly/Redoc/blob/master/docs/redoc-vendor-extensions.md). # OpenAPI Specification The goal of The OpenAPI Specification is to define a standard, language-agnostic interface to REST APIs which allows both humans and computers to discover and understand the capabilities of the service without access to source code, documentation, or through network traffic inspection. When properly defined via OpenAPI, a consumer can  understand and interact with the remote service with a minimal amount of implementation logic. Similar to what interfaces have done for lower-level programming, OpenAPI removes the guesswork in calling the service. 

    The version of the OpenAPI document: 1.0.0
    Contact: contact@example.com
    Generated by OpenAPI Generator (https://openapi-generator.tech)

    Do not edit the class manually.
"""  # noqa: E501


from typing import ClassVar, Optional
from typing_extensions import Self

JSON_SCHEMA_VALIDATION_KEYWORDS = {
    'multipleOf', 'maximum', 'exclusiveMaximum',
    'minimum', 'exclusiveMinimum', 'maxLength',
    'minLength', 'pattern', 'maxItems', 'minItems'
}


class Configuration:
    """This class contains various settings of the API client.

    :param host: Base url.
    :param api_key: API key for authentication.
    """

    _default: ClassVar[Optional[Self]] = None

    def __init__(
        self,
        host: Optional[str] = None,
        api_key: Optional[str] = None,
    ) -> None:
        """Constructor
        """
        self.host = "https://www/api/v1" if host is None else host
        """Base url
        """
        self.api_key = api_key
        """API key for authentication
        """
        # Add default SSL/TLS settings required by RESTClientObject
        self.verify_ssl = True
        self.ssl_ca_cert = None
        self.cert_file = None
        self.key_file = None
        self.ca_cert_data = None
        self.assert_hostname = None
        self.retries = None
        self.tls_server_name = None
        self.proxy = None
        self.proxy_headers = None
        self.safe_chars_for_path_param = ''
        self.socket_options = None
        self.connection_pool_maxsize = None


    @classmethod
    def get_default(cls) -> Self:
        """Return the default configuration.

        :return: The configuration object.
        """
        if cls._default is None:
            cls._default = cls()
        return cls._default
