"""
    Delphix DCT API

    Delphix DCT API  # noqa: E501

    The version of the OpenAPI document: 3.27.0
    Contact: support@delphix.com
    Generated by: https://openapi-generator.tech
"""


import re  # noqa: F401
import sys  # noqa: F401

from delphix.api.gateway.api_client import ApiClient, Endpoint as _Endpoint
from delphix.api.gateway.model_utils import (  # noqa: F401
    check_allowed_values,
    check_validations,
    date,
    datetime,
    file_type,
    none_type,
    validate_and_convert_types
)
from delphix.api.gateway.model.cloud_tags_request import CloudTagsRequest
from delphix.api.gateway.model.cloud_tags_response import CloudTagsResponse
from delphix.api.gateway.model.create_paa_s_database_connector_parameters import CreatePaaSDatabaseConnectorParameters
from delphix.api.gateway.model.create_paa_s_database_connector_response import CreatePaaSDatabaseConnectorResponse
from delphix.api.gateway.model.delete_cloud_tag import DeleteCloudTag
from delphix.api.gateway.model.delete_paa_s_database_parameters import DeletePaaSDatabaseParameters
from delphix.api.gateway.model.delete_paa_s_database_response import DeletePaaSDatabaseResponse
from delphix.api.gateway.model.deprovision_paa_s_databases_response import DeprovisionPaaSDatabasesResponse
from delphix.api.gateway.model.execute_paa_s_database_compliance_job_response import ExecutePaaSDatabaseComplianceJobResponse
from delphix.api.gateway.model.list_paa_s_databases_response import ListPaaSDatabasesResponse
from delphix.api.gateway.model.paa_s_database import PaaSDatabase
from delphix.api.gateway.model.permission_enum import PermissionEnum
from delphix.api.gateway.model.provision_paa_s_database_from_bookmark_parameters import ProvisionPaaSDatabaseFromBookmarkParameters
from delphix.api.gateway.model.provision_paa_s_database_from_bookmark_response import ProvisionPaaSDatabaseFromBookmarkResponse
from delphix.api.gateway.model.provision_paa_s_database_parameters import ProvisionPaaSDatabaseParameters
from delphix.api.gateway.model.provision_paa_s_database_response import ProvisionPaaSDatabaseResponse
from delphix.api.gateway.model.re_provision_paa_s_database_parameters import ReProvisionPaaSDatabaseParameters
from delphix.api.gateway.model.refresh_paa_s_database_from_bookmark_parameters import RefreshPaaSDatabaseFromBookmarkParameters
from delphix.api.gateway.model.refresh_paa_s_database_parameters import RefreshPaaSDatabaseParameters
from delphix.api.gateway.model.refresh_paa_s_databases_from_bookmark_response import RefreshPaaSDatabasesFromBookmarkResponse
from delphix.api.gateway.model.refresh_paa_s_databases_response import RefreshPaaSDatabasesResponse
from delphix.api.gateway.model.reprovision_paa_s_database_response import ReprovisionPaaSDatabaseResponse
from delphix.api.gateway.model.search_body import SearchBody
from delphix.api.gateway.model.search_paa_s_databases_response import SearchPaaSDatabasesResponse


