"""
    HW Mux Reservation System

    No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)  # noqa: E501

    The version of the OpenAPI document: 2.0.1
    Generated by: https://openapi-generator.tech
"""


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

from hwmux_client.api_client import ApiClient, Endpoint as _Endpoint
from hwmux_client.model_utils import (  # noqa: F401
    check_allowed_values,
    check_validations,
    date,
    datetime,
    file_type,
    none_type,
    validate_and_convert_types
)
from hwmux_client.model.device_serializer_private import DeviceSerializerPrivate
from hwmux_client.model.device_serializer_public import DeviceSerializerPublic
from hwmux_client.model.location import Location
from hwmux_client.model.paginated_device_serializer_private_list import PaginatedDeviceSerializerPrivateList
from hwmux_client.model.paginated_device_serializer_public_list import PaginatedDeviceSerializerPublicList
from hwmux_client.model.patched_write_only_device import PatchedWriteOnlyDevice
from hwmux_client.model.write_only_device import WriteOnlyDevice


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

    Do not edit the class manually.
    """

    def __init__(self, api_client=None):
        if api_client is None:
            api_client = ApiClient()
        self.api_client = api_client
        self.devices_create_endpoint = _Endpoint(
            settings={
                'response_type': (WriteOnlyDevice,),
                'auth': [
                    'cookieAuth',
                    'tokenAuth'
                ],
                'endpoint_path': '/api/devices/',
                'operation_id': 'devices_create',
                'http_method': 'POST',
                'servers': None,
            },
            params_map={
                'all': [
                    'write_only_device',
                ],
                'required': [
                    'write_only_device',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                ]
            },
            root_map={
                'validations': {
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'write_only_device':
                        (WriteOnlyDevice,),
                },
                'attribute_map': {
                },
                'location_map': {
                    'write_only_device': 'body',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [
                    'application/json',
                    'application/x-www-form-urlencoded',
                    'multipart/form-data'
                ]
            },
            api_client=api_client
        )
        self.devices_destroy_endpoint = _Endpoint(
            settings={
                'response_type': None,
                'auth': [
                    'cookieAuth',
                    'tokenAuth'
                ],
                'endpoint_path': '/api/devices/{id}/',
                'operation_id': 'devices_destroy',
                'http_method': 'DELETE',
                'servers': None,
            },
            params_map={
                'all': [
                    'id',
                ],
                'required': [
                    'id',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                ]
            },
            root_map={
                'validations': {
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'id':
                        (int,),
                },
                'attribute_map': {
                    'id': 'id',
                },
                'location_map': {
                    'id': 'path',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [],
                'content_type': [],
            },
            api_client=api_client
        )
        self.devices_list_endpoint = _Endpoint(
            settings={
                'response_type': (PaginatedDeviceSerializerPublicList,),
                'auth': [
                    'cookieAuth',
                    'tokenAuth'
                ],
                'endpoint_path': '/api/devices/',
                'operation_id': 'devices_list',
                'http_method': 'GET',
                'servers': None,
            },
            params_map={
                'all': [
                    'date_created',
                    'is_wstk',
                    'last_update',
                    'online',
                    'page',
                    'part',
                    'part_family',
                    'room',
                    'search',
                    'site',
                    'sn_or_name',
                    'uri',
                ],
                'required': [],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                ]
            },
            root_map={
                'validations': {
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'date_created':
                        (datetime,),
                    'is_wstk':
                        (bool,),
                    'last_update':
                        (datetime,),
                    'online':
                        (bool,),
                    'page':
                        (int,),
                    'part':
                        (str,),
                    'part_family':
                        (str,),
                    'room':
                        (str,),
                    'search':
                        (str,),
                    'site':
                        (str,),
                    'sn_or_name':
                        (str,),
                    'uri':
                        (str,),
                },
                'attribute_map': {
                    'date_created': 'date_created',
                    'is_wstk': 'is_wstk',
                    'last_update': 'last_update',
                    'online': 'online',
                    'page': 'page',
                    'part': 'part',
                    'part_family': 'part_family',
                    'room': 'room',
                    'search': 'search',
                    'site': 'site',
                    'sn_or_name': 'sn_or_name',
                    'uri': 'uri',
                },
                'location_map': {
                    'date_created': 'query',
                    'is_wstk': 'query',
                    'last_update': 'query',
                    'online': 'query',
                    'page': 'query',
                    'part': 'query',
                    'part_family': 'query',
                    'room': 'query',
                    'search': 'query',
                    'site': 'query',
                    'sn_or_name': 'query',
                    'uri': 'query',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [],
            },
            api_client=api_client
        )
        self.devices_list_my_list_endpoint = _Endpoint(
            settings={
                'response_type': (PaginatedDeviceSerializerPrivateList,),
                'auth': [
                    'cookieAuth',
                    'tokenAuth'
                ],
                'endpoint_path': '/api/devices/list_my/',
                'operation_id': 'devices_list_my_list',
                'http_method': 'GET',
                'servers': None,
            },
            params_map={
                'all': [
                    'date_created',
                    'is_wstk',
                    'last_update',
                    'online',
                    'page',
                    'part',
                    'part_family',
                    'room',
                    'search',
                    'site',
                    'sn_or_name',
                    'uri',
                ],
                'required': [],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                ]
            },
            root_map={
                'validations': {
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'date_created':
                        (datetime,),
                    'is_wstk':
                        (bool,),
                    'last_update':
                        (datetime,),
                    'online':
                        (bool,),
                    'page':
                        (int,),
                    'part':
                        (str,),
                    'part_family':
                        (str,),
                    'room':
                        (str,),
                    'search':
                        (str,),
                    'site':
                        (str,),
                    'sn_or_name':
                        (str,),
                    'uri':
                        (str,),
                },
                'attribute_map': {
                    'date_created': 'date_created',
                    'is_wstk': 'is_wstk',
                    'last_update': 'last_update',
                    'online': 'online',
                    'page': 'page',
                    'part': 'part',
                    'part_family': 'part_family',
                    'room': 'room',
                    'search': 'search',
                    'site': 'site',
                    'sn_or_name': 'sn_or_name',
                    'uri': 'uri',
                },
                'location_map': {
                    'date_created': 'query',
                    'is_wstk': 'query',
                    'last_update': 'query',
                    'online': 'query',
                    'page': 'query',
                    'part': 'query',
                    'part_family': 'query',
                    'room': 'query',
                    'search': 'query',
                    'site': 'query',
                    'sn_or_name': 'query',
                    'uri': 'query',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [],
            },
            api_client=api_client
        )
        self.devices_location_retrieve_endpoint = _Endpoint(
            settings={
                'response_type': (Location,),
                'auth': [
                    'cookieAuth',
                    'tokenAuth'
                ],
                'endpoint_path': '/api/devices/{device_pk}/location/',
                'operation_id': 'devices_location_retrieve',
                'http_method': 'GET',
                'servers': None,
            },
            params_map={
                'all': [
                    'device_pk',
                ],
                'required': [
                    'device_pk',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                ]
            },
            root_map={
                'validations': {
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'device_pk':
                        (str,),
                },
                'attribute_map': {
                    'device_pk': 'device_pk',
                },
                'location_map': {
                    'device_pk': 'path',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [],
            },
            api_client=api_client
        )
        self.devices_partial_update_endpoint = _Endpoint(
            settings={
                'response_type': (WriteOnlyDevice,),
                'auth': [
                    'cookieAuth',
                    'tokenAuth'
                ],
                'endpoint_path': '/api/devices/{id}/',
                'operation_id': 'devices_partial_update',
                'http_method': 'PATCH',
                'servers': None,
            },
            params_map={
                'all': [
                    'id',
                    'patched_write_only_device',
                ],
                'required': [
                    'id',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                ]
            },
            root_map={
                'validations': {
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'id':
                        (int,),
                    'patched_write_only_device':
                        (PatchedWriteOnlyDevice,),
                },
                'attribute_map': {
                    'id': 'id',
                },
                'location_map': {
                    'id': 'path',
                    'patched_write_only_device': 'body',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [
                    'application/json',
                    'application/x-www-form-urlencoded',
                    'multipart/form-data'
                ]
            },
            api_client=api_client
        )
        self.devices_release_update_endpoint = _Endpoint(
            settings={
                'response_type': (DeviceSerializerPublic,),
                'auth': [
                    'cookieAuth',
                    'tokenAuth'
                ],
                'endpoint_path': '/api/devices/{id}/release/',
                'operation_id': 'devices_release_update',
                'http_method': 'PUT',
                'servers': None,
            },
            params_map={
                'all': [
                    'id',
                ],
                'required': [
                    'id',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                ]
            },
            root_map={
                'validations': {
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'id':
                        (int,),
                },
                'attribute_map': {
                    'id': 'id',
                },
                'location_map': {
                    'id': 'path',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [],
            },
            api_client=api_client
        )
        self.devices_reserve_update_endpoint = _Endpoint(
            settings={
                'response_type': (DeviceSerializerPrivate,),
                'auth': [
                    'cookieAuth',
                    'tokenAuth'
                ],
                'endpoint_path': '/api/devices/{id}/reserve/',
                'operation_id': 'devices_reserve_update',
                'http_method': 'PUT',
                'servers': None,
            },
            params_map={
                'all': [
                    'id',
                    'details',
                ],
                'required': [
                    'id',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                ]
            },
            root_map={
                'validations': {
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'id':
                        (int,),
                    'details':
                        (str,),
                },
                'attribute_map': {
                    'id': 'id',
                    'details': 'details',
                },
                'location_map': {
                    'id': 'path',
                    'details': 'query',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [],
            },
            api_client=api_client
        )
        self.devices_retrieve_endpoint = _Endpoint(
            settings={
                'response_type': (DeviceSerializerPublic,),
                'auth': [
                    'cookieAuth',
                    'tokenAuth'
                ],
                'endpoint_path': '/api/devices/{id}/',
                'operation_id': 'devices_retrieve',
                'http_method': 'GET',
                'servers': None,
            },
            params_map={
                'all': [
                    'id',
                ],
                'required': [
                    'id',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                ]
            },
            root_map={
                'validations': {
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'id':
                        (int,),
                },
                'attribute_map': {
                    'id': 'id',
                },
                'location_map': {
                    'id': 'path',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [],
            },
            api_client=api_client
        )
        self.devices_search_list_endpoint = _Endpoint(
            settings={
                'response_type': (PaginatedDeviceSerializerPublicList,),
                'auth': [
                    'cookieAuth',
                    'tokenAuth'
                ],
                'endpoint_path': '/api/devices/search/',
                'operation_id': 'devices_search_list',
                'http_method': 'GET',
                'servers': None,
            },
            params_map={
                'all': [
                    'search_key_value_pairs',
                    'date_created',
                    'is_wstk',
                    'last_update',
                    'online',
                    'page',
                    'part',
                    'part_family',
                    'room',
                    'search',
                    'site',
                    'sn_or_name',
                    'uri',
                ],
                'required': [
                    'search_key_value_pairs',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                ]
            },
            root_map={
                'validations': {
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'search_key_value_pairs':
                        (str,),
                    'date_created':
                        (datetime,),
                    'is_wstk':
                        (bool,),
                    'last_update':
                        (datetime,),
                    'online':
                        (bool,),
                    'page':
                        (int,),
                    'part':
                        (str,),
                    'part_family':
                        (str,),
                    'room':
                        (str,),
                    'search':
                        (str,),
                    'site':
                        (str,),
                    'sn_or_name':
                        (str,),
                    'uri':
                        (str,),
                },
                'attribute_map': {
                    'search_key_value_pairs': 'search_key_value_pairs',
                    'date_created': 'date_created',
                    'is_wstk': 'is_wstk',
                    'last_update': 'last_update',
                    'online': 'online',
                    'page': 'page',
                    'part': 'part',
                    'part_family': 'part_family',
                    'room': 'room',
                    'search': 'search',
                    'site': 'site',
                    'sn_or_name': 'sn_or_name',
                    'uri': 'uri',
                },
                'location_map': {
                    'search_key_value_pairs': 'query',
                    'date_created': 'query',
                    'is_wstk': 'query',
                    'last_update': 'query',
                    'online': 'query',
                    'page': 'query',
                    'part': 'query',
                    'part_family': 'query',
                    'room': 'query',
                    'search': 'query',
                    'site': 'query',
                    'sn_or_name': 'query',
                    'uri': 'query',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [],
            },
            api_client=api_client
        )
        self.devices_set_offline_create_endpoint = _Endpoint(
            settings={
                'response_type': (WriteOnlyDevice,),
                'auth': [
                    'cookieAuth',
                    'tokenAuth'
                ],
                'endpoint_path': '/api/devices/set_offline/',
                'operation_id': 'devices_set_offline_create',
                'http_method': 'POST',
                'servers': None,
            },
            params_map={
                'all': [
                    'write_only_device',
                ],
                'required': [
                    'write_only_device',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                ]
            },
            root_map={
                'validations': {
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'write_only_device':
                        (WriteOnlyDevice,),
                },
                'attribute_map': {
                },
                'location_map': {
                    'write_only_device': 'body',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [
                    'application/json',
                    'application/x-www-form-urlencoded',
                    'multipart/form-data'
                ]
            },
            api_client=api_client
        )
        self.devices_update_endpoint = _Endpoint(
            settings={
                'response_type': (WriteOnlyDevice,),
                'auth': [
                    'cookieAuth',
                    'tokenAuth'
                ],
                'endpoint_path': '/api/devices/{id}/',
                'operation_id': 'devices_update',
                'http_method': 'PUT',
                'servers': None,
            },
            params_map={
                'all': [
                    'id',
                    'write_only_device',
                ],
                'required': [
                    'id',
                    'write_only_device',
                ],
                'nullable': [
                ],
                'enum': [
                ],
                'validation': [
                ]
            },
            root_map={
                'validations': {
                },
                'allowed_values': {
                },
                'openapi_types': {
                    'id':
                        (int,),
                    'write_only_device':
                        (WriteOnlyDevice,),
                },
                'attribute_map': {
                    'id': 'id',
                },
                'location_map': {
                    'id': 'path',
                    'write_only_device': 'body',
                },
                'collection_format_map': {
                }
            },
            headers_map={
                'accept': [
                    'application/json'
                ],
                'content_type': [
                    'application/json',
                    'application/x-www-form-urlencoded',
                    'multipart/form-data'
                ]
            },
            api_client=api_client
        )

    def devices_create(
        self,
        write_only_device,
        **kwargs
    ):
        """devices_create  # noqa: E501

        Create or update with permissions field support  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True

        >>> thread = api.devices_create(write_only_device, async_req=True)
        >>> result = thread.get()

        Args:
            write_only_device (WriteOnlyDevice):

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

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

    def devices_destroy(
        self,
        id,
        **kwargs
    ):
        """devices_destroy  # noqa: E501

        Create or update with permissions field support  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True

        >>> thread = api.devices_destroy(id, async_req=True)
        >>> result = thread.get()

        Args:
            id (int): A unique integer value identifying this device.

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

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

    def devices_list(
        self,
        **kwargs
    ):
        """devices_list  # noqa: E501

        Create or update with permissions field support  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True

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


        Keyword Args:
            date_created (datetime): [optional]
            is_wstk (bool): [optional]
            last_update (datetime): [optional]
            online (bool): [optional]
            page (int): A page number within the paginated result set.. [optional]
            part (str): [optional]
            part_family (str): [optional]
            room (str): [optional]
            search (str): A search term.. [optional]
            site (str): [optional]
            sn_or_name (str): [optional]
            uri (str): [optional]
            _return_http_data_only (bool): response data without head status
                code and headers. Default is True.
            _preload_content (bool): if False, the urllib3.HTTPResponse object
                will be returned without reading/decoding response data.
                Default is True.
            _request_timeout (int/float/tuple): timeout setting for this request. If
                one number provided, it will be total request timeout. It can also
                be a pair (tuple) of (connection, read) timeouts.
                Default is None.
            _check_input_type (bool): specifies if type checking
                should be done one the data sent to the server.
                Default is True.
            _check_return_type (bool): specifies if type checking
                should be done one the data received from the server.
                Default is True.
            _host_index (int/None): specifies the index of the server
                that we want to use.
                Default is read from the configuration.
            async_req (bool): execute request asynchronously

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

    def devices_list_my_list(
        self,
        **kwargs
    ):
        """devices_list_my_list  # noqa: E501

        Get devices owned by authenticated user  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True

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


        Keyword Args:
            date_created (datetime): [optional]
            is_wstk (bool): [optional]
            last_update (datetime): [optional]
            online (bool): [optional]
            page (int): A page number within the paginated result set.. [optional]
            part (str): [optional]
            part_family (str): [optional]
            room (str): [optional]
            search (str): A search term.. [optional]
            site (str): [optional]
            sn_or_name (str): [optional]
            uri (str): [optional]
            _return_http_data_only (bool): response data without head status
                code and headers. Default is True.
            _preload_content (bool): if False, the urllib3.HTTPResponse object
                will be returned without reading/decoding response data.
                Default is True.
            _request_timeout (int/float/tuple): timeout setting for this request. If
                one number provided, it will be total request timeout. It can also
                be a pair (tuple) of (connection, read) timeouts.
                Default is None.
            _check_input_type (bool): specifies if type checking
                should be done one the data sent to the server.
                Default is True.
            _check_return_type (bool): specifies if type checking
                should be done one the data received from the server.
                Default is True.
            _host_index (int/None): specifies the index of the server
                that we want to use.
                Default is read from the configuration.
            async_req (bool): execute request asynchronously

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

    def devices_location_retrieve(
        self,
        device_pk,
        **kwargs
    ):
        """devices_location_retrieve  # noqa: E501

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

        >>> thread = api.devices_location_retrieve(device_pk, async_req=True)
        >>> result = thread.get()

        Args:
            device_pk (str):

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

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

    def devices_partial_update(
        self,
        id,
        **kwargs
    ):
        """devices_partial_update  # noqa: E501

        Create or update with permissions field support  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True

        >>> thread = api.devices_partial_update(id, async_req=True)
        >>> result = thread.get()

        Args:
            id (int): A unique integer value identifying this device.

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

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

    def devices_release_update(
        self,
        id,
        **kwargs
    ):
        """devices_release_update  # noqa: E501

        Release a device  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True

        >>> thread = api.devices_release_update(id, async_req=True)
        >>> result = thread.get()

        Args:
            id (int): A unique integer value identifying this device.

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

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

    def devices_reserve_update(
        self,
        id,
        **kwargs
    ):
        """devices_reserve_update  # noqa: E501

        Reserve a device  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True

        >>> thread = api.devices_reserve_update(id, async_req=True)
        >>> result = thread.get()

        Args:
            id (int): A unique integer value identifying this device.

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

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

    def devices_retrieve(
        self,
        id,
        **kwargs
    ):
        """devices_retrieve  # noqa: E501

        Create or update with permissions field support  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True

        >>> thread = api.devices_retrieve(id, async_req=True)
        >>> result = thread.get()

        Args:
            id (int): A unique integer value identifying this device.

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

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

    def devices_search_list(
        self,
        search_key_value_pairs,
        **kwargs
    ):
        """devices_search_list  # noqa: E501

        Search by any key-value pair in the device. Search includes nested key-value pairs in the metadata or any other fields in the serialized representation of the device.  Comparison operations can be specified by doing: key__{oper}=value. Supported operations:  eq: equals, neq: not equals, re: regular expression, gt: greater than, gte, greater than or equals, lt: less than, lte, less than or equals, in: contains  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True

        >>> thread = api.devices_search_list(search_key_value_pairs, async_req=True)
        >>> result = thread.get()

        Args:
            search_key_value_pairs (str):

        Keyword Args:
            date_created (datetime): [optional]
            is_wstk (bool): [optional]
            last_update (datetime): [optional]
            online (bool): [optional]
            page (int): A page number within the paginated result set.. [optional]
            part (str): [optional]
            part_family (str): [optional]
            room (str): [optional]
            search (str): A search term.. [optional]
            site (str): [optional]
            sn_or_name (str): [optional]
            uri (str): [optional]
            _return_http_data_only (bool): response data without head status
                code and headers. Default is True.
            _preload_content (bool): if False, the urllib3.HTTPResponse object
                will be returned without reading/decoding response data.
                Default is True.
            _request_timeout (int/float/tuple): timeout setting for this request. If
                one number provided, it will be total request timeout. It can also
                be a pair (tuple) of (connection, read) timeouts.
                Default is None.
            _check_input_type (bool): specifies if type checking
                should be done one the data sent to the server.
                Default is True.
            _check_return_type (bool): specifies if type checking
                should be done one the data received from the server.
                Default is True.
            _host_index (int/None): specifies the index of the server
                that we want to use.
                Default is read from the configuration.
            async_req (bool): execute request asynchronously

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

    def devices_set_offline_create(
        self,
        write_only_device,
        **kwargs
    ):
        """devices_set_offline_create  # noqa: E501

        Sets all devices offline which haven't been updated in the last hour  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True

        >>> thread = api.devices_set_offline_create(write_only_device, async_req=True)
        >>> result = thread.get()

        Args:
            write_only_device (WriteOnlyDevice):

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

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

    def devices_update(
        self,
        id,
        write_only_device,
        **kwargs
    ):
        """devices_update  # noqa: E501

        Create or update with permissions field support  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True

        >>> thread = api.devices_update(id, write_only_device, async_req=True)
        >>> result = thread.get()

        Args:
            id (int): A unique integer value identifying this device.
            write_only_device (WriteOnlyDevice):

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

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

