# coding: utf-8

"""
    Insights.Api

    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)  # noqa: E501

    OpenAPI spec version: 1.0
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

from __future__ import absolute_import

import re  # noqa: F401

# python 2 and python 3 compatibility library
import six

from elexonpy.api_client import ApiClient


class DatasetsApi(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    Ref: https://github.com/swagger-api/swagger-codegen
    """

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

    def datasets_abuc_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Amount Of Balancing Reserves Under Contract (ABUC / B1720)  # noqa: E501

        This endpoint provides amount of balancing reserves under contract data.    This API endpoint has a maximum range of 2 years (731 days).  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_abuc_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsAbucDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_abuc_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_abuc_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_abuc_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Amount Of Balancing Reserves Under Contract (ABUC / B1720)  # noqa: E501

        This endpoint provides amount of balancing reserves under contract data.    This API endpoint has a maximum range of 2 years (731 days).  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_abuc_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsAbucDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_abuc_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_abuc_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_abuc_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/ABUC', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsAbucDatasetRow',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_abuc_stream_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Amount Of Balancing Reserves Under Contract (ABUC / B1720) stream  # noqa: E501

        This endpoint provides amount of balancing reserves under contract data.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_abuc_stream_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsAbucDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_abuc_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_abuc_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_abuc_stream_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Amount Of Balancing Reserves Under Contract (ABUC / B1720) stream  # noqa: E501

        This endpoint provides amount of balancing reserves under contract data.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_abuc_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsAbucDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_abuc_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_abuc_stream_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_abuc_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/ABUC/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesTransparencyDatasetRowsAbucDatasetRow]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_agpt_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Actual Aggregated Generation Per Type (AGPT / B1620)  # noqa: E501

        This endpoint provides actual generation data per settlement period aggregated by Power System Resource type (Fuel Type categories as defined by Commission Regulation (EU) No 543/2013).                This endpoint filters by publishTime and provides a maximum data output range of 4 days.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_agpt_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsActualAggregatedGenerationPerTypeDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_agpt_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_agpt_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_agpt_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Actual Aggregated Generation Per Type (AGPT / B1620)  # noqa: E501

        This endpoint provides actual generation data per settlement period aggregated by Power System Resource type (Fuel Type categories as defined by Commission Regulation (EU) No 543/2013).                This endpoint filters by publishTime and provides a maximum data output range of 4 days.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_agpt_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsActualAggregatedGenerationPerTypeDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_agpt_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_agpt_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_agpt_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/AGPT', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsActualAggregatedGenerationPerTypeDatasetRow',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_agpt_stream_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Actual Aggregated Generation Per Type (AGPT / B1620) stream  # noqa: E501

        This endpoint provides actual generation data per settlement period aggregated by Power System Resource type (Fuel Type categories as defined by Commission Regulation (EU) No 543/2013).                This endpoint filters by publishTime and has an optimised JSON payload aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_agpt_stream_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsActualAggregatedGenerationPerTypeDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_agpt_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_agpt_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_agpt_stream_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Actual Aggregated Generation Per Type (AGPT / B1620) stream  # noqa: E501

        This endpoint provides actual generation data per settlement period aggregated by Power System Resource type (Fuel Type categories as defined by Commission Regulation (EU) No 543/2013).                This endpoint filters by publishTime and has an optimised JSON payload aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_agpt_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsActualAggregatedGenerationPerTypeDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_agpt_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_agpt_stream_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_agpt_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/AGPT/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesTransparencyDatasetRowsActualAggregatedGenerationPerTypeDatasetRow]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_agws_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Actual Or Estimated Wind And Solar Power Generation (AGWS / B1630)  # noqa: E501

        This endpoint provides actual or estimated wind and solar power generation  per settlement period. It returns generation with Power System Resource type  Solar, Wind Onshore or Wind Offshore (Fuel Type categories as defined by  Commission Regulation (EU) No 543/2013).                This API endpoint provides a maximum data output range of 7 days.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_agws_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsActualGenerationWindSolarDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_agws_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_agws_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_agws_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Actual Or Estimated Wind And Solar Power Generation (AGWS / B1630)  # noqa: E501

        This endpoint provides actual or estimated wind and solar power generation  per settlement period. It returns generation with Power System Resource type  Solar, Wind Onshore or Wind Offshore (Fuel Type categories as defined by  Commission Regulation (EU) No 543/2013).                This API endpoint provides a maximum data output range of 7 days.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_agws_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsActualGenerationWindSolarDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_agws_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_agws_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_agws_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/AGWS', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsActualGenerationWindSolarDatasetRow',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_agws_stream_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Actual Or Estimated Wind And Solar Power Generation (AGWS / B1630) stream  # noqa: E501

        This endpoint provides actual or estimated wind and solar power generation  per settlement period. It returns generation with Power System Resource type  Solar, Wind Onshore or Wind Offshore (Fuel Type categories as defined by  Commission Regulation (EU) No 543/2013).                This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_agws_stream_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsActualGenerationWindSolarDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_agws_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_agws_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_agws_stream_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Actual Or Estimated Wind And Solar Power Generation (AGWS / B1630) stream  # noqa: E501

        This endpoint provides actual or estimated wind and solar power generation  per settlement period. It returns generation with Power System Resource type  Solar, Wind Onshore or Wind Offshore (Fuel Type categories as defined by  Commission Regulation (EU) No 543/2013).                This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_agws_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsActualGenerationWindSolarDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_agws_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_agws_stream_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_agws_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/AGWS/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesTransparencyDatasetRowsActualGenerationWindSolarDatasetRow]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_aobe_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Accepted Offered Balancing Energy (AOBE)  # noqa: E501

        This endpoint provides accepted offered balancing energy data.    This API endpoint has a maximum range of 7 days.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_aobe_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsAobeDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_aobe_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_aobe_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_aobe_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Accepted Offered Balancing Energy (AOBE)  # noqa: E501

        This endpoint provides accepted offered balancing energy data.    This API endpoint has a maximum range of 7 days.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_aobe_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsAobeDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_aobe_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_aobe_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_aobe_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/AOBE', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsAobeDatasetRow',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_aobe_stream_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Accepted Offered Balancing Energy (AOBE) stream  # noqa: E501

        This endpoint provides accepted offered balancing energy data.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_aobe_stream_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsAobeDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_aobe_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_aobe_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_aobe_stream_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Accepted Offered Balancing Energy (AOBE) stream  # noqa: E501

        This endpoint provides accepted offered balancing energy data.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_aobe_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsAobeDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_aobe_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_aobe_stream_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_aobe_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/AOBE/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesTransparencyDatasetRowsAobeDatasetRow]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_atl_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Actual Total Load Per Bidding Zone (ATL / B0610)  # noqa: E501

        This endpoint provides actual total load per bidding zone data.    This API endpoint provides a maximum data output range of 7 days.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_atl_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsActualTotalLoadPerBiddingZoneDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_atl_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_atl_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_atl_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Actual Total Load Per Bidding Zone (ATL / B0610)  # noqa: E501

        This endpoint provides actual total load per bidding zone data.    This API endpoint provides a maximum data output range of 7 days.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_atl_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsActualTotalLoadPerBiddingZoneDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_atl_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_atl_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_atl_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/ATL', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsActualTotalLoadPerBiddingZoneDatasetRow',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_atl_stream_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Actual Total Load Per Bidding Zone (ATL / B0610) stream  # noqa: E501

        This endpoint provides actual total load per bidding zone data.                This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_atl_stream_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsActualTotalLoadPerBiddingZoneDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_atl_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_atl_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_atl_stream_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Actual Total Load Per Bidding Zone (ATL / B0610) stream  # noqa: E501

        This endpoint provides actual total load per bidding zone data.                This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_atl_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsActualTotalLoadPerBiddingZoneDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_atl_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_atl_stream_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_atl_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/ATL/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesTransparencyDatasetRowsActualTotalLoadPerBiddingZoneDatasetRow]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_b1610_get(self, settlement_date, settlement_period, **kwargs):  # noqa: E501
        """Actual Generation Output Per Generation Unit (B1610)  # noqa: E501

        This endpoint provides the actual metered volume output (MWh) per Settlement Period for all BM units (Positive, Negative or zero MWh values).                The settlement period to query must be specified as a date and settlement period. The date must be given in the format yyyy-MM-dd.                The information is published five days after the end of the operational period based on the Interim Information (II) Settlement Run and the data is refreshed by subsequent Settlement Runs.                The generation output returned by this endpoint is the metered volume and not the instantaneous power output as often appears in other specifications.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_b1610_get(settlement_date, settlement_period, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param date settlement_date: (required)
        :param int settlement_period: (required)
        :param list[str] bm_unit:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsActualGenerationOutputPerGenerationUnitDatasetResponse
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_b1610_get_with_http_info(settlement_date, settlement_period, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_b1610_get_with_http_info(settlement_date, settlement_period, **kwargs)  # noqa: E501
            return data

    def datasets_b1610_get_with_http_info(self, settlement_date, settlement_period, **kwargs):  # noqa: E501
        """Actual Generation Output Per Generation Unit (B1610)  # noqa: E501

        This endpoint provides the actual metered volume output (MWh) per Settlement Period for all BM units (Positive, Negative or zero MWh values).                The settlement period to query must be specified as a date and settlement period. The date must be given in the format yyyy-MM-dd.                The information is published five days after the end of the operational period based on the Interim Information (II) Settlement Run and the data is refreshed by subsequent Settlement Runs.                The generation output returned by this endpoint is the metered volume and not the instantaneous power output as often appears in other specifications.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_b1610_get_with_http_info(settlement_date, settlement_period, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param date settlement_date: (required)
        :param int settlement_period: (required)
        :param list[str] bm_unit:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsActualGenerationOutputPerGenerationUnitDatasetResponse
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['settlement_date', 'settlement_period', 'bm_unit', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_b1610_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'settlement_date' is set
        if ('settlement_date' not in params or
                params['settlement_date'] is None):
            raise ValueError("Missing the required parameter `settlement_date` when calling `datasets_b1610_get`")  # noqa: E501
        # verify the required parameter 'settlement_period' is set
        if ('settlement_period' not in params or
                params['settlement_period'] is None):
            raise ValueError("Missing the required parameter `settlement_period` when calling `datasets_b1610_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'settlement_date' in params:
            query_params.append(('settlementDate', params['settlement_date']))  # noqa: E501
        if 'settlement_period' in params:
            query_params.append(('settlementPeriod', params['settlement_period']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/B1610', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsActualGenerationOutputPerGenerationUnitDatasetResponse',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_b1610_stream_get(self, _from, to, **kwargs):  # noqa: E501
        """Actual Generation Output Per Generation Unit (B1610) stream  # noqa: E501

        This endpoint provides the actual metered volume output (MWh) per Settlement Period for all BM units (Positive, Negative or zero MWh values).                The information is published five days after the end of the operational period based on the Interim Information (II) Settlement Run and the data is refreshed by subsequent Settlement Runs.                The generation output returned by this endpoint is the metered volume and not the instantaneous power output as often appears in other specifications.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_b1610_stream_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit:
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsActualGenerationOutputPerGenerationUnitDatasetResponse]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_b1610_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_b1610_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_b1610_stream_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Actual Generation Output Per Generation Unit (B1610) stream  # noqa: E501

        This endpoint provides the actual metered volume output (MWh) per Settlement Period for all BM units (Positive, Negative or zero MWh values).                The information is published five days after the end of the operational period based on the Interim Information (II) Settlement Run and the data is refreshed by subsequent Settlement Runs.                The generation output returned by this endpoint is the metered volume and not the instantaneous power output as often appears in other specifications.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_b1610_stream_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit:
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsActualGenerationOutputPerGenerationUnitDatasetResponse]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_b1610_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_b1610_stream_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_b1610_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/B1610/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesTransparencyDatasetRowsActualGenerationOutputPerGenerationUnitDatasetResponse]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_beb_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Balancing Energy Bids (BEB)  # noqa: E501

        This endpoint provides information on all balancing energy bids, in accordance with the Electricity Balancing Guidelines (EBGL) article 12.3.b.    This API endpoint has a maximum range of 7 days.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_beb_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsBebDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_beb_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_beb_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_beb_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Balancing Energy Bids (BEB)  # noqa: E501

        This endpoint provides information on all balancing energy bids, in accordance with the Electricity Balancing Guidelines (EBGL) article 12.3.b.    This API endpoint has a maximum range of 7 days.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_beb_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsBebDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_beb_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_beb_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_beb_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/BEB', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsBebDatasetRow',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_beb_stream_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Balancing Energy Bids (BEB) stream  # noqa: E501

        This endpoint provides information on all balancing energy bids, in accordance with the Electricity Balancing Guidelines (EBGL) article 12.3.b.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_beb_stream_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsBebDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_beb_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_beb_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_beb_stream_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Balancing Energy Bids (BEB) stream  # noqa: E501

        This endpoint provides information on all balancing energy bids, in accordance with the Electricity Balancing Guidelines (EBGL) article 12.3.b.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_beb_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsBebDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_beb_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_beb_stream_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_beb_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/BEB/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesTransparencyDatasetRowsBebDatasetRow]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_boalf_get(self, _from, to, **kwargs):  # noqa: E501
        """Bid Offer Acceptance Level Flagged (BOALF)  # noqa: E501

        This endpoint provides bid offer acceptance data.                By default, the from and to parameters filter the data inclusively and this endpoint will return any data where  TimeFrom is within the requested time range. If the settlementPeriodFrom or settlementPeriodTo parameters are  provided, it will instead filter to return any data where TimeFrom is within the specified range of settlement  periods. It is possible to search using a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored.  For example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from datetime to datetime                    /datasets/boalf?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from datetime to settlement date and period:                    /datasets/boalf?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to datetime:                    /datasets/boalf?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/boalf?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_boalf_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDatasetRowsBidOfferAcceptanceLevelDatasetResponse
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_boalf_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_boalf_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_boalf_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Bid Offer Acceptance Level Flagged (BOALF)  # noqa: E501

        This endpoint provides bid offer acceptance data.                By default, the from and to parameters filter the data inclusively and this endpoint will return any data where  TimeFrom is within the requested time range. If the settlementPeriodFrom or settlementPeriodTo parameters are  provided, it will instead filter to return any data where TimeFrom is within the specified range of settlement  periods. It is possible to search using a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored.  For example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from datetime to datetime                    /datasets/boalf?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from datetime to settlement date and period:                    /datasets/boalf?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to datetime:                    /datasets/boalf?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/boalf?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_boalf_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDatasetRowsBidOfferAcceptanceLevelDatasetResponse
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_boalf_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_boalf_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_boalf_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/BOALF', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDatasetRowsBidOfferAcceptanceLevelDatasetResponse',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_boalf_stream_get(self, _from, to, **kwargs):  # noqa: E501
        """Bid Offer Acceptance Level Flagged (BOALF) stream  # noqa: E501

        This endpoint provides bid offer acceptance data.                By default, the from and to parameters filter the data inclusively and this endpoint will return any data where  TimeFrom is within the requested time range. If the settlementPeriodFrom or settlementPeriodTo parameters are  provided, it will instead filter to return any data where TimeFrom is within the specified range of settlement  periods. It is possible to search using a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored.  For example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from datetime to datetime                    /datasets/boalf/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from datetime to settlement date and period:                    /datasets/boalf/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to datetime:                    /datasets/boalf/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/boalf/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_boalf_stream_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDatasetRowsBidOfferAcceptanceLevelDatasetResponse]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_boalf_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_boalf_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_boalf_stream_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Bid Offer Acceptance Level Flagged (BOALF) stream  # noqa: E501

        This endpoint provides bid offer acceptance data.                By default, the from and to parameters filter the data inclusively and this endpoint will return any data where  TimeFrom is within the requested time range. If the settlementPeriodFrom or settlementPeriodTo parameters are  provided, it will instead filter to return any data where TimeFrom is within the specified range of settlement  periods. It is possible to search using a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored.  For example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from datetime to datetime                    /datasets/boalf/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from datetime to settlement date and period:                    /datasets/boalf/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to datetime:                    /datasets/boalf/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/boalf/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_boalf_stream_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDatasetRowsBidOfferAcceptanceLevelDatasetResponse]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_boalf_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_boalf_stream_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_boalf_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/BOALF/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesBalancingDatasetRowsBidOfferAcceptanceLevelDatasetResponse]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_bod_get(self, _from, to, **kwargs):  # noqa: E501
        """Bid Offer Data (BOD)  # noqa: E501

        This endpoint provides bid-offer data.                By default, the from and to parameters filter the data inclusively and this endpoint will return any data where  TimeFrom is within the requested time range. If the settlementPeriodFrom or settlementPeriodTo parameters are  provided, it will instead filter to return any data where TimeFrom is within the specified range of settlement  periods. It is possible to search using a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored.  For example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from a datetime to a datetime                    /datasets/bod?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from a datetime to a settlement date and period:                    /datasets/bod?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from a settlement date and period to a datetime:                    /datasets/bod?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from a settlement date and period to a settlement date and period:                    /datasets/bod?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_bod_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDatasetRowsBidOfferDatasetResponse
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_bod_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_bod_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_bod_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Bid Offer Data (BOD)  # noqa: E501

        This endpoint provides bid-offer data.                By default, the from and to parameters filter the data inclusively and this endpoint will return any data where  TimeFrom is within the requested time range. If the settlementPeriodFrom or settlementPeriodTo parameters are  provided, it will instead filter to return any data where TimeFrom is within the specified range of settlement  periods. It is possible to search using a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored.  For example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from a datetime to a datetime                    /datasets/bod?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from a datetime to a settlement date and period:                    /datasets/bod?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from a settlement date and period to a datetime:                    /datasets/bod?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from a settlement date and period to a settlement date and period:                    /datasets/bod?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_bod_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDatasetRowsBidOfferDatasetResponse
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_bod_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_bod_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_bod_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/BOD', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDatasetRowsBidOfferDatasetResponse',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_bod_stream_get(self, _from, to, **kwargs):  # noqa: E501
        """Bid-Offer Data (BOD) stream  # noqa: E501

        This endpoint provides bid-offer data.                By default, the from and to parameters filter the data inclusively and this endpoint will return any data where  TimeFrom is within the requested time range. If the settlementPeriodFrom or settlementPeriodTo parameters are  provided, it will instead filter to return any data where TimeFrom is within the specified range of settlement  periods. It is possible to search using a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored.  For example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from datetime to datetime                    /datasets/bod/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from datetime to settlement date and period:                    /datasets/bod/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to datetime:                    /datasets/bod/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/bod/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_bod_stream_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDatasetRowsBidOfferDatasetResponse]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_bod_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_bod_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_bod_stream_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Bid-Offer Data (BOD) stream  # noqa: E501

        This endpoint provides bid-offer data.                By default, the from and to parameters filter the data inclusively and this endpoint will return any data where  TimeFrom is within the requested time range. If the settlementPeriodFrom or settlementPeriodTo parameters are  provided, it will instead filter to return any data where TimeFrom is within the specified range of settlement  periods. It is possible to search using a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored.  For example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from datetime to datetime                    /datasets/bod/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from datetime to settlement date and period:                    /datasets/bod/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to datetime:                    /datasets/bod/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/bod/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_bod_stream_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDatasetRowsBidOfferDatasetResponse]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_bod_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_bod_stream_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_bod_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/BOD/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesBalancingDatasetRowsBidOfferDatasetResponse]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_cbs_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Current Balancing State (CBS)  # noqa: E501

        This endpoint provides information on the current system balance, in accordance with the Electricity Balancing Guidelines (EBGL) article 12.3.a.    This API endpoint has a maximum range of 1 day.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_cbs_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsCbsDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_cbs_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_cbs_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_cbs_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Current Balancing State (CBS)  # noqa: E501

        This endpoint provides information on the current system balance, in accordance with the Electricity Balancing Guidelines (EBGL) article 12.3.a.    This API endpoint has a maximum range of 1 day.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_cbs_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsCbsDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_cbs_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_cbs_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_cbs_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/CBS', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsCbsDatasetRow',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_cbs_stream_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Current Balancing State (CBS) stream  # noqa: E501

        This endpoint provides information on the current system balance, in accordance with the Electricity Balancing Guidelines (EBGL) article 12.3.a.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_cbs_stream_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsCbsDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_cbs_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_cbs_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_cbs_stream_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Current Balancing State (CBS) stream  # noqa: E501

        This endpoint provides information on the current system balance, in accordance with the Electricity Balancing Guidelines (EBGL) article 12.3.a.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_cbs_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsCbsDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_cbs_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_cbs_stream_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_cbs_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/CBS/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesTransparencyDatasetRowsCbsDatasetRow]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_ccm_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Cost of Congestion Management (CCM / B1330)  # noqa: E501

        This endpoint provides cost of congestion management data.    This API endpoint has a maximum range of 2 years (731 days).  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ccm_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsCostsOfCongestionManagementDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_ccm_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_ccm_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_ccm_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Cost of Congestion Management (CCM / B1330)  # noqa: E501

        This endpoint provides cost of congestion management data.    This API endpoint has a maximum range of 2 years (731 days).  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ccm_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsCostsOfCongestionManagementDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_ccm_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_ccm_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_ccm_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/CCM', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsCostsOfCongestionManagementDatasetRow',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_ccm_stream_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Cost of Congestion Management (CCM / B1330) stream  # noqa: E501

        This endpoint provides cost of congestion management data.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ccm_stream_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsCostsOfCongestionManagementDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_ccm_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_ccm_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_ccm_stream_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Cost of Congestion Management (CCM / B1330) stream  # noqa: E501

        This endpoint provides cost of congestion management data.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ccm_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsCostsOfCongestionManagementDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_ccm_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_ccm_stream_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_ccm_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/CCM/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesTransparencyDatasetRowsCostsOfCongestionManagementDatasetRow]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_cdn_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Credit default notices (CDN)  # noqa: E501

        This endpoint provides CDN data received from EC.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_cdn_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str bsc_party_id:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDatasetRowsCreditDefaultNoticeDatasetResponse
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_cdn_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_cdn_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_cdn_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Credit default notices (CDN)  # noqa: E501

        This endpoint provides CDN data received from EC.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_cdn_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str bsc_party_id:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDatasetRowsCreditDefaultNoticeDatasetResponse
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'bsc_party_id', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_cdn_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_cdn_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_cdn_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'bsc_party_id' in params:
            query_params.append(('bscPartyId', params['bsc_party_id']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/CDN', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDatasetRowsCreditDefaultNoticeDatasetResponse',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_cdn_stream_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Credit default notices (CDN)  # noqa: E501

        This endpoint provides CDN data received from EC.                This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_cdn_stream_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str bsc_party_id:
        :return: list[InsightsApiModelsResponsesBalancingDatasetRowsCreditDefaultNoticeDatasetResponse]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_cdn_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_cdn_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_cdn_stream_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Credit default notices (CDN)  # noqa: E501

        This endpoint provides CDN data received from EC.                This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_cdn_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str bsc_party_id:
        :return: list[InsightsApiModelsResponsesBalancingDatasetRowsCreditDefaultNoticeDatasetResponse]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'bsc_party_id']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_cdn_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_cdn_stream_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_cdn_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'bsc_party_id' in params:
            query_params.append(('bscPartyId', params['bsc_party_id']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/CDN/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesBalancingDatasetRowsCreditDefaultNoticeDatasetResponse]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_dag_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Day-Ahead Aggregated Generation (DAG / B1430)  # noqa: E501

        This endpoint provides day-ahead aggregated generation data.                It has a maximum date range of 7 days.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_dag_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsDayAheadAggregatedGenerationDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_dag_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_dag_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_dag_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Day-Ahead Aggregated Generation (DAG / B1430)  # noqa: E501

        This endpoint provides day-ahead aggregated generation data.                It has a maximum date range of 7 days.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_dag_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsDayAheadAggregatedGenerationDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_dag_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_dag_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_dag_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/DAG', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsDayAheadAggregatedGenerationDatasetRow',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_dag_stream_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Day-Ahead Aggregated Generation (DAG / B1430) stream  # noqa: E501

        This endpoint provides day-ahead aggregated generation data.                This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_dag_stream_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsDayAheadAggregatedGenerationDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_dag_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_dag_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_dag_stream_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Day-Ahead Aggregated Generation (DAG / B1430) stream  # noqa: E501

        This endpoint provides day-ahead aggregated generation data.                This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_dag_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsDayAheadAggregatedGenerationDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_dag_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_dag_stream_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_dag_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/DAG/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesTransparencyDatasetRowsDayAheadAggregatedGenerationDatasetRow]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_datl_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Day-Ahead Total Load Forecast Per Bidding Zone (DATL / B0620)  # noqa: E501

        This endpoint provides day-ahead total load forecast per bidding zone data.    This API endpoint provides a maximum data output range of 7 days.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_datl_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsDayAheadTotalLoadPerBiddingZoneDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_datl_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_datl_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_datl_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Day-Ahead Total Load Forecast Per Bidding Zone (DATL / B0620)  # noqa: E501

        This endpoint provides day-ahead total load forecast per bidding zone data.    This API endpoint provides a maximum data output range of 7 days.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_datl_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsDayAheadTotalLoadPerBiddingZoneDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_datl_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_datl_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_datl_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/DATL', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsDayAheadTotalLoadPerBiddingZoneDatasetRow',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_datl_stream_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Day-Ahead Total Load Forecast Per Bidding Zone (DATL / B0620) stream  # noqa: E501

        This endpoint provides day-ahead total load forecast per bidding zone data.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_datl_stream_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsDayAheadTotalLoadPerBiddingZoneDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_datl_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_datl_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_datl_stream_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Day-Ahead Total Load Forecast Per Bidding Zone (DATL / B0620) stream  # noqa: E501

        This endpoint provides day-ahead total load forecast per bidding zone data.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_datl_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsDayAheadTotalLoadPerBiddingZoneDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_datl_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_datl_stream_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_datl_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/DATL/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesTransparencyDatasetRowsDayAheadTotalLoadPerBiddingZoneDatasetRow]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_dci_get(self, **kwargs):  # noqa: E501
        """Demand control instructions (DCI)  # noqa: E501

        This endpoint provides demand control instruction data, filtered by publish time.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_dci_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesMiscDatasetRowsDemandControlInstructionDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_dci_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_dci_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_dci_get_with_http_info(self, **kwargs):  # noqa: E501
        """Demand control instructions (DCI)  # noqa: E501

        This endpoint provides demand control instruction data, filtered by publish time.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_dci_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesMiscDatasetRowsDemandControlInstructionDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_dci_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/DCI', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesMiscDatasetRowsDemandControlInstructionDatasetRow',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_dci_stream_get(self, **kwargs):  # noqa: E501
        """Demand control instructions (DCI) stream  # noqa: E501

        This endpoint provides demand control instruction data, filtered by publish time.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_dci_stream_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesMiscDatasetRowsDemandControlInstructionDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_dci_stream_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_dci_stream_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_dci_stream_get_with_http_info(self, **kwargs):  # noqa: E501
        """Demand control instructions (DCI) stream  # noqa: E501

        This endpoint provides demand control instruction data, filtered by publish time.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_dci_stream_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesMiscDatasetRowsDemandControlInstructionDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_dci_stream_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/DCI/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesMiscDatasetRowsDemandControlInstructionDatasetRow]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_dgws_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Day-Ahead Generation For Wind And Solar (DGWS / B1440)  # noqa: E501

        This endpoint provides day-ahead generation data for wind and solar.    This API endpoint provides a maximum data output range of 7 days.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_dgws_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsDayAheadGenerationForWindAndSolarDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_dgws_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_dgws_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_dgws_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Day-Ahead Generation For Wind And Solar (DGWS / B1440)  # noqa: E501

        This endpoint provides day-ahead generation data for wind and solar.    This API endpoint provides a maximum data output range of 7 days.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_dgws_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsDayAheadGenerationForWindAndSolarDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_dgws_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_dgws_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_dgws_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/DGWS', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsDayAheadGenerationForWindAndSolarDatasetRow',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_dgws_stream_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Day-Ahead Generation For Wind And Solar (DGWS / B1440) stream  # noqa: E501

        This endpoint provides day-ahead generation data for wind and solar.                This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_dgws_stream_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsDayAheadGenerationForWindAndSolarDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_dgws_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_dgws_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_dgws_stream_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Day-Ahead Generation For Wind And Solar (DGWS / B1440) stream  # noqa: E501

        This endpoint provides day-ahead generation data for wind and solar.                This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_dgws_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsDayAheadGenerationForWindAndSolarDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_dgws_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_dgws_stream_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_dgws_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/DGWS/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesTransparencyDatasetRowsDayAheadGenerationForWindAndSolarDatasetRow]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_disbsad_get(self, _from, to, **kwargs):  # noqa: E501
        """Disaggregated Balancing Services Adjustment Data (DISBSAD)  # noqa: E501

        This endpoint provides Disaggregated Balancing Services Adjustment data received from NGESO.                Disaggregated Balancing Services Adjustment data covers a set of adjustment actions, cost and volume values  for each Settlement Period. Adjustment costs are shown in £. Adjustment volumes are shown in MWh.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/disbsad?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/disbsad?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/disbsad?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/disbsad?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_disbsad_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDatasetRowsDisaggregatedBalancingServicesAdjustmentData
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_disbsad_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_disbsad_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_disbsad_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Disaggregated Balancing Services Adjustment Data (DISBSAD)  # noqa: E501

        This endpoint provides Disaggregated Balancing Services Adjustment data received from NGESO.                Disaggregated Balancing Services Adjustment data covers a set of adjustment actions, cost and volume values  for each Settlement Period. Adjustment costs are shown in £. Adjustment volumes are shown in MWh.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/disbsad?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/disbsad?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/disbsad?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/disbsad?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_disbsad_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDatasetRowsDisaggregatedBalancingServicesAdjustmentData
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_disbsad_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_disbsad_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_disbsad_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/DISBSAD', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDatasetRowsDisaggregatedBalancingServicesAdjustmentData',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_disbsad_stream_get(self, _from, to, **kwargs):  # noqa: E501
        """Disaggregated Balancing Services Adjustment Data (DISBSAD) stream  # noqa: E501

        This endpoint provides Disaggregated Balancing Services Adjustment data received from NGESO.                Disaggregated Balancing Services Adjustment data covers a set of adjustment actions, cost and volume values  for each Settlement Period. Adjustment costs are shown in £. Adjustment volumes are shown in MWh.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/disbsad/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/disbsad/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/disbsad/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/disbsad/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for DISBSAD data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_disbsad_stream_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :return: list[InsightsApiModelsResponsesBalancingDatasetRowsDisaggregatedBalancingServicesAdjustmentData]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_disbsad_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_disbsad_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_disbsad_stream_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Disaggregated Balancing Services Adjustment Data (DISBSAD) stream  # noqa: E501

        This endpoint provides Disaggregated Balancing Services Adjustment data received from NGESO.                Disaggregated Balancing Services Adjustment data covers a set of adjustment actions, cost and volume values  for each Settlement Period. Adjustment costs are shown in £. Adjustment volumes are shown in MWh.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/disbsad/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/disbsad/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/disbsad/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/disbsad/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for DISBSAD data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_disbsad_stream_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :return: list[InsightsApiModelsResponsesBalancingDatasetRowsDisaggregatedBalancingServicesAdjustmentData]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_disbsad_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_disbsad_stream_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_disbsad_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/DISBSAD/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesBalancingDatasetRowsDisaggregatedBalancingServicesAdjustmentData]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_feib_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Financial Expenses and Income for Balancing (FEIB / B1790)  # noqa: E501

        This endpoint provides financial expenses and income for balancing data.    This API endpoint has a maximum range of 1 year (367 days).  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_feib_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsFeibDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_feib_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_feib_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_feib_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Financial Expenses and Income for Balancing (FEIB / B1790)  # noqa: E501

        This endpoint provides financial expenses and income for balancing data.    This API endpoint has a maximum range of 1 year (367 days).  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_feib_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsFeibDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_feib_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_feib_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_feib_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/FEIB', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsFeibDatasetRow',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_feib_stream_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Financial Expenses and Income for Balancing (FEIB / B1790) stream  # noqa: E501

        This endpoint provides financial expenses and income for balancing data.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_feib_stream_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsFeibDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_feib_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_feib_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_feib_stream_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Financial Expenses and Income for Balancing (FEIB / B1790) stream  # noqa: E501

        This endpoint provides financial expenses and income for balancing data.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_feib_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsFeibDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_feib_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_feib_stream_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_feib_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/FEIB/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesTransparencyDatasetRowsFeibDatasetRow]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_fou2_t14_d_get(self, **kwargs):  # noqa: E501
        """2 to 14 days ahead generation availability aggregated by fuel type (FOU2T14D)  # noqa: E501

        This endpoint provides a forward view of availability (also referred to as Output Usable data  under the Grid Code) for generation and interconnector capacity, accounting for planned outages  covering 2 days ahead to 14 days ahead; it is aggregated by Fuel Types categories.                Date parameter must be provided in the exact format yyyy-MM-dd.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_fou2_t14_d_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param list[str] fuel_type:
        :param date publish_date: The publish date for filtering. This must be in the format yyyy-MM-dd.
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param list[str] bidding_zone:
        :param bool interconnector:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsAvailabilityByFuelTypeDaily
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_fou2_t14_d_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_fou2_t14_d_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_fou2_t14_d_get_with_http_info(self, **kwargs):  # noqa: E501
        """2 to 14 days ahead generation availability aggregated by fuel type (FOU2T14D)  # noqa: E501

        This endpoint provides a forward view of availability (also referred to as Output Usable data  under the Grid Code) for generation and interconnector capacity, accounting for planned outages  covering 2 days ahead to 14 days ahead; it is aggregated by Fuel Types categories.                Date parameter must be provided in the exact format yyyy-MM-dd.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_fou2_t14_d_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param list[str] fuel_type:
        :param date publish_date: The publish date for filtering. This must be in the format yyyy-MM-dd.
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param list[str] bidding_zone:
        :param bool interconnector:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsAvailabilityByFuelTypeDaily
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['fuel_type', 'publish_date', 'publish_date_time_from', 'publish_date_time_to', 'bidding_zone', 'interconnector', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_fou2_t14_d_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'fuel_type' in params:
            query_params.append(('fuelType', params['fuel_type']))  # noqa: E501
            collection_formats['fuelType'] = 'multi'  # noqa: E501
        if 'publish_date' in params:
            query_params.append(('publishDate', params['publish_date']))  # noqa: E501
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'bidding_zone' in params:
            query_params.append(('biddingZone', params['bidding_zone']))  # noqa: E501
            collection_formats['biddingZone'] = 'multi'  # noqa: E501
        if 'interconnector' in params:
            query_params.append(('interconnector', params['interconnector']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/FOU2T14D', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsAvailabilityByFuelTypeDaily',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_fou2_t3_yw_get(self, **kwargs):  # noqa: E501
        """2 to 156 weeks ahead generation availability aggregated by fuel type (FOU2T3YW)  # noqa: E501

        This endpoint provides a forward view of availability (also referred to as Output Usable data  under the Grid Code) for generation and interconnector capacity, accounting for planned outages  covering availability data from 2 weeks ahead to 156 weeks ahead;  it is aggregated by Fuel Types categories.                Date parameter must be provided in the exact format yyyy-MM-dd.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_fou2_t3_yw_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param list[str] fuel_type:
        :param date publish_date: The publish date for filtering. This must be in the format yyyy-MM-dd.
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param list[int] week:
        :param list[int] year:
        :param list[str] bidding_zone:
        :param bool interconnector:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsAvailabilityByFuelTypeWeekly
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_fou2_t3_yw_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_fou2_t3_yw_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_fou2_t3_yw_get_with_http_info(self, **kwargs):  # noqa: E501
        """2 to 156 weeks ahead generation availability aggregated by fuel type (FOU2T3YW)  # noqa: E501

        This endpoint provides a forward view of availability (also referred to as Output Usable data  under the Grid Code) for generation and interconnector capacity, accounting for planned outages  covering availability data from 2 weeks ahead to 156 weeks ahead;  it is aggregated by Fuel Types categories.                Date parameter must be provided in the exact format yyyy-MM-dd.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_fou2_t3_yw_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param list[str] fuel_type:
        :param date publish_date: The publish date for filtering. This must be in the format yyyy-MM-dd.
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param list[int] week:
        :param list[int] year:
        :param list[str] bidding_zone:
        :param bool interconnector:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsAvailabilityByFuelTypeWeekly
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['fuel_type', 'publish_date', 'publish_date_time_from', 'publish_date_time_to', 'week', 'year', 'bidding_zone', 'interconnector', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_fou2_t3_yw_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'fuel_type' in params:
            query_params.append(('fuelType', params['fuel_type']))  # noqa: E501
            collection_formats['fuelType'] = 'multi'  # noqa: E501
        if 'publish_date' in params:
            query_params.append(('publishDate', params['publish_date']))  # noqa: E501
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'week' in params:
            query_params.append(('week', params['week']))  # noqa: E501
            collection_formats['week'] = 'multi'  # noqa: E501
        if 'year' in params:
            query_params.append(('year', params['year']))  # noqa: E501
            collection_formats['year'] = 'multi'  # noqa: E501
        if 'bidding_zone' in params:
            query_params.append(('biddingZone', params['bidding_zone']))  # noqa: E501
            collection_formats['biddingZone'] = 'multi'  # noqa: E501
        if 'interconnector' in params:
            query_params.append(('interconnector', params['interconnector']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/FOU2T3YW', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsAvailabilityByFuelTypeWeekly',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_freq_get(self, **kwargs):  # noqa: E501
        """System frequency (FREQ)  # noqa: E501

        The endpoint provides data that has been received every 2 minutes the transmission system frequency, expressed as a hertz value for one or more spot times within that 2 minute period.  The default output will be the latest published data.                A maximum limit of 24 hours is applied to this endpoint to limit response size. Use the streaming version  for larger response sizes.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_freq_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime measurement_date_time_from:
        :param datetime measurement_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesMiscDatasetRowsSystemFrequency
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_freq_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_freq_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_freq_get_with_http_info(self, **kwargs):  # noqa: E501
        """System frequency (FREQ)  # noqa: E501

        The endpoint provides data that has been received every 2 minutes the transmission system frequency, expressed as a hertz value for one or more spot times within that 2 minute period.  The default output will be the latest published data.                A maximum limit of 24 hours is applied to this endpoint to limit response size. Use the streaming version  for larger response sizes.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_freq_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime measurement_date_time_from:
        :param datetime measurement_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesMiscDatasetRowsSystemFrequency
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['measurement_date_time_from', 'measurement_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_freq_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'measurement_date_time_from' in params:
            query_params.append(('measurementDateTimeFrom', params['measurement_date_time_from']))  # noqa: E501
        if 'measurement_date_time_to' in params:
            query_params.append(('measurementDateTimeTo', params['measurement_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/FREQ', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesMiscDatasetRowsSystemFrequency',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_freq_stream_get(self, **kwargs):  # noqa: E501
        """System frequency (FREQ) stream  # noqa: E501

        The endpoint provides data that has been received every 2 minutes the transmission system frequency, expressed as a hertz value for one or more spot times within that 2 minute period.  The default output will be the latest published data.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_freq_stream_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime measurement_date_time_from:
        :param datetime measurement_date_time_to:
        :return: list[InsightsApiModelsResponsesMiscDatasetRowsSystemFrequency]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_freq_stream_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_freq_stream_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_freq_stream_get_with_http_info(self, **kwargs):  # noqa: E501
        """System frequency (FREQ) stream  # noqa: E501

        The endpoint provides data that has been received every 2 minutes the transmission system frequency, expressed as a hertz value for one or more spot times within that 2 minute period.  The default output will be the latest published data.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_freq_stream_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime measurement_date_time_from:
        :param datetime measurement_date_time_to:
        :return: list[InsightsApiModelsResponsesMiscDatasetRowsSystemFrequency]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['measurement_date_time_from', 'measurement_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_freq_stream_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'measurement_date_time_from' in params:
            query_params.append(('measurementDateTimeFrom', params['measurement_date_time_from']))  # noqa: E501
        if 'measurement_date_time_to' in params:
            query_params.append(('measurementDateTimeTo', params['measurement_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/FREQ/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesMiscDatasetRowsSystemFrequency]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_fuelhh_get(self, **kwargs):  # noqa: E501
        """Half-hourly generation outturn by fuel type (FUELHH)  # noqa: E501

        This endpoint provides the half-hourly generation outturn (Generation By Fuel type)  to give our users an indication of the generation outturn for Great Britain.  The data is aggregated by Fuel Type category and updated at 30-minute intervals with  average MW values over 30 minutes for each category.                This endpoint includes additional settlement parameters such as Settlement Date and Settlement Period.  The Settlement Date fields cannot be set when a Publish Date field is set.                Settlement date parameters must be provided in the exact format yyyy-MM-dd.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_fuelhh_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param date settlement_date_from:
        :param date settlement_date_to:
        :param list[int] settlement_period: List of Settlement Periods
        :param list[str] fuel_type: Fuel Type e.g. NUCLEAR
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsAugmentedOutturnData
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_fuelhh_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_fuelhh_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_fuelhh_get_with_http_info(self, **kwargs):  # noqa: E501
        """Half-hourly generation outturn by fuel type (FUELHH)  # noqa: E501

        This endpoint provides the half-hourly generation outturn (Generation By Fuel type)  to give our users an indication of the generation outturn for Great Britain.  The data is aggregated by Fuel Type category and updated at 30-minute intervals with  average MW values over 30 minutes for each category.                This endpoint includes additional settlement parameters such as Settlement Date and Settlement Period.  The Settlement Date fields cannot be set when a Publish Date field is set.                Settlement date parameters must be provided in the exact format yyyy-MM-dd.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_fuelhh_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param date settlement_date_from:
        :param date settlement_date_to:
        :param list[int] settlement_period: List of Settlement Periods
        :param list[str] fuel_type: Fuel Type e.g. NUCLEAR
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsAugmentedOutturnData
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'settlement_date_from', 'settlement_date_to', 'settlement_period', 'fuel_type', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_fuelhh_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'settlement_date_from' in params:
            query_params.append(('settlementDateFrom', params['settlement_date_from']))  # noqa: E501
        if 'settlement_date_to' in params:
            query_params.append(('settlementDateTo', params['settlement_date_to']))  # noqa: E501
        if 'settlement_period' in params:
            query_params.append(('settlementPeriod', params['settlement_period']))  # noqa: E501
            collection_formats['settlementPeriod'] = 'multi'  # noqa: E501
        if 'fuel_type' in params:
            query_params.append(('fuelType', params['fuel_type']))  # noqa: E501
            collection_formats['fuelType'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/FUELHH', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsAugmentedOutturnData',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_fuelhh_stream_get(self, **kwargs):  # noqa: E501
        """Half-hourly generation outturn by fuel type (FUELHH) stream  # noqa: E501

        This endpoint provides the half-hourly generation outturn (Generation By Fuel type)  to give our users an indication of the generation outturn for Great Britain.  The data is aggregated by Fuel Type category and updated at 30-minute intervals with  average MW values over 30 minutes for each category.                This endpoint includes additional settlement parameters such as Settlement Date and Settlement Period.  The Settlement Date fields cannot be set when a Publish Date field is set.                Settlement date parameters must be provided in the exact format yyyy-MM-dd.                This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_fuelhh_stream_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param date settlement_date_from:
        :param date settlement_date_to:
        :param list[int] settlement_period: List of Settlement Periods
        :param list[str] fuel_type: Fuel Type e.g. NUCLEAR
        :return: list[InsightsApiModelsResponsesGenerationDatasetRowsAugmentedOutturnData]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_fuelhh_stream_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_fuelhh_stream_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_fuelhh_stream_get_with_http_info(self, **kwargs):  # noqa: E501
        """Half-hourly generation outturn by fuel type (FUELHH) stream  # noqa: E501

        This endpoint provides the half-hourly generation outturn (Generation By Fuel type)  to give our users an indication of the generation outturn for Great Britain.  The data is aggregated by Fuel Type category and updated at 30-minute intervals with  average MW values over 30 minutes for each category.                This endpoint includes additional settlement parameters such as Settlement Date and Settlement Period.  The Settlement Date fields cannot be set when a Publish Date field is set.                Settlement date parameters must be provided in the exact format yyyy-MM-dd.                This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_fuelhh_stream_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param date settlement_date_from:
        :param date settlement_date_to:
        :param list[int] settlement_period: List of Settlement Periods
        :param list[str] fuel_type: Fuel Type e.g. NUCLEAR
        :return: list[InsightsApiModelsResponsesGenerationDatasetRowsAugmentedOutturnData]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'settlement_date_from', 'settlement_date_to', 'settlement_period', 'fuel_type']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_fuelhh_stream_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'settlement_date_from' in params:
            query_params.append(('settlementDateFrom', params['settlement_date_from']))  # noqa: E501
        if 'settlement_date_to' in params:
            query_params.append(('settlementDateTo', params['settlement_date_to']))  # noqa: E501
        if 'settlement_period' in params:
            query_params.append(('settlementPeriod', params['settlement_period']))  # noqa: E501
            collection_formats['settlementPeriod'] = 'multi'  # noqa: E501
        if 'fuel_type' in params:
            query_params.append(('fuelType', params['fuel_type']))  # noqa: E501
            collection_formats['fuelType'] = 'multi'  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/FUELHH/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesGenerationDatasetRowsAugmentedOutturnData]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_fuelinst_get(self, **kwargs):  # noqa: E501
        """Instantaneous generation outturn by fuel type (FUELINST)  # noqa: E501

        This endpoint provides the instantaneous generation outturn (Generation By Fuel type)  to give our users an indication of the generation outturn for Great Britain.  The data is aggregated by Fuel Type category and updated at five-minute intervals  with average MW values over 5 minutes for each category.                This endpoint includes additional settlement parameters such as Settlement Date and Settlement Period.  The Settlement Date fields cannot be set when a Publish Date field is set.                Settlement date parameters must be provided in the exact format yyyy-MM-dd.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_fuelinst_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param date settlement_date_from:
        :param date settlement_date_to:
        :param list[int] settlement_period: List of Settlement Periods
        :param list[str] fuel_type: Fuel Type e.g. NUCLEAR
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsAugmentedOutturnData
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_fuelinst_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_fuelinst_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_fuelinst_get_with_http_info(self, **kwargs):  # noqa: E501
        """Instantaneous generation outturn by fuel type (FUELINST)  # noqa: E501

        This endpoint provides the instantaneous generation outturn (Generation By Fuel type)  to give our users an indication of the generation outturn for Great Britain.  The data is aggregated by Fuel Type category and updated at five-minute intervals  with average MW values over 5 minutes for each category.                This endpoint includes additional settlement parameters such as Settlement Date and Settlement Period.  The Settlement Date fields cannot be set when a Publish Date field is set.                Settlement date parameters must be provided in the exact format yyyy-MM-dd.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_fuelinst_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param date settlement_date_from:
        :param date settlement_date_to:
        :param list[int] settlement_period: List of Settlement Periods
        :param list[str] fuel_type: Fuel Type e.g. NUCLEAR
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsAugmentedOutturnData
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'settlement_date_from', 'settlement_date_to', 'settlement_period', 'fuel_type', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_fuelinst_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'settlement_date_from' in params:
            query_params.append(('settlementDateFrom', params['settlement_date_from']))  # noqa: E501
        if 'settlement_date_to' in params:
            query_params.append(('settlementDateTo', params['settlement_date_to']))  # noqa: E501
        if 'settlement_period' in params:
            query_params.append(('settlementPeriod', params['settlement_period']))  # noqa: E501
            collection_formats['settlementPeriod'] = 'multi'  # noqa: E501
        if 'fuel_type' in params:
            query_params.append(('fuelType', params['fuel_type']))  # noqa: E501
            collection_formats['fuelType'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/FUELINST', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsAugmentedOutturnData',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_fuelinst_stream_get(self, **kwargs):  # noqa: E501
        """Instantaneous generation outturn by fuel type (FUELINST) stream  # noqa: E501

        This endpoint provides the instantaneous generation outturn (Generation By Fuel type)  to give our users an indication of the generation outturn for Great Britain.  The data is aggregated by Fuel Type category and updated at five-minute intervals  with average MW values over 5 minutes for each category.                This endpoint includes additional settlement parameters such as Settlement Date and Settlement Period.  The Settlement Date fields cannot be set when a Publish Date field is set.                Settlement date parameters must be provided in the exact format yyyy-MM-dd.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_fuelinst_stream_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param date settlement_date_from:
        :param date settlement_date_to:
        :param list[int] settlement_period: List of Settlement Periods
        :param list[str] fuel_type: Fuel Type e.g. NUCLEAR
        :return: list[InsightsApiModelsResponsesGenerationDatasetRowsAugmentedOutturnData]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_fuelinst_stream_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_fuelinst_stream_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_fuelinst_stream_get_with_http_info(self, **kwargs):  # noqa: E501
        """Instantaneous generation outturn by fuel type (FUELINST) stream  # noqa: E501

        This endpoint provides the instantaneous generation outturn (Generation By Fuel type)  to give our users an indication of the generation outturn for Great Britain.  The data is aggregated by Fuel Type category and updated at five-minute intervals  with average MW values over 5 minutes for each category.                This endpoint includes additional settlement parameters such as Settlement Date and Settlement Period.  The Settlement Date fields cannot be set when a Publish Date field is set.                Settlement date parameters must be provided in the exact format yyyy-MM-dd.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_fuelinst_stream_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param date settlement_date_from:
        :param date settlement_date_to:
        :param list[int] settlement_period: List of Settlement Periods
        :param list[str] fuel_type: Fuel Type e.g. NUCLEAR
        :return: list[InsightsApiModelsResponsesGenerationDatasetRowsAugmentedOutturnData]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'settlement_date_from', 'settlement_date_to', 'settlement_period', 'fuel_type']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_fuelinst_stream_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'settlement_date_from' in params:
            query_params.append(('settlementDateFrom', params['settlement_date_from']))  # noqa: E501
        if 'settlement_date_to' in params:
            query_params.append(('settlementDateTo', params['settlement_date_to']))  # noqa: E501
        if 'settlement_period' in params:
            query_params.append(('settlementPeriod', params['settlement_period']))  # noqa: E501
            collection_formats['settlementPeriod'] = 'multi'  # noqa: E501
        if 'fuel_type' in params:
            query_params.append(('fuelType', params['fuel_type']))  # noqa: E501
            collection_formats['fuelType'] = 'multi'  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/FUELINST/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesGenerationDatasetRowsAugmentedOutturnData]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_igca_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Installed Generation Capacity Aggregated (IGCA / B1410)  # noqa: E501

        This endpoint provides installed generation capacity aggregated data.    This API endpoint provides a maximum data output range of 2 years (731 days).  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_igca_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsIgcaDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_igca_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_igca_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_igca_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Installed Generation Capacity Aggregated (IGCA / B1410)  # noqa: E501

        This endpoint provides installed generation capacity aggregated data.    This API endpoint provides a maximum data output range of 2 years (731 days).  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_igca_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsIgcaDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_igca_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_igca_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_igca_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/IGCA', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsIgcaDatasetRow',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_igca_stream_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Installed Generation Capacity Aggregated (IGCA / B1410) stream  # noqa: E501

        This endpoint provides installed generation capacity aggregated data.                This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_igca_stream_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsIgcaDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_igca_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_igca_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_igca_stream_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Installed Generation Capacity Aggregated (IGCA / B1410) stream  # noqa: E501

        This endpoint provides installed generation capacity aggregated data.                This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_igca_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsIgcaDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_igca_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_igca_stream_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_igca_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/IGCA/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesTransparencyDatasetRowsIgcaDatasetRow]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_igcpu_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Installed Generation Capacity per Unit (IGCPU / B1420)  # noqa: E501

        This endpoint provides information about production units (existing and planned)  with an installed generation capacity equaling to or exceeding 100 MW.                 The database was populated from a data dump lacking publishTime values,  all entries were assigned a default publishTime of 2023-01-01 00:00 during the migration.    This API endpoint provides a maximum data output range of 2 years (731 days).  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_igcpu_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsIgcpuDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_igcpu_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_igcpu_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_igcpu_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Installed Generation Capacity per Unit (IGCPU / B1420)  # noqa: E501

        This endpoint provides information about production units (existing and planned)  with an installed generation capacity equaling to or exceeding 100 MW.                 The database was populated from a data dump lacking publishTime values,  all entries were assigned a default publishTime of 2023-01-01 00:00 during the migration.    This API endpoint provides a maximum data output range of 2 years (731 days).  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_igcpu_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsIgcpuDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_igcpu_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_igcpu_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_igcpu_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/IGCPU', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsIgcpuDatasetRow',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_igcpu_stream_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Installed Generation Capacity per Unit (IGCPU / B1420) stream  # noqa: E501

        This endpoint provides information about production units (existing and planned)  with an installed generation capacity equaling to or exceeding 100 MW.                 The database was populated from a data dump lacking publishTime values,  all entries were assigned a default publishTime of 2023-01-01 00:00 during the migration.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_igcpu_stream_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsIgcpuDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_igcpu_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_igcpu_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_igcpu_stream_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Installed Generation Capacity per Unit (IGCPU / B1420) stream  # noqa: E501

        This endpoint provides information about production units (existing and planned)  with an installed generation capacity equaling to or exceeding 100 MW.                 The database was populated from a data dump lacking publishTime values,  all entries were assigned a default publishTime of 2023-01-01 00:00 during the migration.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_igcpu_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsIgcpuDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_igcpu_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_igcpu_stream_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_igcpu_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/IGCPU/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesTransparencyDatasetRowsIgcpuDatasetRow]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_imbalngc_get(self, **kwargs):  # noqa: E501
        """Day and day-ahead indicated imbalance (IMBALNGC)  # noqa: E501

        This endpoint provides the indicated imbalance. Data is received by daily by midday from NGESO.  Expressed as an average MW value for each settlement period. The indicated imbalance forecast for  each period is the difference between the sum of the PNs submitted for generation BM Units (i.e.  the indicated generation), and the Transmission System Demand forecast made by the System Operator.                This API endpoint provides a maximum data output range of 1 day.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_imbalngc_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str boundary:
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesIndicatedForecastDatasetRowsIndicatedImbalance
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_imbalngc_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_imbalngc_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_imbalngc_get_with_http_info(self, **kwargs):  # noqa: E501
        """Day and day-ahead indicated imbalance (IMBALNGC)  # noqa: E501

        This endpoint provides the indicated imbalance. Data is received by daily by midday from NGESO.  Expressed as an average MW value for each settlement period. The indicated imbalance forecast for  each period is the difference between the sum of the PNs submitted for generation BM Units (i.e.  the indicated generation), and the Transmission System Demand forecast made by the System Operator.                This API endpoint provides a maximum data output range of 1 day.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_imbalngc_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str boundary:
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesIndicatedForecastDatasetRowsIndicatedImbalance
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['boundary', 'publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_imbalngc_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'boundary' in params:
            query_params.append(('boundary', params['boundary']))  # noqa: E501
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/IMBALNGC', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesIndicatedForecastDatasetRowsIndicatedImbalance',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_imbalngc_stream_get(self, **kwargs):  # noqa: E501
        """Day and day-ahead indicated imbalance (IMBALNGC) stream  # noqa: E501

        This endpoint provides the indicated imbalance. Data is received by daily by midday from NGESO.  Expressed as an average MW value for each settlement period. The indicated imbalance forecast for  each period is the difference between the sum of the PNs submitted for generation BM Units (i.e.  the indicated generation), and the National Demand forecast made by the System Operator.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_imbalngc_stream_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str boundary:
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesIndicatedForecastDatasetRowsIndicatedImbalance]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_imbalngc_stream_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_imbalngc_stream_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_imbalngc_stream_get_with_http_info(self, **kwargs):  # noqa: E501
        """Day and day-ahead indicated imbalance (IMBALNGC) stream  # noqa: E501

        This endpoint provides the indicated imbalance. Data is received by daily by midday from NGESO.  Expressed as an average MW value for each settlement period. The indicated imbalance forecast for  each period is the difference between the sum of the PNs submitted for generation BM Units (i.e.  the indicated generation), and the National Demand forecast made by the System Operator.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_imbalngc_stream_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str boundary:
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesIndicatedForecastDatasetRowsIndicatedImbalance]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['boundary', 'publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_imbalngc_stream_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'boundary' in params:
            query_params.append(('boundary', params['boundary']))  # noqa: E501
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/IMBALNGC/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesIndicatedForecastDatasetRowsIndicatedImbalance]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_inddem_get(self, **kwargs):  # noqa: E501
        """Day and day-ahead indicated demand (INDDEM)  # noqa: E501

        This endpoint provides the indicated demand forecast for the current day and day-ahead received  from NGESO. The forecast is updated every half hour. The forecast for each period is the sum of  all the PNs submitted for BM Units which are forecast to be importing energy. Data is presented  an average MW for the settlement period.                This API endpoint provides a maximum data output range of 1 day.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_inddem_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str boundary:
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesIndicatedForecastDatasetRowsIndicatedDemand
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_inddem_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_inddem_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_inddem_get_with_http_info(self, **kwargs):  # noqa: E501
        """Day and day-ahead indicated demand (INDDEM)  # noqa: E501

        This endpoint provides the indicated demand forecast for the current day and day-ahead received  from NGESO. The forecast is updated every half hour. The forecast for each period is the sum of  all the PNs submitted for BM Units which are forecast to be importing energy. Data is presented  an average MW for the settlement period.                This API endpoint provides a maximum data output range of 1 day.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_inddem_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str boundary:
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesIndicatedForecastDatasetRowsIndicatedDemand
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['boundary', 'publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_inddem_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'boundary' in params:
            query_params.append(('boundary', params['boundary']))  # noqa: E501
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/INDDEM', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesIndicatedForecastDatasetRowsIndicatedDemand',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_inddem_stream_get(self, **kwargs):  # noqa: E501
        """Day and day-ahead indicated demand (INDDEM) stream  # noqa: E501

        This endpoint provides the indicated demand forecast for the current day and day-ahead received  from NGESO. The forecast is updated every half hour. The forecast for each period is the sum of  all the PNs submitted for BM Units which are forecast to be importing energy. Data is presented  an average MW for the settlement period.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_inddem_stream_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str boundary:
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesIndicatedForecastDatasetRowsIndicatedDemand]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_inddem_stream_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_inddem_stream_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_inddem_stream_get_with_http_info(self, **kwargs):  # noqa: E501
        """Day and day-ahead indicated demand (INDDEM) stream  # noqa: E501

        This endpoint provides the indicated demand forecast for the current day and day-ahead received  from NGESO. The forecast is updated every half hour. The forecast for each period is the sum of  all the PNs submitted for BM Units which are forecast to be importing energy. Data is presented  an average MW for the settlement period.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_inddem_stream_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str boundary:
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesIndicatedForecastDatasetRowsIndicatedDemand]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['boundary', 'publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_inddem_stream_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'boundary' in params:
            query_params.append(('boundary', params['boundary']))  # noqa: E501
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/INDDEM/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesIndicatedForecastDatasetRowsIndicatedDemand]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_indgen_get(self, **kwargs):  # noqa: E501
        """Day and day-ahead indicated generation (INDGEN)  # noqa: E501

        This endpoint provides the indicated generation received from NGESO. Data is received daily, by  midday. Expressed as an average MW value for each Settlement period. The indicated generation  forecast for each period is the sum of all the PNs submitted for BM Units which are forecast to  be exporting energy, presented as a single average MW value for the settlement period.    This API endpoint provides a maximum data output range of 1 day.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_indgen_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str boundary:
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesIndicatedForecastDatasetRowsIndicatedGeneration
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_indgen_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_indgen_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_indgen_get_with_http_info(self, **kwargs):  # noqa: E501
        """Day and day-ahead indicated generation (INDGEN)  # noqa: E501

        This endpoint provides the indicated generation received from NGESO. Data is received daily, by  midday. Expressed as an average MW value for each Settlement period. The indicated generation  forecast for each period is the sum of all the PNs submitted for BM Units which are forecast to  be exporting energy, presented as a single average MW value for the settlement period.    This API endpoint provides a maximum data output range of 1 day.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_indgen_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str boundary:
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesIndicatedForecastDatasetRowsIndicatedGeneration
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['boundary', 'publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_indgen_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'boundary' in params:
            query_params.append(('boundary', params['boundary']))  # noqa: E501
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/INDGEN', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesIndicatedForecastDatasetRowsIndicatedGeneration',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_indgen_stream_get(self, **kwargs):  # noqa: E501
        """Day and day-ahead indicated generation (INDGEN) stream  # noqa: E501

        This endpoint provides the indicated generation received from NGESO. Data is received daily, by  midday. Expressed as an average MW value for each settlement period. The indicated generation  forecast for each period is the sum of all the PNs submitted for BM Units which are forecast to  be exporting energy, presented as a single average MW value for the settlement period.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_indgen_stream_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str boundary:
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesIndicatedForecastDatasetRowsIndicatedGeneration]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_indgen_stream_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_indgen_stream_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_indgen_stream_get_with_http_info(self, **kwargs):  # noqa: E501
        """Day and day-ahead indicated generation (INDGEN) stream  # noqa: E501

        This endpoint provides the indicated generation received from NGESO. Data is received daily, by  midday. Expressed as an average MW value for each settlement period. The indicated generation  forecast for each period is the sum of all the PNs submitted for BM Units which are forecast to  be exporting energy, presented as a single average MW value for the settlement period.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_indgen_stream_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str boundary:
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesIndicatedForecastDatasetRowsIndicatedGeneration]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['boundary', 'publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_indgen_stream_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'boundary' in params:
            query_params.append(('boundary', params['boundary']))  # noqa: E501
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/INDGEN/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesIndicatedForecastDatasetRowsIndicatedGeneration]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_indo_get(self, **kwargs):  # noqa: E501
        """Initial National Demand outturn (INDO)  # noqa: E501

        The endpoint provides data showing the initial National Demand outturn.  Data is updated at 15 min intervals containing the initial demand expressed in MW.                Specific publish time filters may be supplied, otherwise this will retrieve the latest published data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_indo_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandOutturnDatasetRowsDemandOutturnNational
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_indo_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_indo_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_indo_get_with_http_info(self, **kwargs):  # noqa: E501
        """Initial National Demand outturn (INDO)  # noqa: E501

        The endpoint provides data showing the initial National Demand outturn.  Data is updated at 15 min intervals containing the initial demand expressed in MW.                Specific publish time filters may be supplied, otherwise this will retrieve the latest published data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_indo_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandOutturnDatasetRowsDemandOutturnNational
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_indo_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/INDO', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandOutturnDatasetRowsDemandOutturnNational',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_indod_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Initial National Demand outturn daily (INDOD)  # noqa: E501

        This endpoint provides initial National Demand outturn daily data. The total daily energy volume is the total  demand volume for the previous day expressed on an initial National Demand outturn (INDO) basis, i.e. excluding  station transformer, pumping and interconnector export demand. It is calculated from summing the half hourly  INDO demands (divided by two to convert to MWh).    This API endpoint has a maximum range of 2 years (731 days).  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_indod_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandOutturnDatasetRowsIndodDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_indod_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_indod_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_indod_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Initial National Demand outturn daily (INDOD)  # noqa: E501

        This endpoint provides initial National Demand outturn daily data. The total daily energy volume is the total  demand volume for the previous day expressed on an initial National Demand outturn (INDO) basis, i.e. excluding  station transformer, pumping and interconnector export demand. It is calculated from summing the half hourly  INDO demands (divided by two to convert to MWh).    This API endpoint has a maximum range of 2 years (731 days).  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_indod_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandOutturnDatasetRowsIndodDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_indod_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_indod_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_indod_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/INDOD', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandOutturnDatasetRowsIndodDatasetRow',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_indod_stream_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Initial National Demand outturn daily (INDOD) stream  # noqa: E501

        This endpoint provides initial National Demand outturn daily data. The total daily energy volume is the total  demand volume for the previous day expressed on an initial National Demand outturn (INDO) basis, i.e. excluding  station transformer, pumping and interconnector export demand. It is calculated from summing the half hourly  INDO demands (divided by two to convert to MWh).    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_indod_stream_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesDemandOutturnDatasetRowsIndodDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_indod_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_indod_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_indod_stream_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Initial National Demand outturn daily (INDOD) stream  # noqa: E501

        This endpoint provides initial National Demand outturn daily data. The total daily energy volume is the total  demand volume for the previous day expressed on an initial National Demand outturn (INDO) basis, i.e. excluding  station transformer, pumping and interconnector export demand. It is calculated from summing the half hourly  INDO demands (divided by two to convert to MWh).    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_indod_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesDemandOutturnDatasetRowsIndodDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_indod_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_indod_stream_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_indod_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/INDOD/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesDemandOutturnDatasetRowsIndodDatasetRow]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_itsdo_get(self, **kwargs):  # noqa: E501
        """Initial Transmission System Demand outturn (ITSDO)  # noqa: E501

        The endpoint provides data showing the initial Transmission System Demand outturn.  Data is updated at 15 min intervals containing the initial demand expressed in MW.                Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_itsdo_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandOutturnDatasetRowsDemandOutturnTransmission
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_itsdo_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_itsdo_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_itsdo_get_with_http_info(self, **kwargs):  # noqa: E501
        """Initial Transmission System Demand outturn (ITSDO)  # noqa: E501

        The endpoint provides data showing the initial Transmission System Demand outturn.  Data is updated at 15 min intervals containing the initial demand expressed in MW.                Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_itsdo_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandOutturnDatasetRowsDemandOutturnTransmission
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_itsdo_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/ITSDO', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandOutturnDatasetRowsDemandOutturnTransmission',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_lolpdrm_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Loss of load probability and de-rated margin (LOLPDRM)  # noqa: E501

        The loss of load probability and de-rated margin data is received half-hourly from NGESO.                Loss of load probability (LoLP) is a measure of system reliability, calculated by NGESO for each settlement period,  using the methodology set out in the Loss of Load Probability Calculation Statement.                De-rated margin is a forecast of the excess supply on the system, which has been adjusted to take account of the likely availability of electricity generators.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_lolpdrm_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesMiscDatasetRowsLossOfLoadProbabilityDeratedMarginData
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_lolpdrm_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_lolpdrm_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_lolpdrm_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Loss of load probability and de-rated margin (LOLPDRM)  # noqa: E501

        The loss of load probability and de-rated margin data is received half-hourly from NGESO.                Loss of load probability (LoLP) is a measure of system reliability, calculated by NGESO for each settlement period,  using the methodology set out in the Loss of Load Probability Calculation Statement.                De-rated margin is a forecast of the excess supply on the system, which has been adjusted to take account of the likely availability of electricity generators.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_lolpdrm_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesMiscDatasetRowsLossOfLoadProbabilityDeratedMarginData
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_lolpdrm_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_lolpdrm_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_lolpdrm_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/LOLPDRM', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesMiscDatasetRowsLossOfLoadProbabilityDeratedMarginData',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_lolpdrm_stream_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Loss of load probability and de-rated margin (LOLPDRM)  # noqa: E501

        The loss of load probability and de-rated margin data is received half-hourly from NGESO.                Loss of load probability (LoLP) is a measure of system reliability, calculated by NGESO for each settlement period,  using the methodology set out in the Loss of Load Probability Calculation Statement.                De-rated margin is a forecast of the excess supply on the system, which has been adjusted to take account of the likely availability of electricity generators.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_lolpdrm_stream_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesMiscDatasetRowsLossOfLoadProbabilityDeratedMarginData]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_lolpdrm_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_lolpdrm_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_lolpdrm_stream_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Loss of load probability and de-rated margin (LOLPDRM)  # noqa: E501

        The loss of load probability and de-rated margin data is received half-hourly from NGESO.                Loss of load probability (LoLP) is a measure of system reliability, calculated by NGESO for each settlement period,  using the methodology set out in the Loss of Load Probability Calculation Statement.                De-rated margin is a forecast of the excess supply on the system, which has been adjusted to take account of the likely availability of electricity generators.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_lolpdrm_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesMiscDatasetRowsLossOfLoadProbabilityDeratedMarginData]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_lolpdrm_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_lolpdrm_stream_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_lolpdrm_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/LOLPDRM/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesMiscDatasetRowsLossOfLoadProbabilityDeratedMarginData]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_matl_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Month-Ahead Total Load Forecast Per Bidding Zone (MATL / B0640)  # noqa: E501

        This endpoint provides month-ahead total load per bidding zone forecast data with minimum possible  and maximum available loads provided in MW values.    This API endpoint has a maximum range of 367 days.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_matl_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsMonthAheadTotalLoadPerBiddingZoneDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_matl_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_matl_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_matl_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Month-Ahead Total Load Forecast Per Bidding Zone (MATL / B0640)  # noqa: E501

        This endpoint provides month-ahead total load per bidding zone forecast data with minimum possible  and maximum available loads provided in MW values.    This API endpoint has a maximum range of 367 days.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_matl_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsMonthAheadTotalLoadPerBiddingZoneDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_matl_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_matl_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_matl_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/MATL', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsMonthAheadTotalLoadPerBiddingZoneDatasetRow',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_matl_stream_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Month-Ahead Total Load Forecast Per Bidding Zone (MATL / B0640) stream  # noqa: E501

        This endpoint provides month-ahead total load per bidding zone forecast data with minimum possible  and maximum available loads provided in MW values.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_matl_stream_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsMonthAheadTotalLoadPerBiddingZoneDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_matl_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_matl_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_matl_stream_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Month-Ahead Total Load Forecast Per Bidding Zone (MATL / B0640) stream  # noqa: E501

        This endpoint provides month-ahead total load per bidding zone forecast data with minimum possible  and maximum available loads provided in MW values.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_matl_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsMonthAheadTotalLoadPerBiddingZoneDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_matl_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_matl_stream_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_matl_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/MATL/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesTransparencyDatasetRowsMonthAheadTotalLoadPerBiddingZoneDatasetRow]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_mdp_get(self, _from, to, **kwargs):  # noqa: E501
        """Maximum Delivery Period (MDP)  # noqa: E501

        Maximum Delivery Period (MDP) is the maximum period, expressed in minutes, over which the  Maximum Delivery Volume (MDV) applies. Maximum Delivery Volume is the maximum number of MWh of Offer (or Bid)  that a particular BM Unit may deliver within the associated Maximum Delivery Period.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/MDP?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/MDP?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/MDP?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/MDP?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mdp_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsDeliveryPeriodMaxData
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_mdp_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_mdp_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_mdp_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Maximum Delivery Period (MDP)  # noqa: E501

        Maximum Delivery Period (MDP) is the maximum period, expressed in minutes, over which the  Maximum Delivery Volume (MDV) applies. Maximum Delivery Volume is the maximum number of MWh of Offer (or Bid)  that a particular BM Unit may deliver within the associated Maximum Delivery Period.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/MDP?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/MDP?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/MDP?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/MDP?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mdp_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsDeliveryPeriodMaxData
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_mdp_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_mdp_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_mdp_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/MDP', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsDeliveryPeriodMaxData',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_mdp_stream_get(self, _from, to, **kwargs):  # noqa: E501
        """Maximum Delivery Period (MDP) stream  # noqa: E501

        This endpoint provides Maximum Delivery Period data received from NGESO.                Maximum Delivery Period (MDP) is the maximum period over which the Maximum Delivery Volume (MDV) applies.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/MDP/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/MDP/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/MDP/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/MDP/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for MDP data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mdp_stream_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsDeliveryPeriodMaxData]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_mdp_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_mdp_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_mdp_stream_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Maximum Delivery Period (MDP) stream  # noqa: E501

        This endpoint provides Maximum Delivery Period data received from NGESO.                Maximum Delivery Period (MDP) is the maximum period over which the Maximum Delivery Volume (MDV) applies.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/MDP/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/MDP/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/MDP/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/MDP/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for MDP data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mdp_stream_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsDeliveryPeriodMaxData]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_mdp_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_mdp_stream_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_mdp_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/MDP/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsDeliveryPeriodMaxData]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_mdv_get(self, _from, to, **kwargs):  # noqa: E501
        """Maximum Delivery Volume (MDV)  # noqa: E501

        This endpoint provides Maximum Delivery Volume data received from NGESO.                Maximum Delivery Volume is the maximum number of MWh of Offer (or Bid), that a particular BM Unit  may deliver within the associated Maximum Delivery Period.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/MDV?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/MDV?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/MDV?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/MDV?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mdv_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsDeliveryVolumeMaxData
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_mdv_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_mdv_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_mdv_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Maximum Delivery Volume (MDV)  # noqa: E501

        This endpoint provides Maximum Delivery Volume data received from NGESO.                Maximum Delivery Volume is the maximum number of MWh of Offer (or Bid), that a particular BM Unit  may deliver within the associated Maximum Delivery Period.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/MDV?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/MDV?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/MDV?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/MDV?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mdv_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsDeliveryVolumeMaxData
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_mdv_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_mdv_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_mdv_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/MDV', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsDeliveryVolumeMaxData',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_mdv_stream_get(self, _from, to, **kwargs):  # noqa: E501
        """Maximum Delivery Volume (MDV) stream  # noqa: E501

        This endpoint provides Maximum Delivery Volume data received from NGESO.                Maximum Delivery Volume is the maximum number of MWh of Offer (or Bid), that a particular BM Unit  may deliver within the associated Maximum Delivery Period.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/MDV/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/MDV/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/MDV/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/MDV/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for MDV data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mdv_stream_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsDeliveryVolumeMaxData]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_mdv_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_mdv_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_mdv_stream_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Maximum Delivery Volume (MDV) stream  # noqa: E501

        This endpoint provides Maximum Delivery Volume data received from NGESO.                Maximum Delivery Volume is the maximum number of MWh of Offer (or Bid), that a particular BM Unit  may deliver within the associated Maximum Delivery Period.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/MDV/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/MDV/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/MDV/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/MDV/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for MDV data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mdv_stream_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsDeliveryVolumeMaxData]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_mdv_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_mdv_stream_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_mdv_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/MDV/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsDeliveryVolumeMaxData]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_melngc_get(self, **kwargs):  # noqa: E501
        """Day and day-ahead indicated margin (MELNGC)  # noqa: E501

        This endpoint provides the indicated margin. Data is received every half an hour from NGESO.  Expressed as an average MW value for each settlement period. The indicated margin forecast for  each settlement period is the difference between the sum of the MELs submitted for that period,  and the National Demand forecast made by the System Operator. The greater the value, the higher  the margin between available generation capacity and forecast demand - that is to say, the more  spare capacity there is forecast to be in the system.                This API endpoint provides a maximum data output range of 1 day.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_melngc_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str boundary:
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesIndicatedForecastDatasetRowsIndicatedMargin
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_melngc_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_melngc_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_melngc_get_with_http_info(self, **kwargs):  # noqa: E501
        """Day and day-ahead indicated margin (MELNGC)  # noqa: E501

        This endpoint provides the indicated margin. Data is received every half an hour from NGESO.  Expressed as an average MW value for each settlement period. The indicated margin forecast for  each settlement period is the difference between the sum of the MELs submitted for that period,  and the National Demand forecast made by the System Operator. The greater the value, the higher  the margin between available generation capacity and forecast demand - that is to say, the more  spare capacity there is forecast to be in the system.                This API endpoint provides a maximum data output range of 1 day.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_melngc_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str boundary:
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesIndicatedForecastDatasetRowsIndicatedMargin
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['boundary', 'publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_melngc_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'boundary' in params:
            query_params.append(('boundary', params['boundary']))  # noqa: E501
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/MELNGC', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesIndicatedForecastDatasetRowsIndicatedMargin',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_melngc_stream_get(self, **kwargs):  # noqa: E501
        """Day and day-ahead indicated margin (MELNGC) stream  # noqa: E501

        This endpoint provides the indicated margin. Data is received every half an hour from NGESO.  Expressed as an average MW value for each settlement period. The indicated margin forecast for  each settlement period is the difference between the sum of the MELs submitted for that period,  and the National Demand forecast made by the System Operator. The greater the value, the higher  the margin between available generation capacity and forecast demand - that is to say, the more  spare capacity there is forecast to be in the system.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_melngc_stream_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str boundary:
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesIndicatedForecastDatasetRowsIndicatedMargin]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_melngc_stream_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_melngc_stream_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_melngc_stream_get_with_http_info(self, **kwargs):  # noqa: E501
        """Day and day-ahead indicated margin (MELNGC) stream  # noqa: E501

        This endpoint provides the indicated margin. Data is received every half an hour from NGESO.  Expressed as an average MW value for each settlement period. The indicated margin forecast for  each settlement period is the difference between the sum of the MELs submitted for that period,  and the National Demand forecast made by the System Operator. The greater the value, the higher  the margin between available generation capacity and forecast demand - that is to say, the more  spare capacity there is forecast to be in the system.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_melngc_stream_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str boundary:
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesIndicatedForecastDatasetRowsIndicatedMargin]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['boundary', 'publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_melngc_stream_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'boundary' in params:
            query_params.append(('boundary', params['boundary']))  # noqa: E501
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/MELNGC/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesIndicatedForecastDatasetRowsIndicatedMargin]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_mels_get(self, _from, to, **kwargs):  # noqa: E501
        """Maximum Export Limit (MELS)  # noqa: E501

        This endpoint provides Maximum Export Limit data received from NGESO.    The Maximum Export Limit is the maximum power export level of a particular BM Unit at a particular time.  The data is updated every 30 minutes and within 15 minutes of the end of the effective Settlement Period.  MELs are submitted as a series of MW values and associated times in UTC.    By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/mels?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/mels?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/mels?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/mels?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mels_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingPhysicalDatasetRowsDeliveryLimitMaxData
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_mels_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_mels_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_mels_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Maximum Export Limit (MELS)  # noqa: E501

        This endpoint provides Maximum Export Limit data received from NGESO.    The Maximum Export Limit is the maximum power export level of a particular BM Unit at a particular time.  The data is updated every 30 minutes and within 15 minutes of the end of the effective Settlement Period.  MELs are submitted as a series of MW values and associated times in UTC.    By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/mels?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/mels?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/mels?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/mels?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mels_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingPhysicalDatasetRowsDeliveryLimitMaxData
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_mels_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_mels_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_mels_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/MELS', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingPhysicalDatasetRowsDeliveryLimitMaxData',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_mels_stream_get(self, _from, to, **kwargs):  # noqa: E501
        """Maximum Export Limit (MELS) stream  # noqa: E501

        This endpoint provides Maximum Export Limit data received from NGESO.    The Maximum Export Limit is the maximum power export level of a particular BM Unit at a particular time.  The data is updated every 30 minutes and within 15 minutes of the end of the effective Settlement Period.  MELs are submitted as a series of MW values and associated times in UTC.    By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/mels/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/mels/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/mels/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/mels/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  This endpoint has an optimised JSON payload and is aimed at frequent requests for MELS data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mels_stream_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingPhysicalDatasetRowsDeliveryLimitMaxData]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_mels_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_mels_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_mels_stream_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Maximum Export Limit (MELS) stream  # noqa: E501

        This endpoint provides Maximum Export Limit data received from NGESO.    The Maximum Export Limit is the maximum power export level of a particular BM Unit at a particular time.  The data is updated every 30 minutes and within 15 minutes of the end of the effective Settlement Period.  MELs are submitted as a series of MW values and associated times in UTC.    By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/mels/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/mels/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/mels/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/mels/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  This endpoint has an optimised JSON payload and is aimed at frequent requests for MELS data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mels_stream_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingPhysicalDatasetRowsDeliveryLimitMaxData]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_mels_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_mels_stream_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_mels_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/MELS/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesBalancingPhysicalDatasetRowsDeliveryLimitMaxData]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_metadata_latest_get(self, **kwargs):  # noqa: E501
        """Returns the time when each dataset was last updated  # noqa: E501

        Depending on the dataset, this value may be taken from the timestamp on the source datafile, the  publishTime field on the dataset, or the latest available measurement time.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_metadata_latest_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesReferenceDatasetMetadataLatestRow
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_metadata_latest_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_metadata_latest_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_metadata_latest_get_with_http_info(self, **kwargs):  # noqa: E501
        """Returns the time when each dataset was last updated  # noqa: E501

        Depending on the dataset, this value may be taken from the timestamp on the source datafile, the  publishTime field on the dataset, or the latest available measurement time.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_metadata_latest_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesReferenceDatasetMetadataLatestRow
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_metadata_latest_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/metadata/latest', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesReferenceDatasetMetadataLatestRow',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_mid_get(self, _from, to, **kwargs):  # noqa: E501
        """Market Index Data (MID)  # noqa: E501

        This endpoint provides Market Index Data received from NGESO.                Market Index Data is a key component in the calculation of System Buy Price and System Sell Price for each  Settlement Period. This data is received from each of the appointed Market Index Data Providers (MIDPs) and  reflects the price of wholesale electricity in Great Britain in the short term markets. The Market Index Data  which is received from each MIDP for each Settlement Period consists of a Market Index Volume and  Market Index Price, representing the volume and price of trading for the relevant period in the market operated  by the MIDP. The Market Price (the volume weighed average Market Index Price) is used to derive  the Reverse Price (SBP or SSP).\"                The two data providers available to query are N2EX (\"N2EXMIDP\") and APX (\"APXMIDP\").    By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/mid?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/mid?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/mid?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/mid?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mid_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] data_providers: The data providers to query. If no data provider is selected both will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDatasetRowsMarketIndexDatasetResponse
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_mid_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_mid_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_mid_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Market Index Data (MID)  # noqa: E501

        This endpoint provides Market Index Data received from NGESO.                Market Index Data is a key component in the calculation of System Buy Price and System Sell Price for each  Settlement Period. This data is received from each of the appointed Market Index Data Providers (MIDPs) and  reflects the price of wholesale electricity in Great Britain in the short term markets. The Market Index Data  which is received from each MIDP for each Settlement Period consists of a Market Index Volume and  Market Index Price, representing the volume and price of trading for the relevant period in the market operated  by the MIDP. The Market Price (the volume weighed average Market Index Price) is used to derive  the Reverse Price (SBP or SSP).\"                The two data providers available to query are N2EX (\"N2EXMIDP\") and APX (\"APXMIDP\").    By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/mid?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/mid?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/mid?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/mid?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mid_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] data_providers: The data providers to query. If no data provider is selected both will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDatasetRowsMarketIndexDatasetResponse
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'data_providers', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_mid_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_mid_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_mid_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'data_providers' in params:
            query_params.append(('dataProviders', params['data_providers']))  # noqa: E501
            collection_formats['dataProviders'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/MID', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDatasetRowsMarketIndexDatasetResponse',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_mid_stream_get(self, _from, to, **kwargs):  # noqa: E501
        """Market Index Data (MID) stream  # noqa: E501

        This endpoint provides Market Index Data received from NGESO.                Market Index Data is a key component in the calculation of System Buy Price and System Sell Price for each  Settlement Period. This data is received from each of the appointed Market Index Data Providers (MIDPs) and  reflects the price of wholesale electricity in Great Britain in the short term markets. The Market Index Data  which is received from each MIDP for each Settlement Period consists of a Market Index Volume and  Market Index Price, representing the volume and price of trading for the relevant period in the market operated  by the MIDP. The Market Price (the volume weighed average Market Index Price) is used to derive  the Reverse Price (SBP or SSP).\"                The two data providers available to query are N2EX (\"N2EXMIDP\") and APX (\"APXMIDP\").    By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/mid/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/mid/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/mid/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/mid/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for MID data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mid_stream_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] data_providers: The data providers to query. If no data provider is selected both will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDatasetRowsMarketIndexDatasetResponse]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_mid_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_mid_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_mid_stream_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Market Index Data (MID) stream  # noqa: E501

        This endpoint provides Market Index Data received from NGESO.                Market Index Data is a key component in the calculation of System Buy Price and System Sell Price for each  Settlement Period. This data is received from each of the appointed Market Index Data Providers (MIDPs) and  reflects the price of wholesale electricity in Great Britain in the short term markets. The Market Index Data  which is received from each MIDP for each Settlement Period consists of a Market Index Volume and  Market Index Price, representing the volume and price of trading for the relevant period in the market operated  by the MIDP. The Market Price (the volume weighed average Market Index Price) is used to derive  the Reverse Price (SBP or SSP).\"                The two data providers available to query are N2EX (\"N2EXMIDP\") and APX (\"APXMIDP\").    By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/mid/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/mid/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/mid/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/mid/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for MID data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mid_stream_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] data_providers: The data providers to query. If no data provider is selected both will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDatasetRowsMarketIndexDatasetResponse]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'data_providers']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_mid_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_mid_stream_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_mid_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'data_providers' in params:
            query_params.append(('dataProviders', params['data_providers']))  # noqa: E501
            collection_formats['dataProviders'] = 'multi'  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/MID/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesBalancingDatasetRowsMarketIndexDatasetResponse]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_mils_get(self, _from, to, **kwargs):  # noqa: E501
        """Maximum Import Limit (MILS)  # noqa: E501

        This endpoint provides Maximum Import Limit data received from NGESO.    The maximum power import level of a particular BM Unit at a particular time.  The data is updated every 30 minutes and within 15 minutes of the end of the effective Settlement Period.  MILs are submitted as a series of MW values and associated times in UTC.    By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/mils?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/mils?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/mils?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/mils?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mils_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingPhysicalDatasetRowsDeliveryLimitMaxData
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_mils_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_mils_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_mils_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Maximum Import Limit (MILS)  # noqa: E501

        This endpoint provides Maximum Import Limit data received from NGESO.    The maximum power import level of a particular BM Unit at a particular time.  The data is updated every 30 minutes and within 15 minutes of the end of the effective Settlement Period.  MILs are submitted as a series of MW values and associated times in UTC.    By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/mils?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/mils?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/mils?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/mils?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mils_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingPhysicalDatasetRowsDeliveryLimitMaxData
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_mils_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_mils_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_mils_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/MILS', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingPhysicalDatasetRowsDeliveryLimitMaxData',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_mils_stream_get(self, _from, to, **kwargs):  # noqa: E501
        """Maximum Import Limit (MILS) stream  # noqa: E501

        This endpoint provides Maximum Import Limit data received from NGESO.    The maximum power import level of a particular BM Unit at a particular time.  The data is updated every 30 minutes and within 15 minutes of the end of the effective Settlement Period.  MILs are submitted as a series of MW values and associated times in UTC.    By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/mils/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/mils/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/mils/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/mils/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  This endpoint has an optimised JSON payload and is aimed at frequent requests for MILS data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mils_stream_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingPhysicalDatasetRowsDeliveryLimitMaxData]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_mils_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_mils_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_mils_stream_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Maximum Import Limit (MILS) stream  # noqa: E501

        This endpoint provides Maximum Import Limit data received from NGESO.    The maximum power import level of a particular BM Unit at a particular time.  The data is updated every 30 minutes and within 15 minutes of the end of the effective Settlement Period.  MILs are submitted as a series of MW values and associated times in UTC.    By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/mils/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/mils/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/mils/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/mils/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  This endpoint has an optimised JSON payload and is aimed at frequent requests for MILS data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mils_stream_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingPhysicalDatasetRowsDeliveryLimitMaxData]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_mils_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_mils_stream_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_mils_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/MILS/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesBalancingPhysicalDatasetRowsDeliveryLimitMaxData]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_mnzt_get(self, _from, to, **kwargs):  # noqa: E501
        """Minimum Non-Zero Time (MNZT)  # noqa: E501

        This endpoint provides Minimum Non Zero Time data received from NGESO.    The Minimum Non-Zero Time represents the minimum time that a BM Unit can operate at a non-zero level as a result of a Bid-Offer Acceptance.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/MNZT?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/MNZT?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/MNZT?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/MNZT?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mnzt_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsDeliveryPeriodMinData
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_mnzt_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_mnzt_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_mnzt_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Minimum Non-Zero Time (MNZT)  # noqa: E501

        This endpoint provides Minimum Non Zero Time data received from NGESO.    The Minimum Non-Zero Time represents the minimum time that a BM Unit can operate at a non-zero level as a result of a Bid-Offer Acceptance.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/MNZT?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/MNZT?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/MNZT?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/MNZT?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mnzt_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsDeliveryPeriodMinData
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_mnzt_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_mnzt_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_mnzt_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/MNZT', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsDeliveryPeriodMinData',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_mnzt_stream_get(self, _from, to, **kwargs):  # noqa: E501
        """Minimum Non-Zero Time (MNZT) stream  # noqa: E501

        This endpoint provides Minimum Non Zero Time data received from NGESO.    The Minimum Non-Zero Time represents the minimum time that a BM Unit can operate at a non-zero level as a result of a Bid-Offer Acceptance.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/MNZT/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/MNZT/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/MNZT/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/MNZT/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1                This endpoint has an optimised JSON payload and is aimed at frequent requests for MNZT data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mnzt_stream_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsDeliveryPeriodMinData]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_mnzt_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_mnzt_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_mnzt_stream_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Minimum Non-Zero Time (MNZT) stream  # noqa: E501

        This endpoint provides Minimum Non Zero Time data received from NGESO.    The Minimum Non-Zero Time represents the minimum time that a BM Unit can operate at a non-zero level as a result of a Bid-Offer Acceptance.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/MNZT/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/MNZT/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/MNZT/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/MNZT/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1                This endpoint has an optimised JSON payload and is aimed at frequent requests for MNZT data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mnzt_stream_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsDeliveryPeriodMinData]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_mnzt_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_mnzt_stream_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_mnzt_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/MNZT/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsDeliveryPeriodMinData]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_mzt_get(self, _from, to, **kwargs):  # noqa: E501
        """Minimum Zero Time (MZT)  # noqa: E501

        This endpoint provides Minimum Zero Time data received from NGESO.    The Minimum Zero Time is the minimum time that a BM Unit which has been exporting must operate at zero or import, before returning to export;  whereas if the BM Unit has been importing, the MZT indicates the minimum time that it must operate at zero or export before returning to import,  if action by the System Operator (i.e. a Bid-Offer Acceptance) places it at such a level.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/MZT?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/MZT?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/MZT?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/MZT?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mzt_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsDeliveryPeriodMinData
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_mzt_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_mzt_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_mzt_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Minimum Zero Time (MZT)  # noqa: E501

        This endpoint provides Minimum Zero Time data received from NGESO.    The Minimum Zero Time is the minimum time that a BM Unit which has been exporting must operate at zero or import, before returning to export;  whereas if the BM Unit has been importing, the MZT indicates the minimum time that it must operate at zero or export before returning to import,  if action by the System Operator (i.e. a Bid-Offer Acceptance) places it at such a level.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/MZT?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/MZT?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/MZT?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/MZT?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mzt_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsDeliveryPeriodMinData
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_mzt_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_mzt_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_mzt_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/MZT', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsDeliveryPeriodMinData',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_mzt_stream_get(self, _from, to, **kwargs):  # noqa: E501
        """Minimum Zero Time (MZT) stream  # noqa: E501

        This endpoint provides Minimum Zero Time data received from NGESO.    The Minimum Zero Time is the minimum time that a BM Unit which has been exporting must operate at zero or import, before returning to export;  whereas if the BM Unit has been importing, the MZT indicates the minimum time that it must operate at zero or export before returning to import,  if action by the System Operator (i.e. a Bid-Offer Acceptance) places it at such a level.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                  /// All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/MZT/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/MZT/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/MZT/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/MZT/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for MZT data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mzt_stream_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsDeliveryPeriodMinData]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_mzt_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_mzt_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_mzt_stream_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Minimum Zero Time (MZT) stream  # noqa: E501

        This endpoint provides Minimum Zero Time data received from NGESO.    The Minimum Zero Time is the minimum time that a BM Unit which has been exporting must operate at zero or import, before returning to export;  whereas if the BM Unit has been importing, the MZT indicates the minimum time that it must operate at zero or export before returning to import,  if action by the System Operator (i.e. a Bid-Offer Acceptance) places it at such a level.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                  /// All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/MZT/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/MZT/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/MZT/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/MZT/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for MZT data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_mzt_stream_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsDeliveryPeriodMinData]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_mzt_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_mzt_stream_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_mzt_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/MZT/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsDeliveryPeriodMinData]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_ndf_get(self, **kwargs):  # noqa: E501
        """Day and day-ahead National Demand forecast (NDF)  # noqa: E501

        This endpoint provides the National Demand forecast received from NGESO. Data is available  daily and will show values for the day ahead. Expressed as an average MW  value for each settlement period. The forecast is based on historically metered generation  output for Great Britain. This value INCLUDES transmission losses, but EXCLUDES interconnector  flows and demand from station transformers and pumped storage units.                This API endpoint provides a maximum data output range of 1 day.                Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ndf_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastNationalDayAhead
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_ndf_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_ndf_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_ndf_get_with_http_info(self, **kwargs):  # noqa: E501
        """Day and day-ahead National Demand forecast (NDF)  # noqa: E501

        This endpoint provides the National Demand forecast received from NGESO. Data is available  daily and will show values for the day ahead. Expressed as an average MW  value for each settlement period. The forecast is based on historically metered generation  output for Great Britain. This value INCLUDES transmission losses, but EXCLUDES interconnector  flows and demand from station transformers and pumped storage units.                This API endpoint provides a maximum data output range of 1 day.                Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ndf_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastNationalDayAhead
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_ndf_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/NDF', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastNationalDayAhead',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_ndf_stream_get(self, **kwargs):  # noqa: E501
        """Day and day-ahead National Demand forecast (NDF) stream  # noqa: E501

        This endpoint provides the National Demand forecast received from NGESO. Data is available  daily and will show values for the day ahead. Expressed as an average MW  value for each settlement period. The forecast is based on historically metered generation  output for Great Britain. This value INCLUDES transmission losses, but EXCLUDES interconnector  flows and demand from station transformers and pumped storage units.                Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ndf_stream_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastNationalDayAhead]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_ndf_stream_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_ndf_stream_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_ndf_stream_get_with_http_info(self, **kwargs):  # noqa: E501
        """Day and day-ahead National Demand forecast (NDF) stream  # noqa: E501

        This endpoint provides the National Demand forecast received from NGESO. Data is available  daily and will show values for the day ahead. Expressed as an average MW  value for each settlement period. The forecast is based on historically metered generation  output for Great Britain. This value INCLUDES transmission losses, but EXCLUDES interconnector  flows and demand from station transformers and pumped storage units.                Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ndf_stream_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastNationalDayAhead]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_ndf_stream_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/NDF/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastNationalDayAhead]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_ndfd_get(self, **kwargs):  # noqa: E501
        """2-14 days ahead National Demand and surplus forecast (NDFD)  # noqa: E501

        This endpoint provides the National Demand forecast received from NGESO.  Data is available daily and will show values for the 2 to 14 days ahead.  Expressed as an average MW value for each Settlement period. The forecast is based on historically metered generation output for Great Britain.  This value INCLUDES transmission losses, but EXCLUDES interconnector flows and demand from station.    This API endpoint provides a maximum data output range of 92 days.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ndfd_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastNationalDaily
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_ndfd_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_ndfd_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_ndfd_get_with_http_info(self, **kwargs):  # noqa: E501
        """2-14 days ahead National Demand and surplus forecast (NDFD)  # noqa: E501

        This endpoint provides the National Demand forecast received from NGESO.  Data is available daily and will show values for the 2 to 14 days ahead.  Expressed as an average MW value for each Settlement period. The forecast is based on historically metered generation output for Great Britain.  This value INCLUDES transmission losses, but EXCLUDES interconnector flows and demand from station.    This API endpoint provides a maximum data output range of 92 days.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ndfd_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastNationalDaily
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_ndfd_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/NDFD', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastNationalDaily',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_ndfd_stream_get(self, **kwargs):  # noqa: E501
        """2-14 days ahead National Demand and surplus forecast (NDFD) stream  # noqa: E501

        This endpoint provides the National Demand forecast received from NGESO.  Data is available daily and will show values for the 2 to 14 days ahead.  Expressed as an average MW value for each Settlement period. The forecast is based on historically metered generation output for Great Britain.  This value INCLUDES transmission losses, but EXCLUDES Interconnector flows and demand from station    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ndfd_stream_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastNationalDaily]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_ndfd_stream_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_ndfd_stream_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_ndfd_stream_get_with_http_info(self, **kwargs):  # noqa: E501
        """2-14 days ahead National Demand and surplus forecast (NDFD) stream  # noqa: E501

        This endpoint provides the National Demand forecast received from NGESO.  Data is available daily and will show values for the 2 to 14 days ahead.  Expressed as an average MW value for each Settlement period. The forecast is based on historically metered generation output for Great Britain.  This value INCLUDES transmission losses, but EXCLUDES Interconnector flows and demand from station    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ndfd_stream_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastNationalDaily]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_ndfd_stream_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/NDFD/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastNationalDaily]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_ndfw_get(self, **kwargs):  # noqa: E501
        """2-52 weeks ahead National Demand and surplus forecast (NDFW)  # noqa: E501

        This endpoint provides the National Demand forecast received from NGESO.  Data is available from 4pm each Thursday and will show values for the 2 to 52 weeks ahead.  Expressed as an average MW value for each week. The forecast is based on historically metered generation output for Great Britain.  This value INCLUDES transmission losses, but EXCLUDES interconnector flows and demand from station.    This API endpoint provides a maximum data output range of 366 days.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ndfw_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastNationalWeekly
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_ndfw_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_ndfw_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_ndfw_get_with_http_info(self, **kwargs):  # noqa: E501
        """2-52 weeks ahead National Demand and surplus forecast (NDFW)  # noqa: E501

        This endpoint provides the National Demand forecast received from NGESO.  Data is available from 4pm each Thursday and will show values for the 2 to 52 weeks ahead.  Expressed as an average MW value for each week. The forecast is based on historically metered generation output for Great Britain.  This value INCLUDES transmission losses, but EXCLUDES interconnector flows and demand from station.    This API endpoint provides a maximum data output range of 366 days.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ndfw_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastNationalWeekly
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_ndfw_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/NDFW', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastNationalWeekly',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_ndfw_stream_get(self, **kwargs):  # noqa: E501
        """2-52 weeks ahead National Demand and surplus forecast (NDFW) stream  # noqa: E501

        This endpoint provides the National Demand forecast received from NGESO.  Data is available from 4pm each Thursday and will show values for the 2 to 52 weeks ahead.  Expressed as an average MW value for each week. The forecast is based on historically metered generation output for Great Britain.  This value INCLUDES transmission losses, but EXCLUDES interconnector flows and demand from station.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ndfw_stream_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastNationalWeekly]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_ndfw_stream_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_ndfw_stream_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_ndfw_stream_get_with_http_info(self, **kwargs):  # noqa: E501
        """2-52 weeks ahead National Demand and surplus forecast (NDFW) stream  # noqa: E501

        This endpoint provides the National Demand forecast received from NGESO.  Data is available from 4pm each Thursday and will show values for the 2 to 52 weeks ahead.  Expressed as an average MW value for each week. The forecast is based on historically metered generation output for Great Britain.  This value INCLUDES transmission losses, but EXCLUDES interconnector flows and demand from station.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ndfw_stream_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastNationalWeekly]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_ndfw_stream_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/NDFW/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastNationalWeekly]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_ndz_get(self, _from, to, **kwargs):  # noqa: E501
        """Notice to Deviate from Zero (NDZ)  # noqa: E501

        This endpoint provides Notice to Deviate from Zero data received from NGESO.                Notice to Deviate from Zero (NDZ) indicates the length of time required for a BM Unit to start importing or  exporting energy, from a zero Physical Notification level as a result of a Bid-Offer Acceptance, expressed in  minutes.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/NDZ?from=2022-06-01T00:00Z&to=2022-06-08T00:00Z                Filtering from start time to settlement date and period:                    /datasets/NDZ?from=2022-06-01T00:00Z&to=2022-06-08T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/NDZ?from=2022-06-01T00:00Z&to=2022-06-08T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/NDZ?from=2022-06-01T00:00Z&to=2022-06-08T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ndz_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsNoticeData
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_ndz_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_ndz_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_ndz_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Notice to Deviate from Zero (NDZ)  # noqa: E501

        This endpoint provides Notice to Deviate from Zero data received from NGESO.                Notice to Deviate from Zero (NDZ) indicates the length of time required for a BM Unit to start importing or  exporting energy, from a zero Physical Notification level as a result of a Bid-Offer Acceptance, expressed in  minutes.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/NDZ?from=2022-06-01T00:00Z&to=2022-06-08T00:00Z                Filtering from start time to settlement date and period:                    /datasets/NDZ?from=2022-06-01T00:00Z&to=2022-06-08T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/NDZ?from=2022-06-01T00:00Z&to=2022-06-08T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/NDZ?from=2022-06-01T00:00Z&to=2022-06-08T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ndz_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsNoticeData
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_ndz_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_ndz_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_ndz_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/NDZ', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsNoticeData',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_ndz_stream_get(self, _from, to, **kwargs):  # noqa: E501
        """Notice to Deviate from Zero (NDZ) stream  # noqa: E501

        This endpoint provides Notice to Deviate from Zero data received from NGESO.                Notice to Deviate from Zero (NDZ) indicates the length of time required for a BM Unit to start importing or  exporting energy, from a zero Physical Notification level as a result of a Bid-Offer Acceptance, expressed in  minutes.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/NDZ/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/NDZ/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/NDZ/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/NDZ/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for NDZ data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ndz_stream_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsNoticeData]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_ndz_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_ndz_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_ndz_stream_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Notice to Deviate from Zero (NDZ) stream  # noqa: E501

        This endpoint provides Notice to Deviate from Zero data received from NGESO.                Notice to Deviate from Zero (NDZ) indicates the length of time required for a BM Unit to start importing or  exporting energy, from a zero Physical Notification level as a result of a Bid-Offer Acceptance, expressed in  minutes.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/NDZ/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/NDZ/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/NDZ/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/NDZ/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for NDZ data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ndz_stream_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsNoticeData]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_ndz_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_ndz_stream_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_ndz_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/NDZ/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsNoticeData]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_netbsad_get(self, _from, to, **kwargs):  # noqa: E501
        """Net Balancing Services Adjustment Data (NETBSAD)  # noqa: E501

        This endpoint provides Net Balancing Services Adjustment data received from NGESO.                Net Balancing Services Adjustment data covers the buy/sell price, cost and volume adjustments for each  settlement period.                 By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/netbsad?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/netbsad?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/netbsad?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/netbsad?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_netbsad_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDatasetRowsNetBalancingServicesAdjustmentData
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_netbsad_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_netbsad_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_netbsad_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Net Balancing Services Adjustment Data (NETBSAD)  # noqa: E501

        This endpoint provides Net Balancing Services Adjustment data received from NGESO.                Net Balancing Services Adjustment data covers the buy/sell price, cost and volume adjustments for each  settlement period.                 By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/netbsad?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/netbsad?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/netbsad?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/netbsad?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_netbsad_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDatasetRowsNetBalancingServicesAdjustmentData
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_netbsad_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_netbsad_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_netbsad_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/NETBSAD', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDatasetRowsNetBalancingServicesAdjustmentData',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_netbsad_stream_get(self, _from, to, **kwargs):  # noqa: E501
        """Net Balancing Services Adjustment Data (NETBSAD)  # noqa: E501

        This endpoint provides Net Balancing Services Adjustment data received from NGESO.                Net Balancing Services Adjustment data covers the buy/sell price, cost and volume adjustments for each  settlement period.                 By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/netbsad/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/netbsad/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/netbsad/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/netbsad/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for NETBSAD data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_netbsad_stream_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :return: list[InsightsApiModelsResponsesBalancingDatasetRowsNetBalancingServicesAdjustmentData]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_netbsad_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_netbsad_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_netbsad_stream_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Net Balancing Services Adjustment Data (NETBSAD)  # noqa: E501

        This endpoint provides Net Balancing Services Adjustment data received from NGESO.                Net Balancing Services Adjustment data covers the buy/sell price, cost and volume adjustments for each  settlement period.                 By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/netbsad/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/netbsad/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/netbsad/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/netbsad/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for NETBSAD data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_netbsad_stream_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :return: list[InsightsApiModelsResponsesBalancingDatasetRowsNetBalancingServicesAdjustmentData]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_netbsad_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_netbsad_stream_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_netbsad_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/NETBSAD/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesBalancingDatasetRowsNetBalancingServicesAdjustmentData]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_nonbm_get(self, **kwargs):  # noqa: E501
        """Non-BM STOR (NONBM)  # noqa: E501

        This endpoint provides data about the Short Term Operating Reserves (STOR) that have been made use of  by NGESO. This is activity that is outside of the Balancing Mechanism and takes place to meet the need to  increase generation or decrease demand.                To retrieve data from a particular time window, use the optional start and end time parameters.  These times should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.  If no time window is chosen, the default output will be the latest published data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_nonbm_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The start of the data publish time window.
        :param datetime to: The end of the data publish time window.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsNonBmStorData
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_nonbm_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_nonbm_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_nonbm_get_with_http_info(self, **kwargs):  # noqa: E501
        """Non-BM STOR (NONBM)  # noqa: E501

        This endpoint provides data about the Short Term Operating Reserves (STOR) that have been made use of  by NGESO. This is activity that is outside of the Balancing Mechanism and takes place to meet the need to  increase generation or decrease demand.                To retrieve data from a particular time window, use the optional start and end time parameters.  These times should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.  If no time window is chosen, the default output will be the latest published data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_nonbm_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The start of the data publish time window.
        :param datetime to: The end of the data publish time window.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsNonBmStorData
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_nonbm_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/NONBM', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsNonBmStorData',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_nonbm_stream_get(self, **kwargs):  # noqa: E501
        """Non-BM STOR (NONBM) stream  # noqa: E501

        This endpoint provides data about the Short Term Operating Reserves (STOR) that have been made use of  by NGESO. This is activity that is outside of the Balancing Mechanism and takes place to meet the need to  increase generation or decrease demand.                To retrieve data from a particular time window, use the optional start and end time parameters.  These times should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.  If no time window is chosen, the default output will be the latest published data.                This endpoint has an optimised JSON payload and is aimed at frequent requests for the Non-BM STOR data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_nonbm_stream_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The start of the data publish time window.
        :param datetime to: The end of the data publish time window.
        :return: list[InsightsApiModelsResponsesGenerationDatasetRowsNonBmStorData]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_nonbm_stream_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_nonbm_stream_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_nonbm_stream_get_with_http_info(self, **kwargs):  # noqa: E501
        """Non-BM STOR (NONBM) stream  # noqa: E501

        This endpoint provides data about the Short Term Operating Reserves (STOR) that have been made use of  by NGESO. This is activity that is outside of the Balancing Mechanism and takes place to meet the need to  increase generation or decrease demand.                To retrieve data from a particular time window, use the optional start and end time parameters.  These times should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.  If no time window is chosen, the default output will be the latest published data.                This endpoint has an optimised JSON payload and is aimed at frequent requests for the Non-BM STOR data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_nonbm_stream_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The start of the data publish time window.
        :param datetime to: The end of the data publish time window.
        :return: list[InsightsApiModelsResponsesGenerationDatasetRowsNonBmStorData]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_nonbm_stream_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/NONBM/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesGenerationDatasetRowsNonBmStorData]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_nou2_t14_d_get(self, **kwargs):  # noqa: E501
        """2 to 14 days ahead generation availability aggregated data (NOU2T14D)  # noqa: E501

        This endpoint provides a forward view of availability (also referred to as Output Usable data  under the Grid Code) for generation and interconnector capacity, accounting for planned outages  covering 2 days ahead to 14 days ahead. The data is aggregated at national level.                Date parameter must be provided in the exact format yyyy-MM-dd.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_nou2_t14_d_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param date publish_date: The publish date for filtering. This must be in the format yyyy-MM-dd.
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsAvailabilityDaily
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_nou2_t14_d_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_nou2_t14_d_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_nou2_t14_d_get_with_http_info(self, **kwargs):  # noqa: E501
        """2 to 14 days ahead generation availability aggregated data (NOU2T14D)  # noqa: E501

        This endpoint provides a forward view of availability (also referred to as Output Usable data  under the Grid Code) for generation and interconnector capacity, accounting for planned outages  covering 2 days ahead to 14 days ahead. The data is aggregated at national level.                Date parameter must be provided in the exact format yyyy-MM-dd.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_nou2_t14_d_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param date publish_date: The publish date for filtering. This must be in the format yyyy-MM-dd.
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsAvailabilityDaily
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date', 'publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_nou2_t14_d_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date' in params:
            query_params.append(('publishDate', params['publish_date']))  # noqa: E501
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/NOU2T14D', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsAvailabilityDaily',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_nou2_t3_yw_get(self, **kwargs):  # noqa: E501
        """2 to 156 weeks ahead generation availability aggregated data (NOU2T3YW)  # noqa: E501

        This endpoint provides a forward view of availability (also referred to as Output Usable data  under the Grid Code) for generation and interconnector capacity, accounting for planned outages  covering availability data from 2 weeks ahead to 156 weeks ahead.  The data is an aggregation of all Fuel Type categories at national level.                Date parameter must be provided in the exact format yyyy-MM-dd.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_nou2_t3_yw_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param date publish_date: The publish date for filtering. This must be in the format yyyy-MM-dd.
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param list[int] week:
        :param list[int] year:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsAvailabilityWeekly
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_nou2_t3_yw_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_nou2_t3_yw_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_nou2_t3_yw_get_with_http_info(self, **kwargs):  # noqa: E501
        """2 to 156 weeks ahead generation availability aggregated data (NOU2T3YW)  # noqa: E501

        This endpoint provides a forward view of availability (also referred to as Output Usable data  under the Grid Code) for generation and interconnector capacity, accounting for planned outages  covering availability data from 2 weeks ahead to 156 weeks ahead.  The data is an aggregation of all Fuel Type categories at national level.                Date parameter must be provided in the exact format yyyy-MM-dd.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_nou2_t3_yw_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param date publish_date: The publish date for filtering. This must be in the format yyyy-MM-dd.
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param list[int] week:
        :param list[int] year:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsAvailabilityWeekly
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date', 'publish_date_time_from', 'publish_date_time_to', 'week', 'year', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_nou2_t3_yw_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date' in params:
            query_params.append(('publishDate', params['publish_date']))  # noqa: E501
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'week' in params:
            query_params.append(('week', params['week']))  # noqa: E501
            collection_formats['week'] = 'multi'  # noqa: E501
        if 'year' in params:
            query_params.append(('year', params['year']))  # noqa: E501
            collection_formats['year'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/NOU2T3YW', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsAvailabilityWeekly',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_ntb_get(self, _from, to, **kwargs):  # noqa: E501
        """Notice to Deliver Bids (NTB)  # noqa: E501

        This endpoint provides Notice to Deliver Bids data received from NGESO.                Notice to Deliver Bids (NTB) indicates the length of time between the issuing of a Bid-Offer Acceptance and the  time when a BM Unit begins to deliver Bid volumes, expressed in minutes.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/NTB?from=2022-06-01T00:00Z&to=2022-06-08T00:00Z                Filtering from start time to settlement date and period:                    /datasets/NTB?from=2022-06-01T00:00Z&to=2022-06-08T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/NTB?from=2022-06-01T00:00Z&to=2022-06-08T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/NTB?from=2022-06-01T00:00Z&to=2022-06-08T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ntb_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsNoticeData
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_ntb_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_ntb_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_ntb_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Notice to Deliver Bids (NTB)  # noqa: E501

        This endpoint provides Notice to Deliver Bids data received from NGESO.                Notice to Deliver Bids (NTB) indicates the length of time between the issuing of a Bid-Offer Acceptance and the  time when a BM Unit begins to deliver Bid volumes, expressed in minutes.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/NTB?from=2022-06-01T00:00Z&to=2022-06-08T00:00Z                Filtering from start time to settlement date and period:                    /datasets/NTB?from=2022-06-01T00:00Z&to=2022-06-08T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/NTB?from=2022-06-01T00:00Z&to=2022-06-08T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/NTB?from=2022-06-01T00:00Z&to=2022-06-08T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ntb_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsNoticeData
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_ntb_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_ntb_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_ntb_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/NTB', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsNoticeData',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_ntb_stream_get(self, _from, to, **kwargs):  # noqa: E501
        """Notice to Deliver Bids (NTB) stream  # noqa: E501

        This endpoint provides Notice to Deliver Bids data received from NGESO.                Notice to Deliver Bids (NTB) indicates the length of time between the issuing of a Bid-Offer Acceptance and the  time when a BM Unit begins to deliver Bid volumes, expressed in minutes.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/NTB/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/NTB/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/NTB/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/NTB/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for NTB data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ntb_stream_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsNoticeData]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_ntb_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_ntb_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_ntb_stream_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Notice to Deliver Bids (NTB) stream  # noqa: E501

        This endpoint provides Notice to Deliver Bids data received from NGESO.                Notice to Deliver Bids (NTB) indicates the length of time between the issuing of a Bid-Offer Acceptance and the  time when a BM Unit begins to deliver Bid volumes, expressed in minutes.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/NTB/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/NTB/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/NTB/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/NTB/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for NTB data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ntb_stream_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsNoticeData]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_ntb_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_ntb_stream_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_ntb_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/NTB/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsNoticeData]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_nto_get(self, _from, to, **kwargs):  # noqa: E501
        """Notice to Deliver Offers (NTO)  # noqa: E501

        This endpoint provides Notice to Deliver Offers data received from NGESO.                Notice to Deliver Offers (NTO) indicates the length of time required for a BM Unit to start delivering Offers  from the time that the Bid-Offer Acceptance is issued, expressed in minutes.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/NTO?from=2022-06-01T00:00Z&to=2022-06-08T00:00Z                Filtering from start time to settlement date and period:                    /datasets/NTO?from=2022-06-01T00:00Z&to=2022-06-08T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/NTO?from=2022-06-01T00:00Z&to=2022-06-08T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/NTO?from=2022-06-01T00:00Z&to=2022-06-08T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_nto_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsNoticeData
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_nto_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_nto_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_nto_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Notice to Deliver Offers (NTO)  # noqa: E501

        This endpoint provides Notice to Deliver Offers data received from NGESO.                Notice to Deliver Offers (NTO) indicates the length of time required for a BM Unit to start delivering Offers  from the time that the Bid-Offer Acceptance is issued, expressed in minutes.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/NTO?from=2022-06-01T00:00Z&to=2022-06-08T00:00Z                Filtering from start time to settlement date and period:                    /datasets/NTO?from=2022-06-01T00:00Z&to=2022-06-08T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/NTO?from=2022-06-01T00:00Z&to=2022-06-08T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/NTO?from=2022-06-01T00:00Z&to=2022-06-08T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_nto_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsNoticeData
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_nto_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_nto_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_nto_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/NTO', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsNoticeData',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_nto_stream_get(self, _from, to, **kwargs):  # noqa: E501
        """Notice to Deliver Offers (NTO) stream  # noqa: E501

        This endpoint provides Notice to Deliver Offers data received from NGESO.                Notice to Deliver Offers (NTO) indicates the length of time required for a BM Unit to start delivering Offers  from the time that the Bid-Offer Acceptance is issued, expressed in minutes.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/NTO/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/NTO/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/NTO/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/NTO/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for NTO data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_nto_stream_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsNoticeData]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_nto_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_nto_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_nto_stream_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Notice to Deliver Offers (NTO) stream  # noqa: E501

        This endpoint provides Notice to Deliver Offers data received from NGESO.                Notice to Deliver Offers (NTO) indicates the length of time required for a BM Unit to start delivering Offers  from the time that the Bid-Offer Acceptance is issued, expressed in minutes.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/NTO/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/NTO/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/NTO/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/NTO/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for NTO data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_nto_stream_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsNoticeData]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_nto_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_nto_stream_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_nto_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/NTO/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsNoticeData]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_ocnmf3_y2_get(self, **kwargs):  # noqa: E501
        """2-156 weeks ahead demand margin forecast (OCNMF3Y2)  # noqa: E501

        The demand margin forecast is received hourly from NGESO.  It shows the weekly peak half hour MW value of generating plant demand margin for each day for the 2 to 156 weeks ahead.                This API endpoint has a maximum data output range of 7 days.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ocnmf3_y2_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesForecastMarginDatasetRowsForecastMarginWeekly
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_ocnmf3_y2_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_ocnmf3_y2_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_ocnmf3_y2_get_with_http_info(self, **kwargs):  # noqa: E501
        """2-156 weeks ahead demand margin forecast (OCNMF3Y2)  # noqa: E501

        The demand margin forecast is received hourly from NGESO.  It shows the weekly peak half hour MW value of generating plant demand margin for each day for the 2 to 156 weeks ahead.                This API endpoint has a maximum data output range of 7 days.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ocnmf3_y2_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesForecastMarginDatasetRowsForecastMarginWeekly
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_ocnmf3_y2_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/OCNMF3Y2', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesForecastMarginDatasetRowsForecastMarginWeekly',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_ocnmf3_y2_stream_get(self, **kwargs):  # noqa: E501
        """2-156 weeks ahead demand margin forecast (OCNMF3Y2) stream  # noqa: E501

        The demand margin forecast is received hourly from NGESO.  It shows the weekly peak half hour MW value of generating plant demand margin for each day for the 2 to 156 weeks ahead.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ocnmf3_y2_stream_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesForecastMarginDatasetRowsForecastMarginWeekly]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_ocnmf3_y2_stream_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_ocnmf3_y2_stream_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_ocnmf3_y2_stream_get_with_http_info(self, **kwargs):  # noqa: E501
        """2-156 weeks ahead demand margin forecast (OCNMF3Y2) stream  # noqa: E501

        The demand margin forecast is received hourly from NGESO.  It shows the weekly peak half hour MW value of generating plant demand margin for each day for the 2 to 156 weeks ahead.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ocnmf3_y2_stream_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesForecastMarginDatasetRowsForecastMarginWeekly]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_ocnmf3_y2_stream_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/OCNMF3Y2/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesForecastMarginDatasetRowsForecastMarginWeekly]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_ocnmf3_y_get(self, **kwargs):  # noqa: E501
        """2-156 weeks ahead demand surplus forecast (OCNMF3Y)  # noqa: E501

        The demand surplus forecast data is received hourly from NGESO.  It shows the weekly peak half hour MW value of generating plant demand surplus for each day for the 2-156 weeks ahead.    This API endpoint provides a maximum data output range of 7 days.                Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ocnmf3_y_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesForecastSurplusDatasetRowsForecastSurplusWeekly
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_ocnmf3_y_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_ocnmf3_y_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_ocnmf3_y_get_with_http_info(self, **kwargs):  # noqa: E501
        """2-156 weeks ahead demand surplus forecast (OCNMF3Y)  # noqa: E501

        The demand surplus forecast data is received hourly from NGESO.  It shows the weekly peak half hour MW value of generating plant demand surplus for each day for the 2-156 weeks ahead.    This API endpoint provides a maximum data output range of 7 days.                Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ocnmf3_y_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesForecastSurplusDatasetRowsForecastSurplusWeekly
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_ocnmf3_y_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/OCNMF3Y', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesForecastSurplusDatasetRowsForecastSurplusWeekly',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_ocnmf3_y_stream_get(self, **kwargs):  # noqa: E501
        """2-156 weeks ahead demand surplus forecast (OCNMF3Y) stream  # noqa: E501

        The demand surplus forecast data is received hourly from NGESO.  It shows the weekly peak half hour MW value of generating plant demand surplus for each day for the 2-156 weeks ahead.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ocnmf3_y_stream_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesForecastSurplusDatasetRowsForecastSurplusWeekly]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_ocnmf3_y_stream_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_ocnmf3_y_stream_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_ocnmf3_y_stream_get_with_http_info(self, **kwargs):  # noqa: E501
        """2-156 weeks ahead demand surplus forecast (OCNMF3Y) stream  # noqa: E501

        The demand surplus forecast data is received hourly from NGESO.  It shows the weekly peak half hour MW value of generating plant demand surplus for each day for the 2-156 weeks ahead.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ocnmf3_y_stream_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesForecastSurplusDatasetRowsForecastSurplusWeekly]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_ocnmf3_y_stream_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/OCNMF3Y/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesForecastSurplusDatasetRowsForecastSurplusWeekly]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_ocnmfd2_get(self, **kwargs):  # noqa: E501
        """2-14 days ahead demand margin forecast (OCNMFD2)  # noqa: E501

        The demand margin forecast is received hourly from NGESO.  It shows the daily peak half hour MW value of generating plant demand margin for each day for the 2 to 14 days ahead.    This API endpoint provides a maximum data output range of 7 days.                Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ocnmfd2_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesForecastMarginDatasetRowsForecastMarginDaily
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_ocnmfd2_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_ocnmfd2_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_ocnmfd2_get_with_http_info(self, **kwargs):  # noqa: E501
        """2-14 days ahead demand margin forecast (OCNMFD2)  # noqa: E501

        The demand margin forecast is received hourly from NGESO.  It shows the daily peak half hour MW value of generating plant demand margin for each day for the 2 to 14 days ahead.    This API endpoint provides a maximum data output range of 7 days.                Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ocnmfd2_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesForecastMarginDatasetRowsForecastMarginDaily
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_ocnmfd2_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/OCNMFD2', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesForecastMarginDatasetRowsForecastMarginDaily',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_ocnmfd2_stream_get(self, **kwargs):  # noqa: E501
        """2-14 days ahead demand margin forecast (OCNMFD2) stream  # noqa: E501

        The demand margin forecast is received hourly from NGESO.  It shows the daily peak half hour MW value of generating plant demand margin for each day for the 2 to 14 days ahead.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ocnmfd2_stream_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesForecastMarginDatasetRowsForecastMarginDaily]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_ocnmfd2_stream_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_ocnmfd2_stream_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_ocnmfd2_stream_get_with_http_info(self, **kwargs):  # noqa: E501
        """2-14 days ahead demand margin forecast (OCNMFD2) stream  # noqa: E501

        The demand margin forecast is received hourly from NGESO.  It shows the daily peak half hour MW value of generating plant demand margin for each day for the 2 to 14 days ahead.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ocnmfd2_stream_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesForecastMarginDatasetRowsForecastMarginDaily]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_ocnmfd2_stream_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/OCNMFD2/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesForecastMarginDatasetRowsForecastMarginDaily]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_ocnmfd_get(self, **kwargs):  # noqa: E501
        """2-14 days ahead demand surplus forecast (OCNMFD)  # noqa: E501

        The demand surplus forecast data is received hourly from NGESO.  It shows the daily peak half hour MW value of generating plant demand surplus for each day for the 2 to 14 days ahead.    This API endpoint provides a maximum data output range of 7 days.                Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ocnmfd_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesForecastSurplusDatasetRowsForecastSurplusDaily
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_ocnmfd_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_ocnmfd_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_ocnmfd_get_with_http_info(self, **kwargs):  # noqa: E501
        """2-14 days ahead demand surplus forecast (OCNMFD)  # noqa: E501

        The demand surplus forecast data is received hourly from NGESO.  It shows the daily peak half hour MW value of generating plant demand surplus for each day for the 2 to 14 days ahead.    This API endpoint provides a maximum data output range of 7 days.                Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ocnmfd_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesForecastSurplusDatasetRowsForecastSurplusDaily
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_ocnmfd_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/OCNMFD', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesForecastSurplusDatasetRowsForecastSurplusDaily',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_ocnmfd_stream_get(self, **kwargs):  # noqa: E501
        """2-14 days ahead demand surplus forecast (OCNMFD) stream  # noqa: E501

        The demand surplus forecast data is received hourly from NGESO.  It shows the daily peak half hour MW value of generating plant demand surplus for each day for the 2 to 14 days ahead.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ocnmfd_stream_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesForecastSurplusDatasetRowsForecastSurplusDaily]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_ocnmfd_stream_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_ocnmfd_stream_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_ocnmfd_stream_get_with_http_info(self, **kwargs):  # noqa: E501
        """2-14 days ahead demand surplus forecast (OCNMFD) stream  # noqa: E501

        The demand surplus forecast data is received hourly from NGESO.  It shows the daily peak half hour MW value of generating plant demand surplus for each day for the 2 to 14 days ahead.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ocnmfd_stream_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesForecastSurplusDatasetRowsForecastSurplusDaily]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_ocnmfd_stream_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/OCNMFD/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesForecastSurplusDatasetRowsForecastSurplusDaily]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_pbc_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Procured Balancing Capacity (PBC)  # noqa: E501

        This endpoint provides information on the procured balancing capacity, in accordance with the Electricity Balancing Guidelines (EBGL) article 12.3.f.    This API endpoint has a maximum range of 1 day.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_pbc_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsPbcDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_pbc_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_pbc_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_pbc_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Procured Balancing Capacity (PBC)  # noqa: E501

        This endpoint provides information on the procured balancing capacity, in accordance with the Electricity Balancing Guidelines (EBGL) article 12.3.f.    This API endpoint has a maximum range of 1 day.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_pbc_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsPbcDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_pbc_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_pbc_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_pbc_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/PBC', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsPbcDatasetRow',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_pbc_stream_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Procured Balancing Capacity (PBC) stream  # noqa: E501

        This endpoint provides information on the procured balancing capacity, in accordance with the Electricity Balancing Guidelines (EBGL) article 12.3.f.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_pbc_stream_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsPbcDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_pbc_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_pbc_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_pbc_stream_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Procured Balancing Capacity (PBC) stream  # noqa: E501

        This endpoint provides information on the procured balancing capacity, in accordance with the Electricity Balancing Guidelines (EBGL) article 12.3.f.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_pbc_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsPbcDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_pbc_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_pbc_stream_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_pbc_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/PBC/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesTransparencyDatasetRowsPbcDatasetRow]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_pn_get(self, settlement_date, settlement_period, **kwargs):  # noqa: E501
        """Physical Notifications (PN)  # noqa: E501

        This endpoint provides Physical Notification data received from NGESO. It returns the data valid for a single settlement period.  A Physical Notification is the best estimate of the level of generation or demand that a participant in the BM expects a BM Unit to export or import, respectively, in a Settlement Period.                Physical Notifications are submitted as a series of point MW values.                The settlement period to query must be specified as a date and settlement period. The date should be provided in the format yyyy-MM-dd.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_pn_get(settlement_date, settlement_period, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param date settlement_date: The settlement date to query. This must be in the format yyyy-MM-dd. (required)
        :param int settlement_period: The settlement period to query. This should be an integer from 1-50 inclusive. (required)
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingPhysicalDatasetRowsPhysicalNotificationData
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_pn_get_with_http_info(settlement_date, settlement_period, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_pn_get_with_http_info(settlement_date, settlement_period, **kwargs)  # noqa: E501
            return data

    def datasets_pn_get_with_http_info(self, settlement_date, settlement_period, **kwargs):  # noqa: E501
        """Physical Notifications (PN)  # noqa: E501

        This endpoint provides Physical Notification data received from NGESO. It returns the data valid for a single settlement period.  A Physical Notification is the best estimate of the level of generation or demand that a participant in the BM expects a BM Unit to export or import, respectively, in a Settlement Period.                Physical Notifications are submitted as a series of point MW values.                The settlement period to query must be specified as a date and settlement period. The date should be provided in the format yyyy-MM-dd.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_pn_get_with_http_info(settlement_date, settlement_period, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param date settlement_date: The settlement date to query. This must be in the format yyyy-MM-dd. (required)
        :param int settlement_period: The settlement period to query. This should be an integer from 1-50 inclusive. (required)
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingPhysicalDatasetRowsPhysicalNotificationData
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['settlement_date', 'settlement_period', 'bm_unit', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_pn_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'settlement_date' is set
        if ('settlement_date' not in params or
                params['settlement_date'] is None):
            raise ValueError("Missing the required parameter `settlement_date` when calling `datasets_pn_get`")  # noqa: E501
        # verify the required parameter 'settlement_period' is set
        if ('settlement_period' not in params or
                params['settlement_period'] is None):
            raise ValueError("Missing the required parameter `settlement_period` when calling `datasets_pn_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'settlement_date' in params:
            query_params.append(('settlementDate', params['settlement_date']))  # noqa: E501
        if 'settlement_period' in params:
            query_params.append(('settlementPeriod', params['settlement_period']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/PN', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingPhysicalDatasetRowsPhysicalNotificationData',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_pn_stream_get(self, _from, to, **kwargs):  # noqa: E501
        """Physical Notifications (PN) stream  # noqa: E501

        This endpoint provides Physical Notification data received from NGESO.  A Physical Notification is the best estimate of the level of generation or demand that a participant in the BM expects a BM Unit to export or import, respectively, in a Settlement Period.                Physical Notifications are submitted as a series of point MW values.                The settlement period to query can be specified as a date and settlement period, or as a datetime  which will resolve to the settlement period that time falls within.  If a settlement period is provided, it will take precedence over the time portion of the datetime.    Some examples of date parameter combinations are shown below.                Filtering from settlement datetime to settlement datetime:                     /datasets/PN/stream?from=2022-07-01T00:00Z&to=2022-07-03T06:00Z                Filtering from settlement datetime to settlement date and period:                     /datasets/PN/stream?from=2022-07-01T00:00Z&to=2022-07-03&settlementPeriodTo=15                Filtering from settlement date and period to settlement datetime:                     /datasets/PN/stream?from=2022-07-01&settlementPeriodFrom=3&to=2022-07-03T06:00Z                Filtering from settlement date and period to settlement date and period:                    /datasets/PN/stream?from=2022-07-01&settlementPeriodFrom=3&to=2022-07-03&settlementPeriodTo=15    This endpoint has an optimised JSON payload and is aimed at frequent requests for PN data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_pn_stream_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The settlement date to query from. (required)
        :param datetime to: The settlement date to query up to. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingPhysicalDatasetRowsPhysicalNotificationData]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_pn_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_pn_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_pn_stream_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Physical Notifications (PN) stream  # noqa: E501

        This endpoint provides Physical Notification data received from NGESO.  A Physical Notification is the best estimate of the level of generation or demand that a participant in the BM expects a BM Unit to export or import, respectively, in a Settlement Period.                Physical Notifications are submitted as a series of point MW values.                The settlement period to query can be specified as a date and settlement period, or as a datetime  which will resolve to the settlement period that time falls within.  If a settlement period is provided, it will take precedence over the time portion of the datetime.    Some examples of date parameter combinations are shown below.                Filtering from settlement datetime to settlement datetime:                     /datasets/PN/stream?from=2022-07-01T00:00Z&to=2022-07-03T06:00Z                Filtering from settlement datetime to settlement date and period:                     /datasets/PN/stream?from=2022-07-01T00:00Z&to=2022-07-03&settlementPeriodTo=15                Filtering from settlement date and period to settlement datetime:                     /datasets/PN/stream?from=2022-07-01&settlementPeriodFrom=3&to=2022-07-03T06:00Z                Filtering from settlement date and period to settlement date and period:                    /datasets/PN/stream?from=2022-07-01&settlementPeriodFrom=3&to=2022-07-03&settlementPeriodTo=15    This endpoint has an optimised JSON payload and is aimed at frequent requests for PN data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_pn_stream_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The settlement date to query from. (required)
        :param datetime to: The settlement date to query up to. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingPhysicalDatasetRowsPhysicalNotificationData]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_pn_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_pn_stream_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_pn_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/PN/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesBalancingPhysicalDatasetRowsPhysicalNotificationData]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_ppbr_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Prices Of Procured Balancing Reserves (PPBR / B1730)  # noqa: E501

        This endpoint provides prices of procured balancing reserves.    This API endpoint has a maximum range of 2 years (731 days).  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ppbr_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsPpbrDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_ppbr_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_ppbr_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_ppbr_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Prices Of Procured Balancing Reserves (PPBR / B1730)  # noqa: E501

        This endpoint provides prices of procured balancing reserves.    This API endpoint has a maximum range of 2 years (731 days).  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ppbr_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsPpbrDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_ppbr_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_ppbr_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_ppbr_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/PPBR', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsPpbrDatasetRow',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_ppbr_stream_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Prices Of Procured Balancing Reserves (PPBR / B1730) stream  # noqa: E501

        This endpoint provides prices of procured balancing reserves.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ppbr_stream_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsPpbrDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_ppbr_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_ppbr_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_ppbr_stream_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Prices Of Procured Balancing Reserves (PPBR / B1730) stream  # noqa: E501

        This endpoint provides prices of procured balancing reserves.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ppbr_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsPpbrDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_ppbr_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_ppbr_stream_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_ppbr_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/PPBR/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesTransparencyDatasetRowsPpbrDatasetRow]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_qas_get(self, _from, to, **kwargs):  # noqa: E501
        """Balancing Services Volume (QAS)  # noqa: E501

        This endpoint provides Balancing Services Volume data received from NGESO.                Balancing Services Volume is a volume which is received from the System Operator, which represents the volume  of energy (MWh) associated with the provision of Applicable Balancing Services for each relevant BM Unit and  Settlement Period.    QAS can be positive or negative and is normally only provided where there is a non-zero volume.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/qas?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/qas?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/qas?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/qas?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_qas_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDatasetRowsBalancingServicesVolumeData
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_qas_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_qas_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_qas_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Balancing Services Volume (QAS)  # noqa: E501

        This endpoint provides Balancing Services Volume data received from NGESO.                Balancing Services Volume is a volume which is received from the System Operator, which represents the volume  of energy (MWh) associated with the provision of Applicable Balancing Services for each relevant BM Unit and  Settlement Period.    QAS can be positive or negative and is normally only provided where there is a non-zero volume.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/qas?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/qas?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/qas?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/qas?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_qas_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDatasetRowsBalancingServicesVolumeData
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_qas_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_qas_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_qas_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/QAS', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDatasetRowsBalancingServicesVolumeData',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_qas_stream_get(self, _from, to, **kwargs):  # noqa: E501
        """Balancing Services Volume (QAS) stream  # noqa: E501

        This endpoint provides Balancing Services Volume data received from NGESO.                Balancing Services Volume is a volume which is received from the System Operator, which represents the volume  of energy (MWh) associated with the provision of Applicable Balancing Services for each relevant BM Unit and  Settlement Period.    QAS can be positive or negative and is normally only provided where there is a non-zero volume.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/qas/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/qas/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/qas/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/qas/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for QAS data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_qas_stream_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDatasetRowsBalancingServicesVolumeData]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_qas_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_qas_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_qas_stream_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Balancing Services Volume (QAS) stream  # noqa: E501

        This endpoint provides Balancing Services Volume data received from NGESO.                Balancing Services Volume is a volume which is received from the System Operator, which represents the volume  of energy (MWh) associated with the provision of Applicable Balancing Services for each relevant BM Unit and  Settlement Period.    QAS can be positive or negative and is normally only provided where there is a non-zero volume.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/qas/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/qas/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/qas/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/qas/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for QAS data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_qas_stream_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDatasetRowsBalancingServicesVolumeData]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_qas_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_qas_stream_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_qas_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/QAS/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesBalancingDatasetRowsBalancingServicesVolumeData]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_qpn_get(self, settlement_date, settlement_period, **kwargs):  # noqa: E501
        """Quiescent Physical Notifications (QPN)  # noqa: E501

        This endpoint provides Quiescent Physical Notification data received from NGESO. It returns the data valid for a single settlement period.  Quiescent Physical Notifications describe the MW levels to be deducted from the Physical Notification of a BM Unit to determine a resultant operating level.                The settlement period to query must be specified as a date and settlement period. The date should be provided in the format yyyy-MM-dd.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_qpn_get(settlement_date, settlement_period, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param date settlement_date: The settlement date to query. This must be in the format yyyy-MM-dd. (required)
        :param int settlement_period: The settlement period to query. This should be an integer from 1-50 inclusive. (required)
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingPhysicalDatasetRowsPhysicalNotificationData
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_qpn_get_with_http_info(settlement_date, settlement_period, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_qpn_get_with_http_info(settlement_date, settlement_period, **kwargs)  # noqa: E501
            return data

    def datasets_qpn_get_with_http_info(self, settlement_date, settlement_period, **kwargs):  # noqa: E501
        """Quiescent Physical Notifications (QPN)  # noqa: E501

        This endpoint provides Quiescent Physical Notification data received from NGESO. It returns the data valid for a single settlement period.  Quiescent Physical Notifications describe the MW levels to be deducted from the Physical Notification of a BM Unit to determine a resultant operating level.                The settlement period to query must be specified as a date and settlement period. The date should be provided in the format yyyy-MM-dd.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_qpn_get_with_http_info(settlement_date, settlement_period, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param date settlement_date: The settlement date to query. This must be in the format yyyy-MM-dd. (required)
        :param int settlement_period: The settlement period to query. This should be an integer from 1-50 inclusive. (required)
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingPhysicalDatasetRowsPhysicalNotificationData
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['settlement_date', 'settlement_period', 'bm_unit', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_qpn_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'settlement_date' is set
        if ('settlement_date' not in params or
                params['settlement_date'] is None):
            raise ValueError("Missing the required parameter `settlement_date` when calling `datasets_qpn_get`")  # noqa: E501
        # verify the required parameter 'settlement_period' is set
        if ('settlement_period' not in params or
                params['settlement_period'] is None):
            raise ValueError("Missing the required parameter `settlement_period` when calling `datasets_qpn_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'settlement_date' in params:
            query_params.append(('settlementDate', params['settlement_date']))  # noqa: E501
        if 'settlement_period' in params:
            query_params.append(('settlementPeriod', params['settlement_period']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/QPN', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingPhysicalDatasetRowsPhysicalNotificationData',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_qpn_stream_get(self, _from, to, **kwargs):  # noqa: E501
        """Quiescent Physical Notifications (QPN) stream  # noqa: E501

        This endpoint provides Quiescent Physical Notification data received from NGESO.  Quiescent Physical Notifications describe the MW levels to be deducted from the Physical Notification of a BM Unit to determine a resultant operating level.                The settlement period to query can be specified as a date and settlement period, or as a datetime  which will resolve to the settlement period that time falls within.  If a settlement period is provided, it will take precedence over the time portion of the datetime.    Some examples of date parameter combinations are shown below.                Filtering from settlement datetime to settlement datetime:                     /datasets/QPN/stream?from=2022-07-01T00:00Z&to=2022-07-03T06:00Z                Filtering from settlement datetime to settlement date and period:                     /datasets/QPN/stream?from=2022-07-01T00:00Z&to=2022-07-03&settlementPeriodTo=15                Filtering from settlement date and period to settlement datetime:                     /datasets/QPN/stream?from=2022-07-01&settlementPeriodFrom=3&to=2022-07-03T06:00Z                Filtering from settlement date and period to settlement date and period:                    /datasets/QPN/stream?from=2022-07-01&settlementPeriodFrom=3&to=2022-07-03&settlementPeriodTo=15    This endpoint has an optimised JSON payload and is aimed at frequent requests for QPN data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_qpn_stream_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The settlement date to query from. (required)
        :param datetime to: The settlement date to query up to. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingPhysicalDatasetRowsPhysicalNotificationData]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_qpn_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_qpn_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_qpn_stream_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Quiescent Physical Notifications (QPN) stream  # noqa: E501

        This endpoint provides Quiescent Physical Notification data received from NGESO.  Quiescent Physical Notifications describe the MW levels to be deducted from the Physical Notification of a BM Unit to determine a resultant operating level.                The settlement period to query can be specified as a date and settlement period, or as a datetime  which will resolve to the settlement period that time falls within.  If a settlement period is provided, it will take precedence over the time portion of the datetime.    Some examples of date parameter combinations are shown below.                Filtering from settlement datetime to settlement datetime:                     /datasets/QPN/stream?from=2022-07-01T00:00Z&to=2022-07-03T06:00Z                Filtering from settlement datetime to settlement date and period:                     /datasets/QPN/stream?from=2022-07-01T00:00Z&to=2022-07-03&settlementPeriodTo=15                Filtering from settlement date and period to settlement datetime:                     /datasets/QPN/stream?from=2022-07-01&settlementPeriodFrom=3&to=2022-07-03T06:00Z                Filtering from settlement date and period to settlement date and period:                    /datasets/QPN/stream?from=2022-07-01&settlementPeriodFrom=3&to=2022-07-03&settlementPeriodTo=15    This endpoint has an optimised JSON payload and is aimed at frequent requests for QPN data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_qpn_stream_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The settlement date to query from. (required)
        :param datetime to: The settlement date to query up to. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingPhysicalDatasetRowsPhysicalNotificationData]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_qpn_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_qpn_stream_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_qpn_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/QPN/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesBalancingPhysicalDatasetRowsPhysicalNotificationData]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_rdre_get(self, _from, to, **kwargs):  # noqa: E501
        """Run Down Rate Export (RDRE)  # noqa: E501

        This endpoint provides Run Down Rate Export data received from NGESO.                Run Down Rate Export (RDRE) expresses the rate of decrease in active power production (MW/minute)  for a particular BM Unit which is exporting power within a particular operating range.   There can be up to three of these for a given BM Unit.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/rdre?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/rdre?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/rdre?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/rdre?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_rdre_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicRateData
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_rdre_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_rdre_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_rdre_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Run Down Rate Export (RDRE)  # noqa: E501

        This endpoint provides Run Down Rate Export data received from NGESO.                Run Down Rate Export (RDRE) expresses the rate of decrease in active power production (MW/minute)  for a particular BM Unit which is exporting power within a particular operating range.   There can be up to three of these for a given BM Unit.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/rdre?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/rdre?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/rdre?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/rdre?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_rdre_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicRateData
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_rdre_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_rdre_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_rdre_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/RDRE', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicRateData',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_rdre_stream_get(self, _from, to, **kwargs):  # noqa: E501
        """Run Down Rate Export (RDRE) stream  # noqa: E501

        This endpoint provides Run Down Rate Export data received from NGESO.                Run Down Rate Export (RDRE) expresses the rate of decrease in active power production (MW/minute)  for a particular BM Unit which is exporting power within a particular operating range.   There can be up to three of these for a given BM Unit.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/rdre/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/rdre/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/rdre/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/rdre/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for QAS data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_rdre_stream_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDynamicRateData]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_rdre_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_rdre_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_rdre_stream_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Run Down Rate Export (RDRE) stream  # noqa: E501

        This endpoint provides Run Down Rate Export data received from NGESO.                Run Down Rate Export (RDRE) expresses the rate of decrease in active power production (MW/minute)  for a particular BM Unit which is exporting power within a particular operating range.   There can be up to three of these for a given BM Unit.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/rdre/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/rdre/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/rdre/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/rdre/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for QAS data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_rdre_stream_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDynamicRateData]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_rdre_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_rdre_stream_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_rdre_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/RDRE/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesBalancingDynamicRateData]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_rdri_get(self, _from, to, **kwargs):  # noqa: E501
        """Run Down Rate Import (RDRI)  # noqa: E501

        This endpoint provides Run Down Rate Import data received from NGESO.                Run Down Rate Import (RDRI) expresses the rate of increase in active power consumption (MW/minute)  for a particular BM Unit which is importing power within a particular operating range.  There can be up to three of these for a given BM Unit.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/rdri?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/rdri?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/rdri?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/rdri?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_rdri_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicRateData
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_rdri_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_rdri_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_rdri_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Run Down Rate Import (RDRI)  # noqa: E501

        This endpoint provides Run Down Rate Import data received from NGESO.                Run Down Rate Import (RDRI) expresses the rate of increase in active power consumption (MW/minute)  for a particular BM Unit which is importing power within a particular operating range.  There can be up to three of these for a given BM Unit.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/rdri?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/rdri?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/rdri?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/rdri?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_rdri_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicRateData
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_rdri_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_rdri_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_rdri_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/RDRI', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicRateData',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_rdri_stream_get(self, _from, to, **kwargs):  # noqa: E501
        """Run Down Rate Import (RDRI) stream  # noqa: E501

        This endpoint provides Run Down Rate Import data received from NGESO.                Run Down Rate Import (RDRI) expresses the rate of increase in active power consumption (MW/minute)  for a particular BM Unit which is importing power within a particular operating range.   There can be up to three of these for a given BM Unit.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/rdri/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/rdri/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/rdri/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/rdri/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for QAS data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_rdri_stream_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDynamicRateData]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_rdri_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_rdri_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_rdri_stream_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Run Down Rate Import (RDRI) stream  # noqa: E501

        This endpoint provides Run Down Rate Import data received from NGESO.                Run Down Rate Import (RDRI) expresses the rate of increase in active power consumption (MW/minute)  for a particular BM Unit which is importing power within a particular operating range.   There can be up to three of these for a given BM Unit.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/rdri/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/rdri/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/rdri/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/rdri/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for QAS data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_rdri_stream_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDynamicRateData]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_rdri_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_rdri_stream_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_rdri_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/RDRI/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesBalancingDynamicRateData]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_remit_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """The Regulation on Wholesale Energy Markets Integrity and Transparency (REMIT)  # noqa: E501

        The Regulation on Wholesale Energy Markets Integrity and Transparency (REMIT) is an EU regulation aimed at preventing market abuse in wholesale energy markets.    This endpoint returns information provided by market participants to comply with Article 4 of Regulation on Wholesale Energy Market Integrity and Transparency (REMIT) Regulation (EU) 1227/2011.                Only JSON and XML formats are supported for this endpoint.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_remit_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyRemitDatasetRowsRemitMessage
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_remit_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_remit_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_remit_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """The Regulation on Wholesale Energy Markets Integrity and Transparency (REMIT)  # noqa: E501

        The Regulation on Wholesale Energy Markets Integrity and Transparency (REMIT) is an EU regulation aimed at preventing market abuse in wholesale energy markets.    This endpoint returns information provided by market participants to comply with Article 4 of Regulation on Wholesale Energy Market Integrity and Transparency (REMIT) Regulation (EU) 1227/2011.                Only JSON and XML formats are supported for this endpoint.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_remit_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyRemitDatasetRowsRemitMessage
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_remit_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_remit_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_remit_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json', 'application/xml'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/REMIT', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyRemitDatasetRowsRemitMessage',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_remit_stream_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """The Regulation on Wholesale Energy Markets Integrity and Transparency (REMIT) stream  # noqa: E501

        The Regulation on Wholesale Energy Markets Integrity and Transparency (REMIT) is an EU regulation aimed at preventing market abuse in wholesale energy markets.    This endpoint returns information provided by market participants to comply with Article 4 of Regulation on Wholesale Energy Market Integrity and Transparency (REMIT) Regulation (EU) 1227/2011.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_remit_stream_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyRemitDatasetRowsRemitMessage]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_remit_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_remit_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_remit_stream_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """The Regulation on Wholesale Energy Markets Integrity and Transparency (REMIT) stream  # noqa: E501

        The Regulation on Wholesale Energy Markets Integrity and Transparency (REMIT) is an EU regulation aimed at preventing market abuse in wholesale energy markets.    This endpoint returns information provided by market participants to comply with Article 4 of Regulation on Wholesale Energy Market Integrity and Transparency (REMIT) Regulation (EU) 1227/2011.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_remit_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyRemitDatasetRowsRemitMessage]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_remit_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_remit_stream_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_remit_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/REMIT/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesTransparencyRemitDatasetRowsRemitMessage]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_rure_get(self, _from, to, **kwargs):  # noqa: E501
        """Run Up Rate Export (RURE)  # noqa: E501

        This endpoint provides Run Up Rate Export data received from NGESO.                Run Up Rate Export (RURE) expresses the rate of increase in active power production (MW/minute)  for a particular BM Unit which is exporting power within a particular operating range.  There can be up to three of these for a given BM Unit.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/rure?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/rure?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/rure?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/rure?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_rure_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicRateData
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_rure_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_rure_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_rure_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Run Up Rate Export (RURE)  # noqa: E501

        This endpoint provides Run Up Rate Export data received from NGESO.                Run Up Rate Export (RURE) expresses the rate of increase in active power production (MW/minute)  for a particular BM Unit which is exporting power within a particular operating range.  There can be up to three of these for a given BM Unit.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/rure?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/rure?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/rure?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/rure?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_rure_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicRateData
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_rure_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_rure_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_rure_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/RURE', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicRateData',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_rure_stream_get(self, _from, to, **kwargs):  # noqa: E501
        """Run Up Rate Export (RURE) stream  # noqa: E501

        This endpoint provides Run Up Rate Export data received from NGESO.                Run Up Rate Export (RURE) expresses the rate of increase in active power production (MW/minute)  for a particular BM Unit which is exporting power within a particular operating range.  There can be up to three of these for a given BM Unit.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/rure/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/rure/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/rure/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/rure/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for QAS data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_rure_stream_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDynamicRateData]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_rure_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_rure_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_rure_stream_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Run Up Rate Export (RURE) stream  # noqa: E501

        This endpoint provides Run Up Rate Export data received from NGESO.                Run Up Rate Export (RURE) expresses the rate of increase in active power production (MW/minute)  for a particular BM Unit which is exporting power within a particular operating range.  There can be up to three of these for a given BM Unit.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/rure/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/rure/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/rure/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/rure/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for QAS data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_rure_stream_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDynamicRateData]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_rure_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_rure_stream_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_rure_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/RURE/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesBalancingDynamicRateData]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_ruri_get(self, _from, to, **kwargs):  # noqa: E501
        """Run Up Rate Import (RURI)  # noqa: E501

        This endpoint provides Run Up Rate Import data received from NGESO.                Run Up Rate Import (RURI) expresses the rate of decrease in active power consumption (MW/minute)  for a particular BM Unit which is importing power within a particular operating range.  There can be up to three of these for a given BM Unit.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/ruri?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/ruri?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/ruri?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/ruri?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ruri_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicRateData
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_ruri_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_ruri_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_ruri_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Run Up Rate Import (RURI)  # noqa: E501

        This endpoint provides Run Up Rate Import data received from NGESO.                Run Up Rate Import (RURI) expresses the rate of decrease in active power consumption (MW/minute)  for a particular BM Unit which is importing power within a particular operating range.  There can be up to three of these for a given BM Unit.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/ruri?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/ruri?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/ruri?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/ruri?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ruri_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicRateData
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_ruri_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_ruri_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_ruri_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/RURI', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicRateData',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_ruri_stream_get(self, _from, to, **kwargs):  # noqa: E501
        """Run Up Rate Import (RURI) stream  # noqa: E501

        This endpoint provides Run Up Rate Import data received from NGESO.                Run Up Rate Import (RURI) expresses the rate of decrease in active power consumption (MW/minute)  for a particular BM Unit which is importing power within a particular operating range.   There can be up to three of these for a given BM Unit.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/ruri/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/ruri/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/ruri/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/ruri/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for QAS data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ruri_stream_get(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDynamicRateData]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_ruri_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_ruri_stream_get_with_http_info(_from, to, **kwargs)  # noqa: E501
            return data

    def datasets_ruri_stream_get_with_http_info(self, _from, to, **kwargs):  # noqa: E501
        """Run Up Rate Import (RURI) stream  # noqa: E501

        This endpoint provides Run Up Rate Import data received from NGESO.                Run Up Rate Import (RURI) expresses the rate of decrease in active power consumption (MW/minute)  for a particular BM Unit which is importing power within a particular operating range.   There can be up to three of these for a given BM Unit.                By default, the from and to parameters filter the data by time inclusively. If the settlementPeriodFrom or  settlementPeriodTo parameters are provided, the corresponding from or to parameter instead filters on settlement  date, allowing for searching by a combination of time and/or settlement date & settlement period.  Note: When filtering via settlement date, from/to are treated as Dates only, with the time being ignored. For  example, 2022-06-01T00:00Z and 2022-06-01T11:11Z are both treated as the settlement date 2022-06-01.                All Dates and DateTimes should be expressed as defined within  <a href=\"https://datatracker.ietf.org/doc/html/rfc3339#section-5.6\" target=\"_blank\">RFC 3339</a>.                Some examples of date parameter combinations are shown below.                Filtering from start time to start time:                    /datasets/ruri/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z                Filtering from start time to settlement date and period:                    /datasets/ruri/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodTo=1                Filtering from settlement date and period to start time:                    /datasets/ruri/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1                Filtering from settlement date and period to settlement date and period:                    /datasets/ruri/stream?from=2022-06-01T00:00Z&to=2022-07-01T00:00Z&settlementPeriodFrom=1&settlementPeriodTo=1    This endpoint has an optimised JSON payload and is aimed at frequent requests for QAS data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_ruri_stream_get_with_http_info(_from, to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The \"from\" start time or settlement date for the filter. (required)
        :param datetime to: The \"to\" start time or settlement date for the filter. (required)
        :param int settlement_period_from: The \"from\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param int settlement_period_to: The \"to\" settlement period for the filter. This should be an integer from 1-50 inclusive.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDynamicRateData]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'settlement_period_from', 'settlement_period_to', 'bm_unit']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_ruri_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter '_from' is set
        if ('_from' not in params or
                params['_from'] is None):
            raise ValueError("Missing the required parameter `_from` when calling `datasets_ruri_stream_get`")  # noqa: E501
        # verify the required parameter 'to' is set
        if ('to' not in params or
                params['to'] is None):
            raise ValueError("Missing the required parameter `to` when calling `datasets_ruri_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/RURI/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesBalancingDynamicRateData]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_sel_get(self, **kwargs):  # noqa: E501
        """Stable Export Limit (SEL)  # noqa: E501

        This endpoint provides Stable Export Limit data received from NGESO.  Stable Export Limit is a positive megawatt value, expressing the minimum stable operating level at which a particular BM Unit can export power to the transmission system.                If no date window is chosen, the search will default to results from last 24 hours.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_sel_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The start of the data time window.
        :param datetime to: The end of the data time window.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsStablePortageLimitData
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_sel_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_sel_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_sel_get_with_http_info(self, **kwargs):  # noqa: E501
        """Stable Export Limit (SEL)  # noqa: E501

        This endpoint provides Stable Export Limit data received from NGESO.  Stable Export Limit is a positive megawatt value, expressing the minimum stable operating level at which a particular BM Unit can export power to the transmission system.                If no date window is chosen, the search will default to results from last 24 hours.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_sel_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The start of the data time window.
        :param datetime to: The end of the data time window.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsStablePortageLimitData
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'bm_unit', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_sel_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/SEL', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsStablePortageLimitData',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_sel_stream_get(self, **kwargs):  # noqa: E501
        """Stable Export Limit (SEL) stream  # noqa: E501

        This endpoint provides Stable Export Limit data received from NGESO.  Stable Export Limit is a positive megawatt value, expressing the minimum stable operating level at which a particular BM Unit can export power to the transmission system.                If no date window is chosen, the search will default to results from last 24 hours.                This endpoint has an optimised JSON payload and is aimed at frequent requests for SEL data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_sel_stream_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The start of the data time window.
        :param datetime to: The end of the data time window.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsStablePortageLimitData]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_sel_stream_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_sel_stream_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_sel_stream_get_with_http_info(self, **kwargs):  # noqa: E501
        """Stable Export Limit (SEL) stream  # noqa: E501

        This endpoint provides Stable Export Limit data received from NGESO.  Stable Export Limit is a positive megawatt value, expressing the minimum stable operating level at which a particular BM Unit can export power to the transmission system.                If no date window is chosen, the search will default to results from last 24 hours.                This endpoint has an optimised JSON payload and is aimed at frequent requests for SEL data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_sel_stream_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The start of the data time window.
        :param datetime to: The end of the data time window.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsStablePortageLimitData]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'bm_unit']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_sel_stream_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/SEL/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsStablePortageLimitData]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_sil_get(self, **kwargs):  # noqa: E501
        """Stable Import Limit (SIL)  # noqa: E501

        This endpoint provides Stable Import Limit data received from NGESO.  Stable Import Limit is a negative megawatt value, expressing the minimum stable operating level at which a particular BM Unit can import power from the transmission system.                If no date window is chosen, the search will default to results from last 24 hours.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_sil_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The start of the data time window.
        :param datetime to: The end of the data time window.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsStablePortageLimitData
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_sil_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_sil_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_sil_get_with_http_info(self, **kwargs):  # noqa: E501
        """Stable Import Limit (SIL)  # noqa: E501

        This endpoint provides Stable Import Limit data received from NGESO.  Stable Import Limit is a negative megawatt value, expressing the minimum stable operating level at which a particular BM Unit can import power from the transmission system.                If no date window is chosen, the search will default to results from last 24 hours.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_sil_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The start of the data time window.
        :param datetime to: The end of the data time window.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsStablePortageLimitData
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'bm_unit', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_sil_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/SIL', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesBalancingDynamicDatasetRowsStablePortageLimitData',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_sil_stream_get(self, **kwargs):  # noqa: E501
        """Stable Import Limit (SIL) stream  # noqa: E501

        This endpoint provides Stable Import Limit data received from NGESO.  Stable Import Limit is a negative megawatt value, expressing the minimum stable operating level at which a particular BM Unit can import power from the transmission system.                If no date window is chosen, the search will default to results from last 24 hours.                This endpoint has an optimised JSON payload and is aimed at frequent requests for SIL data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_sil_stream_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The start of the data time window.
        :param datetime to: The end of the data time window.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsStablePortageLimitData]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_sil_stream_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_sil_stream_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_sil_stream_get_with_http_info(self, **kwargs):  # noqa: E501
        """Stable Import Limit (SIL) stream  # noqa: E501

        This endpoint provides Stable Import Limit data received from NGESO.  Stable Import Limit is a negative megawatt value, expressing the minimum stable operating level at which a particular BM Unit can import power from the transmission system.                If no date window is chosen, the search will default to results from last 24 hours.                This endpoint has an optimised JSON payload and is aimed at frequent requests for SIL data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_sil_stream_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime _from: The start of the data time window.
        :param datetime to: The end of the data time window.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. If no BM unit is selected all BM units will be displayed.
        :return: list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsStablePortageLimitData]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['_from', 'to', 'bm_unit']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_sil_stream_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if '_from' in params:
            query_params.append(('from', params['_from']))  # noqa: E501
        if 'to' in params:
            query_params.append(('to', params['to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/SIL/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesBalancingDynamicDatasetRowsStablePortageLimitData]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_soso_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """SO-SO prices (SOSO)  # noqa: E501

        This endpoint provides system operator to system operator prices data, filtered by publish time.  This API endpoint has a maximum range of 24 hours.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_soso_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesMiscDatasetRowsSoSoPricesDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_soso_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_soso_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_soso_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """SO-SO prices (SOSO)  # noqa: E501

        This endpoint provides system operator to system operator prices data, filtered by publish time.  This API endpoint has a maximum range of 24 hours.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_soso_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesMiscDatasetRowsSoSoPricesDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_soso_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_soso_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_soso_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/SOSO', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesMiscDatasetRowsSoSoPricesDatasetRow',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_soso_stream_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """SO-SO prices (SOSO) stream  # noqa: E501

        This endpoint provides system operator to system operator prices data, filtered by publish time.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_soso_stream_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesMiscDatasetRowsSoSoPricesDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_soso_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_soso_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_soso_stream_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """SO-SO prices (SOSO) stream  # noqa: E501

        This endpoint provides system operator to system operator prices data, filtered by publish time.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_soso_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesMiscDatasetRowsSoSoPricesDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_soso_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_soso_stream_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_soso_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/SOSO/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesMiscDatasetRowsSoSoPricesDatasetRow]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_syswarn_get(self, **kwargs):  # noqa: E501
        """System warnings (SYSWARN)  # noqa: E501

        This endpoint provides system warnings data  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_syswarn_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesMiscDatasetRowsSystemWarningsData
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_syswarn_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_syswarn_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_syswarn_get_with_http_info(self, **kwargs):  # noqa: E501
        """System warnings (SYSWARN)  # noqa: E501

        This endpoint provides system warnings data  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_syswarn_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesMiscDatasetRowsSystemWarningsData
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_syswarn_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/SYSWARN', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesMiscDatasetRowsSystemWarningsData',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_syswarn_stream_get(self, **kwargs):  # noqa: E501
        """System warnings (SYSWARN) stream  # noqa: E501

        This endpoint provides system warnings data    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_syswarn_stream_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesMiscDatasetRowsSystemWarningsData]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_syswarn_stream_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_syswarn_stream_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_syswarn_stream_get_with_http_info(self, **kwargs):  # noqa: E501
        """System warnings (SYSWARN) stream  # noqa: E501

        This endpoint provides system warnings data    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_syswarn_stream_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesMiscDatasetRowsSystemWarningsData]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_syswarn_stream_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/SYSWARN/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesMiscDatasetRowsSystemWarningsData]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_temp_get(self, **kwargs):  # noqa: E501
        """Temperature data (TEMP)  # noqa: E501

        This endpoint provides the average degree celsius value measured at midday deemed to be  representative of the temperature for Great Britain. Data is gathered from 6 weather stations.  Default output will be the last 31 days. Values are received from 5pm each day.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_temp_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesMiscDatasetRowsTemperatureData
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_temp_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_temp_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_temp_get_with_http_info(self, **kwargs):  # noqa: E501
        """Temperature data (TEMP)  # noqa: E501

        This endpoint provides the average degree celsius value measured at midday deemed to be  representative of the temperature for Great Britain. Data is gathered from 6 weather stations.  Default output will be the last 31 days. Values are received from 5pm each day.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_temp_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesMiscDatasetRowsTemperatureData
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_temp_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/TEMP', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesMiscDatasetRowsTemperatureData',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_tsdf_get(self, **kwargs):  # noqa: E501
        """Day and day-ahead Transmission System Demand forecast (TSDF)  # noqa: E501

        This endpoint provides the Transmission System Demand forecast.  Data is received daily from NGESO and will show values for the day ahead.  Expressed as an average MW value for each settlement period.  The Transmission System Demand forecast is based on historically metered generation output for Great Britain.  This value INCLUDES interconnector flows and demand from station transformers and pumped storage units.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.                This API endpoint provides a maximum data output range of 1 day.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_tsdf_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str boundary:
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastTransmissionDayAhead
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_tsdf_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_tsdf_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_tsdf_get_with_http_info(self, **kwargs):  # noqa: E501
        """Day and day-ahead Transmission System Demand forecast (TSDF)  # noqa: E501

        This endpoint provides the Transmission System Demand forecast.  Data is received daily from NGESO and will show values for the day ahead.  Expressed as an average MW value for each settlement period.  The Transmission System Demand forecast is based on historically metered generation output for Great Britain.  This value INCLUDES interconnector flows and demand from station transformers and pumped storage units.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.                This API endpoint provides a maximum data output range of 1 day.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_tsdf_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str boundary:
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastTransmissionDayAhead
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['boundary', 'publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_tsdf_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'boundary' in params:
            query_params.append(('boundary', params['boundary']))  # noqa: E501
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/TSDF', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastTransmissionDayAhead',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_tsdf_stream_get(self, **kwargs):  # noqa: E501
        """Day and day-ahead Transmission System Demand forecast (TSDF) stream  # noqa: E501

        This endpoint provides the Transmission System Demand forecast .  Data is received daily from NGESO and will show values for the day ahead.  Expressed as an average MW value for each settlement period.  The Transmission System Demand forecast is based on historically metered generation output for Great Britain.  This value INCLUDES interconnector flows and demand from station transformers and pumped storage units.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_tsdf_stream_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str boundary:
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastTransmissionDayAhead]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_tsdf_stream_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_tsdf_stream_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_tsdf_stream_get_with_http_info(self, **kwargs):  # noqa: E501
        """Day and day-ahead Transmission System Demand forecast (TSDF) stream  # noqa: E501

        This endpoint provides the Transmission System Demand forecast .  Data is received daily from NGESO and will show values for the day ahead.  Expressed as an average MW value for each settlement period.  The Transmission System Demand forecast is based on historically metered generation output for Great Britain.  This value INCLUDES interconnector flows and demand from station transformers and pumped storage units.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_tsdf_stream_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str boundary:
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastTransmissionDayAhead]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['boundary', 'publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_tsdf_stream_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'boundary' in params:
            query_params.append(('boundary', params['boundary']))  # noqa: E501
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/TSDF/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastTransmissionDayAhead]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_tsdfd_get(self, **kwargs):  # noqa: E501
        """2-14 days ahead Transmission System Demand and surplus forecast (TSDFD)  # noqa: E501

        This endpoint provides the Transmission System forecast. Data is available daily and will show values for the 2 to 14 days ahead.  Expressed as an average MW value for each settlement period. The Transmission System Demand forecast is based on historically metered generation output for Great Britain.  This value INCLUDES interconnector flows and demand from station transformers and pumped storage units.                Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.                This API endpoint provides a maximum data output range of 92 days.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_tsdfd_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastTransmissionDaily
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_tsdfd_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_tsdfd_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_tsdfd_get_with_http_info(self, **kwargs):  # noqa: E501
        """2-14 days ahead Transmission System Demand and surplus forecast (TSDFD)  # noqa: E501

        This endpoint provides the Transmission System forecast. Data is available daily and will show values for the 2 to 14 days ahead.  Expressed as an average MW value for each settlement period. The Transmission System Demand forecast is based on historically metered generation output for Great Britain.  This value INCLUDES interconnector flows and demand from station transformers and pumped storage units.                Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.                This API endpoint provides a maximum data output range of 92 days.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_tsdfd_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastTransmissionDaily
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_tsdfd_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/TSDFD', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastTransmissionDaily',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_tsdfd_stream_get(self, **kwargs):  # noqa: E501
        """2-14 days ahead Transmission System Demand and surplus forecast (TSDFD) stream  # noqa: E501

        This endpoint provides the Transmission System Demand forecast. Data is available daily and will show values for the 2 to 14 days ahead.  Expressed as an average MW value for each settlement period. The Transmission System Demand forecast is based on historically metered generation output for Great Britain.  This value INCLUDES interconnector flows and demand from station transformers and pumped storage units.                Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.                This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_tsdfd_stream_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastTransmissionDaily]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_tsdfd_stream_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_tsdfd_stream_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_tsdfd_stream_get_with_http_info(self, **kwargs):  # noqa: E501
        """2-14 days ahead Transmission System Demand and surplus forecast (TSDFD) stream  # noqa: E501

        This endpoint provides the Transmission System Demand forecast. Data is available daily and will show values for the 2 to 14 days ahead.  Expressed as an average MW value for each settlement period. The Transmission System Demand forecast is based on historically metered generation output for Great Britain.  This value INCLUDES interconnector flows and demand from station transformers and pumped storage units.                Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.                This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_tsdfd_stream_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastTransmissionDaily]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_tsdfd_stream_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/TSDFD/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastTransmissionDaily]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_tsdfw_get(self, **kwargs):  # noqa: E501
        """2-52 weeks ahead Transmission System Demand and surplus forecast (TSDFW)  # noqa: E501

        This endpoint provides the Transmission System Demand forecast received from NGESO.  Data is available from 4pm each Thursday and will show values for the 2 to 52 weeks ahead.  Expressed as an average MW value for each week. The forecast is based on historically metered generation output for Great Britain.  This value INCLUDES transmission losses, but EXCLUDES interconnector flows and demand from station.    This API will provide a maximum data output range of 366 days.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_tsdfw_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastTransmissionWeekly
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_tsdfw_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_tsdfw_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_tsdfw_get_with_http_info(self, **kwargs):  # noqa: E501
        """2-52 weeks ahead Transmission System Demand and surplus forecast (TSDFW)  # noqa: E501

        This endpoint provides the Transmission System Demand forecast received from NGESO.  Data is available from 4pm each Thursday and will show values for the 2 to 52 weeks ahead.  Expressed as an average MW value for each week. The forecast is based on historically metered generation output for Great Britain.  This value INCLUDES transmission losses, but EXCLUDES interconnector flows and demand from station.    This API will provide a maximum data output range of 366 days.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_tsdfw_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastTransmissionWeekly
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_tsdfw_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/TSDFW', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastTransmissionWeekly',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_tsdfw_stream_get(self, **kwargs):  # noqa: E501
        """2-52 weeks ahead Transmission System Demand and surplus forecast (TSDFW) stream  # noqa: E501

        This endpoint provides the Transmission System Demand forecast received from NGESO.  Data is available from 4pm each Thursday and will show values for the 2 to 52 weeks ahead.  Expressed as an average MW value for each week. The forecast is based on historically metered generation output for Great Britain.  This value INCLUDES transmission losses, but EXCLUDES interconnector flows and demand from station.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_tsdfw_stream_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastTransmissionWeekly]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_tsdfw_stream_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_tsdfw_stream_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_tsdfw_stream_get_with_http_info(self, **kwargs):  # noqa: E501
        """2-52 weeks ahead Transmission System Demand and surplus forecast (TSDFW) stream  # noqa: E501

        This endpoint provides the Transmission System Demand forecast received from NGESO.  Data is available from 4pm each Thursday and will show values for the 2 to 52 weeks ahead.  Expressed as an average MW value for each week. The forecast is based on historically metered generation output for Great Britain.  This value INCLUDES transmission losses, but EXCLUDES interconnector flows and demand from station.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_tsdfw_stream_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastTransmissionWeekly]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_tsdfw_stream_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/TSDFW/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesDemandForecastDatasetRowsDemandForecastTransmissionWeekly]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_tudm_get(self, settlement_date, settlement_period, **kwargs):  # noqa: E501
        """Trading unit data (S0491_TUDM)  # noqa: E501

        This endpoint provides trading unit data for a settlement period filtered by trading unit name and type.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_tudm_get(settlement_date, settlement_period, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param date settlement_date: The settlement date to filter. This must be in the format yyyy-MM-dd. (required)
        :param int settlement_period: (required)
        :param list[str] trading_unit_name:
        :param str trading_unit_type:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesMiscDatasetRowsTudmDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_tudm_get_with_http_info(settlement_date, settlement_period, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_tudm_get_with_http_info(settlement_date, settlement_period, **kwargs)  # noqa: E501
            return data

    def datasets_tudm_get_with_http_info(self, settlement_date, settlement_period, **kwargs):  # noqa: E501
        """Trading unit data (S0491_TUDM)  # noqa: E501

        This endpoint provides trading unit data for a settlement period filtered by trading unit name and type.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_tudm_get_with_http_info(settlement_date, settlement_period, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param date settlement_date: The settlement date to filter. This must be in the format yyyy-MM-dd. (required)
        :param int settlement_period: (required)
        :param list[str] trading_unit_name:
        :param str trading_unit_type:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesMiscDatasetRowsTudmDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['settlement_date', 'settlement_period', 'trading_unit_name', 'trading_unit_type', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_tudm_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'settlement_date' is set
        if ('settlement_date' not in params or
                params['settlement_date'] is None):
            raise ValueError("Missing the required parameter `settlement_date` when calling `datasets_tudm_get`")  # noqa: E501
        # verify the required parameter 'settlement_period' is set
        if ('settlement_period' not in params or
                params['settlement_period'] is None):
            raise ValueError("Missing the required parameter `settlement_period` when calling `datasets_tudm_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'settlement_date' in params:
            query_params.append(('settlementDate', params['settlement_date']))  # noqa: E501
        if 'settlement_period' in params:
            query_params.append(('settlementPeriod', params['settlement_period']))  # noqa: E501
        if 'trading_unit_name' in params:
            query_params.append(('tradingUnitName', params['trading_unit_name']))  # noqa: E501
            collection_formats['tradingUnitName'] = 'multi'  # noqa: E501
        if 'trading_unit_type' in params:
            query_params.append(('tradingUnitType', params['trading_unit_type']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/TUDM', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesMiscDatasetRowsTudmDatasetRow',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_tudm_stream_get(self, settlement_date_from, settlement_period_from, settlement_date_to, settlement_period_to, **kwargs):  # noqa: E501
        """Trading unit data (S0491_TUDM) stream  # noqa: E501

        This endpoint provides trading unit data filtered by settlement period, trading unit name and type.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_tudm_stream_get(settlement_date_from, settlement_period_from, settlement_date_to, settlement_period_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param date settlement_date_from: The settlement date to filter from. This must be in the format yyyy-MM-dd. (required)
        :param int settlement_period_from: (required)
        :param date settlement_date_to: The settlement date to filter to. This must be in the format yyyy-MM-dd. (required)
        :param int settlement_period_to: (required)
        :param list[str] trading_unit_name:
        :param str trading_unit_type:
        :return: list[InsightsApiModelsResponsesMiscDatasetRowsTudmDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_tudm_stream_get_with_http_info(settlement_date_from, settlement_period_from, settlement_date_to, settlement_period_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_tudm_stream_get_with_http_info(settlement_date_from, settlement_period_from, settlement_date_to, settlement_period_to, **kwargs)  # noqa: E501
            return data

    def datasets_tudm_stream_get_with_http_info(self, settlement_date_from, settlement_period_from, settlement_date_to, settlement_period_to, **kwargs):  # noqa: E501
        """Trading unit data (S0491_TUDM) stream  # noqa: E501

        This endpoint provides trading unit data filtered by settlement period, trading unit name and type.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_tudm_stream_get_with_http_info(settlement_date_from, settlement_period_from, settlement_date_to, settlement_period_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param date settlement_date_from: The settlement date to filter from. This must be in the format yyyy-MM-dd. (required)
        :param int settlement_period_from: (required)
        :param date settlement_date_to: The settlement date to filter to. This must be in the format yyyy-MM-dd. (required)
        :param int settlement_period_to: (required)
        :param list[str] trading_unit_name:
        :param str trading_unit_type:
        :return: list[InsightsApiModelsResponsesMiscDatasetRowsTudmDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['settlement_date_from', 'settlement_period_from', 'settlement_date_to', 'settlement_period_to', 'trading_unit_name', 'trading_unit_type']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_tudm_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'settlement_date_from' is set
        if ('settlement_date_from' not in params or
                params['settlement_date_from'] is None):
            raise ValueError("Missing the required parameter `settlement_date_from` when calling `datasets_tudm_stream_get`")  # noqa: E501
        # verify the required parameter 'settlement_period_from' is set
        if ('settlement_period_from' not in params or
                params['settlement_period_from'] is None):
            raise ValueError("Missing the required parameter `settlement_period_from` when calling `datasets_tudm_stream_get`")  # noqa: E501
        # verify the required parameter 'settlement_date_to' is set
        if ('settlement_date_to' not in params or
                params['settlement_date_to'] is None):
            raise ValueError("Missing the required parameter `settlement_date_to` when calling `datasets_tudm_stream_get`")  # noqa: E501
        # verify the required parameter 'settlement_period_to' is set
        if ('settlement_period_to' not in params or
                params['settlement_period_to'] is None):
            raise ValueError("Missing the required parameter `settlement_period_to` when calling `datasets_tudm_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'settlement_date_from' in params:
            query_params.append(('settlementDateFrom', params['settlement_date_from']))  # noqa: E501
        if 'settlement_period_from' in params:
            query_params.append(('settlementPeriodFrom', params['settlement_period_from']))  # noqa: E501
        if 'settlement_date_to' in params:
            query_params.append(('settlementDateTo', params['settlement_date_to']))  # noqa: E501
        if 'settlement_period_to' in params:
            query_params.append(('settlementPeriodTo', params['settlement_period_to']))  # noqa: E501
        if 'trading_unit_name' in params:
            query_params.append(('tradingUnitName', params['trading_unit_name']))  # noqa: E501
            collection_formats['tradingUnitName'] = 'multi'  # noqa: E501
        if 'trading_unit_type' in params:
            query_params.append(('tradingUnitType', params['trading_unit_type']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/TUDM/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesMiscDatasetRowsTudmDatasetRow]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_uou2_t14_d_get(self, **kwargs):  # noqa: E501
        """2 to 14 days ahead generation availability aggregated by Balancing Mechanism Units (UOU2T14D)  # noqa: E501

        This endpoint provides a forward view of availability (also referred to as Output Usable  data under the Grid Code) for generation and interconnector capacity, accounting for planned  outages covering availability data from 2 days ahead to 14 days ahead; it is aggregated by  National Grid Balancing Mechanism Units (NGC BMUs).                In the context of this report, BMUs can be considered as generating units.  Elexon BMUs differs from NGC BMUs by including a prefix e.g. 'T_'.  The mapping between NGC and Elexon BMUs can be retrieved via reference data API endpoints.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_uou2_t14_d_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param list[str] fuel_type: The fuel type to query. Add each fuel type separately. If no fuel types are supplied, all fuel types will be returned.
        :param datetime publish_date_time_from: Start of the Publish Time range to query. If specified, PublishDateTimeTo must also be specified.  If both are omitted, latest published data is returned.
        :param datetime publish_date_time_to: End of the Publish Time range to query. If specified, PublishDateTimeFrom must also be specified.  If both are omitted, latest published data is returned.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. Either the Elexon ID or the National Grid ID can be used.  If no BM unit is supplied all BM units will be returned.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsAvailabilityByBmUnitDaily
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_uou2_t14_d_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_uou2_t14_d_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_uou2_t14_d_get_with_http_info(self, **kwargs):  # noqa: E501
        """2 to 14 days ahead generation availability aggregated by Balancing Mechanism Units (UOU2T14D)  # noqa: E501

        This endpoint provides a forward view of availability (also referred to as Output Usable  data under the Grid Code) for generation and interconnector capacity, accounting for planned  outages covering availability data from 2 days ahead to 14 days ahead; it is aggregated by  National Grid Balancing Mechanism Units (NGC BMUs).                In the context of this report, BMUs can be considered as generating units.  Elexon BMUs differs from NGC BMUs by including a prefix e.g. 'T_'.  The mapping between NGC and Elexon BMUs can be retrieved via reference data API endpoints.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_uou2_t14_d_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param list[str] fuel_type: The fuel type to query. Add each fuel type separately. If no fuel types are supplied, all fuel types will be returned.
        :param datetime publish_date_time_from: Start of the Publish Time range to query. If specified, PublishDateTimeTo must also be specified.  If both are omitted, latest published data is returned.
        :param datetime publish_date_time_to: End of the Publish Time range to query. If specified, PublishDateTimeFrom must also be specified.  If both are omitted, latest published data is returned.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. Either the Elexon ID or the National Grid ID can be used.  If no BM unit is supplied all BM units will be returned.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsAvailabilityByBmUnitDaily
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['fuel_type', 'publish_date_time_from', 'publish_date_time_to', 'bm_unit', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_uou2_t14_d_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'fuel_type' in params:
            query_params.append(('fuelType', params['fuel_type']))  # noqa: E501
            collection_formats['fuelType'] = 'multi'  # noqa: E501
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/UOU2T14D', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsAvailabilityByBmUnitDaily',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_uou2_t14_d_stream_get(self, **kwargs):  # noqa: E501
        """2 to 14 days ahead generation availability aggregated by Balancing Mechanism Units (UOU2T14D) stream  # noqa: E501

        This endpoint provides a forward view of availability (also referred to as Output Usable  data under the Grid Code) for generation and interconnector capacity, accounting for planned  outages covering availability data from 2 days ahead to 14 days ahead; it is aggregated by  National Grid Balancing Mechanism Units (NGC BMUs).                In the context of this report, BMUs can be considered as generating units.  Elexon BMUs differs from NGC BMUs by including a prefix e.g. 'T_'.  The mapping between NGC and Elexon BMUs can be retrieved via reference data API endpoints.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_uou2_t14_d_stream_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param list[str] fuel_type: The fuel type to query. Add each fuel type separately. If no fuel types are supplied, all fuel types will be returned.
        :param datetime publish_date_time_from: Start of the Publish Time range to query. If specified, PublishDateTimeTo must also be specified.  If both are omitted, latest published data is returned.
        :param datetime publish_date_time_to: End of the Publish Time range to query. If specified, PublishDateTimeFrom must also be specified.  If both are omitted, latest published data is returned.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. Either the Elexon ID or the National Grid ID can be used.  If no BM unit is supplied all BM units will be returned.
        :return: list[InsightsApiModelsResponsesGenerationDatasetRowsAvailabilityByBmUnitDaily]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_uou2_t14_d_stream_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_uou2_t14_d_stream_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_uou2_t14_d_stream_get_with_http_info(self, **kwargs):  # noqa: E501
        """2 to 14 days ahead generation availability aggregated by Balancing Mechanism Units (UOU2T14D) stream  # noqa: E501

        This endpoint provides a forward view of availability (also referred to as Output Usable  data under the Grid Code) for generation and interconnector capacity, accounting for planned  outages covering availability data from 2 days ahead to 14 days ahead; it is aggregated by  National Grid Balancing Mechanism Units (NGC BMUs).                In the context of this report, BMUs can be considered as generating units.  Elexon BMUs differs from NGC BMUs by including a prefix e.g. 'T_'.  The mapping between NGC and Elexon BMUs can be retrieved via reference data API endpoints.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_uou2_t14_d_stream_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param list[str] fuel_type: The fuel type to query. Add each fuel type separately. If no fuel types are supplied, all fuel types will be returned.
        :param datetime publish_date_time_from: Start of the Publish Time range to query. If specified, PublishDateTimeTo must also be specified.  If both are omitted, latest published data is returned.
        :param datetime publish_date_time_to: End of the Publish Time range to query. If specified, PublishDateTimeFrom must also be specified.  If both are omitted, latest published data is returned.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. Either the Elexon ID or the National Grid ID can be used.  If no BM unit is supplied all BM units will be returned.
        :return: list[InsightsApiModelsResponsesGenerationDatasetRowsAvailabilityByBmUnitDaily]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['fuel_type', 'publish_date_time_from', 'publish_date_time_to', 'bm_unit']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_uou2_t14_d_stream_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'fuel_type' in params:
            query_params.append(('fuelType', params['fuel_type']))  # noqa: E501
            collection_formats['fuelType'] = 'multi'  # noqa: E501
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/UOU2T14D/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesGenerationDatasetRowsAvailabilityByBmUnitDaily]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_uou2_t3_yw_get(self, **kwargs):  # noqa: E501
        """2 to 156 weeks ahead generation availability aggregated by Balancing Mechanism Units (UOU2T3YW)  # noqa: E501

        This endpoint forward view of availability (also referred to as Output Usable  data under the Grid Code) for generation and interconnector capacity, accounting for planned  outages covering availability data from 2 weeks ahead to 156 weeks ahead; it is aggregated by  Balancing Mechanism Units (BMUs).                In the context of this report, BMUs can be considered as generating units.  Elexon BMUs differs from NGC BMUs by including a prefix e.g. 'T_'.  The mapping between NGC and Elexon BMUs can be retrieved via reference data API endpoints.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_uou2_t3_yw_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param list[str] fuel_type: The fuel type to query. Add each fuel type separately. If no fuel types are supplied, all fuel types will be returned.
        :param datetime publish_date_time_from: Start of the Publish Time range to query. If specified, PublishDateTimeTo must also be specified.  If both are omitted, latest published data is returned.
        :param datetime publish_date_time_to: End of the Publish Time range to query. If specified, PublishDateTimeFrom must also be specified.  If both are omitted, latest published data is returned.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. Either the Elexon ID or the National Grid ID can be used.  If no BM unit is supplied all BM units will be returned.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsAvailabilityByBmUnitWeekly
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_uou2_t3_yw_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_uou2_t3_yw_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_uou2_t3_yw_get_with_http_info(self, **kwargs):  # noqa: E501
        """2 to 156 weeks ahead generation availability aggregated by Balancing Mechanism Units (UOU2T3YW)  # noqa: E501

        This endpoint forward view of availability (also referred to as Output Usable  data under the Grid Code) for generation and interconnector capacity, accounting for planned  outages covering availability data from 2 weeks ahead to 156 weeks ahead; it is aggregated by  Balancing Mechanism Units (BMUs).                In the context of this report, BMUs can be considered as generating units.  Elexon BMUs differs from NGC BMUs by including a prefix e.g. 'T_'.  The mapping between NGC and Elexon BMUs can be retrieved via reference data API endpoints.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_uou2_t3_yw_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param list[str] fuel_type: The fuel type to query. Add each fuel type separately. If no fuel types are supplied, all fuel types will be returned.
        :param datetime publish_date_time_from: Start of the Publish Time range to query. If specified, PublishDateTimeTo must also be specified.  If both are omitted, latest published data is returned.
        :param datetime publish_date_time_to: End of the Publish Time range to query. If specified, PublishDateTimeFrom must also be specified.  If both are omitted, latest published data is returned.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. Either the Elexon ID or the National Grid ID can be used.  If no BM unit is supplied all BM units will be returned.
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsAvailabilityByBmUnitWeekly
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['fuel_type', 'publish_date_time_from', 'publish_date_time_to', 'bm_unit', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_uou2_t3_yw_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'fuel_type' in params:
            query_params.append(('fuelType', params['fuel_type']))  # noqa: E501
            collection_formats['fuelType'] = 'multi'  # noqa: E501
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/UOU2T3YW', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsAvailabilityByBmUnitWeekly',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_uou2_t3_yw_stream_get(self, **kwargs):  # noqa: E501
        """2 to 156 weeks ahead generation availability aggregated by Balancing Mechanism Units (UOU2T3YW) stream  # noqa: E501

        This endpoint forward view of availability (also referred to as Output Usable  data under the Grid Code) for generation and interconnector capacity, accounting for planned  outages covering availability data from 2 weeks ahead to 156 weeks ahead; it is aggregated by  Balancing Mechanism Units (BMUs).                In the context of this report, BMUs can be considered as generating units.  Elexon BMUs differs from NGC BMUs by including a prefix e.g. 'T_'.  The mapping between NGC and Elexon BMUs can be retrieved via reference data API endpoints.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_uou2_t3_yw_stream_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param list[str] fuel_type: The fuel type to query. Add each fuel type separately. If no fuel types are supplied, all fuel types will be returned.
        :param datetime publish_date_time_from: Start of the Publish Time range to query. If specified, PublishDateTimeTo must also be specified.  If both are omitted, latest published data is returned.
        :param datetime publish_date_time_to: End of the Publish Time range to query. If specified, PublishDateTimeFrom must also be specified.  If both are omitted, latest published data is returned.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. Either the Elexon ID or the National Grid ID can be used.  If no BM unit is supplied all BM units will be returned.
        :return: list[InsightsApiModelsResponsesGenerationDatasetRowsAvailabilityByBmUnitWeekly]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_uou2_t3_yw_stream_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_uou2_t3_yw_stream_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_uou2_t3_yw_stream_get_with_http_info(self, **kwargs):  # noqa: E501
        """2 to 156 weeks ahead generation availability aggregated by Balancing Mechanism Units (UOU2T3YW) stream  # noqa: E501

        This endpoint forward view of availability (also referred to as Output Usable  data under the Grid Code) for generation and interconnector capacity, accounting for planned  outages covering availability data from 2 weeks ahead to 156 weeks ahead; it is aggregated by  Balancing Mechanism Units (BMUs).                In the context of this report, BMUs can be considered as generating units.  Elexon BMUs differs from NGC BMUs by including a prefix e.g. 'T_'.  The mapping between NGC and Elexon BMUs can be retrieved via reference data API endpoints.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_uou2_t3_yw_stream_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param list[str] fuel_type: The fuel type to query. Add each fuel type separately. If no fuel types are supplied, all fuel types will be returned.
        :param datetime publish_date_time_from: Start of the Publish Time range to query. If specified, PublishDateTimeTo must also be specified.  If both are omitted, latest published data is returned.
        :param datetime publish_date_time_to: End of the Publish Time range to query. If specified, PublishDateTimeFrom must also be specified.  If both are omitted, latest published data is returned.
        :param list[str] bm_unit: The BM units to query. Add each unit separately. Either the Elexon ID or the National Grid ID can be used.  If no BM unit is supplied all BM units will be returned.
        :return: list[InsightsApiModelsResponsesGenerationDatasetRowsAvailabilityByBmUnitWeekly]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['fuel_type', 'publish_date_time_from', 'publish_date_time_to', 'bm_unit']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_uou2_t3_yw_stream_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'fuel_type' in params:
            query_params.append(('fuelType', params['fuel_type']))  # noqa: E501
            collection_formats['fuelType'] = 'multi'  # noqa: E501
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'bm_unit' in params:
            query_params.append(('bmUnit', params['bm_unit']))  # noqa: E501
            collection_formats['bmUnit'] = 'multi'  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/UOU2T3YW/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesGenerationDatasetRowsAvailabilityByBmUnitWeekly]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_watl_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Week-Ahead Total Load Forecast Per Bidding Zone (WATL / B0630)  # noqa: E501

        This endpoint provides week-ahead total load forecast per bidding zone data with minimum possible  and maximum available loads provided in MW values.    This API endpoint has a maximum range of 367 days.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_watl_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsWeekAheadTotalLoadPerBiddingZoneDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_watl_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_watl_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_watl_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Week-Ahead Total Load Forecast Per Bidding Zone (WATL / B0630)  # noqa: E501

        This endpoint provides week-ahead total load forecast per bidding zone data with minimum possible  and maximum available loads provided in MW values.    This API endpoint has a maximum range of 367 days.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_watl_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsWeekAheadTotalLoadPerBiddingZoneDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_watl_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_watl_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_watl_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/WATL', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsWeekAheadTotalLoadPerBiddingZoneDatasetRow',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_watl_stream_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Week-Ahead Total Load Forecast Per Bidding Zone (WATL / B0630) stream  # noqa: E501

        This endpoint provides week-ahead total load forecast per bidding zone data with minimum possible  and maximum available loads provided in MW values.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_watl_stream_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsWeekAheadTotalLoadPerBiddingZoneDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_watl_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_watl_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_watl_stream_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Week-Ahead Total Load Forecast Per Bidding Zone (WATL / B0630) stream  # noqa: E501

        This endpoint provides week-ahead total load forecast per bidding zone data with minimum possible  and maximum available loads provided in MW values.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_watl_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsWeekAheadTotalLoadPerBiddingZoneDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_watl_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_watl_stream_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_watl_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/WATL/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesTransparencyDatasetRowsWeekAheadTotalLoadPerBiddingZoneDatasetRow]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_windfor_get(self, **kwargs):  # noqa: E501
        """Wind generation forecast (WINDFOR)  # noqa: E501

        This endpoint provides wind generation forecast data.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_windfor_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsWindGenerationForecast
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_windfor_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_windfor_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_windfor_get_with_http_info(self, **kwargs):  # noqa: E501
        """Wind generation forecast (WINDFOR)  # noqa: E501

        This endpoint provides wind generation forecast data.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_windfor_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsWindGenerationForecast
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_windfor_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/WINDFOR', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesGenerationDatasetRowsWindGenerationForecast',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_windfor_stream_get(self, **kwargs):  # noqa: E501
        """Wind generation forecast (WINDFOR) stream  # noqa: E501

        This endpoint provides wind generation forecast data.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_windfor_stream_get(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesGenerationDatasetRowsWindGenerationForecast]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_windfor_stream_get_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.datasets_windfor_stream_get_with_http_info(**kwargs)  # noqa: E501
            return data

    def datasets_windfor_stream_get_with_http_info(self, **kwargs):  # noqa: E501
        """Wind generation forecast (WINDFOR) stream  # noqa: E501

        This endpoint provides wind generation forecast data.    Specific publish time filters may be supplied, otherwise this will retrieve the latest published forecast.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_windfor_stream_get_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from:
        :param datetime publish_date_time_to:
        :return: list[InsightsApiModelsResponsesGenerationDatasetRowsWindGenerationForecast]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_windfor_stream_get" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/WINDFOR/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesGenerationDatasetRowsWindGenerationForecast]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_yafm_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Year Ahead Forecast Margin (YAFM / B0810)  # noqa: E501

        This endpoint provides year-ahead forecast margin data.                A year-ahead forecast margin is defined as the difference between yearly forecast of available generation capacity and yearly forecast of total load,  taking into account the forecast of total generation capacity, forecast of availability of generation and forecast of reserves contracted for system services.    This API endpoint has a maximum range of 20 years (7305 days).  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_yafm_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsYearAheadForecastMarginDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_yafm_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_yafm_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_yafm_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Year Ahead Forecast Margin (YAFM / B0810)  # noqa: E501

        This endpoint provides year-ahead forecast margin data.                A year-ahead forecast margin is defined as the difference between yearly forecast of available generation capacity and yearly forecast of total load,  taking into account the forecast of total generation capacity, forecast of availability of generation and forecast of reserves contracted for system services.    This API endpoint has a maximum range of 20 years (7305 days).  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_yafm_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsYearAheadForecastMarginDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_yafm_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_yafm_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_yafm_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/YAFM', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsYearAheadForecastMarginDatasetRow',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_yafm_stream_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Year Ahead Forecast Margin (YAFM / B0810) stream  # noqa: E501

        This endpoint provides year-ahead forecast margin data.    A year-ahead forecast margin is defined as the difference between yearly forecast of available generation capacity and yearly forecast of total load,  taking into account the forecast of total generation capacity, forecast of availability of generation and forecast of reserves contracted for system services.                This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_yafm_stream_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsYearAheadForecastMarginDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_yafm_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_yafm_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_yafm_stream_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Year Ahead Forecast Margin (YAFM / B0810) stream  # noqa: E501

        This endpoint provides year-ahead forecast margin data.    A year-ahead forecast margin is defined as the difference between yearly forecast of available generation capacity and yearly forecast of total load,  taking into account the forecast of total generation capacity, forecast of availability of generation and forecast of reserves contracted for system services.                This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_yafm_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsYearAheadForecastMarginDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_yafm_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_yafm_stream_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_yafm_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/YAFM/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesTransparencyDatasetRowsYearAheadForecastMarginDatasetRow]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_yatl_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Year-Ahead Total Load Forecast Per Bidding Zone (YATL / B0650)  # noqa: E501

        This endpoint provides year-ahead total load per bidding zone forecast data with minimum possible  and maximum available loads provided in MW values.    This API endpoint has a maximum range of 367 days.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_yatl_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsYearAheadTotalLoadPerBiddingZoneDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_yatl_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_yatl_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_yatl_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Year-Ahead Total Load Forecast Per Bidding Zone (YATL / B0650)  # noqa: E501

        This endpoint provides year-ahead total load per bidding zone forecast data with minimum possible  and maximum available loads provided in MW values.    This API endpoint has a maximum range of 367 days.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_yatl_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :param str format: Response data format. Use json/xml to include metadata.
        :return: InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsYearAheadTotalLoadPerBiddingZoneDatasetRow
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to', 'format']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_yatl_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_yatl_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_yatl_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501
        if 'format' in params:
            query_params.append(('format', params['format']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json', 'application/xml', 'text/xml', 'text/csv'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/YATL', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InsightsApiModelsResponsesDatasetResponse1InsightsApiModelsResponsesTransparencyDatasetRowsYearAheadTotalLoadPerBiddingZoneDatasetRow',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def datasets_yatl_stream_get(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Year-Ahead Total Load Forecast Per Bidding Zone (YATL / B0650) stream  # noqa: E501

        This endpoint provides year-ahead total load per bidding zone forecast data with minimum possible  and maximum available loads provided in MW values.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_yatl_stream_get(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsYearAheadTotalLoadPerBiddingZoneDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.datasets_yatl_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
        else:
            (data) = self.datasets_yatl_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, **kwargs)  # noqa: E501
            return data

    def datasets_yatl_stream_get_with_http_info(self, publish_date_time_from, publish_date_time_to, **kwargs):  # noqa: E501
        """Year-Ahead Total Load Forecast Per Bidding Zone (YATL / B0650) stream  # noqa: E501

        This endpoint provides year-ahead total load per bidding zone forecast data with minimum possible  and maximum available loads provided in MW values.    This endpoint has an optimised JSON payload and is aimed at frequent requests for the data.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.datasets_yatl_stream_get_with_http_info(publish_date_time_from, publish_date_time_to, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param datetime publish_date_time_from: (required)
        :param datetime publish_date_time_to: (required)
        :return: list[InsightsApiModelsResponsesTransparencyDatasetRowsYearAheadTotalLoadPerBiddingZoneDatasetRow]
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['publish_date_time_from', 'publish_date_time_to']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method datasets_yatl_stream_get" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'publish_date_time_from' is set
        if ('publish_date_time_from' not in params or
                params['publish_date_time_from'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_from` when calling `datasets_yatl_stream_get`")  # noqa: E501
        # verify the required parameter 'publish_date_time_to' is set
        if ('publish_date_time_to' not in params or
                params['publish_date_time_to'] is None):
            raise ValueError("Missing the required parameter `publish_date_time_to` when calling `datasets_yatl_stream_get`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'publish_date_time_from' in params:
            query_params.append(('publishDateTimeFrom', params['publish_date_time_from']))  # noqa: E501
        if 'publish_date_time_to' in params:
            query_params.append(('publishDateTimeTo', params['publish_date_time_to']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['text/plain', 'application/json', 'text/json'])  # noqa: E501

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/datasets/YATL/stream', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[InsightsApiModelsResponsesTransparencyDatasetRowsYearAheadTotalLoadPerBiddingZoneDatasetRow]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)