class PaaSDatabasesApi(object):
    """NOTE: This class is auto generated by OpenAPI Generator
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

    def __init__(self, api_client=None):
        if api_client is None:
            api_client = ApiClient()
        self.api_client = api_client

        def __create_paas_database_compliance_connector(
            self,
            paa_s_database_id,
            **kwargs
        ):
            """Create a new compliance connector for the PaaS Database.  # noqa: E501

            This method makes a synchronous HTTP request by default. To make an
            asynchronous HTTP request, please pass async_req=True

            >>> thread = api.create_paas_database_compliance_connector(paa_s_database_id, async_req=True)
            >>> result = thread.get()

            Args:
                paa_s_database_id (str): The ID of the PaaS Database.

            Keyword Args:
                create_paa_s_database_connector_parameters (CreatePaaSDatabaseConnectorParameters): [optional]
                _return_http_data_only (bool): response data without head status
                    code and headers. Default is True.
                _preload_content (bool): if False, the urllib3.HTTPResponse object
                    will be returned without reading/decoding response data.
                    Default is True.
                _request_timeout (int/float/tuple): timeout setting for this request. If
                    one number provided, it will be total request timeout. It can also
                    be a pair (tuple) of (connection, read) timeouts.
                    Default is None.
                _check_input_type (bool): specifies if type checking
                    should be done one the data sent to the server.
                    Default is True.
                _check_return_type (bool): specifies if type checking
                    should be done one the data received from the server.
                    Default is True.
                _host_index (int/None): specifies the index of the server
                    that we want to use.
                    Default is read from the configuration.
                async_req (bool): execute request asynchronously

            Returns:
                CreatePaaSDatabaseConnectorResponse
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs['async_req'] = kwargs.get(
                'async_req', False
            )
            kwargs['_return_http_data_only'] = kwargs.get(
                '_return_http_data_only', True
            )
            kwargs['_preload_content'] = kwargs.get(
                '_preload_content', True
            )
            kwargs['_request_timeout'] = kwargs.get(
                '_request_timeout', None
            )
            kwargs['_check_input_type'] = kwargs.get(
                '_check_input_type', True
            )
            kwargs['_check_return_type'] = kwargs.get(
                '_check_return_type', True
            )
            kwargs['_host_index'] = kwargs.get('_host_index')
            kwargs['paa_s_database_id'] = \
                paa_s_database_id
            return self.call_with_http_info(**kwargs)

        self.create_paas_database_compliance_connector = _Endpoint(
            settings={
                'response_type': (CreatePaaSDatabaseConnectorResponse,),
                'auth': [
                    'ApiKeyAuth'
                ],
                'endpoint_path': '/paas-databases/{paaSDatabaseId}/create-compliance-connector',
                'operation_id': 'create_paas_database_compliance_connector',
                'http_method': 'POST',
                'servers': None,
            },
            params_map={
                'all': [
                    'paa_s_database_id',
                    'create_paa_s_database_connector_parameters',
                ],
                'required': [
                    'paa_s_database_id',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                    'paa_s_database_id',
                ]
            },
            root_map={
                'validations': {
                    ('paa_s_database_id',): {

                        'min_length': 1,
                    },
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'paa_s_database_id':
                        (str,),
                    'create_paa_s_database_connector_parameters':
                        (CreatePaaSDatabaseConnectorParameters,),
                },
                'attribute_map': {
                    'paa_s_database_id': 'paaSDatabaseId',
                },
                'location_map': {
                    'paa_s_database_id': 'path',
                    'create_paa_s_database_connector_parameters': 'body',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [
                    'application/json'
                ]
            },
            api_client=api_client,
            callable=__create_paas_database_compliance_connector
        )

        def __create_paas_database_tags(
            self,
            paa_s_database_id,
            cloud_tags_request,
            **kwargs
        ):
            """Create tags for a PaaS Database.  # noqa: E501

            This method makes a synchronous HTTP request by default. To make an
            asynchronous HTTP request, please pass async_req=True

            >>> thread = api.create_paas_database_tags(paa_s_database_id, cloud_tags_request, async_req=True)
            >>> result = thread.get()

            Args:
                paa_s_database_id (str): The ID of the PaaS Database.
                cloud_tags_request (CloudTagsRequest): Tags information for PaaS Database.

            Keyword Args:
                _return_http_data_only (bool): response data without head status
                    code and headers. Default is True.
                _preload_content (bool): if False, the urllib3.HTTPResponse object
                    will be returned without reading/decoding response data.
                    Default is True.
                _request_timeout (int/float/tuple): timeout setting for this request. If
                    one number provided, it will be total request timeout. It can also
                    be a pair (tuple) of (connection, read) timeouts.
                    Default is None.
                _check_input_type (bool): specifies if type checking
                    should be done one the data sent to the server.
                    Default is True.
                _check_return_type (bool): specifies if type checking
                    should be done one the data received from the server.
                    Default is True.
                _host_index (int/None): specifies the index of the server
                    that we want to use.
                    Default is read from the configuration.
                async_req (bool): execute request asynchronously

            Returns:
                CloudTagsResponse
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs['async_req'] = kwargs.get(
                'async_req', False
            )
            kwargs['_return_http_data_only'] = kwargs.get(
                '_return_http_data_only', True
            )
            kwargs['_preload_content'] = kwargs.get(
                '_preload_content', True
            )
            kwargs['_request_timeout'] = kwargs.get(
                '_request_timeout', None
            )
            kwargs['_check_input_type'] = kwargs.get(
                '_check_input_type', True
            )
            kwargs['_check_return_type'] = kwargs.get(
                '_check_return_type', True
            )
            kwargs['_host_index'] = kwargs.get('_host_index')
            kwargs['paa_s_database_id'] = \
                paa_s_database_id
            kwargs['cloud_tags_request'] = \
                cloud_tags_request
            return self.call_with_http_info(**kwargs)

        self.create_paas_database_tags = _Endpoint(
            settings={
                'response_type': (CloudTagsResponse,),
                'auth': [
                    'ApiKeyAuth'
                ],
                'endpoint_path': '/paas-databases/{paaSDatabaseId}/tags',
                'operation_id': 'create_paas_database_tags',
                'http_method': 'POST',
                'servers': None,
            },
            params_map={
                'all': [
                    'paa_s_database_id',
                    'cloud_tags_request',
                ],
                'required': [
                    'paa_s_database_id',
                    'cloud_tags_request',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                    'paa_s_database_id',
                ]
            },
            root_map={
                'validations': {
                    ('paa_s_database_id',): {

                        'min_length': 1,
                    },
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'paa_s_database_id':
                        (str,),
                    'cloud_tags_request':
                        (CloudTagsRequest,),
                },
                'attribute_map': {
                    'paa_s_database_id': 'paaSDatabaseId',
                },
                'location_map': {
                    'paa_s_database_id': 'path',
                    'cloud_tags_request': 'body',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [
                    'application/json'
                ]
            },
            api_client=api_client,
            callable=__create_paas_database_tags
        )

        def __delete_paas_database(
            self,
            paa_s_database_id,
            **kwargs
        ):
            """Delete a PaaS Database  # noqa: E501

            This method makes a synchronous HTTP request by default. To make an
            asynchronous HTTP request, please pass async_req=True

            >>> thread = api.delete_paas_database(paa_s_database_id, async_req=True)
            >>> result = thread.get()

            Args:
                paa_s_database_id (str): The ID of the PaaS Database.

            Keyword Args:
                delete_paa_s_database_parameters (DeletePaaSDatabaseParameters): The parameters to delete a PaaS Database.. [optional]
                _return_http_data_only (bool): response data without head status
                    code and headers. Default is True.
                _preload_content (bool): if False, the urllib3.HTTPResponse object
                    will be returned without reading/decoding response data.
                    Default is True.
                _request_timeout (int/float/tuple): timeout setting for this request. If
                    one number provided, it will be total request timeout. It can also
                    be a pair (tuple) of (connection, read) timeouts.
                    Default is None.
                _check_input_type (bool): specifies if type checking
                    should be done one the data sent to the server.
                    Default is True.
                _check_return_type (bool): specifies if type checking
                    should be done one the data received from the server.
                    Default is True.
                _host_index (int/None): specifies the index of the server
                    that we want to use.
                    Default is read from the configuration.
                async_req (bool): execute request asynchronously

            Returns:
                DeletePaaSDatabaseResponse
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs['async_req'] = kwargs.get(
                'async_req', False
            )
            kwargs['_return_http_data_only'] = kwargs.get(
                '_return_http_data_only', True
            )
            kwargs['_preload_content'] = kwargs.get(
                '_preload_content', True
            )
            kwargs['_request_timeout'] = kwargs.get(
                '_request_timeout', None
            )
            kwargs['_check_input_type'] = kwargs.get(
                '_check_input_type', True
            )
            kwargs['_check_return_type'] = kwargs.get(
                '_check_return_type', True
            )
            kwargs['_host_index'] = kwargs.get('_host_index')
            kwargs['paa_s_database_id'] = \
                paa_s_database_id
            return self.call_with_http_info(**kwargs)

        self.delete_paas_database = _Endpoint(
            settings={
                'response_type': (DeletePaaSDatabaseResponse,),
                'auth': [
                    'ApiKeyAuth'
                ],
                'endpoint_path': '/paas-databases/{paaSDatabaseId}/delete',
                'operation_id': 'delete_paas_database',
                'http_method': 'POST',
                'servers': None,
            },
            params_map={
                'all': [
                    'paa_s_database_id',
                    'delete_paa_s_database_parameters',
                ],
                'required': [
                    'paa_s_database_id',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                    'paa_s_database_id',
                ]
            },
            root_map={
                'validations': {
                    ('paa_s_database_id',): {

                        'min_length': 1,
                    },
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'paa_s_database_id':
                        (str,),
                    'delete_paa_s_database_parameters':
                        (DeletePaaSDatabaseParameters,),
                },
                'attribute_map': {
                    'paa_s_database_id': 'paaSDatabaseId',
                },
                'location_map': {
                    'paa_s_database_id': 'path',
                    'delete_paa_s_database_parameters': 'body',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [
                    'application/json'
                ]
            },
            api_client=api_client,
            callable=__delete_paas_database
        )

        def __delete_paas_database_tags(
            self,
            paa_s_database_id,
            **kwargs
        ):
            """Delete tags for a PaaS Database.  # noqa: E501

            This method makes a synchronous HTTP request by default. To make an
            asynchronous HTTP request, please pass async_req=True

            >>> thread = api.delete_paas_database_tags(paa_s_database_id, async_req=True)
            >>> result = thread.get()

            Args:
                paa_s_database_id (str): The ID of the PaaS Database.

            Keyword Args:
                delete_cloud_tag (DeleteCloudTag): The parameters to delete cloud tags. [optional]
                _return_http_data_only (bool): response data without head status
                    code and headers. Default is True.
                _preload_content (bool): if False, the urllib3.HTTPResponse object
                    will be returned without reading/decoding response data.
                    Default is True.
                _request_timeout (int/float/tuple): timeout setting for this request. If
                    one number provided, it will be total request timeout. It can also
                    be a pair (tuple) of (connection, read) timeouts.
                    Default is None.
                _check_input_type (bool): specifies if type checking
                    should be done one the data sent to the server.
                    Default is True.
                _check_return_type (bool): specifies if type checking
                    should be done one the data received from the server.
                    Default is True.
                _host_index (int/None): specifies the index of the server
                    that we want to use.
                    Default is read from the configuration.
                async_req (bool): execute request asynchronously

            Returns:
                None
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs['async_req'] = kwargs.get(
                'async_req', False
            )
            kwargs['_return_http_data_only'] = kwargs.get(
                '_return_http_data_only', True
            )
            kwargs['_preload_content'] = kwargs.get(
                '_preload_content', True
            )
            kwargs['_request_timeout'] = kwargs.get(
                '_request_timeout', None
            )
            kwargs['_check_input_type'] = kwargs.get(
                '_check_input_type', True
            )
            kwargs['_check_return_type'] = kwargs.get(
                '_check_return_type', True
            )
            kwargs['_host_index'] = kwargs.get('_host_index')
            kwargs['paa_s_database_id'] = \
                paa_s_database_id
            return self.call_with_http_info(**kwargs)

        self.delete_paas_database_tags = _Endpoint(
            settings={
                'response_type': None,
                'auth': [
                    'ApiKeyAuth'
                ],
                'endpoint_path': '/paas-databases/{paaSDatabaseId}/tags/delete',
                'operation_id': 'delete_paas_database_tags',
                'http_method': 'POST',
                'servers': None,
            },
            params_map={
                'all': [
                    'paa_s_database_id',
                    'delete_cloud_tag',
                ],
                'required': [
                    'paa_s_database_id',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                    'paa_s_database_id',
                ]
            },
            root_map={
                'validations': {
                    ('paa_s_database_id',): {

                        'min_length': 1,
                    },
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'paa_s_database_id':
                        (str,),
                    'delete_cloud_tag':
                        (DeleteCloudTag,),
                },
                'attribute_map': {
                    'paa_s_database_id': 'paaSDatabaseId',
                },
                'location_map': {
                    'paa_s_database_id': 'path',
                    'delete_cloud_tag': 'body',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [],
                'content_type': [
                    'application/json'
                ]
            },
            api_client=api_client,
            callable=__delete_paas_database_tags
        )

        def __deprovision_paas_database(
            self,
            paa_s_database_id,
            **kwargs
        ):
            """De-provision a PaaS Database, meaning that the database object will remain in DCT, along with its permissions, tags, snapshots, ... but the database will no longer be running. If the current database data must be preserved, take a snapshot before de-provisioning.  # noqa: E501

            This method makes a synchronous HTTP request by default. To make an
            asynchronous HTTP request, please pass async_req=True

            >>> thread = api.deprovision_paas_database(paa_s_database_id, async_req=True)
            >>> result = thread.get()

            Args:
                paa_s_database_id (str): The ID of the PaaS Database.

            Keyword Args:
                _return_http_data_only (bool): response data without head status
                    code and headers. Default is True.
                _preload_content (bool): if False, the urllib3.HTTPResponse object
                    will be returned without reading/decoding response data.
                    Default is True.
                _request_timeout (int/float/tuple): timeout setting for this request. If
                    one number provided, it will be total request timeout. It can also
                    be a pair (tuple) of (connection, read) timeouts.
                    Default is None.
                _check_input_type (bool): specifies if type checking
                    should be done one the data sent to the server.
                    Default is True.
                _check_return_type (bool): specifies if type checking
                    should be done one the data received from the server.
                    Default is True.
                _host_index (int/None): specifies the index of the server
                    that we want to use.
                    Default is read from the configuration.
                async_req (bool): execute request asynchronously

            Returns:
                DeprovisionPaaSDatabasesResponse
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs['async_req'] = kwargs.get(
                'async_req', False
            )
            kwargs['_return_http_data_only'] = kwargs.get(
                '_return_http_data_only', True
            )
            kwargs['_preload_content'] = kwargs.get(
                '_preload_content', True
            )
            kwargs['_request_timeout'] = kwargs.get(
                '_request_timeout', None
            )
            kwargs['_check_input_type'] = kwargs.get(
                '_check_input_type', True
            )
            kwargs['_check_return_type'] = kwargs.get(
                '_check_return_type', True
            )
            kwargs['_host_index'] = kwargs.get('_host_index')
            kwargs['paa_s_database_id'] = \
                paa_s_database_id
            return self.call_with_http_info(**kwargs)

        self.deprovision_paas_database = _Endpoint(
            settings={
                'response_type': (DeprovisionPaaSDatabasesResponse,),
                'auth': [
                    'ApiKeyAuth'
                ],
                'endpoint_path': '/paas-databases/{paaSDatabaseId}/de-provision',
                'operation_id': 'deprovision_paas_database',
                'http_method': 'POST',
                'servers': None,
            },
            params_map={
                'all': [
                    'paa_s_database_id',
                ],
                'required': [
                    'paa_s_database_id',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                    'paa_s_database_id',
                ]
            },
            root_map={
                'validations': {
                    ('paa_s_database_id',): {

                        'min_length': 1,
                    },
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'paa_s_database_id':
                        (str,),
                },
                'attribute_map': {
                    'paa_s_database_id': 'paaSDatabaseId',
                },
                'location_map': {
                    'paa_s_database_id': 'path',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [],
            },
            api_client=api_client,
            callable=__deprovision_paas_database
        )

        def __execute_paas_database_compliance_job(
            self,
            paa_s_database_id,
            **kwargs
        ):
            """Execute the compliance job for a PaaS Database  # noqa: E501

            This method makes a synchronous HTTP request by default. To make an
            asynchronous HTTP request, please pass async_req=True

            >>> thread = api.execute_paas_database_compliance_job(paa_s_database_id, async_req=True)
            >>> result = thread.get()

            Args:
                paa_s_database_id (str): The ID of the PaaS Database.

            Keyword Args:
                _return_http_data_only (bool): response data without head status
                    code and headers. Default is True.
                _preload_content (bool): if False, the urllib3.HTTPResponse object
                    will be returned without reading/decoding response data.
                    Default is True.
                _request_timeout (int/float/tuple): timeout setting for this request. If
                    one number provided, it will be total request timeout. It can also
                    be a pair (tuple) of (connection, read) timeouts.
                    Default is None.
                _check_input_type (bool): specifies if type checking
                    should be done one the data sent to the server.
                    Default is True.
                _check_return_type (bool): specifies if type checking
                    should be done one the data received from the server.
                    Default is True.
                _host_index (int/None): specifies the index of the server
                    that we want to use.
                    Default is read from the configuration.
                async_req (bool): execute request asynchronously

            Returns:
                ExecutePaaSDatabaseComplianceJobResponse
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs['async_req'] = kwargs.get(
                'async_req', False
            )
            kwargs['_return_http_data_only'] = kwargs.get(
                '_return_http_data_only', True
            )
            kwargs['_preload_content'] = kwargs.get(
                '_preload_content', True
            )
            kwargs['_request_timeout'] = kwargs.get(
                '_request_timeout', None
            )
            kwargs['_check_input_type'] = kwargs.get(
                '_check_input_type', True
            )
            kwargs['_check_return_type'] = kwargs.get(
                '_check_return_type', True
            )
            kwargs['_host_index'] = kwargs.get('_host_index')
            kwargs['paa_s_database_id'] = \
                paa_s_database_id
            return self.call_with_http_info(**kwargs)

        self.execute_paas_database_compliance_job = _Endpoint(
            settings={
                'response_type': (ExecutePaaSDatabaseComplianceJobResponse,),
                'auth': [
                    'ApiKeyAuth'
                ],
                'endpoint_path': '/paas-databases/{paaSDatabaseId}/execute-compliance-job',
                'operation_id': 'execute_paas_database_compliance_job',
                'http_method': 'POST',
                'servers': None,
            },
            params_map={
                'all': [
                    'paa_s_database_id',
                ],
                'required': [
                    'paa_s_database_id',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                    'paa_s_database_id',
                ]
            },
            root_map={
                'validations': {
                    ('paa_s_database_id',): {

                        'min_length': 1,
                    },
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'paa_s_database_id':
                        (str,),
                },
                'attribute_map': {
                    'paa_s_database_id': 'paaSDatabaseId',
                },
                'location_map': {
                    'paa_s_database_id': 'path',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [],
            },
            api_client=api_client,
            callable=__execute_paas_database_compliance_job
        )

        def __get_paas_database_by_id(
            self,
            paa_s_database_id,
            **kwargs
        ):
            """Get a PaaS Database by ID.  # noqa: E501

            This method makes a synchronous HTTP request by default. To make an
            asynchronous HTTP request, please pass async_req=True

            >>> thread = api.get_paas_database_by_id(paa_s_database_id, async_req=True)
            >>> result = thread.get()

            Args:
                paa_s_database_id (str): The ID of the PaaS Database.

            Keyword Args:
                _return_http_data_only (bool): response data without head status
                    code and headers. Default is True.
                _preload_content (bool): if False, the urllib3.HTTPResponse object
                    will be returned without reading/decoding response data.
                    Default is True.
                _request_timeout (int/float/tuple): timeout setting for this request. If
                    one number provided, it will be total request timeout. It can also
                    be a pair (tuple) of (connection, read) timeouts.
                    Default is None.
                _check_input_type (bool): specifies if type checking
                    should be done one the data sent to the server.
                    Default is True.
                _check_return_type (bool): specifies if type checking
                    should be done one the data received from the server.
                    Default is True.
                _host_index (int/None): specifies the index of the server
                    that we want to use.
                    Default is read from the configuration.
                async_req (bool): execute request asynchronously

            Returns:
                PaaSDatabase
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs['async_req'] = kwargs.get(
                'async_req', False
            )
            kwargs['_return_http_data_only'] = kwargs.get(
                '_return_http_data_only', True
            )
            kwargs['_preload_content'] = kwargs.get(
                '_preload_content', True
            )
            kwargs['_request_timeout'] = kwargs.get(
                '_request_timeout', None
            )
            kwargs['_check_input_type'] = kwargs.get(
                '_check_input_type', True
            )
            kwargs['_check_return_type'] = kwargs.get(
                '_check_return_type', True
            )
            kwargs['_host_index'] = kwargs.get('_host_index')
            kwargs['paa_s_database_id'] = \
                paa_s_database_id
            return self.call_with_http_info(**kwargs)

        self.get_paas_database_by_id = _Endpoint(
            settings={
                'response_type': (PaaSDatabase,),
                'auth': [
                    'ApiKeyAuth'
                ],
                'endpoint_path': '/paas-databases/{paaSDatabaseId}',
                'operation_id': 'get_paas_database_by_id',
                'http_method': 'GET',
                'servers': None,
            },
            params_map={
                'all': [
                    'paa_s_database_id',
                ],
                'required': [
                    'paa_s_database_id',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                    'paa_s_database_id',
                ]
            },
            root_map={
                'validations': {
                    ('paa_s_database_id',): {

                        'min_length': 1,
                    },
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'paa_s_database_id':
                        (str,),
                },
                'attribute_map': {
                    'paa_s_database_id': 'paaSDatabaseId',
                },
                'location_map': {
                    'paa_s_database_id': 'path',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [],
            },
            api_client=api_client,
            callable=__get_paas_database_by_id
        )

        def __get_paas_database_tags(
            self,
            paa_s_database_id,
            **kwargs
        ):
            """Get tags for a PaaS Database.  # noqa: E501

            This method makes a synchronous HTTP request by default. To make an
            asynchronous HTTP request, please pass async_req=True

            >>> thread = api.get_paas_database_tags(paa_s_database_id, async_req=True)
            >>> result = thread.get()

            Args:
                paa_s_database_id (str): The ID of the PaaS Database.

            Keyword Args:
                _return_http_data_only (bool): response data without head status
                    code and headers. Default is True.
                _preload_content (bool): if False, the urllib3.HTTPResponse object
                    will be returned without reading/decoding response data.
                    Default is True.
                _request_timeout (int/float/tuple): timeout setting for this request. If
                    one number provided, it will be total request timeout. It can also
                    be a pair (tuple) of (connection, read) timeouts.
                    Default is None.
                _check_input_type (bool): specifies if type checking
                    should be done one the data sent to the server.
                    Default is True.
                _check_return_type (bool): specifies if type checking
                    should be done one the data received from the server.
                    Default is True.
                _host_index (int/None): specifies the index of the server
                    that we want to use.
                    Default is read from the configuration.
                async_req (bool): execute request asynchronously

            Returns:
                CloudTagsResponse
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs['async_req'] = kwargs.get(
                'async_req', False
            )
            kwargs['_return_http_data_only'] = kwargs.get(
                '_return_http_data_only', True
            )
            kwargs['_preload_content'] = kwargs.get(
                '_preload_content', True
            )
            kwargs['_request_timeout'] = kwargs.get(
                '_request_timeout', None
            )
            kwargs['_check_input_type'] = kwargs.get(
                '_check_input_type', True
            )
            kwargs['_check_return_type'] = kwargs.get(
                '_check_return_type', True
            )
            kwargs['_host_index'] = kwargs.get('_host_index')
            kwargs['paa_s_database_id'] = \
                paa_s_database_id
            return self.call_with_http_info(**kwargs)

        self.get_paas_database_tags = _Endpoint(
            settings={
                'response_type': (CloudTagsResponse,),
                'auth': [
                    'ApiKeyAuth'
                ],
                'endpoint_path': '/paas-databases/{paaSDatabaseId}/tags',
                'operation_id': 'get_paas_database_tags',
                'http_method': 'GET',
                'servers': None,
            },
            params_map={
                'all': [
                    'paa_s_database_id',
                ],
                'required': [
                    'paa_s_database_id',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                    'paa_s_database_id',
                ]
            },
            root_map={
                'validations': {
                    ('paa_s_database_id',): {

                        'min_length': 1,
                    },
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'paa_s_database_id':
                        (str,),
                },
                'attribute_map': {
                    'paa_s_database_id': 'paaSDatabaseId',
                },
                'location_map': {
                    'paa_s_database_id': 'path',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [],
            },
            api_client=api_client,
            callable=__get_paas_database_tags
        )

        def __get_paas_databases(
            self,
            **kwargs
        ):
            """List all PaaS Databases.  # noqa: E501

            This method makes a synchronous HTTP request by default. To make an
            asynchronous HTTP request, please pass async_req=True

            >>> thread = api.get_paas_databases(async_req=True)
            >>> result = thread.get()


            Keyword Args:
                limit (int): Maximum number of objects to return per query. The value must be between 1 and 1000. Default is 100.. [optional] if omitted the server will use the default value of 100
                cursor (str): Cursor to fetch the next or previous page of results. The value of this property must be extracted from the 'prev_cursor' or 'next_cursor' property of a PaginatedResponseMetadata which is contained in the response of list and search API endpoints.. [optional]
                sort (str, none_type): The field to sort results by. A property name with a prepended '-' signifies descending order. . [optional]
                permission ([PermissionEnum]): Restrict the objects, which are allowed.. [optional]
                _return_http_data_only (bool): response data without head status
                    code and headers. Default is True.
                _preload_content (bool): if False, the urllib3.HTTPResponse object
                    will be returned without reading/decoding response data.
                    Default is True.
                _request_timeout (int/float/tuple): timeout setting for this request. If
                    one number provided, it will be total request timeout. It can also
                    be a pair (tuple) of (connection, read) timeouts.
                    Default is None.
                _check_input_type (bool): specifies if type checking
                    should be done one the data sent to the server.
                    Default is True.
                _check_return_type (bool): specifies if type checking
                    should be done one the data received from the server.
                    Default is True.
                _host_index (int/None): specifies the index of the server
                    that we want to use.
                    Default is read from the configuration.
                async_req (bool): execute request asynchronously

            Returns:
                ListPaaSDatabasesResponse
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs['async_req'] = kwargs.get(
                'async_req', False
            )
            kwargs['_return_http_data_only'] = kwargs.get(
                '_return_http_data_only', True
            )
            kwargs['_preload_content'] = kwargs.get(
                '_preload_content', True
            )
            kwargs['_request_timeout'] = kwargs.get(
                '_request_timeout', None
            )
            kwargs['_check_input_type'] = kwargs.get(
                '_check_input_type', True
            )
            kwargs['_check_return_type'] = kwargs.get(
                '_check_return_type', True
            )
            kwargs['_host_index'] = kwargs.get('_host_index')
            return self.call_with_http_info(**kwargs)

        self.get_paas_databases = _Endpoint(
            settings={
                'response_type': (ListPaaSDatabasesResponse,),
                'auth': [
                    'ApiKeyAuth'
                ],
                'endpoint_path': '/paas-databases',
                'operation_id': 'get_paas_databases',
                'http_method': 'GET',
                'servers': None,
            },
            params_map={
                'all': [
                    'limit',
                    'cursor',
                    'sort',
                    'permission',
                ],
                'required': [],
                'nullable': [
                    'sort',
                ],
                'enum': [
                    'sort',
                ],
                'validation': [
                    'limit',
                    'cursor',
                ]
            },
            root_map={
                'validations': {
                    ('limit',): {

                        'inclusive_maximum': 1000,
                        'inclusive_minimum': 1,
                    },
                    ('cursor',): {
                        'max_length': 4096,
                        'min_length': 1,
                    },
                },
                'allowed_values': {
                    ('sort',): {
                        'None': None,
                        "ID": "id",
                        "-ID": "-id",
                        "NAME": "name",
                        "-NAME": "-name",
                        "PLUGIN_ID": "plugin_id",
                        "-PLUGIN_ID": "-plugin_id",
                        "CLOUD_ACCOUNT_ID": "cloud_account_id",
                        "-CLOUD_ACCOUNT_ID": "-cloud_account_id",
                        "STATUS": "status",
                        "-STATUS": "-status",
                        "RUNTIME_STATUS": "runtime_status",
                        "-RUNTIME_STATUS": "-runtime_status",
                        "COMPLIANCE_CONNECTOR_ID": "compliance_connector_id",
                        "-COMPLIANCE_CONNECTOR_ID": "-compliance_connector_id",
                        "DATABASE_ENGINE": "database_engine",
                        "-DATABASE_ENGINE": "-database_engine",
                        "DATABASE_ENGINE_VERSION": "database_engine_version",
                        "-DATABASE_ENGINE_VERSION": "-database_engine_version",
                        "INSTANCE_ID": "instance_id",
                        "-INSTANCE_ID": "-instance_id",
                        "SIZE_BYTES": "size_bytes",
                        "-SIZE_BYTES": "-size_bytes",
                        "SIZE_MEASUREMENT_TIME": "size_measurement_time",
                        "-SIZE_MEASUREMENT_TIME": "-size_measurement_time",
                        "SIZE_MEASUREMENT_SOURCE": "size_measurement_source",
                        "-SIZE_MEASUREMENT_SOURCE": "-size_measurement_source",
                        "ROOT_DATABASE_ID": "root_database_id",
                        "-ROOT_DATABASE_ID": "-root_database_id"
                    },
                },
                'openapi_types': {
                    'limit':
                        (int,),
                    'cursor':
                        (str,),
                    'sort':
                        (str, none_type,),
                    'permission':
                        ([PermissionEnum],),
                },
                'attribute_map': {
                    'limit': 'limit',
                    'cursor': 'cursor',
                    'sort': 'sort',
                    'permission': 'permission',
                },
                'location_map': {
                    'limit': 'query',
                    'cursor': 'query',
                    'sort': 'query',
                    'permission': 'query',
                },
                'collection_format_map': {
                    'permission': 'multi',
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [],
            },
            api_client=api_client,
            callable=__get_paas_databases
        )

        def __provision_paas_database(
            self,
            provision_paa_s_database_parameters,
            **kwargs
        ):
            """Provision a new PaaS Database  # noqa: E501

            This method makes a synchronous HTTP request by default. To make an
            asynchronous HTTP request, please pass async_req=True

            >>> thread = api.provision_paas_database(provision_paa_s_database_parameters, async_req=True)
            >>> result = thread.get()

            Args:
                provision_paa_s_database_parameters (ProvisionPaaSDatabaseParameters): The parameters to provision a PaaS Database.

            Keyword Args:
                _return_http_data_only (bool): response data without head status
                    code and headers. Default is True.
                _preload_content (bool): if False, the urllib3.HTTPResponse object
                    will be returned without reading/decoding response data.
                    Default is True.
                _request_timeout (int/float/tuple): timeout setting for this request. If
                    one number provided, it will be total request timeout. It can also
                    be a pair (tuple) of (connection, read) timeouts.
                    Default is None.
                _check_input_type (bool): specifies if type checking
                    should be done one the data sent to the server.
                    Default is True.
                _check_return_type (bool): specifies if type checking
                    should be done one the data received from the server.
                    Default is True.
                _host_index (int/None): specifies the index of the server
                    that we want to use.
                    Default is read from the configuration.
                async_req (bool): execute request asynchronously

            Returns:
                ProvisionPaaSDatabaseResponse
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs['async_req'] = kwargs.get(
                'async_req', False
            )
            kwargs['_return_http_data_only'] = kwargs.get(
                '_return_http_data_only', True
            )
            kwargs['_preload_content'] = kwargs.get(
                '_preload_content', True
            )
            kwargs['_request_timeout'] = kwargs.get(
                '_request_timeout', None
            )
            kwargs['_check_input_type'] = kwargs.get(
                '_check_input_type', True
            )
            kwargs['_check_return_type'] = kwargs.get(
                '_check_return_type', True
            )
            kwargs['_host_index'] = kwargs.get('_host_index')
            kwargs['provision_paa_s_database_parameters'] = \
                provision_paa_s_database_parameters
            return self.call_with_http_info(**kwargs)

        self.provision_paas_database = _Endpoint(
            settings={
                'response_type': (ProvisionPaaSDatabaseResponse,),
                'auth': [
                    'ApiKeyAuth'
                ],
                'endpoint_path': '/paas-databases',
                'operation_id': 'provision_paas_database',
                'http_method': 'POST',
                'servers': None,
            },
            params_map={
                'all': [
                    'provision_paa_s_database_parameters',
                ],
                'required': [
                    'provision_paa_s_database_parameters',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                ]
            },
            root_map={
                'validations': {
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'provision_paa_s_database_parameters':
                        (ProvisionPaaSDatabaseParameters,),
                },
                'attribute_map': {
                },
                'location_map': {
                    'provision_paa_s_database_parameters': 'body',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [
                    'application/json'
                ]
            },
            api_client=api_client,
            callable=__provision_paas_database
        )

        def __provision_paas_database_from_bookmark(
            self,
            provision_paa_s_database_from_bookmark_parameters,
            **kwargs
        ):
            """Provision a new PaaS Database from a bookmark  # noqa: E501

            This method makes a synchronous HTTP request by default. To make an
            asynchronous HTTP request, please pass async_req=True

            >>> thread = api.provision_paas_database_from_bookmark(provision_paa_s_database_from_bookmark_parameters, async_req=True)
            >>> result = thread.get()

            Args:
                provision_paa_s_database_from_bookmark_parameters (ProvisionPaaSDatabaseFromBookmarkParameters): The parameters to provision a PaaS Database from a bookmark.

            Keyword Args:
                _return_http_data_only (bool): response data without head status
                    code and headers. Default is True.
                _preload_content (bool): if False, the urllib3.HTTPResponse object
                    will be returned without reading/decoding response data.
                    Default is True.
                _request_timeout (int/float/tuple): timeout setting for this request. If
                    one number provided, it will be total request timeout. It can also
                    be a pair (tuple) of (connection, read) timeouts.
                    Default is None.
                _check_input_type (bool): specifies if type checking
                    should be done one the data sent to the server.
                    Default is True.
                _check_return_type (bool): specifies if type checking
                    should be done one the data received from the server.
                    Default is True.
                _host_index (int/None): specifies the index of the server
                    that we want to use.
                    Default is read from the configuration.
                async_req (bool): execute request asynchronously

            Returns:
                ProvisionPaaSDatabaseFromBookmarkResponse
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs['async_req'] = kwargs.get(
                'async_req', False
            )
            kwargs['_return_http_data_only'] = kwargs.get(
                '_return_http_data_only', True
            )
            kwargs['_preload_content'] = kwargs.get(
                '_preload_content', True
            )
            kwargs['_request_timeout'] = kwargs.get(
                '_request_timeout', None
            )
            kwargs['_check_input_type'] = kwargs.get(
                '_check_input_type', True
            )
            kwargs['_check_return_type'] = kwargs.get(
                '_check_return_type', True
            )
            kwargs['_host_index'] = kwargs.get('_host_index')
            kwargs['provision_paa_s_database_from_bookmark_parameters'] = \
                provision_paa_s_database_from_bookmark_parameters
            return self.call_with_http_info(**kwargs)

        self.provision_paas_database_from_bookmark = _Endpoint(
            settings={
                'response_type': (ProvisionPaaSDatabaseFromBookmarkResponse,),
                'auth': [
                    'ApiKeyAuth'
                ],
                'endpoint_path': '/paas-databases/provision_from_bookmark',
                'operation_id': 'provision_paas_database_from_bookmark',
                'http_method': 'POST',
                'servers': None,
            },
            params_map={
                'all': [
                    'provision_paa_s_database_from_bookmark_parameters',
                ],
                'required': [
                    'provision_paa_s_database_from_bookmark_parameters',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                ]
            },
            root_map={
                'validations': {
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'provision_paa_s_database_from_bookmark_parameters':
                        (ProvisionPaaSDatabaseFromBookmarkParameters,),
                },
                'attribute_map': {
                },
                'location_map': {
                    'provision_paa_s_database_from_bookmark_parameters': 'body',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [
                    'application/json'
                ]
            },
            api_client=api_client,
            callable=__provision_paas_database_from_bookmark
        )

        def __refresh_paas_database(
            self,
            paa_s_database_id,
            refresh_paa_s_database_parameters,
            **kwargs
        ):
            """Refresh a PaaS Database  # noqa: E501

            This method makes a synchronous HTTP request by default. To make an
            asynchronous HTTP request, please pass async_req=True

            >>> thread = api.refresh_paas_database(paa_s_database_id, refresh_paa_s_database_parameters, async_req=True)
            >>> result = thread.get()

            Args:
                paa_s_database_id (str): The ID of the PaaS Database.
                refresh_paa_s_database_parameters (RefreshPaaSDatabaseParameters): The parameters to refresh a PaaS Database.

            Keyword Args:
                _return_http_data_only (bool): response data without head status
                    code and headers. Default is True.
                _preload_content (bool): if False, the urllib3.HTTPResponse object
                    will be returned without reading/decoding response data.
                    Default is True.
                _request_timeout (int/float/tuple): timeout setting for this request. If
                    one number provided, it will be total request timeout. It can also
                    be a pair (tuple) of (connection, read) timeouts.
                    Default is None.
                _check_input_type (bool): specifies if type checking
                    should be done one the data sent to the server.
                    Default is True.
                _check_return_type (bool): specifies if type checking
                    should be done one the data received from the server.
                    Default is True.
                _host_index (int/None): specifies the index of the server
                    that we want to use.
                    Default is read from the configuration.
                async_req (bool): execute request asynchronously

            Returns:
                RefreshPaaSDatabasesResponse
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs['async_req'] = kwargs.get(
                'async_req', False
            )
            kwargs['_return_http_data_only'] = kwargs.get(
                '_return_http_data_only', True
            )
            kwargs['_preload_content'] = kwargs.get(
                '_preload_content', True
            )
            kwargs['_request_timeout'] = kwargs.get(
                '_request_timeout', None
            )
            kwargs['_check_input_type'] = kwargs.get(
                '_check_input_type', True
            )
            kwargs['_check_return_type'] = kwargs.get(
                '_check_return_type', True
            )
            kwargs['_host_index'] = kwargs.get('_host_index')
            kwargs['paa_s_database_id'] = \
                paa_s_database_id
            kwargs['refresh_paa_s_database_parameters'] = \
                refresh_paa_s_database_parameters
            return self.call_with_http_info(**kwargs)

        self.refresh_paas_database = _Endpoint(
            settings={
                'response_type': (RefreshPaaSDatabasesResponse,),
                'auth': [
                    'ApiKeyAuth'
                ],
                'endpoint_path': '/paas-databases/{paaSDatabaseId}/refresh',
                'operation_id': 'refresh_paas_database',
                'http_method': 'POST',
                'servers': None,
            },
            params_map={
                'all': [
                    'paa_s_database_id',
                    'refresh_paa_s_database_parameters',
                ],
                'required': [
                    'paa_s_database_id',
                    'refresh_paa_s_database_parameters',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                    'paa_s_database_id',
                ]
            },
            root_map={
                'validations': {
                    ('paa_s_database_id',): {

                        'min_length': 1,
                    },
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'paa_s_database_id':
                        (str,),
                    'refresh_paa_s_database_parameters':
                        (RefreshPaaSDatabaseParameters,),
                },
                'attribute_map': {
                    'paa_s_database_id': 'paaSDatabaseId',
                },
                'location_map': {
                    'paa_s_database_id': 'path',
                    'refresh_paa_s_database_parameters': 'body',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [
                    'application/json'
                ]
            },
            api_client=api_client,
            callable=__refresh_paas_database
        )

        def __refresh_paas_database_from_bookmark(
            self,
            paa_s_database_id,
            refresh_paa_s_database_from_bookmark_parameters,
            **kwargs
        ):
            """Refresh a PaaS Database from bookmark  # noqa: E501

            This method makes a synchronous HTTP request by default. To make an
            asynchronous HTTP request, please pass async_req=True

            >>> thread = api.refresh_paas_database_from_bookmark(paa_s_database_id, refresh_paa_s_database_from_bookmark_parameters, async_req=True)
            >>> result = thread.get()

            Args:
                paa_s_database_id (str): The ID of the PaaS Database.
                refresh_paa_s_database_from_bookmark_parameters (RefreshPaaSDatabaseFromBookmarkParameters): The parameters to refresh a PaaS Database from a bookmark.

            Keyword Args:
                _return_http_data_only (bool): response data without head status
                    code and headers. Default is True.
                _preload_content (bool): if False, the urllib3.HTTPResponse object
                    will be returned without reading/decoding response data.
                    Default is True.
                _request_timeout (int/float/tuple): timeout setting for this request. If
                    one number provided, it will be total request timeout. It can also
                    be a pair (tuple) of (connection, read) timeouts.
                    Default is None.
                _check_input_type (bool): specifies if type checking
                    should be done one the data sent to the server.
                    Default is True.
                _check_return_type (bool): specifies if type checking
                    should be done one the data received from the server.
                    Default is True.
                _host_index (int/None): specifies the index of the server
                    that we want to use.
                    Default is read from the configuration.
                async_req (bool): execute request asynchronously

            Returns:
                RefreshPaaSDatabasesFromBookmarkResponse
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs['async_req'] = kwargs.get(
                'async_req', False
            )
            kwargs['_return_http_data_only'] = kwargs.get(
                '_return_http_data_only', True
            )
            kwargs['_preload_content'] = kwargs.get(
                '_preload_content', True
            )
            kwargs['_request_timeout'] = kwargs.get(
                '_request_timeout', None
            )
            kwargs['_check_input_type'] = kwargs.get(
                '_check_input_type', True
            )
            kwargs['_check_return_type'] = kwargs.get(
                '_check_return_type', True
            )
            kwargs['_host_index'] = kwargs.get('_host_index')
            kwargs['paa_s_database_id'] = \
                paa_s_database_id
            kwargs['refresh_paa_s_database_from_bookmark_parameters'] = \
                refresh_paa_s_database_from_bookmark_parameters
            return self.call_with_http_info(**kwargs)

        self.refresh_paas_database_from_bookmark = _Endpoint(
            settings={
                'response_type': (RefreshPaaSDatabasesFromBookmarkResponse,),
                'auth': [
                    'ApiKeyAuth'
                ],
                'endpoint_path': '/paas-databases/{paaSDatabaseId}/refresh_from_bookmark',
                'operation_id': 'refresh_paas_database_from_bookmark',
                'http_method': 'POST',
                'servers': None,
            },
            params_map={
                'all': [
                    'paa_s_database_id',
                    'refresh_paa_s_database_from_bookmark_parameters',
                ],
                'required': [
                    'paa_s_database_id',
                    'refresh_paa_s_database_from_bookmark_parameters',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                    'paa_s_database_id',
                ]
            },
            root_map={
                'validations': {
                    ('paa_s_database_id',): {

                        'min_length': 1,
                    },
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'paa_s_database_id':
                        (str,),
                    'refresh_paa_s_database_from_bookmark_parameters':
                        (RefreshPaaSDatabaseFromBookmarkParameters,),
                },
                'attribute_map': {
                    'paa_s_database_id': 'paaSDatabaseId',
                },
                'location_map': {
                    'paa_s_database_id': 'path',
                    'refresh_paa_s_database_from_bookmark_parameters': 'body',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [
                    'application/json'
                ]
            },
            api_client=api_client,
            callable=__refresh_paas_database_from_bookmark
        )

        def __reprovision_paas_database(
            self,
            paa_s_database_id,
            re_provision_paa_s_database_parameters,
            **kwargs
        ):
            """Re-provision a PaaS Database which has previously been de-provisioned. The provision parameters specified at provisioning time will be respected, with the exception of the timestamp or snapshot id to re-provision from.  # noqa: E501

            This method makes a synchronous HTTP request by default. To make an
            asynchronous HTTP request, please pass async_req=True

            >>> thread = api.reprovision_paas_database(paa_s_database_id, re_provision_paa_s_database_parameters, async_req=True)
            >>> result = thread.get()

            Args:
                paa_s_database_id (str): The ID of the PaaS Database.
                re_provision_paa_s_database_parameters (ReProvisionPaaSDatabaseParameters): The parameters to re-provision a PaaS Database.

            Keyword Args:
                _return_http_data_only (bool): response data without head status
                    code and headers. Default is True.
                _preload_content (bool): if False, the urllib3.HTTPResponse object
                    will be returned without reading/decoding response data.
                    Default is True.
                _request_timeout (int/float/tuple): timeout setting for this request. If
                    one number provided, it will be total request timeout. It can also
                    be a pair (tuple) of (connection, read) timeouts.
                    Default is None.
                _check_input_type (bool): specifies if type checking
                    should be done one the data sent to the server.
                    Default is True.
                _check_return_type (bool): specifies if type checking
                    should be done one the data received from the server.
                    Default is True.
                _host_index (int/None): specifies the index of the server
                    that we want to use.
                    Default is read from the configuration.
                async_req (bool): execute request asynchronously

            Returns:
                ReprovisionPaaSDatabaseResponse
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs['async_req'] = kwargs.get(
                'async_req', False
            )
            kwargs['_return_http_data_only'] = kwargs.get(
                '_return_http_data_only', True
            )
            kwargs['_preload_content'] = kwargs.get(
                '_preload_content', True
            )
            kwargs['_request_timeout'] = kwargs.get(
                '_request_timeout', None
            )
            kwargs['_check_input_type'] = kwargs.get(
                '_check_input_type', True
            )
            kwargs['_check_return_type'] = kwargs.get(
                '_check_return_type', True
            )
            kwargs['_host_index'] = kwargs.get('_host_index')
            kwargs['paa_s_database_id'] = \
                paa_s_database_id
            kwargs['re_provision_paa_s_database_parameters'] = \
                re_provision_paa_s_database_parameters
            return self.call_with_http_info(**kwargs)

        self.reprovision_paas_database = _Endpoint(
            settings={
                'response_type': (ReprovisionPaaSDatabaseResponse,),
                'auth': [
                    'ApiKeyAuth'
                ],
                'endpoint_path': '/paas-databases/{paaSDatabaseId}/re-provision',
                'operation_id': 'reprovision_paas_database',
                'http_method': 'POST',
                'servers': None,
            },
            params_map={
                'all': [
                    'paa_s_database_id',
                    're_provision_paa_s_database_parameters',
                ],
                'required': [
                    'paa_s_database_id',
                    're_provision_paa_s_database_parameters',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                    'paa_s_database_id',
                ]
            },
            root_map={
                'validations': {
                    ('paa_s_database_id',): {

                        'min_length': 1,
                    },
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'paa_s_database_id':
                        (str,),
                    're_provision_paa_s_database_parameters':
                        (ReProvisionPaaSDatabaseParameters,),
                },
                'attribute_map': {
                    'paa_s_database_id': 'paaSDatabaseId',
                },
                'location_map': {
                    'paa_s_database_id': 'path',
                    're_provision_paa_s_database_parameters': 'body',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [
                    'application/json'
                ]
            },
            api_client=api_client,
            callable=__reprovision_paas_database
        )

        def __search_paas_databases(
            self,
            **kwargs
        ):
            """Search for PaaS Databases.  # noqa: E501

            This method makes a synchronous HTTP request by default. To make an
            asynchronous HTTP request, please pass async_req=True

            >>> thread = api.search_paas_databases(async_req=True)
            >>> result = thread.get()


            Keyword Args:
                limit (int): Maximum number of objects to return per query. The value must be between 1 and 1000. Default is 100.. [optional] if omitted the server will use the default value of 100
                cursor (str): Cursor to fetch the next or previous page of results. The value of this property must be extracted from the 'prev_cursor' or 'next_cursor' property of a PaginatedResponseMetadata which is contained in the response of list and search API endpoints.. [optional]
                sort (str, none_type): The field to sort results by. A property name with a prepended '-' signifies descending order. . [optional]
                permission ([PermissionEnum]): Restrict the objects, which are allowed.. [optional]
                search_body (SearchBody): A request body containing a filter expression. This enables searching for items matching arbitrarily complex conditions. The list of attributes which can be used in filter expressions is available in the x-filterable vendor extension.  # Filter Expression Overview **Note: All keywords are case-insensitive**  ## Comparison Operators | Operator | Description | Example | | --- | --- | --- | | CONTAINS | Substring or membership testing for string and list attributes respectively. | field3 CONTAINS 'foobar', field4 CONTAINS TRUE  | | IN | Tests if field is a member of a list literal. List can contain a maximum of 100 values | field2 IN ['Goku', 'Vegeta'] | | GE | Tests if a field is greater than or equal to a literal value | field1 GE 1.2e-2 | | GT | Tests if a field is greater than a literal value | field1 GT 1.2e-2 | | LE | Tests if a field is less than or equal to a literal value | field1 LE 9000 | | LT | Tests if a field is less than a literal value | field1 LT 9.02 | | NE | Tests if a field is not equal to a literal value | field1 NE 42 | | EQ | Tests if a field is equal to a literal value | field1 EQ 42 |  ## Search Operator The SEARCH operator filters for items which have any filterable attribute that contains the input string as a substring, comparison is done case-insensitively. This is not restricted to attributes with string values. Specifically `SEARCH '12'` would match an item with an attribute with an integer value of `123`.  ## Logical Operators Ordered by precedence. | Operator | Description | Example | | --- | --- | --- | | NOT | Logical NOT (Right associative) | NOT field1 LE 9000 | | AND | Logical AND (Left Associative) | field1 GT 9000 AND field2 EQ 'Goku' | | OR | Logical OR (Left Associative) | field1 GT 9000 OR field2 EQ 'Goku' |  ## Grouping Parenthesis `()` can be used to override operator precedence.  For example: NOT (field1 LT 1234 AND field2 CONTAINS 'foo')  ## Literal Values | Literal      | Description | Examples | | --- | --- | --- | | Nil | Represents the absence of a value | nil, Nil, nIl, NIL | | Boolean | true/false boolean | true, false, True, False, TRUE, FALSE | | Number | Signed integer and floating point numbers. Also supports scientific notation. | 0, 1, -1, 1.2, 0.35, 1.2e-2, -1.2e+2 | | String | Single or double quoted | \"foo\", \"bar\", \"foo bar\", 'foo', 'bar', 'foo bar' | | Datetime | Formatted according to [RFC3339](https://datatracker.ietf.org/doc/html/rfc3339) | 2018-04-27T18:39:26.397237+00:00 | | List | Comma-separated literals wrapped in square brackets | [0], [0, 1], ['foo', \"bar\"] |  ## Limitations - A maximum of 8 unique identifiers may be used inside a filter expression. . [optional]
                _return_http_data_only (bool): response data without head status
                    code and headers. Default is True.
                _preload_content (bool): if False, the urllib3.HTTPResponse object
                    will be returned without reading/decoding response data.
                    Default is True.
                _request_timeout (int/float/tuple): timeout setting for this request. If
                    one number provided, it will be total request timeout. It can also
                    be a pair (tuple) of (connection, read) timeouts.
                    Default is None.
                _check_input_type (bool): specifies if type checking
                    should be done one the data sent to the server.
                    Default is True.
                _check_return_type (bool): specifies if type checking
                    should be done one the data received from the server.
                    Default is True.
                _host_index (int/None): specifies the index of the server
                    that we want to use.
                    Default is read from the configuration.
                async_req (bool): execute request asynchronously

            Returns:
                SearchPaaSDatabasesResponse
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs['async_req'] = kwargs.get(
                'async_req', False
            )
            kwargs['_return_http_data_only'] = kwargs.get(
                '_return_http_data_only', True
            )
            kwargs['_preload_content'] = kwargs.get(
                '_preload_content', True
            )
            kwargs['_request_timeout'] = kwargs.get(
                '_request_timeout', None
            )
            kwargs['_check_input_type'] = kwargs.get(
                '_check_input_type', True
            )
            kwargs['_check_return_type'] = kwargs.get(
                '_check_return_type', True
            )
            kwargs['_host_index'] = kwargs.get('_host_index')
            return self.call_with_http_info(**kwargs)

        self.search_paas_databases = _Endpoint(
            settings={
                'response_type': (SearchPaaSDatabasesResponse,),
                'auth': [
                    'ApiKeyAuth'
                ],
                'endpoint_path': '/paas-databases/search',
                'operation_id': 'search_paas_databases',
                'http_method': 'POST',
                'servers': None,
            },
            params_map={
                'all': [
                    'limit',
                    'cursor',
                    'sort',
                    'permission',
                    'search_body',
                ],
                'required': [],
                'nullable': [
                    'sort',
                ],
                'enum': [
                    'sort',
                ],
                'validation': [
                    'limit',
                    'cursor',
                ]
            },
            root_map={
                'validations': {
                    ('limit',): {

                        'inclusive_maximum': 1000,
                        'inclusive_minimum': 1,
                    },
                    ('cursor',): {
                        'max_length': 4096,
                        'min_length': 1,
                    },
                },
                'allowed_values': {
                    ('sort',): {
                        'None': None,
                        "ID": "id",
                        "-ID": "-id",
                        "NAME": "name",
                        "-NAME": "-name",
                        "PLUGIN_ID": "plugin_id",
                        "-PLUGIN_ID": "-plugin_id",
                        "CLOUD_ACCOUNT_ID": "cloud_account_id",
                        "-CLOUD_ACCOUNT_ID": "-cloud_account_id",
                        "STATUS": "status",
                        "-STATUS": "-status",
                        "RUNTIME_STATUS": "runtime_status",
                        "-RUNTIME_STATUS": "-runtime_status",
                        "COMPLIANCE_CONNECTOR_ID": "compliance_connector_id",
                        "-COMPLIANCE_CONNECTOR_ID": "-compliance_connector_id",
                        "DATABASE_ENGINE": "database_engine",
                        "-DATABASE_ENGINE": "-database_engine",
                        "DATABASE_ENGINE_VERSION": "database_engine_version",
                        "-DATABASE_ENGINE_VERSION": "-database_engine_version",
                        "INSTANCE_ID": "instance_id",
                        "-INSTANCE_ID": "-instance_id",
                        "SIZE_BYTES": "size_bytes",
                        "-SIZE_BYTES": "-size_bytes",
                        "SIZE_MEASUREMENT_TIME": "size_measurement_time",
                        "-SIZE_MEASUREMENT_TIME": "-size_measurement_time",
                        "SIZE_MEASUREMENT_SOURCE": "size_measurement_source",
                        "-SIZE_MEASUREMENT_SOURCE": "-size_measurement_source",
                        "ROOT_DATABASE_ID": "root_database_id",
                        "-ROOT_DATABASE_ID": "-root_database_id"
                    },
                },
                'openapi_types': {
                    'limit':
                        (int,),
                    'cursor':
                        (str,),
                    'sort':
                        (str, none_type,),
                    'permission':
                        ([PermissionEnum],),
                    'search_body':
                        (SearchBody,),
                },
                'attribute_map': {
                    'limit': 'limit',
                    'cursor': 'cursor',
                    'sort': 'sort',
                    'permission': 'permission',
                },
                'location_map': {
                    'limit': 'query',
                    'cursor': 'query',
                    'sort': 'query',
                    'permission': 'query',
                    'search_body': 'body',
                },
                'collection_format_map': {
                    'permission': 'multi',
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [
                    'application/json'
                ]
            },
            api_client=api_client,
            callable=__search_paas_databases
        )
