"""
    OFDB API

    OFDB API  # noqa: E501

    The version of the OpenAPI document: 2.1.0
    Contact: api@factset.com
    Generated by: https://openapi-generator.tech
"""


import re  # noqa: F401
import sys  # noqa: F401
from multiprocessing.pool import ApplyResult
import typing

from fds.sdk.OFDB.api_client import ApiClient, Endpoint as _Endpoint
from fds.sdk.OFDB.model_utils import (  # noqa: F401
    check_allowed_values,
    check_validations,
    date,
    datetime,
    file_type,
    none_type,
    validate_and_convert_types
)
from fds.sdk.OFDB.exceptions import ApiException
from fds.sdk.OFDB.model.inline_response202 import InlineResponse202
from fds.sdk.OFDB.model.inline_response400 import InlineResponse400
from fds.sdk.OFDB.model.inline_response403 import InlineResponse403
from fds.sdk.OFDB.model.success_post_response import SuccessPostResponse
from fds.sdk.OFDB.model.update_date import UpdateDate
from fds.sdk.OFDB.model.update_dates import UpdateDates
from fds.sdk.OFDB.model.update_symbol import UpdateSymbol
from fds.sdk.OFDB.model.update_symbols import UpdateSymbols





class UpdateApi(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

        self.update_date_endpoint = _Endpoint(
            settings={
                'response_type': (
                  { 201: (SuccessPostResponse,), 202: (InlineResponse202,), 400: (InlineResponse400,), 403: (InlineResponse403,), 404: (InlineResponse403,), 406: (InlineResponse403,), 413: (InlineResponse403,), 429: (InlineResponse403,),  },
                  None
                ),
                'auth': [
                    'FactSetApiKey',
                    'FactSetOAuth2'
                ],
                'endpoint_path': '/database/{path}/dates/{date}',
                'operation_id': 'update_date',
                'http_method': 'PUT',
                'servers': None,
            },
            params_map={
                'all': [
                    'path',
                    'date',
                    'update_date',
                ],
                'required': [
                    'path',
                    'date',
                    'update_date',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                ]
            },
            root_map={
                'validations': {
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'path':
                        (str,),
                    'date':
                        (int,),
                    'update_date':
                        (UpdateDate,),
                },
                'attribute_map': {
                    'path': 'path',
                    'date': 'date',
                },
                'location_map': {
                    'path': 'path',
                    'date': 'path',
                    'update_date': 'body',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [
                    'application/json'
                ]
            },
            api_client=api_client
        )

        self.update_dates_endpoint = _Endpoint(
            settings={
                'response_type': (
                  { 201: (SuccessPostResponse,), 202: (InlineResponse202,), 400: (InlineResponse400,), 403: (InlineResponse403,), 404: (InlineResponse403,), 406: (InlineResponse403,), 413: (InlineResponse403,), 429: (InlineResponse403,),  },
                  None
                ),
                'auth': [
                    'FactSetApiKey',
                    'FactSetOAuth2'
                ],
                'endpoint_path': '/database/{path}/dates',
                'operation_id': 'update_dates',
                'http_method': 'PUT',
                'servers': None,
            },
            params_map={
                'all': [
                    'path',
                    'update_dates',
                ],
                'required': [
                    'path',
                    'update_dates',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                ]
            },
            root_map={
                'validations': {
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'path':
                        (str,),
                    'update_dates':
                        (UpdateDates,),
                },
                'attribute_map': {
                    'path': 'path',
                },
                'location_map': {
                    'path': 'path',
                    'update_dates': 'body',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [
                    'application/json'
                ]
            },
            api_client=api_client
        )

        self.update_symbol_endpoint = _Endpoint(
            settings={
                'response_type': (
                  { 201: (SuccessPostResponse,), 202: (InlineResponse202,), 400: (InlineResponse400,), 403: (InlineResponse403,), 404: (InlineResponse403,), 406: (InlineResponse403,), 413: (InlineResponse403,), 429: (InlineResponse403,),  },
                  None
                ),
                'auth': [
                    'FactSetApiKey',
                    'FactSetOAuth2'
                ],
                'endpoint_path': '/database/{path}/symbols/{symbol}',
                'operation_id': 'update_symbol',
                'http_method': 'PUT',
                'servers': None,
            },
            params_map={
                'all': [
                    'path',
                    'symbol',
                    'update_symbol',
                ],
                'required': [
                    'path',
                    'symbol',
                    'update_symbol',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                ]
            },
            root_map={
                'validations': {
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'path':
                        (str,),
                    'symbol':
                        (str,),
                    'update_symbol':
                        (UpdateSymbol,),
                },
                'attribute_map': {
                    'path': 'path',
                    'symbol': 'symbol',
                },
                'location_map': {
                    'path': 'path',
                    'symbol': 'path',
                    'update_symbol': 'body',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [
                    'application/json'
                ]
            },
            api_client=api_client
        )

        self.update_symbols_endpoint = _Endpoint(
            settings={
                'response_type': (
                  { 201: (SuccessPostResponse,), 202: (InlineResponse202,), 400: (InlineResponse400,), 403: (InlineResponse403,), 404: (InlineResponse403,), 406: (InlineResponse403,), 413: (InlineResponse403,), 429: (InlineResponse403,),  },
                  None
                ),
                'auth': [
                    'FactSetApiKey',
                    'FactSetOAuth2'
                ],
                'endpoint_path': '/database/{path}/symbols',
                'operation_id': 'update_symbols',
                'http_method': 'PUT',
                'servers': None,
            },
            params_map={
                'all': [
                    'path',
                    'update_symbols',
                ],
                'required': [
                    'path',
                    'update_symbols',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                ]
            },
            root_map={
                'validations': {
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'path':
                        (str,),
                    'update_symbols':
                        (UpdateSymbols,),
                },
                'attribute_map': {
                    'path': 'path',
                },
                'location_map': {
                    'path': 'path',
                    'update_symbols': 'body',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [
                    'application/json'
                ]
            },
            api_client=api_client
        )


    @staticmethod
    def apply_kwargs_defaults(kwargs, return_http_data_only, async_req):
        kwargs["async_req"] = async_req
        kwargs["_return_http_data_only"] = return_http_data_only
        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["_spec_property_naming"] = kwargs.get("_spec_property_naming", False)
        kwargs["_content_type"] = kwargs.get("_content_type")
        kwargs["_host_index"] = kwargs.get("_host_index")


    def update_date(
        self,
        path,
        date,
        update_date,
        **kwargs
    ) -> SuccessPostResponse:
        """update_date  # noqa: E501

        Updates an existing date field value for single/multiple symbols or adds a new date/symbol within a date if not present in 3d database(OFDB).  # noqa: E501
        This method makes a synchronous HTTP request. Returns the http data only

        Args:
            path (str): Encode database path
            date (int): Date in YYYYMMDD format
            update_date (UpdateDate): Required data for updating date in the database

        Keyword Args:
            _preload_content (bool): if False, the urllib3.HTTPResponse object
                will be returned without reading/decoding response data.
                Default is True. NOTE: if this API returns a file, it is the responsibility
                of the caller to close the file stream.
            _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.
            _spec_property_naming (bool): True if the variable names in the input data
                are serialized names, as specified in the OpenAPI document.
                False if the variable names in the input data
                are pythonic names, e.g. snake case (default)
            _content_type (str/None): force body content-type.
                Default is None and content-type will be predicted by allowed
                content-types and body.
            _host_index (int/None): specifies the index of the server
                that we want to use.
                Default is read from the configuration.
        Returns:
            SuccessPostResponse
                Response Object
        """
        self.apply_kwargs_defaults(kwargs=kwargs, return_http_data_only=True, async_req=False)
        kwargs['path'] = \
            path
        kwargs['date'] = \
            date
        kwargs['update_date'] = \
            update_date
        return self.update_date_endpoint.call_with_http_info(**kwargs)

    def update_date_with_http_info(
        self,
        path,
        date,
        update_date,
        **kwargs
    ) -> typing.Tuple[SuccessPostResponse, int, typing.MutableMapping]:
        """update_date  # noqa: E501

        Updates an existing date field value for single/multiple symbols or adds a new date/symbol within a date if not present in 3d database(OFDB).  # noqa: E501
        This method makes a synchronous HTTP request. Returns http data, http status and headers

        Args:
            path (str): Encode database path
            date (int): Date in YYYYMMDD format
            update_date (UpdateDate): Required data for updating date in the database

        Keyword Args:
            _preload_content (bool): if False, the urllib3.HTTPResponse object
                will be returned without reading/decoding response data.
                Default is True. NOTE: if this API returns a file, it is the responsibility
                of the caller to close the file stream.
            _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.
            _spec_property_naming (bool): True if the variable names in the input data
                are serialized names, as specified in the OpenAPI document.
                False if the variable names in the input data
                are pythonic names, e.g. snake case (default)
            _content_type (str/None): force body content-type.
                Default is None and content-type will be predicted by allowed
                content-types and body.
            _host_index (int/None): specifies the index of the server
                that we want to use.
                Default is read from the configuration.
        Returns:
            SuccessPostResponse
                Response Object
            int
                Http Status Code
            dict
                Dictionary of the response headers
        """
        self.apply_kwargs_defaults(kwargs=kwargs, return_http_data_only=False, async_req=False)
        kwargs['path'] = \
            path
        kwargs['date'] = \
            date
        kwargs['update_date'] = \
            update_date
        return self.update_date_endpoint.call_with_http_info(**kwargs)

    def update_date_async(
        self,
        path,
        date,
        update_date,
        **kwargs
    ) -> "ApplyResult[SuccessPostResponse]":
        """update_date  # noqa: E501

        Updates an existing date field value for single/multiple symbols or adds a new date/symbol within a date if not present in 3d database(OFDB).  # noqa: E501
        This method makes a asynchronous HTTP request. Returns the http data, wrapped in ApplyResult

        Args:
            path (str): Encode database path
            date (int): Date in YYYYMMDD format
            update_date (UpdateDate): Required data for updating date in the database

        Keyword Args:
            _preload_content (bool): if False, the urllib3.HTTPResponse object
                will be returned without reading/decoding response data.
                Default is True. NOTE: if this API returns a file, it is the responsibility
                of the caller to close the file stream.
            _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.
            _spec_property_naming (bool): True if the variable names in the input data
                are serialized names, as specified in the OpenAPI document.
                False if the variable names in the input data
                are pythonic names, e.g. snake case (default)
            _content_type (str/None): force body content-type.
                Default is None and content-type will be predicted by allowed
                content-types and body.
            _host_index (int/None): specifies the index of the server
                that we want to use.
                Default is read from the configuration.
        Returns:
            ApplyResult[SuccessPostResponse]
        """
        self.apply_kwargs_defaults(kwargs=kwargs, return_http_data_only=True, async_req=True)
        kwargs['path'] = \
            path
        kwargs['date'] = \
            date
        kwargs['update_date'] = \
            update_date
        return self.update_date_endpoint.call_with_http_info(**kwargs)

    def update_date_with_http_info_async(
        self,
        path,
        date,
        update_date,
        **kwargs
    ) -> "ApplyResult[typing.Tuple[SuccessPostResponse, int, typing.MutableMapping]]":
        """update_date  # noqa: E501

        Updates an existing date field value for single/multiple symbols or adds a new date/symbol within a date if not present in 3d database(OFDB).  # noqa: E501
        This method makes a asynchronous HTTP request. Returns http data, http status and headers, wrapped in ApplyResult

        Args:
            path (str): Encode database path
            date (int): Date in YYYYMMDD format
            update_date (UpdateDate): Required data for updating date in the database

        Keyword Args:
            _preload_content (bool): if False, the urllib3.HTTPResponse object
                will be returned without reading/decoding response data.
                Default is True. NOTE: if this API returns a file, it is the responsibility
                of the caller to close the file stream.
            _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.
            _spec_property_naming (bool): True if the variable names in the input data
                are serialized names, as specified in the OpenAPI document.
                False if the variable names in the input data
                are pythonic names, e.g. snake case (default)
            _content_type (str/None): force body content-type.
                Default is None and content-type will be predicted by allowed
                content-types and body.
            _host_index (int/None): specifies the index of the server
                that we want to use.
                Default is read from the configuration.
        Returns:
            ApplyResult[(SuccessPostResponse, int, typing.Dict)]
        """
        self.apply_kwargs_defaults(kwargs=kwargs, return_http_data_only=False, async_req=True)
        kwargs['path'] = \
            path
        kwargs['date'] = \
            date
        kwargs['update_date'] = \
            update_date
        return self.update_date_endpoint.call_with_http_info(**kwargs)


    def update_dates(
        self,
        path,
        update_dates,
        **kwargs
    ) -> SuccessPostResponse:
        """update_dates  # noqa: E501

        Updates existing dates for single/multiple symbols or adds a new date/symbol within a date if not present in 3d database(OFDB).  # noqa: E501
        This method makes a synchronous HTTP request. Returns the http data only

        Args:
            path (str): Encode database path
            update_dates (UpdateDates): Required data for updating date in the database

        Keyword Args:
            _preload_content (bool): if False, the urllib3.HTTPResponse object
                will be returned without reading/decoding response data.
                Default is True. NOTE: if this API returns a file, it is the responsibility
                of the caller to close the file stream.
            _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.
            _spec_property_naming (bool): True if the variable names in the input data
                are serialized names, as specified in the OpenAPI document.
                False if the variable names in the input data
                are pythonic names, e.g. snake case (default)
            _content_type (str/None): force body content-type.
                Default is None and content-type will be predicted by allowed
                content-types and body.
            _host_index (int/None): specifies the index of the server
                that we want to use.
                Default is read from the configuration.
        Returns:
            SuccessPostResponse
                Response Object
        """
        self.apply_kwargs_defaults(kwargs=kwargs, return_http_data_only=True, async_req=False)
        kwargs['path'] = \
            path
        kwargs['update_dates'] = \
            update_dates
        return self.update_dates_endpoint.call_with_http_info(**kwargs)

    def update_dates_with_http_info(
        self,
        path,
        update_dates,
        **kwargs
    ) -> typing.Tuple[SuccessPostResponse, int, typing.MutableMapping]:
        """update_dates  # noqa: E501

        Updates existing dates for single/multiple symbols or adds a new date/symbol within a date if not present in 3d database(OFDB).  # noqa: E501
        This method makes a synchronous HTTP request. Returns http data, http status and headers

        Args:
            path (str): Encode database path
            update_dates (UpdateDates): Required data for updating date in the database

        Keyword Args:
            _preload_content (bool): if False, the urllib3.HTTPResponse object
                will be returned without reading/decoding response data.
                Default is True. NOTE: if this API returns a file, it is the responsibility
                of the caller to close the file stream.
            _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.
            _spec_property_naming (bool): True if the variable names in the input data
                are serialized names, as specified in the OpenAPI document.
                False if the variable names in the input data
                are pythonic names, e.g. snake case (default)
            _content_type (str/None): force body content-type.
                Default is None and content-type will be predicted by allowed
                content-types and body.
            _host_index (int/None): specifies the index of the server
                that we want to use.
                Default is read from the configuration.
        Returns:
            SuccessPostResponse
                Response Object
            int
                Http Status Code
            dict
                Dictionary of the response headers
        """
        self.apply_kwargs_defaults(kwargs=kwargs, return_http_data_only=False, async_req=False)
        kwargs['path'] = \
            path
        kwargs['update_dates'] = \
            update_dates
        return self.update_dates_endpoint.call_with_http_info(**kwargs)

    def update_dates_async(
        self,
        path,
        update_dates,
        **kwargs
    ) -> "ApplyResult[SuccessPostResponse]":
        """update_dates  # noqa: E501

        Updates existing dates for single/multiple symbols or adds a new date/symbol within a date if not present in 3d database(OFDB).  # noqa: E501
        This method makes a asynchronous HTTP request. Returns the http data, wrapped in ApplyResult

        Args:
            path (str): Encode database path
            update_dates (UpdateDates): Required data for updating date in the database

        Keyword Args:
            _preload_content (bool): if False, the urllib3.HTTPResponse object
                will be returned without reading/decoding response data.
                Default is True. NOTE: if this API returns a file, it is the responsibility
                of the caller to close the file stream.
            _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.
            _spec_property_naming (bool): True if the variable names in the input data
                are serialized names, as specified in the OpenAPI document.
                False if the variable names in the input data
                are pythonic names, e.g. snake case (default)
            _content_type (str/None): force body content-type.
                Default is None and content-type will be predicted by allowed
                content-types and body.
            _host_index (int/None): specifies the index of the server
                that we want to use.
                Default is read from the configuration.
        Returns:
            ApplyResult[SuccessPostResponse]
        """
        self.apply_kwargs_defaults(kwargs=kwargs, return_http_data_only=True, async_req=True)
        kwargs['path'] = \
            path
        kwargs['update_dates'] = \
            update_dates
        return self.update_dates_endpoint.call_with_http_info(**kwargs)

    def update_dates_with_http_info_async(
        self,
        path,
        update_dates,
        **kwargs
    ) -> "ApplyResult[typing.Tuple[SuccessPostResponse, int, typing.MutableMapping]]":
        """update_dates  # noqa: E501

        Updates existing dates for single/multiple symbols or adds a new date/symbol within a date if not present in 3d database(OFDB).  # noqa: E501
        This method makes a asynchronous HTTP request. Returns http data, http status and headers, wrapped in ApplyResult

        Args:
            path (str): Encode database path
            update_dates (UpdateDates): Required data for updating date in the database

        Keyword Args:
            _preload_content (bool): if False, the urllib3.HTTPResponse object
                will be returned without reading/decoding response data.
                Default is True. NOTE: if this API returns a file, it is the responsibility
                of the caller to close the file stream.
            _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.
            _spec_property_naming (bool): True if the variable names in the input data
                are serialized names, as specified in the OpenAPI document.
                False if the variable names in the input data
                are pythonic names, e.g. snake case (default)
            _content_type (str/None): force body content-type.
                Default is None and content-type will be predicted by allowed
                content-types and body.
            _host_index (int/None): specifies the index of the server
                that we want to use.
                Default is read from the configuration.
        Returns:
            ApplyResult[(SuccessPostResponse, int, typing.Dict)]
        """
        self.apply_kwargs_defaults(kwargs=kwargs, return_http_data_only=False, async_req=True)
        kwargs['path'] = \
            path
        kwargs['update_dates'] = \
            update_dates
        return self.update_dates_endpoint.call_with_http_info(**kwargs)


    def update_symbol(
        self,
        path,
        symbol,
        update_symbol,
        **kwargs
    ) -> SuccessPostResponse:
        """update_symbol  # noqa: E501

        Updates an existing symbol field value for single/multiple dates or adds a new symbol/date within a symbol if not present in 3d database(OFDB). Updates an existing symbol field value or adds a new symbol if not present in the 2d database(OFDB)  # noqa: E501
        This method makes a synchronous HTTP request. Returns the http data only

        Args:
            path (str): Encode database path
            symbol (str): Symbol with in the ofdb
            update_symbol (UpdateSymbol): Data for updating symbol in the database

        Keyword Args:
            _preload_content (bool): if False, the urllib3.HTTPResponse object
                will be returned without reading/decoding response data.
                Default is True. NOTE: if this API returns a file, it is the responsibility
                of the caller to close the file stream.
            _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.
            _spec_property_naming (bool): True if the variable names in the input data
                are serialized names, as specified in the OpenAPI document.
                False if the variable names in the input data
                are pythonic names, e.g. snake case (default)
            _content_type (str/None): force body content-type.
                Default is None and content-type will be predicted by allowed
                content-types and body.
            _host_index (int/None): specifies the index of the server
                that we want to use.
                Default is read from the configuration.
        Returns:
            SuccessPostResponse
                Response Object
        """
        self.apply_kwargs_defaults(kwargs=kwargs, return_http_data_only=True, async_req=False)
        kwargs['path'] = \
            path
        kwargs['symbol'] = \
            symbol
        kwargs['update_symbol'] = \
            update_symbol
        return self.update_symbol_endpoint.call_with_http_info(**kwargs)

    def update_symbol_with_http_info(
        self,
        path,
        symbol,
        update_symbol,
        **kwargs
    ) -> typing.Tuple[SuccessPostResponse, int, typing.MutableMapping]:
        """update_symbol  # noqa: E501

        Updates an existing symbol field value for single/multiple dates or adds a new symbol/date within a symbol if not present in 3d database(OFDB). Updates an existing symbol field value or adds a new symbol if not present in the 2d database(OFDB)  # noqa: E501
        This method makes a synchronous HTTP request. Returns http data, http status and headers

        Args:
            path (str): Encode database path
            symbol (str): Symbol with in the ofdb
            update_symbol (UpdateSymbol): Data for updating symbol in the database

        Keyword Args:
            _preload_content (bool): if False, the urllib3.HTTPResponse object
                will be returned without reading/decoding response data.
                Default is True. NOTE: if this API returns a file, it is the responsibility
                of the caller to close the file stream.
            _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.
            _spec_property_naming (bool): True if the variable names in the input data
                are serialized names, as specified in the OpenAPI document.
                False if the variable names in the input data
                are pythonic names, e.g. snake case (default)
            _content_type (str/None): force body content-type.
                Default is None and content-type will be predicted by allowed
                content-types and body.
            _host_index (int/None): specifies the index of the server
                that we want to use.
                Default is read from the configuration.
        Returns:
            SuccessPostResponse
                Response Object
            int
                Http Status Code
            dict
                Dictionary of the response headers
        """
        self.apply_kwargs_defaults(kwargs=kwargs, return_http_data_only=False, async_req=False)
        kwargs['path'] = \
            path
        kwargs['symbol'] = \
            symbol
        kwargs['update_symbol'] = \
            update_symbol
        return self.update_symbol_endpoint.call_with_http_info(**kwargs)

    def update_symbol_async(
        self,
        path,
        symbol,
        update_symbol,
        **kwargs
    ) -> "ApplyResult[SuccessPostResponse]":
        """update_symbol  # noqa: E501

        Updates an existing symbol field value for single/multiple dates or adds a new symbol/date within a symbol if not present in 3d database(OFDB). Updates an existing symbol field value or adds a new symbol if not present in the 2d database(OFDB)  # noqa: E501
        This method makes a asynchronous HTTP request. Returns the http data, wrapped in ApplyResult

        Args:
            path (str): Encode database path
            symbol (str): Symbol with in the ofdb
            update_symbol (UpdateSymbol): Data for updating symbol in the database

        Keyword Args:
            _preload_content (bool): if False, the urllib3.HTTPResponse object
                will be returned without reading/decoding response data.
                Default is True. NOTE: if this API returns a file, it is the responsibility
                of the caller to close the file stream.
            _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.
            _spec_property_naming (bool): True if the variable names in the input data
                are serialized names, as specified in the OpenAPI document.
                False if the variable names in the input data
                are pythonic names, e.g. snake case (default)
            _content_type (str/None): force body content-type.
                Default is None and content-type will be predicted by allowed
                content-types and body.
            _host_index (int/None): specifies the index of the server
                that we want to use.
                Default is read from the configuration.
        Returns:
            ApplyResult[SuccessPostResponse]
        """
        self.apply_kwargs_defaults(kwargs=kwargs, return_http_data_only=True, async_req=True)
        kwargs['path'] = \
            path
        kwargs['symbol'] = \
            symbol
        kwargs['update_symbol'] = \
            update_symbol
        return self.update_symbol_endpoint.call_with_http_info(**kwargs)

    def update_symbol_with_http_info_async(
        self,
        path,
        symbol,
        update_symbol,
        **kwargs
    ) -> "ApplyResult[typing.Tuple[SuccessPostResponse, int, typing.MutableMapping]]":
        """update_symbol  # noqa: E501

        Updates an existing symbol field value for single/multiple dates or adds a new symbol/date within a symbol if not present in 3d database(OFDB). Updates an existing symbol field value or adds a new symbol if not present in the 2d database(OFDB)  # noqa: E501
        This method makes a asynchronous HTTP request. Returns http data, http status and headers, wrapped in ApplyResult

        Args:
            path (str): Encode database path
            symbol (str): Symbol with in the ofdb
            update_symbol (UpdateSymbol): Data for updating symbol in the database

        Keyword Args:
            _preload_content (bool): if False, the urllib3.HTTPResponse object
                will be returned without reading/decoding response data.
                Default is True. NOTE: if this API returns a file, it is the responsibility
                of the caller to close the file stream.
            _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.
            _spec_property_naming (bool): True if the variable names in the input data
                are serialized names, as specified in the OpenAPI document.
                False if the variable names in the input data
                are pythonic names, e.g. snake case (default)
            _content_type (str/None): force body content-type.
                Default is None and content-type will be predicted by allowed
                content-types and body.
            _host_index (int/None): specifies the index of the server
                that we want to use.
                Default is read from the configuration.
        Returns:
            ApplyResult[(SuccessPostResponse, int, typing.Dict)]
        """
        self.apply_kwargs_defaults(kwargs=kwargs, return_http_data_only=False, async_req=True)
        kwargs['path'] = \
            path
        kwargs['symbol'] = \
            symbol
        kwargs['update_symbol'] = \
            update_symbol
        return self.update_symbol_endpoint.call_with_http_info(**kwargs)


    def update_symbols(
        self,
        path,
        update_symbols,
        **kwargs
    ) -> SuccessPostResponse:
        """update_symbols  # noqa: E501

        Updates existing symbols for single/multiple dates or adds a new symbol/date within a symbol if not present in 3d database(OFDB). Updates an existing symbol field value or adds a new symbol if not present in the 2d database(OFDB)  # noqa: E501
        This method makes a synchronous HTTP request. Returns the http data only

        Args:
            path (str): Encode database path
            update_symbols (UpdateSymbols): Data for updating symbol in the database

        Keyword Args:
            _preload_content (bool): if False, the urllib3.HTTPResponse object
                will be returned without reading/decoding response data.
                Default is True. NOTE: if this API returns a file, it is the responsibility
                of the caller to close the file stream.
            _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.
            _spec_property_naming (bool): True if the variable names in the input data
                are serialized names, as specified in the OpenAPI document.
                False if the variable names in the input data
                are pythonic names, e.g. snake case (default)
            _content_type (str/None): force body content-type.
                Default is None and content-type will be predicted by allowed
                content-types and body.
            _host_index (int/None): specifies the index of the server
                that we want to use.
                Default is read from the configuration.
        Returns:
            SuccessPostResponse
                Response Object
        """
        self.apply_kwargs_defaults(kwargs=kwargs, return_http_data_only=True, async_req=False)
        kwargs['path'] = \
            path
        kwargs['update_symbols'] = \
            update_symbols
        return self.update_symbols_endpoint.call_with_http_info(**kwargs)

    def update_symbols_with_http_info(
        self,
        path,
        update_symbols,
        **kwargs
    ) -> typing.Tuple[SuccessPostResponse, int, typing.MutableMapping]:
        """update_symbols  # noqa: E501

        Updates existing symbols for single/multiple dates or adds a new symbol/date within a symbol if not present in 3d database(OFDB). Updates an existing symbol field value or adds a new symbol if not present in the 2d database(OFDB)  # noqa: E501
        This method makes a synchronous HTTP request. Returns http data, http status and headers

        Args:
            path (str): Encode database path
            update_symbols (UpdateSymbols): Data for updating symbol in the database

        Keyword Args:
            _preload_content (bool): if False, the urllib3.HTTPResponse object
                will be returned without reading/decoding response data.
                Default is True. NOTE: if this API returns a file, it is the responsibility
                of the caller to close the file stream.
            _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.
            _spec_property_naming (bool): True if the variable names in the input data
                are serialized names, as specified in the OpenAPI document.
                False if the variable names in the input data
                are pythonic names, e.g. snake case (default)
            _content_type (str/None): force body content-type.
                Default is None and content-type will be predicted by allowed
                content-types and body.
            _host_index (int/None): specifies the index of the server
                that we want to use.
                Default is read from the configuration.
        Returns:
            SuccessPostResponse
                Response Object
            int
                Http Status Code
            dict
                Dictionary of the response headers
        """
        self.apply_kwargs_defaults(kwargs=kwargs, return_http_data_only=False, async_req=False)
        kwargs['path'] = \
            path
        kwargs['update_symbols'] = \
            update_symbols
        return self.update_symbols_endpoint.call_with_http_info(**kwargs)

    def update_symbols_async(
        self,
        path,
        update_symbols,
        **kwargs
    ) -> "ApplyResult[SuccessPostResponse]":
        """update_symbols  # noqa: E501

        Updates existing symbols for single/multiple dates or adds a new symbol/date within a symbol if not present in 3d database(OFDB). Updates an existing symbol field value or adds a new symbol if not present in the 2d database(OFDB)  # noqa: E501
        This method makes a asynchronous HTTP request. Returns the http data, wrapped in ApplyResult

        Args:
            path (str): Encode database path
            update_symbols (UpdateSymbols): Data for updating symbol in the database

        Keyword Args:
            _preload_content (bool): if False, the urllib3.HTTPResponse object
                will be returned without reading/decoding response data.
                Default is True. NOTE: if this API returns a file, it is the responsibility
                of the caller to close the file stream.
            _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.
            _spec_property_naming (bool): True if the variable names in the input data
                are serialized names, as specified in the OpenAPI document.
                False if the variable names in the input data
                are pythonic names, e.g. snake case (default)
            _content_type (str/None): force body content-type.
                Default is None and content-type will be predicted by allowed
                content-types and body.
            _host_index (int/None): specifies the index of the server
                that we want to use.
                Default is read from the configuration.
        Returns:
            ApplyResult[SuccessPostResponse]
        """
        self.apply_kwargs_defaults(kwargs=kwargs, return_http_data_only=True, async_req=True)
        kwargs['path'] = \
            path
        kwargs['update_symbols'] = \
            update_symbols
        return self.update_symbols_endpoint.call_with_http_info(**kwargs)

    def update_symbols_with_http_info_async(
        self,
        path,
        update_symbols,
        **kwargs
    ) -> "ApplyResult[typing.Tuple[SuccessPostResponse, int, typing.MutableMapping]]":
        """update_symbols  # noqa: E501

        Updates existing symbols for single/multiple dates or adds a new symbol/date within a symbol if not present in 3d database(OFDB). Updates an existing symbol field value or adds a new symbol if not present in the 2d database(OFDB)  # noqa: E501
        This method makes a asynchronous HTTP request. Returns http data, http status and headers, wrapped in ApplyResult

        Args:
            path (str): Encode database path
            update_symbols (UpdateSymbols): Data for updating symbol in the database

        Keyword Args:
            _preload_content (bool): if False, the urllib3.HTTPResponse object
                will be returned without reading/decoding response data.
                Default is True. NOTE: if this API returns a file, it is the responsibility
                of the caller to close the file stream.
            _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.
            _spec_property_naming (bool): True if the variable names in the input data
                are serialized names, as specified in the OpenAPI document.
                False if the variable names in the input data
                are pythonic names, e.g. snake case (default)
            _content_type (str/None): force body content-type.
                Default is None and content-type will be predicted by allowed
                content-types and body.
            _host_index (int/None): specifies the index of the server
                that we want to use.
                Default is read from the configuration.
        Returns:
            ApplyResult[(SuccessPostResponse, int, typing.Dict)]
        """
        self.apply_kwargs_defaults(kwargs=kwargs, return_http_data_only=False, async_req=True)
        kwargs['path'] = \
            path
        kwargs['update_symbols'] = \
            update_symbols
        return self.update_symbols_endpoint.call_with_http_info(**kwargs)


