"""
Fitbit Web API Explorer

Fitbit provides a Web API for accessing data from Fitbit activity trackers, Aria scale, and manually entered logs. Anyone can develop an application to access and modify a Fitbit user's data on their behalf, so long as it complies with Fitbit Platform Terms of Service. These Swagger UI docs do not currently support making Fitbit API requests directly. In order to make a request, construct a request for the appropriate endpoint using this documentation, and then add an Authorization header to each request with an access token obtained using the steps outlined here: https://dev.fitbit.com/build/reference/web-api/developer-guide/authorization/.

The version of the OpenAPI document: 1
Generated by OpenAPI Generator (https://openapi-generator.tech)

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

from typing import Any, Dict, List, Optional, Tuple, Union

from pydantic import Field, StrictFloat, StrictInt, StrictStr, validate_call
from typing_extensions import Annotated

from fitbit_web_api.api_client import ApiClient, RequestSerialized
from fitbit_web_api.api_response import ApiResponse
from fitbit_web_api.models.get_activity_intraday_response import (
    GetActivityIntradayResponse,
)
from fitbit_web_api.rest import RESTResponseType


class ActivityIntradayTimeSeriesApi:
    """
    NOTE: This class is auto generated by OpenAPI Generator
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

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

    @validate_call
    async def get_activities_resource_by_date_intraday(
        self,
        var_resource_path: Annotated[
            StrictStr,
            Field(
                description="The resource-path; see options in the Resource Path Options section in the full documentation."
            ),
        ],
        var_date: Annotated[
            StrictStr, Field(description="The date in the format yyyy-MM-dd or today.")
        ],
        detail_level: Annotated[
            StrictStr,
            Field(
                description="Number of data points to include. Either 1min or 15min. Optional."
            ),
        ],
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
            ],
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> GetActivityIntradayResponse:
        """
        Get Intraday Time Series

        Returns the Intraday Time Series for a given resource in the format requested.

        :param var_resource_path: The resource-path; see options in the Resource Path Options section in the full documentation. (required)
        :type var_resource_path: str
        :param var_date: The date in the format yyyy-MM-dd or today. (required)
        :type var_date: str
        :param detail_level: Number of data points to include. Either 1min or 15min. Optional. (required)
        :type detail_level: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """  # noqa: E501
        _param = self._get_activities_resource_by_date_intraday_serialize(
            var_resource_path=var_resource_path,
            var_date=var_date,
            detail_level=detail_level,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index,
        )

        _response_types_map: Dict[str, Optional[str]] = {
            "200": "GetActivityIntradayResponse",
            "400": None,
            "401": None,
            "409": None,
        }
        response_data = await self.api_client.call_api(
            *_param, _request_timeout=_request_timeout
        )
        await response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        ).data

    @validate_call
    async def get_activities_resource_by_date_intraday_with_http_info(
        self,
        var_resource_path: Annotated[
            StrictStr,
            Field(
                description="The resource-path; see options in the Resource Path Options section in the full documentation."
            ),
        ],
        var_date: Annotated[
            StrictStr, Field(description="The date in the format yyyy-MM-dd or today.")
        ],
        detail_level: Annotated[
            StrictStr,
            Field(
                description="Number of data points to include. Either 1min or 15min. Optional."
            ),
        ],
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
            ],
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> ApiResponse[GetActivityIntradayResponse]:
        """
        Get Intraday Time Series

        Returns the Intraday Time Series for a given resource in the format requested.

        :param var_resource_path: The resource-path; see options in the Resource Path Options section in the full documentation. (required)
        :type var_resource_path: str
        :param var_date: The date in the format yyyy-MM-dd or today. (required)
        :type var_date: str
        :param detail_level: Number of data points to include. Either 1min or 15min. Optional. (required)
        :type detail_level: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """  # noqa: E501
        _param = self._get_activities_resource_by_date_intraday_serialize(
            var_resource_path=var_resource_path,
            var_date=var_date,
            detail_level=detail_level,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index,
        )

        _response_types_map: Dict[str, Optional[str]] = {
            "200": "GetActivityIntradayResponse",
            "400": None,
            "401": None,
            "409": None,
        }
        response_data = await self.api_client.call_api(
            *_param, _request_timeout=_request_timeout
        )
        await response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        )

    @validate_call
    async def get_activities_resource_by_date_intraday_without_preload_content(
        self,
        var_resource_path: Annotated[
            StrictStr,
            Field(
                description="The resource-path; see options in the Resource Path Options section in the full documentation."
            ),
        ],
        var_date: Annotated[
            StrictStr, Field(description="The date in the format yyyy-MM-dd or today.")
        ],
        detail_level: Annotated[
            StrictStr,
            Field(
                description="Number of data points to include. Either 1min or 15min. Optional."
            ),
        ],
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
            ],
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> RESTResponseType:
        """
        Get Intraday Time Series

        Returns the Intraday Time Series for a given resource in the format requested.

        :param var_resource_path: The resource-path; see options in the Resource Path Options section in the full documentation. (required)
        :type var_resource_path: str
        :param var_date: The date in the format yyyy-MM-dd or today. (required)
        :type var_date: str
        :param detail_level: Number of data points to include. Either 1min or 15min. Optional. (required)
        :type detail_level: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """  # noqa: E501
        _param = self._get_activities_resource_by_date_intraday_serialize(
            var_resource_path=var_resource_path,
            var_date=var_date,
            detail_level=detail_level,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index,
        )

        _response_types_map: Dict[str, Optional[str]] = {
            "200": "GetActivityIntradayResponse",
            "400": None,
            "401": None,
            "409": None,
        }
        response_data = await self.api_client.call_api(
            *_param, _request_timeout=_request_timeout
        )
        return response_data.response

    def _get_activities_resource_by_date_intraday_serialize(
        self,
        var_resource_path,
        var_date,
        detail_level,
        _request_auth,
        _content_type,
        _headers,
        _host_index,
    ) -> RequestSerialized:

        _host = None

        _collection_formats: Dict[str, str] = {}

        _path_params: Dict[str, str] = {}
        _query_params: List[Tuple[str, str]] = []
        _header_params: Dict[str, Optional[str]] = _headers or {}
        _form_params: List[Tuple[str, str]] = []
        _files: Dict[
            str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
        ] = {}
        _body_params: Optional[bytes] = None

        # process the path parameters
        if var_resource_path is not None:
            _path_params["resource-path"] = var_resource_path
        if var_date is not None:
            _path_params["date"] = var_date
        if detail_level is not None:
            _path_params["detail-level"] = detail_level
        # process the query parameters
        # process the header parameters
        # process the form parameters
        # process the body parameter

        # set the HTTP header `Accept`
        if "Accept" not in _header_params:
            _header_params["Accept"] = self.api_client.select_header_accept(
                ["application/json"]
            )

        # authentication setting
        _auth_settings: List[str] = ["oauth2"]

        return self.api_client.param_serialize(
            method="GET",
            resource_path="/1/user/-/activities/{resource-path}/date/{date}/1d/{detail-level}.json",
            path_params=_path_params,
            query_params=_query_params,
            header_params=_header_params,
            body=_body_params,
            post_params=_form_params,
            files=_files,
            auth_settings=_auth_settings,
            collection_formats=_collection_formats,
            _host=_host,
            _request_auth=_request_auth,
        )

    @validate_call
    async def get_activities_resource_by_date_range_intraday(
        self,
        var_resource_path: Annotated[
            StrictStr,
            Field(
                description="The resource-path; see options in the Resource Path Options section in the full documentation."
            ),
        ],
        base_date: Annotated[
            StrictStr, Field(description="The date in the format yyyy-MM-dd or today.")
        ],
        end_date: Annotated[
            StrictStr, Field(description="The date in the format yyyy-MM-dd or today.")
        ],
        detail_level: Annotated[
            StrictStr,
            Field(
                description="Number of data points to include. Either 1min or 15min. Optional."
            ),
        ],
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
            ],
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> GetActivityIntradayResponse:
        """
        Get Activity Intraday Time Series

        Returns the Activity Intraday Time Series for a given resource in the format requested.

        :param var_resource_path: The resource-path; see options in the Resource Path Options section in the full documentation. (required)
        :type var_resource_path: str
        :param base_date: The date in the format yyyy-MM-dd or today. (required)
        :type base_date: str
        :param end_date: The date in the format yyyy-MM-dd or today. (required)
        :type end_date: str
        :param detail_level: Number of data points to include. Either 1min or 15min. Optional. (required)
        :type detail_level: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """  # noqa: E501
        _param = self._get_activities_resource_by_date_range_intraday_serialize(
            var_resource_path=var_resource_path,
            base_date=base_date,
            end_date=end_date,
            detail_level=detail_level,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index,
        )

        _response_types_map: Dict[str, Optional[str]] = {
            "200": "GetActivityIntradayResponse",
            "400": None,
            "401": None,
            "409": None,
        }
        response_data = await self.api_client.call_api(
            *_param, _request_timeout=_request_timeout
        )
        await response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        ).data

    @validate_call
    async def get_activities_resource_by_date_range_intraday_with_http_info(
        self,
        var_resource_path: Annotated[
            StrictStr,
            Field(
                description="The resource-path; see options in the Resource Path Options section in the full documentation."
            ),
        ],
        base_date: Annotated[
            StrictStr, Field(description="The date in the format yyyy-MM-dd or today.")
        ],
        end_date: Annotated[
            StrictStr, Field(description="The date in the format yyyy-MM-dd or today.")
        ],
        detail_level: Annotated[
            StrictStr,
            Field(
                description="Number of data points to include. Either 1min or 15min. Optional."
            ),
        ],
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
            ],
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> ApiResponse[GetActivityIntradayResponse]:
        """
        Get Activity Intraday Time Series

        Returns the Activity Intraday Time Series for a given resource in the format requested.

        :param var_resource_path: The resource-path; see options in the Resource Path Options section in the full documentation. (required)
        :type var_resource_path: str
        :param base_date: The date in the format yyyy-MM-dd or today. (required)
        :type base_date: str
        :param end_date: The date in the format yyyy-MM-dd or today. (required)
        :type end_date: str
        :param detail_level: Number of data points to include. Either 1min or 15min. Optional. (required)
        :type detail_level: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """  # noqa: E501
        _param = self._get_activities_resource_by_date_range_intraday_serialize(
            var_resource_path=var_resource_path,
            base_date=base_date,
            end_date=end_date,
            detail_level=detail_level,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index,
        )

        _response_types_map: Dict[str, Optional[str]] = {
            "200": "GetActivityIntradayResponse",
            "400": None,
            "401": None,
            "409": None,
        }
        response_data = await self.api_client.call_api(
            *_param, _request_timeout=_request_timeout
        )
        await response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        )

    @validate_call
    async def get_activities_resource_by_date_range_intraday_without_preload_content(
        self,
        var_resource_path: Annotated[
            StrictStr,
            Field(
                description="The resource-path; see options in the Resource Path Options section in the full documentation."
            ),
        ],
        base_date: Annotated[
            StrictStr, Field(description="The date in the format yyyy-MM-dd or today.")
        ],
        end_date: Annotated[
            StrictStr, Field(description="The date in the format yyyy-MM-dd or today.")
        ],
        detail_level: Annotated[
            StrictStr,
            Field(
                description="Number of data points to include. Either 1min or 15min. Optional."
            ),
        ],
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
            ],
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> RESTResponseType:
        """
        Get Activity Intraday Time Series

        Returns the Activity Intraday Time Series for a given resource in the format requested.

        :param var_resource_path: The resource-path; see options in the Resource Path Options section in the full documentation. (required)
        :type var_resource_path: str
        :param base_date: The date in the format yyyy-MM-dd or today. (required)
        :type base_date: str
        :param end_date: The date in the format yyyy-MM-dd or today. (required)
        :type end_date: str
        :param detail_level: Number of data points to include. Either 1min or 15min. Optional. (required)
        :type detail_level: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """  # noqa: E501
        _param = self._get_activities_resource_by_date_range_intraday_serialize(
            var_resource_path=var_resource_path,
            base_date=base_date,
            end_date=end_date,
            detail_level=detail_level,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index,
        )

        _response_types_map: Dict[str, Optional[str]] = {
            "200": "GetActivityIntradayResponse",
            "400": None,
            "401": None,
            "409": None,
        }
        response_data = await self.api_client.call_api(
            *_param, _request_timeout=_request_timeout
        )
        return response_data.response

    def _get_activities_resource_by_date_range_intraday_serialize(
        self,
        var_resource_path,
        base_date,
        end_date,
        detail_level,
        _request_auth,
        _content_type,
        _headers,
        _host_index,
    ) -> RequestSerialized:

        _host = None

        _collection_formats: Dict[str, str] = {}

        _path_params: Dict[str, str] = {}
        _query_params: List[Tuple[str, str]] = []
        _header_params: Dict[str, Optional[str]] = _headers or {}
        _form_params: List[Tuple[str, str]] = []
        _files: Dict[
            str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
        ] = {}
        _body_params: Optional[bytes] = None

        # process the path parameters
        if var_resource_path is not None:
            _path_params["resource-path"] = var_resource_path
        if base_date is not None:
            _path_params["base-date"] = base_date
        if end_date is not None:
            _path_params["end-date"] = end_date
        if detail_level is not None:
            _path_params["detail-level"] = detail_level
        # process the query parameters
        # process the header parameters
        # process the form parameters
        # process the body parameter

        # set the HTTP header `Accept`
        if "Accept" not in _header_params:
            _header_params["Accept"] = self.api_client.select_header_accept(
                ["application/json"]
            )

        # authentication setting
        _auth_settings: List[str] = ["oauth2"]

        return self.api_client.param_serialize(
            method="GET",
            resource_path="/1/user/-/activities/{resource-path}/date/{base-date}/{end-date}/{detail-level}.json",
            path_params=_path_params,
            query_params=_query_params,
            header_params=_header_params,
            body=_body_params,
            post_params=_form_params,
            files=_files,
            auth_settings=_auth_settings,
            collection_formats=_collection_formats,
            _host=_host,
            _request_auth=_request_auth,
        )

    @validate_call
    async def get_activities_resource_by_date_range_time_series_intraday(
        self,
        var_resource_path: Annotated[
            StrictStr,
            Field(
                description="The resource-path; see options in the Resource Path Options section in the full documentation."
            ),
        ],
        var_date: Annotated[
            StrictStr, Field(description="The date in the format yyyy-MM-dd or today.")
        ],
        end_date: Annotated[
            StrictStr, Field(description="The date in the format yyyy-MM-dd or today.")
        ],
        detail_level: Annotated[
            StrictStr,
            Field(
                description="Number of data points to include. Either 1min or 15min."
            ),
        ],
        start_time: Annotated[
            StrictStr, Field(description="The start of the period in the format HH:mm.")
        ],
        end_time: Annotated[
            StrictStr, Field(description="The end of the period in the format HH:mm.")
        ],
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
            ],
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> GetActivityIntradayResponse:
        """
        Get Activity Intraday Time Series

        Returns the Intraday Time Series for a given resource in the format requested.

        :param var_resource_path: The resource-path; see options in the Resource Path Options section in the full documentation. (required)
        :type var_resource_path: str
        :param var_date: The date in the format yyyy-MM-dd or today. (required)
        :type var_date: str
        :param end_date: The date in the format yyyy-MM-dd or today. (required)
        :type end_date: str
        :param detail_level: Number of data points to include. Either 1min or 15min. (required)
        :type detail_level: str
        :param start_time: The start of the period in the format HH:mm. (required)
        :type start_time: str
        :param end_time: The end of the period in the format HH:mm. (required)
        :type end_time: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """  # noqa: E501
        _param = (
            self._get_activities_resource_by_date_range_time_series_intraday_serialize(
                var_resource_path=var_resource_path,
                var_date=var_date,
                end_date=end_date,
                detail_level=detail_level,
                start_time=start_time,
                end_time=end_time,
                _request_auth=_request_auth,
                _content_type=_content_type,
                _headers=_headers,
                _host_index=_host_index,
            )
        )

        _response_types_map: Dict[str, Optional[str]] = {
            "200": "GetActivityIntradayResponse",
            "400": None,
            "401": None,
            "409": None,
        }
        response_data = await self.api_client.call_api(
            *_param, _request_timeout=_request_timeout
        )
        await response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        ).data

    @validate_call
    async def get_activities_resource_by_date_range_time_series_intraday_with_http_info(
        self,
        var_resource_path: Annotated[
            StrictStr,
            Field(
                description="The resource-path; see options in the Resource Path Options section in the full documentation."
            ),
        ],
        var_date: Annotated[
            StrictStr, Field(description="The date in the format yyyy-MM-dd or today.")
        ],
        end_date: Annotated[
            StrictStr, Field(description="The date in the format yyyy-MM-dd or today.")
        ],
        detail_level: Annotated[
            StrictStr,
            Field(
                description="Number of data points to include. Either 1min or 15min."
            ),
        ],
        start_time: Annotated[
            StrictStr, Field(description="The start of the period in the format HH:mm.")
        ],
        end_time: Annotated[
            StrictStr, Field(description="The end of the period in the format HH:mm.")
        ],
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
            ],
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> ApiResponse[GetActivityIntradayResponse]:
        """
        Get Activity Intraday Time Series

        Returns the Intraday Time Series for a given resource in the format requested.

        :param var_resource_path: The resource-path; see options in the Resource Path Options section in the full documentation. (required)
        :type var_resource_path: str
        :param var_date: The date in the format yyyy-MM-dd or today. (required)
        :type var_date: str
        :param end_date: The date in the format yyyy-MM-dd or today. (required)
        :type end_date: str
        :param detail_level: Number of data points to include. Either 1min or 15min. (required)
        :type detail_level: str
        :param start_time: The start of the period in the format HH:mm. (required)
        :type start_time: str
        :param end_time: The end of the period in the format HH:mm. (required)
        :type end_time: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """  # noqa: E501
        _param = (
            self._get_activities_resource_by_date_range_time_series_intraday_serialize(
                var_resource_path=var_resource_path,
                var_date=var_date,
                end_date=end_date,
                detail_level=detail_level,
                start_time=start_time,
                end_time=end_time,
                _request_auth=_request_auth,
                _content_type=_content_type,
                _headers=_headers,
                _host_index=_host_index,
            )
        )

        _response_types_map: Dict[str, Optional[str]] = {
            "200": "GetActivityIntradayResponse",
            "400": None,
            "401": None,
            "409": None,
        }
        response_data = await self.api_client.call_api(
            *_param, _request_timeout=_request_timeout
        )
        await response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        )

    @validate_call
    async def get_activities_resource_by_date_range_time_series_intraday_without_preload_content(
        self,
        var_resource_path: Annotated[
            StrictStr,
            Field(
                description="The resource-path; see options in the Resource Path Options section in the full documentation."
            ),
        ],
        var_date: Annotated[
            StrictStr, Field(description="The date in the format yyyy-MM-dd or today.")
        ],
        end_date: Annotated[
            StrictStr, Field(description="The date in the format yyyy-MM-dd or today.")
        ],
        detail_level: Annotated[
            StrictStr,
            Field(
                description="Number of data points to include. Either 1min or 15min."
            ),
        ],
        start_time: Annotated[
            StrictStr, Field(description="The start of the period in the format HH:mm.")
        ],
        end_time: Annotated[
            StrictStr, Field(description="The end of the period in the format HH:mm.")
        ],
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
            ],
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> RESTResponseType:
        """
        Get Activity Intraday Time Series

        Returns the Intraday Time Series for a given resource in the format requested.

        :param var_resource_path: The resource-path; see options in the Resource Path Options section in the full documentation. (required)
        :type var_resource_path: str
        :param var_date: The date in the format yyyy-MM-dd or today. (required)
        :type var_date: str
        :param end_date: The date in the format yyyy-MM-dd or today. (required)
        :type end_date: str
        :param detail_level: Number of data points to include. Either 1min or 15min. (required)
        :type detail_level: str
        :param start_time: The start of the period in the format HH:mm. (required)
        :type start_time: str
        :param end_time: The end of the period in the format HH:mm. (required)
        :type end_time: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """  # noqa: E501
        _param = (
            self._get_activities_resource_by_date_range_time_series_intraday_serialize(
                var_resource_path=var_resource_path,
                var_date=var_date,
                end_date=end_date,
                detail_level=detail_level,
                start_time=start_time,
                end_time=end_time,
                _request_auth=_request_auth,
                _content_type=_content_type,
                _headers=_headers,
                _host_index=_host_index,
            )
        )

        _response_types_map: Dict[str, Optional[str]] = {
            "200": "GetActivityIntradayResponse",
            "400": None,
            "401": None,
            "409": None,
        }
        response_data = await self.api_client.call_api(
            *_param, _request_timeout=_request_timeout
        )
        return response_data.response

    def _get_activities_resource_by_date_range_time_series_intraday_serialize(
        self,
        var_resource_path,
        var_date,
        end_date,
        detail_level,
        start_time,
        end_time,
        _request_auth,
        _content_type,
        _headers,
        _host_index,
    ) -> RequestSerialized:

        _host = None

        _collection_formats: Dict[str, str] = {}

        _path_params: Dict[str, str] = {}
        _query_params: List[Tuple[str, str]] = []
        _header_params: Dict[str, Optional[str]] = _headers or {}
        _form_params: List[Tuple[str, str]] = []
        _files: Dict[
            str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
        ] = {}
        _body_params: Optional[bytes] = None

        # process the path parameters
        if var_resource_path is not None:
            _path_params["resource-path"] = var_resource_path
        if var_date is not None:
            _path_params["date"] = var_date
        if end_date is not None:
            _path_params["end-date"] = end_date
        if detail_level is not None:
            _path_params["detail-level"] = detail_level
        if start_time is not None:
            _path_params["start-time"] = start_time
        if end_time is not None:
            _path_params["end-time"] = end_time
        # process the query parameters
        # process the header parameters
        # process the form parameters
        # process the body parameter

        # set the HTTP header `Accept`
        if "Accept" not in _header_params:
            _header_params["Accept"] = self.api_client.select_header_accept(
                ["application/json"]
            )

        # authentication setting
        _auth_settings: List[str] = ["oauth2"]

        return self.api_client.param_serialize(
            method="GET",
            resource_path="/1/user/-/activities/{resource-path}/date/{date}/{end-date}/{detail-level}/time/{start-time}/{end-time}.json",
            path_params=_path_params,
            query_params=_query_params,
            header_params=_header_params,
            body=_body_params,
            post_params=_form_params,
            files=_files,
            auth_settings=_auth_settings,
            collection_formats=_collection_formats,
            _host=_host,
            _request_auth=_request_auth,
        )

    @validate_call
    async def get_activities_resource_by_date_time_series_intraday(
        self,
        var_resource_path: Annotated[
            StrictStr,
            Field(
                description="The resource-path; see options in the Resource Path Options section in the full documentation."
            ),
        ],
        var_date: Annotated[
            StrictStr, Field(description="The date in the format yyyy-MM-dd or today.")
        ],
        detail_level: Annotated[
            StrictStr,
            Field(
                description="Number of data points to include. Either 1min or 15min."
            ),
        ],
        start_time: Annotated[
            StrictStr, Field(description="The start of the period in the format HH:mm.")
        ],
        end_time: Annotated[
            StrictStr, Field(description="The end of the period in the format HH:mm.")
        ],
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
            ],
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> GetActivityIntradayResponse:
        """
        Get Intraday Time Series

        Returns the Intraday Time Series for a given resource in the format requested.

        :param var_resource_path: The resource-path; see options in the Resource Path Options section in the full documentation. (required)
        :type var_resource_path: str
        :param var_date: The date in the format yyyy-MM-dd or today. (required)
        :type var_date: str
        :param detail_level: Number of data points to include. Either 1min or 15min. (required)
        :type detail_level: str
        :param start_time: The start of the period in the format HH:mm. (required)
        :type start_time: str
        :param end_time: The end of the period in the format HH:mm. (required)
        :type end_time: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """  # noqa: E501
        _param = self._get_activities_resource_by_date_time_series_intraday_serialize(
            var_resource_path=var_resource_path,
            var_date=var_date,
            detail_level=detail_level,
            start_time=start_time,
            end_time=end_time,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index,
        )

        _response_types_map: Dict[str, Optional[str]] = {
            "200": "GetActivityIntradayResponse",
            "400": None,
            "401": None,
            "409": None,
        }
        response_data = await self.api_client.call_api(
            *_param, _request_timeout=_request_timeout
        )
        await response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        ).data

    @validate_call
    async def get_activities_resource_by_date_time_series_intraday_with_http_info(
        self,
        var_resource_path: Annotated[
            StrictStr,
            Field(
                description="The resource-path; see options in the Resource Path Options section in the full documentation."
            ),
        ],
        var_date: Annotated[
            StrictStr, Field(description="The date in the format yyyy-MM-dd or today.")
        ],
        detail_level: Annotated[
            StrictStr,
            Field(
                description="Number of data points to include. Either 1min or 15min."
            ),
        ],
        start_time: Annotated[
            StrictStr, Field(description="The start of the period in the format HH:mm.")
        ],
        end_time: Annotated[
            StrictStr, Field(description="The end of the period in the format HH:mm.")
        ],
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
            ],
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> ApiResponse[GetActivityIntradayResponse]:
        """
        Get Intraday Time Series

        Returns the Intraday Time Series for a given resource in the format requested.

        :param var_resource_path: The resource-path; see options in the Resource Path Options section in the full documentation. (required)
        :type var_resource_path: str
        :param var_date: The date in the format yyyy-MM-dd or today. (required)
        :type var_date: str
        :param detail_level: Number of data points to include. Either 1min or 15min. (required)
        :type detail_level: str
        :param start_time: The start of the period in the format HH:mm. (required)
        :type start_time: str
        :param end_time: The end of the period in the format HH:mm. (required)
        :type end_time: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """  # noqa: E501
        _param = self._get_activities_resource_by_date_time_series_intraday_serialize(
            var_resource_path=var_resource_path,
            var_date=var_date,
            detail_level=detail_level,
            start_time=start_time,
            end_time=end_time,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index,
        )

        _response_types_map: Dict[str, Optional[str]] = {
            "200": "GetActivityIntradayResponse",
            "400": None,
            "401": None,
            "409": None,
        }
        response_data = await self.api_client.call_api(
            *_param, _request_timeout=_request_timeout
        )
        await response_data.read()
        return self.api_client.response_deserialize(
            response_data=response_data,
            response_types_map=_response_types_map,
        )

    @validate_call
    async def get_activities_resource_by_date_time_series_intraday_without_preload_content(
        self,
        var_resource_path: Annotated[
            StrictStr,
            Field(
                description="The resource-path; see options in the Resource Path Options section in the full documentation."
            ),
        ],
        var_date: Annotated[
            StrictStr, Field(description="The date in the format yyyy-MM-dd or today.")
        ],
        detail_level: Annotated[
            StrictStr,
            Field(
                description="Number of data points to include. Either 1min or 15min."
            ),
        ],
        start_time: Annotated[
            StrictStr, Field(description="The start of the period in the format HH:mm.")
        ],
        end_time: Annotated[
            StrictStr, Field(description="The end of the period in the format HH:mm.")
        ],
        _request_timeout: Union[
            None,
            Annotated[StrictFloat, Field(gt=0)],
            Tuple[
                Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
            ],
        ] = None,
        _request_auth: Optional[Dict[StrictStr, Any]] = None,
        _content_type: Optional[StrictStr] = None,
        _headers: Optional[Dict[StrictStr, Any]] = None,
        _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
    ) -> RESTResponseType:
        """
        Get Intraday Time Series

        Returns the Intraday Time Series for a given resource in the format requested.

        :param var_resource_path: The resource-path; see options in the Resource Path Options section in the full documentation. (required)
        :type var_resource_path: str
        :param var_date: The date in the format yyyy-MM-dd or today. (required)
        :type var_date: str
        :param detail_level: Number of data points to include. Either 1min or 15min. (required)
        :type detail_level: str
        :param start_time: The start of the period in the format HH:mm. (required)
        :type start_time: str
        :param end_time: The end of the period in the format HH:mm. (required)
        :type end_time: str
        :param _request_timeout: timeout setting for this request. If one
                                 number provided, it will be total request
                                 timeout. It can also be a pair (tuple) of
                                 (connection, read) timeouts.
        :type _request_timeout: int, tuple(int, int), optional
        :param _request_auth: set to override the auth_settings for an a single
                              request; this effectively ignores the
                              authentication in the spec for a single request.
        :type _request_auth: dict, optional
        :param _content_type: force content-type for the request.
        :type _content_type: str, Optional
        :param _headers: set to override the headers for a single
                         request; this effectively ignores the headers
                         in the spec for a single request.
        :type _headers: dict, optional
        :param _host_index: set to override the host_index for a single
                            request; this effectively ignores the host_index
                            in the spec for a single request.
        :type _host_index: int, optional
        :return: Returns the result object.
        """  # noqa: E501
        _param = self._get_activities_resource_by_date_time_series_intraday_serialize(
            var_resource_path=var_resource_path,
            var_date=var_date,
            detail_level=detail_level,
            start_time=start_time,
            end_time=end_time,
            _request_auth=_request_auth,
            _content_type=_content_type,
            _headers=_headers,
            _host_index=_host_index,
        )

        _response_types_map: Dict[str, Optional[str]] = {
            "200": "GetActivityIntradayResponse",
            "400": None,
            "401": None,
            "409": None,
        }
        response_data = await self.api_client.call_api(
            *_param, _request_timeout=_request_timeout
        )
        return response_data.response

    def _get_activities_resource_by_date_time_series_intraday_serialize(
        self,
        var_resource_path,
        var_date,
        detail_level,
        start_time,
        end_time,
        _request_auth,
        _content_type,
        _headers,
        _host_index,
    ) -> RequestSerialized:

        _host = None

        _collection_formats: Dict[str, str] = {}

        _path_params: Dict[str, str] = {}
        _query_params: List[Tuple[str, str]] = []
        _header_params: Dict[str, Optional[str]] = _headers or {}
        _form_params: List[Tuple[str, str]] = []
        _files: Dict[
            str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
        ] = {}
        _body_params: Optional[bytes] = None

        # process the path parameters
        if var_resource_path is not None:
            _path_params["resource-path"] = var_resource_path
        if var_date is not None:
            _path_params["date"] = var_date
        if detail_level is not None:
            _path_params["detail-level"] = detail_level
        if start_time is not None:
            _path_params["start-time"] = start_time
        if end_time is not None:
            _path_params["end-time"] = end_time
        # process the query parameters
        # process the header parameters
        # process the form parameters
        # process the body parameter

        # set the HTTP header `Accept`
        if "Accept" not in _header_params:
            _header_params["Accept"] = self.api_client.select_header_accept(
                ["application/json"]
            )

        # authentication setting
        _auth_settings: List[str] = ["oauth2"]

        return self.api_client.param_serialize(
            method="GET",
            resource_path="/1/user/-/activities/{resource-path}/date/{date}/1d/{detail-level}/time/{start-time}/{end-time}.json",
            path_params=_path_params,
            query_params=_query_params,
            header_params=_header_params,
            body=_body_params,
            post_params=_form_params,
            files=_files,
            auth_settings=_auth_settings,
            collection_formats=_collection_formats,
            _host=_host,
            _request_auth=_request_auth,
        )
