# coding: utf-8

"""
    BIMData API

    BIMData API is a tool to interact with your models stored on BIMData’s servers.     Through the API, you can manage your projects, the clouds, upload your IFC files and manage them through endpoints.  # noqa: E501

    The version of the OpenAPI document: v1
    Contact: support@bimdata.io
    Generated by: https://openapi-generator.tech
"""


from __future__ import absolute_import

import re  # noqa: F401

# python 2 and python 3 compatibility library
import six

from bimdata_api_client.api_client import ApiClient
from bimdata_api_client.exceptions import (  # noqa: F401
    ApiTypeError,
    ApiValueError
)


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

    Do not edit the class manually.
    """

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

    def add_model_errors(self, cloud_pk, id, project_pk, data, **kwargs):  # noqa: E501
        """Add errors to model  # noqa: E501

        Model errors are warnings and errors during model process. They alert about missing elements or malformed files Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.add_model_errors(cloud_pk, id, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this model. (required)
        :param str project_pk: (required)
        :param ModelErrors data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: ModelErrors
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.add_model_errors_with_http_info(cloud_pk, id, project_pk, data, **kwargs)  # noqa: E501

    def add_model_errors_with_http_info(self, cloud_pk, id, project_pk, data, **kwargs):  # noqa: E501
        """Add errors to model  # noqa: E501

        Model errors are warnings and errors during model process. They alert about missing elements or malformed files Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.add_model_errors_with_http_info(cloud_pk, id, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this model. (required)
        :param str project_pk: (required)
        :param ModelErrors data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(ModelErrors, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method add_model_errors" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `add_model_errors`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `add_model_errors`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `add_model_errors`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `add_model_errors`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{id}/errors', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='ModelErrors',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def bulk_delete_model_classifications(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Remove all classifications from model's elements  # noqa: E501

                     Delete relation between filtered classifications (eg. /classifications?name=untec) and all mode's elements.             No classification will be deleted on this endpoint, only the relation between model's elements and their classification.  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.bulk_delete_model_classifications(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.bulk_delete_model_classifications_with_http_info(cloud_pk, model_pk, project_pk, **kwargs)  # noqa: E501

    def bulk_delete_model_classifications_with_http_info(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Remove all classifications from model's elements  # noqa: E501

                     Delete relation between filtered classifications (eg. /classifications?name=untec) and all mode's elements.             No classification will be deleted on this endpoint, only the relation between model's elements and their classification.  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.bulk_delete_model_classifications_with_http_info(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method bulk_delete_model_classifications" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `bulk_delete_model_classifications`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `bulk_delete_model_classifications`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `bulk_delete_model_classifications`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/classification/list_destroy', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def bulk_delete_model_properties(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Delete many Property of a model  # noqa: E501

                 Bulk delete.         You must send a list of ids in the body.         These ids (or relations with these ids in case of many-to-many relation deletion) will be deleted  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.bulk_delete_model_properties(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[int] data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.bulk_delete_model_properties_with_http_info(cloud_pk, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def bulk_delete_model_properties_with_http_info(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Delete many Property of a model  # noqa: E501

                 Bulk delete.         You must send a list of ids in the body.         These ids (or relations with these ids in case of many-to-many relation deletion) will be deleted  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.bulk_delete_model_properties_with_http_info(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[int] data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method bulk_delete_model_properties" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `bulk_delete_model_properties`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `bulk_delete_model_properties`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `bulk_delete_model_properties`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `bulk_delete_model_properties`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/property/bulk_destroy', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def bulk_delete_model_property_definitions(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Delete many PropertyDefinitions of a model  # noqa: E501

                 Bulk delete.         You must send a list of ids in the body.         These ids (or relations with these ids in case of many-to-many relation deletion) will be deleted  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.bulk_delete_model_property_definitions(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[int] data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.bulk_delete_model_property_definitions_with_http_info(cloud_pk, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def bulk_delete_model_property_definitions_with_http_info(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Delete many PropertyDefinitions of a model  # noqa: E501

                 Bulk delete.         You must send a list of ids in the body.         These ids (or relations with these ids in case of many-to-many relation deletion) will be deleted  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.bulk_delete_model_property_definitions_with_http_info(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[int] data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method bulk_delete_model_property_definitions" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `bulk_delete_model_property_definitions`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `bulk_delete_model_property_definitions`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `bulk_delete_model_property_definitions`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `bulk_delete_model_property_definitions`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/propertydefinition/bulk_destroy', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def bulk_delete_model_units(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Delete many Units of a model  # noqa: E501

                 Bulk delete.         You must send a list of ids in the body.         These ids (or relations with these ids in case of many-to-many relation deletion) will be deleted  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.bulk_delete_model_units(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[int] data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.bulk_delete_model_units_with_http_info(cloud_pk, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def bulk_delete_model_units_with_http_info(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Delete many Units of a model  # noqa: E501

                 Bulk delete.         You must send a list of ids in the body.         These ids (or relations with these ids in case of many-to-many relation deletion) will be deleted  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.bulk_delete_model_units_with_http_info(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[int] data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method bulk_delete_model_units" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `bulk_delete_model_units`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `bulk_delete_model_units`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `bulk_delete_model_units`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `bulk_delete_model_units`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/unit/bulk_destroy', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def bulk_delete_property_set(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Delete many PropertySet of a model  # noqa: E501

                 Bulk delete.         You must send a list of ids in the body.         These ids (or relations with these ids in case of many-to-many relation deletion) will be deleted  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.bulk_delete_property_set(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[int] data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.bulk_delete_property_set_with_http_info(cloud_pk, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def bulk_delete_property_set_with_http_info(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Delete many PropertySet of a model  # noqa: E501

                 Bulk delete.         You must send a list of ids in the body.         These ids (or relations with these ids in case of many-to-many relation deletion) will be deleted  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.bulk_delete_property_set_with_http_info(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[int] data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method bulk_delete_property_set" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `bulk_delete_property_set`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `bulk_delete_property_set`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `bulk_delete_property_set`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `bulk_delete_property_set`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/propertyset/bulk_destroy', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def bulk_full_update_elements(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update many elements at once (only changing fields may be defined)  # noqa: E501

                 Bulk update.         Similar to update, but the body should be a list of objects to patch or put         The response will be a list (in the same order) of updated objects or of errors if any         If at least one update succeeded, the status code will be 200. If every update failed, the status code we'll be 400 with the list of errors  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.bulk_full_update_elements(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[Element] data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[Element]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.bulk_full_update_elements_with_http_info(cloud_pk, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def bulk_full_update_elements_with_http_info(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update many elements at once (only changing fields may be defined)  # noqa: E501

                 Bulk update.         Similar to update, but the body should be a list of objects to patch or put         The response will be a list (in the same order) of updated objects or of errors if any         If at least one update succeeded, the status code will be 200. If every update failed, the status code we'll be 400 with the list of errors  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.bulk_full_update_elements_with_http_info(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[Element] data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[Element], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method bulk_full_update_elements" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `bulk_full_update_elements`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `bulk_full_update_elements`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `bulk_full_update_elements`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `bulk_full_update_elements`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/bulk_update', 'PATCH',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[Element]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def bulk_full_update_model_property(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update some fields of many properties of a model  # noqa: E501

                 Bulk update.         Similar to update, but the body should be a list of objects to patch or put         The response will be a list (in the same order) of updated objects or of errors if any         If at least one update succeeded, the status code will be 200. If every update failed, the status code we'll be 400 with the list of errors  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.bulk_full_update_model_property(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[ModelProperty] data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[ModelProperty]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.bulk_full_update_model_property_with_http_info(cloud_pk, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def bulk_full_update_model_property_with_http_info(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update some fields of many properties of a model  # noqa: E501

                 Bulk update.         Similar to update, but the body should be a list of objects to patch or put         The response will be a list (in the same order) of updated objects or of errors if any         If at least one update succeeded, the status code will be 200. If every update failed, the status code we'll be 400 with the list of errors  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.bulk_full_update_model_property_with_http_info(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[ModelProperty] data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[ModelProperty], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method bulk_full_update_model_property" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `bulk_full_update_model_property`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `bulk_full_update_model_property`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `bulk_full_update_model_property`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `bulk_full_update_model_property`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/property/bulk_update', 'PATCH',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[ModelProperty]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def bulk_remove_classifications_of_element(self, cloud_pk, element_uuid, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Remove many classifications from an element  # noqa: E501

                 Bulk delete.         You must send a list of ids in the body.         These ids (or relations with these ids in case of many-to-many relation deletion) will be deleted  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.bulk_remove_classifications_of_element(cloud_pk, element_uuid, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[int] data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.bulk_remove_classifications_of_element_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def bulk_remove_classifications_of_element_with_http_info(self, cloud_pk, element_uuid, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Remove many classifications from an element  # noqa: E501

                 Bulk delete.         You must send a list of ids in the body.         These ids (or relations with these ids in case of many-to-many relation deletion) will be deleted  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.bulk_remove_classifications_of_element_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[int] data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method bulk_remove_classifications_of_element" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `bulk_remove_classifications_of_element`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `bulk_remove_classifications_of_element`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `bulk_remove_classifications_of_element`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `bulk_remove_classifications_of_element`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `bulk_remove_classifications_of_element`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/classification/bulk_destroy', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def bulk_remove_documents_of_element(self, cloud_pk, element_uuid, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Remove many documents from an element  # noqa: E501

                 Bulk delete.         You must send a list of ids in the body.         These ids (or relations with these ids in case of many-to-many relation deletion) will be deleted  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.bulk_remove_documents_of_element(cloud_pk, element_uuid, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[int] data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.bulk_remove_documents_of_element_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def bulk_remove_documents_of_element_with_http_info(self, cloud_pk, element_uuid, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Remove many documents from an element  # noqa: E501

                 Bulk delete.         You must send a list of ids in the body.         These ids (or relations with these ids in case of many-to-many relation deletion) will be deleted  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.bulk_remove_documents_of_element_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[int] data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method bulk_remove_documents_of_element" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `bulk_remove_documents_of_element`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `bulk_remove_documents_of_element`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `bulk_remove_documents_of_element`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `bulk_remove_documents_of_element`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `bulk_remove_documents_of_element`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/documents/bulk_destroy', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def bulk_remove_elements_from_classification(self, cloud_pk, model_classification_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Remove the classifications from all elements  # noqa: E501

                 Bulk delete.         You must send a list of ids in the body.         These ids (or relations with these ids in case of many-to-many relation deletion) will be deleted  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.bulk_remove_elements_from_classification(cloud_pk, model_classification_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_classification_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[int] data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.bulk_remove_elements_from_classification_with_http_info(cloud_pk, model_classification_pk, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def bulk_remove_elements_from_classification_with_http_info(self, cloud_pk, model_classification_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Remove the classifications from all elements  # noqa: E501

                 Bulk delete.         You must send a list of ids in the body.         These ids (or relations with these ids in case of many-to-many relation deletion) will be deleted  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.bulk_remove_elements_from_classification_with_http_info(cloud_pk, model_classification_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_classification_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[int] data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_classification_pk',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method bulk_remove_elements_from_classification" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `bulk_remove_elements_from_classification`")  # noqa: E501
        # verify the required parameter 'model_classification_pk' is set
        if self.api_client.client_side_validation and ('model_classification_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_classification_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_classification_pk` when calling `bulk_remove_elements_from_classification`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `bulk_remove_elements_from_classification`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `bulk_remove_elements_from_classification`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `bulk_remove_elements_from_classification`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_classification_pk' in local_var_params:
            path_params['model_classification_pk'] = local_var_params['model_classification_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/classification/{model_classification_pk}/element/bulk_destroy', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def bulk_update_elements(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update many elements at once (all field must be defined)  # noqa: E501

                 Bulk update.         Similar to update, but the body should be a list of objects to patch or put         The response will be a list (in the same order) of updated objects or of errors if any         If at least one update succeeded, the status code will be 200. If every update failed, the status code we'll be 400 with the list of errors  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.bulk_update_elements(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[Element] data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[Element]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.bulk_update_elements_with_http_info(cloud_pk, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def bulk_update_elements_with_http_info(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update many elements at once (all field must be defined)  # noqa: E501

                 Bulk update.         Similar to update, but the body should be a list of objects to patch or put         The response will be a list (in the same order) of updated objects or of errors if any         If at least one update succeeded, the status code will be 200. If every update failed, the status code we'll be 400 with the list of errors  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.bulk_update_elements_with_http_info(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[Element] data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[Element], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method bulk_update_elements" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `bulk_update_elements`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `bulk_update_elements`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `bulk_update_elements`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `bulk_update_elements`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/bulk_update', 'PUT',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[Element]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def bulk_update_model_property(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update all fields of many properties of a model  # noqa: E501

         Bulk update. Similar to update, but the body should be a list of objects to patch or put The response will be a list (in the same order) of updated objects or of errors if any If at least one update succeeded, the status code will be 200. If every update failed, the status code we'll be 400 with the list of errors   # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.bulk_update_model_property(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[ModelProperty] data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[ModelProperty]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.bulk_update_model_property_with_http_info(cloud_pk, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def bulk_update_model_property_with_http_info(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update all fields of many properties of a model  # noqa: E501

         Bulk update. Similar to update, but the body should be a list of objects to patch or put The response will be a list (in the same order) of updated objects or of errors if any If at least one update succeeded, the status code will be 200. If every update failed, the status code we'll be 400 with the list of errors   # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.bulk_update_model_property_with_http_info(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[ModelProperty] data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[ModelProperty], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method bulk_update_model_property" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `bulk_update_model_property`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `bulk_update_model_property`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `bulk_update_model_property`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `bulk_update_model_property`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/property/bulk_update', 'PUT',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[ModelProperty]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def create_access_token(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create a token for this model  # noqa: E501

        Tokens are read_only by default and are valid 1 day Required scopes: ifc:token_manage, model:token_manage  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_access_token(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param IfcAccessToken data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: IfcAccessToken
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.create_access_token_with_http_info(cloud_pk, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def create_access_token_with_http_info(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create a token for this model  # noqa: E501

        Tokens are read_only by default and are valid 1 day Required scopes: ifc:token_manage, model:token_manage  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_access_token_with_http_info(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param IfcAccessToken data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(IfcAccessToken, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method create_access_token" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `create_access_token`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `create_access_token`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `create_access_token`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `create_access_token`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/access_token', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='IfcAccessToken',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def create_classification_element_relations(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create association between existing classification and existing element  # noqa: E501

        Create association between existing classification and existing element Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_classification_element_relations(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[ElementClassificationRelation] data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.create_classification_element_relations_with_http_info(cloud_pk, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def create_classification_element_relations_with_http_info(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create association between existing classification and existing element  # noqa: E501

        Create association between existing classification and existing element Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_classification_element_relations_with_http_info(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[ElementClassificationRelation] data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method create_classification_element_relations" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `create_classification_element_relations`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `create_classification_element_relations`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `create_classification_element_relations`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `create_classification_element_relations`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/classification-element', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def create_classifications_of_element(self, cloud_pk, element_uuid, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create one or many classifications to an element  # noqa: E501

                 Bulk create available.         You can either post an object or a list of objects.         Is you post a list, the response will be a list (in the same order) of created objects or of errors if any         If at least one create succeeded, the status code will be 201. If every create failed, the status code we'll be 400 with the list of errors      If classification created already exists, it will just be added to item's classifications and will not be duplicated  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_classifications_of_element(cloud_pk, element_uuid, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[Classification] data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[Classification]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.create_classifications_of_element_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def create_classifications_of_element_with_http_info(self, cloud_pk, element_uuid, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create one or many classifications to an element  # noqa: E501

                 Bulk create available.         You can either post an object or a list of objects.         Is you post a list, the response will be a list (in the same order) of created objects or of errors if any         If at least one create succeeded, the status code will be 201. If every create failed, the status code we'll be 400 with the list of errors      If classification created already exists, it will just be added to item's classifications and will not be duplicated  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_classifications_of_element_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[Classification] data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[Classification], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method create_classifications_of_element" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `create_classifications_of_element`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `create_classifications_of_element`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `create_classifications_of_element`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `create_classifications_of_element`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `create_classifications_of_element`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/classification', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[Classification]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def create_element(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create an element in the model  # noqa: E501

                 Bulk create available.         You can either post an object or a list of objects.         Is you post a list, the response will be a list (in the same order) of created objects or of errors if any         If at least one create succeeded, the status code will be 201. If every create failed, the status code we'll be 400 with the list of errors  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_element(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[Element] data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[Element]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.create_element_with_http_info(cloud_pk, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def create_element_with_http_info(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create an element in the model  # noqa: E501

                 Bulk create available.         You can either post an object or a list of objects.         Is you post a list, the response will be a list (in the same order) of created objects or of errors if any         If at least one create succeeded, the status code will be 201. If every create failed, the status code we'll be 400 with the list of errors  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_element_with_http_info(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[Element] data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[Element], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method create_element" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `create_element`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `create_element`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `create_element`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `create_element`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[Element]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def create_element_property_set(self, cloud_pk, element_uuid, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create a PropertySets to an element  # noqa: E501

        Create a PropertySets that will be automatically linked to the element Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_element_property_set(cloud_pk, element_uuid, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param PropertySet data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: PropertySet
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.create_element_property_set_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def create_element_property_set_with_http_info(self, cloud_pk, element_uuid, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create a PropertySets to an element  # noqa: E501

        Create a PropertySets that will be automatically linked to the element Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_element_property_set_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param PropertySet data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(PropertySet, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method create_element_property_set" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `create_element_property_set`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `create_element_property_set`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `create_element_property_set`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `create_element_property_set`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `create_element_property_set`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/propertyset', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='PropertySet',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def create_element_property_set_property(self, cloud_pk, element_uuid, model_pk, project_pk, propertyset_pk, data, **kwargs):  # noqa: E501
        """Create a property to a PropertySet  # noqa: E501

         Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_element_property_set_property(cloud_pk, element_uuid, model_pk, project_pk, propertyset_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str propertyset_pk: (required)
        :param ModelProperty data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: ModelProperty
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.create_element_property_set_property_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, propertyset_pk, data, **kwargs)  # noqa: E501

    def create_element_property_set_property_with_http_info(self, cloud_pk, element_uuid, model_pk, project_pk, propertyset_pk, data, **kwargs):  # noqa: E501
        """Create a property to a PropertySet  # noqa: E501

         Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_element_property_set_property_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, propertyset_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str propertyset_pk: (required)
        :param ModelProperty data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(ModelProperty, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'model_pk',
            'project_pk',
            'propertyset_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method create_element_property_set_property" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `create_element_property_set_property`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `create_element_property_set_property`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `create_element_property_set_property`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `create_element_property_set_property`")  # noqa: E501
        # verify the required parameter 'propertyset_pk' is set
        if self.api_client.client_side_validation and ('propertyset_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['propertyset_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `propertyset_pk` when calling `create_element_property_set_property`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `create_element_property_set_property`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'propertyset_pk' in local_var_params:
            path_params['propertyset_pk'] = local_var_params['propertyset_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/propertyset/{propertyset_pk}/property', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='ModelProperty',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def create_element_property_set_property_definition(self, cloud_pk, element_uuid, model_pk, project_pk, property_pk, propertyset_pk, data, **kwargs):  # noqa: E501
        """Create a Definition to a Property  # noqa: E501

         Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_element_property_set_property_definition(cloud_pk, element_uuid, model_pk, project_pk, property_pk, propertyset_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str property_pk: (required)
        :param str propertyset_pk: (required)
        :param PropertyDefinition data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: PropertyDefinition
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.create_element_property_set_property_definition_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, property_pk, propertyset_pk, data, **kwargs)  # noqa: E501

    def create_element_property_set_property_definition_with_http_info(self, cloud_pk, element_uuid, model_pk, project_pk, property_pk, propertyset_pk, data, **kwargs):  # noqa: E501
        """Create a Definition to a Property  # noqa: E501

         Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_element_property_set_property_definition_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, property_pk, propertyset_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str property_pk: (required)
        :param str propertyset_pk: (required)
        :param PropertyDefinition data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(PropertyDefinition, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'model_pk',
            'project_pk',
            'property_pk',
            'propertyset_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method create_element_property_set_property_definition" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `create_element_property_set_property_definition`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `create_element_property_set_property_definition`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `create_element_property_set_property_definition`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `create_element_property_set_property_definition`")  # noqa: E501
        # verify the required parameter 'property_pk' is set
        if self.api_client.client_side_validation and ('property_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['property_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `property_pk` when calling `create_element_property_set_property_definition`")  # noqa: E501
        # verify the required parameter 'propertyset_pk' is set
        if self.api_client.client_side_validation and ('propertyset_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['propertyset_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `propertyset_pk` when calling `create_element_property_set_property_definition`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `create_element_property_set_property_definition`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'property_pk' in local_var_params:
            path_params['property_pk'] = local_var_params['property_pk']  # noqa: E501
        if 'propertyset_pk' in local_var_params:
            path_params['propertyset_pk'] = local_var_params['propertyset_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/propertyset/{propertyset_pk}/property/{property_pk}/propertydefinition', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='PropertyDefinition',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def create_element_property_set_property_definition_unit(self, cloud_pk, element_uuid, model_pk, project_pk, property_pk, propertydefinition_pk, propertyset_pk, data, **kwargs):  # noqa: E501
        """Create a Unit to a Definition  # noqa: E501

        Create a Unit to a Definition Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_element_property_set_property_definition_unit(cloud_pk, element_uuid, model_pk, project_pk, property_pk, propertydefinition_pk, propertyset_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str property_pk: (required)
        :param str propertydefinition_pk: (required)
        :param str propertyset_pk: (required)
        :param Unit data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: Unit
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.create_element_property_set_property_definition_unit_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, property_pk, propertydefinition_pk, propertyset_pk, data, **kwargs)  # noqa: E501

    def create_element_property_set_property_definition_unit_with_http_info(self, cloud_pk, element_uuid, model_pk, project_pk, property_pk, propertydefinition_pk, propertyset_pk, data, **kwargs):  # noqa: E501
        """Create a Unit to a Definition  # noqa: E501

        Create a Unit to a Definition Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_element_property_set_property_definition_unit_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, property_pk, propertydefinition_pk, propertyset_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str property_pk: (required)
        :param str propertydefinition_pk: (required)
        :param str propertyset_pk: (required)
        :param Unit data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(Unit, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'model_pk',
            'project_pk',
            'property_pk',
            'propertydefinition_pk',
            'propertyset_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method create_element_property_set_property_definition_unit" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `create_element_property_set_property_definition_unit`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `create_element_property_set_property_definition_unit`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `create_element_property_set_property_definition_unit`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `create_element_property_set_property_definition_unit`")  # noqa: E501
        # verify the required parameter 'property_pk' is set
        if self.api_client.client_side_validation and ('property_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['property_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `property_pk` when calling `create_element_property_set_property_definition_unit`")  # noqa: E501
        # verify the required parameter 'propertydefinition_pk' is set
        if self.api_client.client_side_validation and ('propertydefinition_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['propertydefinition_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `propertydefinition_pk` when calling `create_element_property_set_property_definition_unit`")  # noqa: E501
        # verify the required parameter 'propertyset_pk' is set
        if self.api_client.client_side_validation and ('propertyset_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['propertyset_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `propertyset_pk` when calling `create_element_property_set_property_definition_unit`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `create_element_property_set_property_definition_unit`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'property_pk' in local_var_params:
            path_params['property_pk'] = local_var_params['property_pk']  # noqa: E501
        if 'propertydefinition_pk' in local_var_params:
            path_params['propertydefinition_pk'] = local_var_params['propertydefinition_pk']  # noqa: E501
        if 'propertyset_pk' in local_var_params:
            path_params['propertyset_pk'] = local_var_params['propertyset_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/propertyset/{propertyset_pk}/property/{property_pk}/propertydefinition/{propertydefinition_pk}/unit', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Unit',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def create_layer(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create a layer in the model  # noqa: E501

        The IFC file will not be updated. The created layer will be accessible over the API and when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_layer(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param Layer data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: Layer
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.create_layer_with_http_info(cloud_pk, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def create_layer_with_http_info(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create a layer in the model  # noqa: E501

        The IFC file will not be updated. The created layer will be accessible over the API and when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_layer_with_http_info(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param Layer data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(Layer, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method create_layer" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `create_layer`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `create_layer`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `create_layer`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `create_layer`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/layer', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Layer',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def create_meta_building(self, cloud_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create an empty 3D Model  # noqa: E501

        Create an empty 3D Model to be used in BIMData services Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_meta_building(cloud_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str project_pk: (required)
        :param CreateBuilding data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: Model
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.create_meta_building_with_http_info(cloud_pk, project_pk, data, **kwargs)  # noqa: E501

    def create_meta_building_with_http_info(self, cloud_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create an empty 3D Model  # noqa: E501

        Create an empty 3D Model to be used in BIMData services Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_meta_building_with_http_info(cloud_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str project_pk: (required)
        :param CreateBuilding data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(Model, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method create_meta_building" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `create_meta_building`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `create_meta_building`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `create_meta_building`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/create-metabuilding', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Model',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def create_model(self, cloud_pk, project_pk, data, **kwargs):  # noqa: E501
        """Make a PDF or Image file a Model  # noqa: E501

        Make a PDF or Image file a Model to be used in BIMData services. If a model already exists, this route does nothing and returns a 201 with the model Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_model(cloud_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str project_pk: (required)
        :param CreateModel data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: Model
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.create_model_with_http_info(cloud_pk, project_pk, data, **kwargs)  # noqa: E501

    def create_model_with_http_info(self, cloud_pk, project_pk, data, **kwargs):  # noqa: E501
        """Make a PDF or Image file a Model  # noqa: E501

        Make a PDF or Image file a Model to be used in BIMData services. If a model already exists, this route does nothing and returns a 201 with the model Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_model_with_http_info(cloud_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str project_pk: (required)
        :param CreateModel data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(Model, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method create_model" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `create_model`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `create_model`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `create_model`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/create-model', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Model',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def create_model_property_definition(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create a PropertyDefinition on the model  # noqa: E501

                 Bulk create available.         You can either post an object or a list of objects.         Is you post a list, the response will be a list (in the same order) of created objects or of errors if any         If at least one create succeeded, the status code will be 201. If every create failed, the status code we'll be 400 with the list of errors  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_model_property_definition(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[PropertyDefinition] data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[PropertyDefinition]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.create_model_property_definition_with_http_info(cloud_pk, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def create_model_property_definition_with_http_info(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create a PropertyDefinition on the model  # noqa: E501

                 Bulk create available.         You can either post an object or a list of objects.         Is you post a list, the response will be a list (in the same order) of created objects or of errors if any         If at least one create succeeded, the status code will be 201. If every create failed, the status code we'll be 400 with the list of errors  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_model_property_definition_with_http_info(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[PropertyDefinition] data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[PropertyDefinition], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method create_model_property_definition" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `create_model_property_definition`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `create_model_property_definition`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `create_model_property_definition`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `create_model_property_definition`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/propertydefinition', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[PropertyDefinition]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def create_model_unit(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create a Unit on a model  # noqa: E501

                 Bulk create available.         You can either post an object or a list of objects.         Is you post a list, the response will be a list (in the same order) of created objects or of errors if any         If at least one create succeeded, the status code will be 201. If every create failed, the status code we'll be 400 with the list of errors  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_model_unit(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[Unit] data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[Unit]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.create_model_unit_with_http_info(cloud_pk, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def create_model_unit_with_http_info(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create a Unit on a model  # noqa: E501

                 Bulk create available.         You can either post an object or a list of objects.         Is you post a list, the response will be a list (in the same order) of created objects or of errors if any         If at least one create succeeded, the status code will be 201. If every create failed, the status code we'll be 400 with the list of errors  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_model_unit_with_http_info(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[Unit] data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[Unit], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method create_model_unit" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `create_model_unit`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `create_model_unit`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `create_model_unit`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `create_model_unit`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/unit', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[Unit]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def create_property_set(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create a PropertySet  # noqa: E501

                 Bulk create available.         You can either post an object or a list of objects.         Is you post a list, the response will be a list (in the same order) of created objects or of errors if any         If at least one create succeeded, the status code will be 201. If every create failed, the status code we'll be 400 with the list of errors  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_property_set(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[PropertySet] data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[PropertySet]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.create_property_set_with_http_info(cloud_pk, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def create_property_set_with_http_info(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create a PropertySet  # noqa: E501

                 Bulk create available.         You can either post an object or a list of objects.         Is you post a list, the response will be a list (in the same order) of created objects or of errors if any         If at least one create succeeded, the status code will be 201. If every create failed, the status code we'll be 400 with the list of errors  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_property_set_with_http_info(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[PropertySet] data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[PropertySet], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method create_property_set" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `create_property_set`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `create_property_set`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `create_property_set`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `create_property_set`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/propertyset', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[PropertySet]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def create_property_set_element_relations(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create association between PropertySet and element  # noqa: E501

        Create association between existing PropertySet and existing element Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_property_set_element_relations(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[ElementPropertySetRelation] data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.create_property_set_element_relations_with_http_info(cloud_pk, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def create_property_set_element_relations_with_http_info(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create association between PropertySet and element  # noqa: E501

        Create association between existing PropertySet and existing element Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_property_set_element_relations_with_http_info(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[ElementPropertySetRelation] data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method create_property_set_element_relations" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `create_property_set_element_relations`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `create_property_set_element_relations`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `create_property_set_element_relations`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `create_property_set_element_relations`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/propertyset-element', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def create_raw_elements(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create elements in an optimized format  # noqa: E501

                 You can use the same optimized structure to post multiple elements, property_sets, properties, definitions and units at once.         For performance reasons, we do not check the validity of the json. If the json is malformed, an error 500 without more explaination may be returned instead of a 400.  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_raw_elements(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param RawElements data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.create_raw_elements_with_http_info(cloud_pk, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def create_raw_elements_with_http_info(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create elements in an optimized format  # noqa: E501

                 You can use the same optimized structure to post multiple elements, property_sets, properties, definitions and units at once.         For performance reasons, we do not check the validity of the json. If the json is malformed, an error 500 without more explaination may be returned instead of a 400.  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_raw_elements_with_http_info(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param RawElements data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method create_raw_elements" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `create_raw_elements`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `create_raw_elements`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `create_raw_elements`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `create_raw_elements`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/raw', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def create_space(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create a space in the model  # noqa: E501

                 Bulk create available.         You can either post an object or a list of objects.         Is you post a list, the response will be a list (in the same order) of created objects or of errors if any         If at least one create succeeded, the status code will be 201. If every create failed, the status code we'll be 400 with the list of errors  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_space(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[Space] data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[Space]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.create_space_with_http_info(cloud_pk, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def create_space_with_http_info(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create a space in the model  # noqa: E501

                 Bulk create available.         You can either post an object or a list of objects.         Is you post a list, the response will be a list (in the same order) of created objects or of errors if any         If at least one create succeeded, the status code will be 201. If every create failed, the status code we'll be 400 with the list of errors  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_space_with_http_info(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[Space] data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[Space], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method create_space" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `create_space`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `create_space`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `create_space`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `create_space`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/space', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[Space]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def create_storey_plan(self, cloud_pk, model_pk, project_pk, storey_pk, data, **kwargs):  # noqa: E501
        """Create a relation between a 2d model and a storey  # noqa: E501

        Create a relation between a 2d model and a storey. The model type must be one of : ('DWG', 'DXF', 'PDF', 'JPEG', 'PNG') Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_storey_plan(cloud_pk, model_pk, project_pk, storey_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str storey_pk: (required)
        :param InlineObject5 data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: Storey
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.create_storey_plan_with_http_info(cloud_pk, model_pk, project_pk, storey_pk, data, **kwargs)  # noqa: E501

    def create_storey_plan_with_http_info(self, cloud_pk, model_pk, project_pk, storey_pk, data, **kwargs):  # noqa: E501
        """Create a relation between a 2d model and a storey  # noqa: E501

        Create a relation between a 2d model and a storey. The model type must be one of : ('DWG', 'DXF', 'PDF', 'JPEG', 'PNG') Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_storey_plan_with_http_info(cloud_pk, model_pk, project_pk, storey_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str storey_pk: (required)
        :param InlineObject5 data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(Storey, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'storey_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method create_storey_plan" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `create_storey_plan`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `create_storey_plan`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `create_storey_plan`")  # noqa: E501
        # verify the required parameter 'storey_pk' is set
        if self.api_client.client_side_validation and ('storey_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['storey_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `storey_pk` when calling `create_storey_plan`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `create_storey_plan`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'storey_pk' in local_var_params:
            path_params['storey_pk'] = local_var_params['storey_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/storey/{storey_pk}/plan/add', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Storey',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def create_system(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create a system in the model  # noqa: E501

        The IFC file will not be updated. The created system will be accessible over the API and when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_system(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param System data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: System
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.create_system_with_http_info(cloud_pk, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def create_system_with_http_info(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create a system in the model  # noqa: E501

        The IFC file will not be updated. The created system will be accessible over the API and when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_system_with_http_info(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param System data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(System, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method create_system" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `create_system`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `create_system`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `create_system`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `create_system`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/system', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='System',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def create_zone(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create a zone in the model  # noqa: E501

                 Bulk create available.         You can either post an object or a list of objects.         Is you post a list, the response will be a list (in the same order) of created objects or of errors if any         If at least one create succeeded, the status code will be 201. If every create failed, the status code we'll be 400 with the list of errors  The IFC file will not be updated. The created zone will be accessible over the API and when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_zone(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[Zone] data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[Zone]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.create_zone_with_http_info(cloud_pk, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def create_zone_with_http_info(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Create a zone in the model  # noqa: E501

                 Bulk create available.         You can either post an object or a list of objects.         Is you post a list, the response will be a list (in the same order) of created objects or of errors if any         If at least one create succeeded, the status code will be 201. If every create failed, the status code we'll be 400 with the list of errors  The IFC file will not be updated. The created zone will be accessible over the API and when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_zone_with_http_info(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[Zone] data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[Zone], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method create_zone" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `create_zone`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `create_zone`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `create_zone`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `create_zone`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/zone', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[Zone]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def create_zone_space(self, cloud_pk, model_pk, project_pk, zone_pk, data, **kwargs):  # noqa: E501
        """Create a space in a zone  # noqa: E501

        The IFC file will not be updated. The created space will be accessible over the API and when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_zone_space(cloud_pk, model_pk, project_pk, zone_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str zone_pk: (required)
        :param ZoneSpace data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: ZoneSpace
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.create_zone_space_with_http_info(cloud_pk, model_pk, project_pk, zone_pk, data, **kwargs)  # noqa: E501

    def create_zone_space_with_http_info(self, cloud_pk, model_pk, project_pk, zone_pk, data, **kwargs):  # noqa: E501
        """Create a space in a zone  # noqa: E501

        The IFC file will not be updated. The created space will be accessible over the API and when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_zone_space_with_http_info(cloud_pk, model_pk, project_pk, zone_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str zone_pk: (required)
        :param ZoneSpace data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(ZoneSpace, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'zone_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method create_zone_space" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `create_zone_space`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `create_zone_space`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `create_zone_space`")  # noqa: E501
        # verify the required parameter 'zone_pk' is set
        if self.api_client.client_side_validation and ('zone_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['zone_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `zone_pk` when calling `create_zone_space`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `create_zone_space`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'zone_pk' in local_var_params:
            path_params['zone_pk'] = local_var_params['zone_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/zone/{zone_pk}/space', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='ZoneSpace',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def delete_access_token(self, cloud_pk, model_pk, project_pk, token, **kwargs):  # noqa: E501
        """Delete a token  # noqa: E501

        Deleting a token will revoke it. Required scopes: ifc:token_manage, model:token_manage  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_access_token(cloud_pk, model_pk, project_pk, token, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str token: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.delete_access_token_with_http_info(cloud_pk, model_pk, project_pk, token, **kwargs)  # noqa: E501

    def delete_access_token_with_http_info(self, cloud_pk, model_pk, project_pk, token, **kwargs):  # noqa: E501
        """Delete a token  # noqa: E501

        Deleting a token will revoke it. Required scopes: ifc:token_manage, model:token_manage  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_access_token_with_http_info(cloud_pk, model_pk, project_pk, token, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str token: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'token'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method delete_access_token" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `delete_access_token`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `delete_access_token`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `delete_access_token`")  # noqa: E501
        # verify the required parameter 'token' is set
        if self.api_client.client_side_validation and ('token' not in local_var_params or  # noqa: E501
                                                        local_var_params['token'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `token` when calling `delete_access_token`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'token' in local_var_params:
            path_params['token'] = local_var_params['token']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/access_token/{token}', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def delete_element(self, cloud_pk, model_pk, project_pk, uuid, **kwargs):  # noqa: E501
        """Delete an element of a model  # noqa: E501

        The IFC file will not be updated. The remaining elements are available in API and will be available when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_element(cloud_pk, model_pk, project_pk, uuid, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str uuid: IFC element or element type UUID (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.delete_element_with_http_info(cloud_pk, model_pk, project_pk, uuid, **kwargs)  # noqa: E501

    def delete_element_with_http_info(self, cloud_pk, model_pk, project_pk, uuid, **kwargs):  # noqa: E501
        """Delete an element of a model  # noqa: E501

        The IFC file will not be updated. The remaining elements are available in API and will be available when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_element_with_http_info(cloud_pk, model_pk, project_pk, uuid, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str uuid: IFC element or element type UUID (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'uuid'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method delete_element" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `delete_element`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `delete_element`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `delete_element`")  # noqa: E501
        # verify the required parameter 'uuid' is set
        if self.api_client.client_side_validation and ('uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `uuid` when calling `delete_element`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'uuid' in local_var_params:
            path_params['uuid'] = local_var_params['uuid']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{uuid}', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def delete_layer(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Delete a layer of a model  # noqa: E501

        The IFC file will not be updated. The remaining layers are available in API and will be available when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_layer(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this layer. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.delete_layer_with_http_info(cloud_pk, id, model_pk, project_pk, **kwargs)  # noqa: E501

    def delete_layer_with_http_info(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Delete a layer of a model  # noqa: E501

        The IFC file will not be updated. The remaining layers are available in API and will be available when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_layer_with_http_info(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this layer. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method delete_layer" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `delete_layer`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `delete_layer`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `delete_layer`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `delete_layer`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/layer/{id}', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def delete_model(self, cloud_pk, id, project_pk, **kwargs):  # noqa: E501
        """Delete a model  # noqa: E501

        It will also delete the related document Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_model(cloud_pk, id, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this model. (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.delete_model_with_http_info(cloud_pk, id, project_pk, **kwargs)  # noqa: E501

    def delete_model_with_http_info(self, cloud_pk, id, project_pk, **kwargs):  # noqa: E501
        """Delete a model  # noqa: E501

        It will also delete the related document Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_model_with_http_info(cloud_pk, id, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this model. (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method delete_model" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `delete_model`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `delete_model`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `delete_model`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{id}', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def delete_model_property(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Delete a Property of a model  # noqa: E501

        Delete a Property of a model Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_model_property(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this property. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.delete_model_property_with_http_info(cloud_pk, id, model_pk, project_pk, **kwargs)  # noqa: E501

    def delete_model_property_with_http_info(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Delete a Property of a model  # noqa: E501

        Delete a Property of a model Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_model_property_with_http_info(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this property. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method delete_model_property" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `delete_model_property`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `delete_model_property`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `delete_model_property`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `delete_model_property`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/property/{id}', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def delete_model_property_definition(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Delete a PropertyDefinitions of a model  # noqa: E501

        Delete a PropertyDefinitions of a model Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_model_property_definition(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this property definition. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.delete_model_property_definition_with_http_info(cloud_pk, id, model_pk, project_pk, **kwargs)  # noqa: E501

    def delete_model_property_definition_with_http_info(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Delete a PropertyDefinitions of a model  # noqa: E501

        Delete a PropertyDefinitions of a model Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_model_property_definition_with_http_info(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this property definition. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method delete_model_property_definition" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `delete_model_property_definition`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `delete_model_property_definition`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `delete_model_property_definition`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `delete_model_property_definition`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/propertydefinition/{id}', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def delete_model_unit(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Delete a Unit of a model  # noqa: E501

        Delete a Unit of a model Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_model_unit(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this unit. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.delete_model_unit_with_http_info(cloud_pk, id, model_pk, project_pk, **kwargs)  # noqa: E501

    def delete_model_unit_with_http_info(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Delete a Unit of a model  # noqa: E501

        Delete a Unit of a model Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_model_unit_with_http_info(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this unit. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method delete_model_unit" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `delete_model_unit`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `delete_model_unit`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `delete_model_unit`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `delete_model_unit`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/unit/{id}', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def delete_model_without_doc(self, cloud_pk, id, project_pk, **kwargs):  # noqa: E501
        """Delete the Model without deleting the related document  # noqa: E501

        Delete the Model without deleting the related document Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_model_without_doc(cloud_pk, id, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this model. (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.delete_model_without_doc_with_http_info(cloud_pk, id, project_pk, **kwargs)  # noqa: E501

    def delete_model_without_doc_with_http_info(self, cloud_pk, id, project_pk, **kwargs):  # noqa: E501
        """Delete the Model without deleting the related document  # noqa: E501

        Delete the Model without deleting the related document Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_model_without_doc_with_http_info(cloud_pk, id, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this model. (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method delete_model_without_doc" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `delete_model_without_doc`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `delete_model_without_doc`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `delete_model_without_doc`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{id}/delete-model', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def delete_property_set(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Delete a PropertySet of a model  # noqa: E501

        Delete a PropertySet of a model Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_property_set(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this property set. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.delete_property_set_with_http_info(cloud_pk, id, model_pk, project_pk, **kwargs)  # noqa: E501

    def delete_property_set_with_http_info(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Delete a PropertySet of a model  # noqa: E501

        Delete a PropertySet of a model Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_property_set_with_http_info(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this property set. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method delete_property_set" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `delete_property_set`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `delete_property_set`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `delete_property_set`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `delete_property_set`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/propertyset/{id}', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def delete_space(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Delete a space  # noqa: E501

        It will not delete related zones. The IFC file will not be updated. The remaining spaces are available in API and will be available when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_space(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this space. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.delete_space_with_http_info(cloud_pk, id, model_pk, project_pk, **kwargs)  # noqa: E501

    def delete_space_with_http_info(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Delete a space  # noqa: E501

        It will not delete related zones. The IFC file will not be updated. The remaining spaces are available in API and will be available when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_space_with_http_info(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this space. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method delete_space" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `delete_space`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `delete_space`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `delete_space`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `delete_space`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/space/{id}', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def delete_storey(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Delete a storey of a model  # noqa: E501

        Delete a storey of a model Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_storey(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this storey. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.delete_storey_with_http_info(cloud_pk, id, model_pk, project_pk, **kwargs)  # noqa: E501

    def delete_storey_with_http_info(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Delete a storey of a model  # noqa: E501

        Delete a storey of a model Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_storey_with_http_info(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this storey. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method delete_storey" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `delete_storey`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `delete_storey`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `delete_storey`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `delete_storey`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/storey/{id}', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def delete_storey_plan(self, cloud_pk, id, model_pk, project_pk, storey_pk, **kwargs):  # noqa: E501
        """Delete the relation between a 2d model and a storey  # noqa: E501

        Delete the relation between a 2d model and a storey Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_storey_plan(cloud_pk, id, model_pk, project_pk, storey_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this storey. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str storey_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.delete_storey_plan_with_http_info(cloud_pk, id, model_pk, project_pk, storey_pk, **kwargs)  # noqa: E501

    def delete_storey_plan_with_http_info(self, cloud_pk, id, model_pk, project_pk, storey_pk, **kwargs):  # noqa: E501
        """Delete the relation between a 2d model and a storey  # noqa: E501

        Delete the relation between a 2d model and a storey Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_storey_plan_with_http_info(cloud_pk, id, model_pk, project_pk, storey_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this storey. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str storey_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk',
            'storey_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method delete_storey_plan" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `delete_storey_plan`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `delete_storey_plan`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `delete_storey_plan`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `delete_storey_plan`")  # noqa: E501
        # verify the required parameter 'storey_pk' is set
        if self.api_client.client_side_validation and ('storey_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['storey_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `storey_pk` when calling `delete_storey_plan`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'storey_pk' in local_var_params:
            path_params['storey_pk'] = local_var_params['storey_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/storey/{storey_pk}/plan/{id}', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def delete_system(self, cloud_pk, model_pk, project_pk, uuid, **kwargs):  # noqa: E501
        """Delete a system of a model  # noqa: E501

        The IFC file will not be updated. The remaining systems are available in API and will be available when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_system(cloud_pk, model_pk, project_pk, uuid, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str uuid: IFC sytem or system type UUID (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.delete_system_with_http_info(cloud_pk, model_pk, project_pk, uuid, **kwargs)  # noqa: E501

    def delete_system_with_http_info(self, cloud_pk, model_pk, project_pk, uuid, **kwargs):  # noqa: E501
        """Delete a system of a model  # noqa: E501

        The IFC file will not be updated. The remaining systems are available in API and will be available when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_system_with_http_info(cloud_pk, model_pk, project_pk, uuid, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str uuid: IFC sytem or system type UUID (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'uuid'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method delete_system" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `delete_system`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `delete_system`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `delete_system`")  # noqa: E501
        # verify the required parameter 'uuid' is set
        if self.api_client.client_side_validation and ('uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `uuid` when calling `delete_system`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'uuid' in local_var_params:
            path_params['uuid'] = local_var_params['uuid']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/system/{uuid}', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def delete_zone(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Delete a zone of a model  # noqa: E501

        The IFC file will not be updated. The remaining zones are available in API and will be available when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_zone(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this zone. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.delete_zone_with_http_info(cloud_pk, id, model_pk, project_pk, **kwargs)  # noqa: E501

    def delete_zone_with_http_info(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Delete a zone of a model  # noqa: E501

        The IFC file will not be updated. The remaining zones are available in API and will be available when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_zone_with_http_info(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this zone. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method delete_zone" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `delete_zone`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `delete_zone`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `delete_zone`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `delete_zone`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/zone/{id}', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def delete_zone_space(self, cloud_pk, id, model_pk, project_pk, zone_pk, **kwargs):  # noqa: E501
        """Delete a space of a zone  # noqa: E501

        The IFC file will not be updated. The remaining spaces are available in API and will be available when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_zone_space(cloud_pk, id, model_pk, project_pk, zone_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this space. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str zone_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.delete_zone_space_with_http_info(cloud_pk, id, model_pk, project_pk, zone_pk, **kwargs)  # noqa: E501

    def delete_zone_space_with_http_info(self, cloud_pk, id, model_pk, project_pk, zone_pk, **kwargs):  # noqa: E501
        """Delete a space of a zone  # noqa: E501

        The IFC file will not be updated. The remaining spaces are available in API and will be available when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_zone_space_with_http_info(cloud_pk, id, model_pk, project_pk, zone_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this space. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str zone_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk',
            'zone_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method delete_zone_space" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `delete_zone_space`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `delete_zone_space`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `delete_zone_space`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `delete_zone_space`")  # noqa: E501
        # verify the required parameter 'zone_pk' is set
        if self.api_client.client_side_validation and ('zone_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['zone_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `zone_pk` when calling `delete_zone_space`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'zone_pk' in local_var_params:
            path_params['zone_pk'] = local_var_params['zone_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/zone/{zone_pk}/space/{id}', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def export_ifc(self, cloud_pk, id, project_pk, data, **kwargs):  # noqa: E501
        """Export IFC  # noqa: E501

        Only works for IFC files. Export IFC as requested in parameters. When the export is finished, a new IFC file with will be created in the same folder than the original IFC. You can query the folder or subscribe to the new document webhook to retrieve the result Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.export_ifc(cloud_pk, id, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this model. (required)
        :param str project_pk: (required)
        :param IfcExport data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: IfcExport
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.export_ifc_with_http_info(cloud_pk, id, project_pk, data, **kwargs)  # noqa: E501

    def export_ifc_with_http_info(self, cloud_pk, id, project_pk, data, **kwargs):  # noqa: E501
        """Export IFC  # noqa: E501

        Only works for IFC files. Export IFC as requested in parameters. When the export is finished, a new IFC file with will be created in the same folder than the original IFC. You can query the folder or subscribe to the new document webhook to retrieve the result Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.export_ifc_with_http_info(cloud_pk, id, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this model. (required)
        :param str project_pk: (required)
        :param IfcExport data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(IfcExport, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method export_ifc" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `export_ifc`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `export_ifc`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `export_ifc`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `export_ifc`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{id}/export', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='IfcExport',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def full_update_element(self, cloud_pk, model_pk, project_pk, uuid, data, **kwargs):  # noqa: E501
        """Update all fields of an element  # noqa: E501

        Update all fields of an element. The IFC file will not be updated. The created element will be accessible over the API and when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.full_update_element(cloud_pk, model_pk, project_pk, uuid, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str uuid: IFC element or element type UUID (required)
        :param Element data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: Element
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.full_update_element_with_http_info(cloud_pk, model_pk, project_pk, uuid, data, **kwargs)  # noqa: E501

    def full_update_element_with_http_info(self, cloud_pk, model_pk, project_pk, uuid, data, **kwargs):  # noqa: E501
        """Update all fields of an element  # noqa: E501

        Update all fields of an element. The IFC file will not be updated. The created element will be accessible over the API and when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.full_update_element_with_http_info(cloud_pk, model_pk, project_pk, uuid, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str uuid: IFC element or element type UUID (required)
        :param Element data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(Element, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'uuid',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method full_update_element" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `full_update_element`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `full_update_element`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `full_update_element`")  # noqa: E501
        # verify the required parameter 'uuid' is set
        if self.api_client.client_side_validation and ('uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `uuid` when calling `full_update_element`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `full_update_element`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'uuid' in local_var_params:
            path_params['uuid'] = local_var_params['uuid']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{uuid}', 'PUT',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Element',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def full_update_storeys(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update all fields of all storeys  # noqa: E501

                 This route allows you to create storeys, modify them, delete them and organize them by order.         If the optional field \"id\" is present, the storey will be modified. Otherwise, a new storey will be created.         If an \"id\" present in the api is not present in the list passed in parameter, the corresponding storey will be deleted.         A storey with \"is_site=True\" will be stored without order. There can be only one storey with \"is_site=True\"\"  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.full_update_storeys(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[StoreyRequest] data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[Storey]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.full_update_storeys_with_http_info(cloud_pk, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def full_update_storeys_with_http_info(self, cloud_pk, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update all fields of all storeys  # noqa: E501

                 This route allows you to create storeys, modify them, delete them and organize them by order.         If the optional field \"id\" is present, the storey will be modified. Otherwise, a new storey will be created.         If an \"id\" present in the api is not present in the list passed in parameter, the corresponding storey will be deleted.         A storey with \"is_site=True\" will be stored without order. There can be only one storey with \"is_site=True\"\"  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.full_update_storeys_with_http_info(cloud_pk, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[StoreyRequest] data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[Storey], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method full_update_storeys" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `full_update_storeys`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `full_update_storeys`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `full_update_storeys`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `full_update_storeys`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/storey/full_update', 'PUT',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[Storey]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_access_token(self, cloud_pk, model_pk, project_pk, token, **kwargs):  # noqa: E501
        """Retrieve one token created for this model  # noqa: E501

        Retrieve one token created for this model Required scopes: ifc:token_manage, model:token_manage  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_access_token(cloud_pk, model_pk, project_pk, token, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str token: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: IfcAccessToken
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_access_token_with_http_info(cloud_pk, model_pk, project_pk, token, **kwargs)  # noqa: E501

    def get_access_token_with_http_info(self, cloud_pk, model_pk, project_pk, token, **kwargs):  # noqa: E501
        """Retrieve one token created for this model  # noqa: E501

        Retrieve one token created for this model Required scopes: ifc:token_manage, model:token_manage  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_access_token_with_http_info(cloud_pk, model_pk, project_pk, token, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str token: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(IfcAccessToken, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'token'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_access_token" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_access_token`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_access_token`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_access_token`")  # noqa: E501
        # verify the required parameter 'token' is set
        if self.api_client.client_side_validation and ('token' not in local_var_params or  # noqa: E501
                                                        local_var_params['token'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `token` when calling `get_access_token`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'token' in local_var_params:
            path_params['token'] = local_var_params['token']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/access_token/{token}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='IfcAccessToken',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_access_tokens(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all tokens created for this model  # noqa: E501

        Retrieve all tokens created for this model Required scopes: ifc:token_manage, model:token_manage  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_access_tokens(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[IfcAccessToken]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_access_tokens_with_http_info(cloud_pk, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_access_tokens_with_http_info(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all tokens created for this model  # noqa: E501

        Retrieve all tokens created for this model Required scopes: ifc:token_manage, model:token_manage  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_access_tokens_with_http_info(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[IfcAccessToken], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_access_tokens" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_access_tokens`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_access_tokens`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_access_tokens`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/access_token', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[IfcAccessToken]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_classifications_of_element(self, cloud_pk, element_uuid, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all classifications of an element  # noqa: E501

        Retrieve all classifications of an element Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_classifications_of_element(cloud_pk, element_uuid, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[Classification]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_classifications_of_element_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_classifications_of_element_with_http_info(self, cloud_pk, element_uuid, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all classifications of an element  # noqa: E501

        Retrieve all classifications of an element Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_classifications_of_element_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[Classification], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_classifications_of_element" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_classifications_of_element`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `get_classifications_of_element`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_classifications_of_element`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_classifications_of_element`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/classification', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[Classification]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_documents_of_element(self, cloud_pk, element_uuid, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all documents of an element  # noqa: E501

        Retrieve all documents of an element Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_documents_of_element(cloud_pk, element_uuid, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[Document]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_documents_of_element_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_documents_of_element_with_http_info(self, cloud_pk, element_uuid, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all documents of an element  # noqa: E501

        Retrieve all documents of an element Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_documents_of_element_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[Document], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_documents_of_element" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_documents_of_element`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `get_documents_of_element`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_documents_of_element`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_documents_of_element`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/documents', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[Document]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_element(self, cloud_pk, model_pk, project_pk, uuid, **kwargs):  # noqa: E501
        """Retrieve an element of a model  # noqa: E501

        Retrieve an element of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_element(cloud_pk, model_pk, project_pk, uuid, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str uuid: IFC element or element type UUID (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: Element
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_element_with_http_info(cloud_pk, model_pk, project_pk, uuid, **kwargs)  # noqa: E501

    def get_element_with_http_info(self, cloud_pk, model_pk, project_pk, uuid, **kwargs):  # noqa: E501
        """Retrieve an element of a model  # noqa: E501

        Retrieve an element of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_element_with_http_info(cloud_pk, model_pk, project_pk, uuid, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str uuid: IFC element or element type UUID (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(Element, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'uuid'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_element" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_element`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_element`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_element`")  # noqa: E501
        # verify the required parameter 'uuid' is set
        if self.api_client.client_side_validation and ('uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `uuid` when calling `get_element`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'uuid' in local_var_params:
            path_params['uuid'] = local_var_params['uuid']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{uuid}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Element',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_element_linked_documents(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all documents linked to any element  # noqa: E501

        Retrieve all documents linked to any element with the list of uuids Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_element_linked_documents(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str type: Filter the returned list by type
        :param str classification: Filter the returned list by classification
        :param str classification__notation: Filter the returned list by classification__notation
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[DocumentWithElementList]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_element_linked_documents_with_http_info(cloud_pk, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_element_linked_documents_with_http_info(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all documents linked to any element  # noqa: E501

        Retrieve all documents linked to any element with the list of uuids Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_element_linked_documents_with_http_info(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str type: Filter the returned list by type
        :param str classification: Filter the returned list by classification
        :param str classification__notation: Filter the returned list by classification__notation
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[DocumentWithElementList], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'type',
            'classification',
            'classification__notation'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_element_linked_documents" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_element_linked_documents`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_element_linked_documents`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_element_linked_documents`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []
        if 'type' in local_var_params and local_var_params['type'] is not None:  # noqa: E501
            query_params.append(('type', local_var_params['type']))  # noqa: E501
        if 'classification' in local_var_params and local_var_params['classification'] is not None:  # noqa: E501
            query_params.append(('classification', local_var_params['classification']))  # noqa: E501
        if 'classification__notation' in local_var_params and local_var_params['classification__notation'] is not None:  # noqa: E501
            query_params.append(('classification__notation', local_var_params['classification__notation']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/documents', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[DocumentWithElementList]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_element_property_set(self, cloud_pk, element_uuid, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve a PropertySet of an element  # noqa: E501

        Retrieve a PropertySet of an element Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_element_property_set(cloud_pk, element_uuid, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param int id: A unique integer value identifying this property set. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: PropertySet
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_element_property_set_with_http_info(cloud_pk, element_uuid, id, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_element_property_set_with_http_info(self, cloud_pk, element_uuid, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve a PropertySet of an element  # noqa: E501

        Retrieve a PropertySet of an element Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_element_property_set_with_http_info(cloud_pk, element_uuid, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param int id: A unique integer value identifying this property set. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(PropertySet, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'id',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_element_property_set" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_element_property_set`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `get_element_property_set`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `get_element_property_set`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_element_property_set`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_element_property_set`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/propertyset/{id}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='PropertySet',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_element_property_set_properties(self, cloud_pk, element_uuid, model_pk, project_pk, propertyset_pk, **kwargs):  # noqa: E501
        """Retrieve all Properties of a PropertySet  # noqa: E501

        Retrieve all Properties of a PropertySet Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_element_property_set_properties(cloud_pk, element_uuid, model_pk, project_pk, propertyset_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str propertyset_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[ModelProperty]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_element_property_set_properties_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, propertyset_pk, **kwargs)  # noqa: E501

    def get_element_property_set_properties_with_http_info(self, cloud_pk, element_uuid, model_pk, project_pk, propertyset_pk, **kwargs):  # noqa: E501
        """Retrieve all Properties of a PropertySet  # noqa: E501

        Retrieve all Properties of a PropertySet Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_element_property_set_properties_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, propertyset_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str propertyset_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[ModelProperty], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'model_pk',
            'project_pk',
            'propertyset_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_element_property_set_properties" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_element_property_set_properties`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `get_element_property_set_properties`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_element_property_set_properties`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_element_property_set_properties`")  # noqa: E501
        # verify the required parameter 'propertyset_pk' is set
        if self.api_client.client_side_validation and ('propertyset_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['propertyset_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `propertyset_pk` when calling `get_element_property_set_properties`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'propertyset_pk' in local_var_params:
            path_params['propertyset_pk'] = local_var_params['propertyset_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/propertyset/{propertyset_pk}/property', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[ModelProperty]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_element_property_set_property(self, cloud_pk, element_uuid, id, model_pk, project_pk, propertyset_pk, **kwargs):  # noqa: E501
        """Retrieve a Property of a PropertySet  # noqa: E501

        Retrieve a Property of a PropertySet Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_element_property_set_property(cloud_pk, element_uuid, id, model_pk, project_pk, propertyset_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param int id: A unique integer value identifying this property. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str propertyset_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: ModelProperty
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_element_property_set_property_with_http_info(cloud_pk, element_uuid, id, model_pk, project_pk, propertyset_pk, **kwargs)  # noqa: E501

    def get_element_property_set_property_with_http_info(self, cloud_pk, element_uuid, id, model_pk, project_pk, propertyset_pk, **kwargs):  # noqa: E501
        """Retrieve a Property of a PropertySet  # noqa: E501

        Retrieve a Property of a PropertySet Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_element_property_set_property_with_http_info(cloud_pk, element_uuid, id, model_pk, project_pk, propertyset_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param int id: A unique integer value identifying this property. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str propertyset_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(ModelProperty, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'id',
            'model_pk',
            'project_pk',
            'propertyset_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_element_property_set_property" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_element_property_set_property`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `get_element_property_set_property`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `get_element_property_set_property`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_element_property_set_property`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_element_property_set_property`")  # noqa: E501
        # verify the required parameter 'propertyset_pk' is set
        if self.api_client.client_side_validation and ('propertyset_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['propertyset_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `propertyset_pk` when calling `get_element_property_set_property`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'propertyset_pk' in local_var_params:
            path_params['propertyset_pk'] = local_var_params['propertyset_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/propertyset/{propertyset_pk}/property/{id}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='ModelProperty',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_element_property_set_property_definition(self, cloud_pk, element_uuid, id, model_pk, project_pk, property_pk, propertyset_pk, **kwargs):  # noqa: E501
        """Retrieve a Definition of a Property  # noqa: E501

        Retrieve a Definition of a Property Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_element_property_set_property_definition(cloud_pk, element_uuid, id, model_pk, project_pk, property_pk, propertyset_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param int id: A unique integer value identifying this property definition. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str property_pk: (required)
        :param str propertyset_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: PropertyDefinition
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_element_property_set_property_definition_with_http_info(cloud_pk, element_uuid, id, model_pk, project_pk, property_pk, propertyset_pk, **kwargs)  # noqa: E501

    def get_element_property_set_property_definition_with_http_info(self, cloud_pk, element_uuid, id, model_pk, project_pk, property_pk, propertyset_pk, **kwargs):  # noqa: E501
        """Retrieve a Definition of a Property  # noqa: E501

        Retrieve a Definition of a Property Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_element_property_set_property_definition_with_http_info(cloud_pk, element_uuid, id, model_pk, project_pk, property_pk, propertyset_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param int id: A unique integer value identifying this property definition. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str property_pk: (required)
        :param str propertyset_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(PropertyDefinition, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'id',
            'model_pk',
            'project_pk',
            'property_pk',
            'propertyset_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_element_property_set_property_definition" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_element_property_set_property_definition`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `get_element_property_set_property_definition`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `get_element_property_set_property_definition`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_element_property_set_property_definition`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_element_property_set_property_definition`")  # noqa: E501
        # verify the required parameter 'property_pk' is set
        if self.api_client.client_side_validation and ('property_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['property_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `property_pk` when calling `get_element_property_set_property_definition`")  # noqa: E501
        # verify the required parameter 'propertyset_pk' is set
        if self.api_client.client_side_validation and ('propertyset_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['propertyset_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `propertyset_pk` when calling `get_element_property_set_property_definition`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'property_pk' in local_var_params:
            path_params['property_pk'] = local_var_params['property_pk']  # noqa: E501
        if 'propertyset_pk' in local_var_params:
            path_params['propertyset_pk'] = local_var_params['propertyset_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/propertyset/{propertyset_pk}/property/{property_pk}/propertydefinition/{id}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='PropertyDefinition',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_element_property_set_property_definition_unit(self, cloud_pk, element_uuid, id, model_pk, project_pk, property_pk, propertydefinition_pk, propertyset_pk, **kwargs):  # noqa: E501
        """Retrieve a Unit of a Definition  # noqa: E501

        Retrieve a Unit of a Definition Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_element_property_set_property_definition_unit(cloud_pk, element_uuid, id, model_pk, project_pk, property_pk, propertydefinition_pk, propertyset_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param int id: A unique integer value identifying this unit. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str property_pk: (required)
        :param str propertydefinition_pk: (required)
        :param str propertyset_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: Unit
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_element_property_set_property_definition_unit_with_http_info(cloud_pk, element_uuid, id, model_pk, project_pk, property_pk, propertydefinition_pk, propertyset_pk, **kwargs)  # noqa: E501

    def get_element_property_set_property_definition_unit_with_http_info(self, cloud_pk, element_uuid, id, model_pk, project_pk, property_pk, propertydefinition_pk, propertyset_pk, **kwargs):  # noqa: E501
        """Retrieve a Unit of a Definition  # noqa: E501

        Retrieve a Unit of a Definition Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_element_property_set_property_definition_unit_with_http_info(cloud_pk, element_uuid, id, model_pk, project_pk, property_pk, propertydefinition_pk, propertyset_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param int id: A unique integer value identifying this unit. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str property_pk: (required)
        :param str propertydefinition_pk: (required)
        :param str propertyset_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(Unit, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'id',
            'model_pk',
            'project_pk',
            'property_pk',
            'propertydefinition_pk',
            'propertyset_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_element_property_set_property_definition_unit" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_element_property_set_property_definition_unit`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `get_element_property_set_property_definition_unit`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `get_element_property_set_property_definition_unit`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_element_property_set_property_definition_unit`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_element_property_set_property_definition_unit`")  # noqa: E501
        # verify the required parameter 'property_pk' is set
        if self.api_client.client_side_validation and ('property_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['property_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `property_pk` when calling `get_element_property_set_property_definition_unit`")  # noqa: E501
        # verify the required parameter 'propertydefinition_pk' is set
        if self.api_client.client_side_validation and ('propertydefinition_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['propertydefinition_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `propertydefinition_pk` when calling `get_element_property_set_property_definition_unit`")  # noqa: E501
        # verify the required parameter 'propertyset_pk' is set
        if self.api_client.client_side_validation and ('propertyset_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['propertyset_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `propertyset_pk` when calling `get_element_property_set_property_definition_unit`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'property_pk' in local_var_params:
            path_params['property_pk'] = local_var_params['property_pk']  # noqa: E501
        if 'propertydefinition_pk' in local_var_params:
            path_params['propertydefinition_pk'] = local_var_params['propertydefinition_pk']  # noqa: E501
        if 'propertyset_pk' in local_var_params:
            path_params['propertyset_pk'] = local_var_params['propertyset_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/propertyset/{propertyset_pk}/property/{property_pk}/propertydefinition/{propertydefinition_pk}/unit/{id}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Unit',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_element_property_set_property_definition_units(self, cloud_pk, element_uuid, model_pk, project_pk, property_pk, propertydefinition_pk, propertyset_pk, **kwargs):  # noqa: E501
        """Retrieve all Units of a Definition  # noqa: E501

        Retrieve all Units of a Definition Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_element_property_set_property_definition_units(cloud_pk, element_uuid, model_pk, project_pk, property_pk, propertydefinition_pk, propertyset_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str property_pk: (required)
        :param str propertydefinition_pk: (required)
        :param str propertyset_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[Unit]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_element_property_set_property_definition_units_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, property_pk, propertydefinition_pk, propertyset_pk, **kwargs)  # noqa: E501

    def get_element_property_set_property_definition_units_with_http_info(self, cloud_pk, element_uuid, model_pk, project_pk, property_pk, propertydefinition_pk, propertyset_pk, **kwargs):  # noqa: E501
        """Retrieve all Units of a Definition  # noqa: E501

        Retrieve all Units of a Definition Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_element_property_set_property_definition_units_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, property_pk, propertydefinition_pk, propertyset_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str property_pk: (required)
        :param str propertydefinition_pk: (required)
        :param str propertyset_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[Unit], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'model_pk',
            'project_pk',
            'property_pk',
            'propertydefinition_pk',
            'propertyset_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_element_property_set_property_definition_units" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_element_property_set_property_definition_units`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `get_element_property_set_property_definition_units`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_element_property_set_property_definition_units`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_element_property_set_property_definition_units`")  # noqa: E501
        # verify the required parameter 'property_pk' is set
        if self.api_client.client_side_validation and ('property_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['property_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `property_pk` when calling `get_element_property_set_property_definition_units`")  # noqa: E501
        # verify the required parameter 'propertydefinition_pk' is set
        if self.api_client.client_side_validation and ('propertydefinition_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['propertydefinition_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `propertydefinition_pk` when calling `get_element_property_set_property_definition_units`")  # noqa: E501
        # verify the required parameter 'propertyset_pk' is set
        if self.api_client.client_side_validation and ('propertyset_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['propertyset_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `propertyset_pk` when calling `get_element_property_set_property_definition_units`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'property_pk' in local_var_params:
            path_params['property_pk'] = local_var_params['property_pk']  # noqa: E501
        if 'propertydefinition_pk' in local_var_params:
            path_params['propertydefinition_pk'] = local_var_params['propertydefinition_pk']  # noqa: E501
        if 'propertyset_pk' in local_var_params:
            path_params['propertyset_pk'] = local_var_params['propertyset_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/propertyset/{propertyset_pk}/property/{property_pk}/propertydefinition/{propertydefinition_pk}/unit', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[Unit]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_element_property_set_property_definitions(self, cloud_pk, element_uuid, model_pk, project_pk, property_pk, propertyset_pk, **kwargs):  # noqa: E501
        """Retrieve all Definitions of a PropertySet  # noqa: E501

        Retrieve all Definitions of a PropertySet Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_element_property_set_property_definitions(cloud_pk, element_uuid, model_pk, project_pk, property_pk, propertyset_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str property_pk: (required)
        :param str propertyset_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[PropertyDefinition]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_element_property_set_property_definitions_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, property_pk, propertyset_pk, **kwargs)  # noqa: E501

    def get_element_property_set_property_definitions_with_http_info(self, cloud_pk, element_uuid, model_pk, project_pk, property_pk, propertyset_pk, **kwargs):  # noqa: E501
        """Retrieve all Definitions of a PropertySet  # noqa: E501

        Retrieve all Definitions of a PropertySet Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_element_property_set_property_definitions_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, property_pk, propertyset_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str property_pk: (required)
        :param str propertyset_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[PropertyDefinition], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'model_pk',
            'project_pk',
            'property_pk',
            'propertyset_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_element_property_set_property_definitions" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_element_property_set_property_definitions`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `get_element_property_set_property_definitions`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_element_property_set_property_definitions`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_element_property_set_property_definitions`")  # noqa: E501
        # verify the required parameter 'property_pk' is set
        if self.api_client.client_side_validation and ('property_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['property_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `property_pk` when calling `get_element_property_set_property_definitions`")  # noqa: E501
        # verify the required parameter 'propertyset_pk' is set
        if self.api_client.client_side_validation and ('propertyset_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['propertyset_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `propertyset_pk` when calling `get_element_property_set_property_definitions`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'property_pk' in local_var_params:
            path_params['property_pk'] = local_var_params['property_pk']  # noqa: E501
        if 'propertyset_pk' in local_var_params:
            path_params['propertyset_pk'] = local_var_params['propertyset_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/propertyset/{propertyset_pk}/property/{property_pk}/propertydefinition', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[PropertyDefinition]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_element_property_sets(self, cloud_pk, element_uuid, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all PropertySets of an element  # noqa: E501

        Retrieve all PropertySets of an element Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_element_property_sets(cloud_pk, element_uuid, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[PropertySet]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_element_property_sets_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_element_property_sets_with_http_info(self, cloud_pk, element_uuid, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all PropertySets of an element  # noqa: E501

        Retrieve all PropertySets of an element Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_element_property_sets_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[PropertySet], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_element_property_sets" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_element_property_sets`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `get_element_property_sets`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_element_property_sets`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_element_property_sets`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/propertyset', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[PropertySet]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_elements(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all elements of a model  # noqa: E501

        Retrieve all elements of a model. If not filtered, the json may be very large. To efficently retrieve all elements and their data, see getRawElements Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_elements(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str type: Filter the returned list by type
        :param str classification: Filter the returned list by classification
        :param str classification__notation: Filter the returned list by classification__notation
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[Element]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_elements_with_http_info(cloud_pk, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_elements_with_http_info(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all elements of a model  # noqa: E501

        Retrieve all elements of a model. If not filtered, the json may be very large. To efficently retrieve all elements and their data, see getRawElements Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_elements_with_http_info(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str type: Filter the returned list by type
        :param str classification: Filter the returned list by classification
        :param str classification__notation: Filter the returned list by classification__notation
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[Element], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'type',
            'classification',
            'classification__notation'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_elements" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_elements`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_elements`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_elements`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []
        if 'type' in local_var_params and local_var_params['type'] is not None:  # noqa: E501
            query_params.append(('type', local_var_params['type']))  # noqa: E501
        if 'classification' in local_var_params and local_var_params['classification'] is not None:  # noqa: E501
            query_params.append(('classification', local_var_params['classification']))  # noqa: E501
        if 'classification__notation' in local_var_params and local_var_params['classification__notation'] is not None:  # noqa: E501
            query_params.append(('classification__notation', local_var_params['classification__notation']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[Element]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_elements_from_classification(self, cloud_pk, model_classification_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all elements with the classification  # noqa: E501

        Retrieve all elements with the classification Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_elements_from_classification(cloud_pk, model_classification_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_classification_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[Element]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_elements_from_classification_with_http_info(cloud_pk, model_classification_pk, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_elements_from_classification_with_http_info(self, cloud_pk, model_classification_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all elements with the classification  # noqa: E501

        Retrieve all elements with the classification Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_elements_from_classification_with_http_info(cloud_pk, model_classification_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_classification_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[Element], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_classification_pk',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_elements_from_classification" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_elements_from_classification`")  # noqa: E501
        # verify the required parameter 'model_classification_pk' is set
        if self.api_client.client_side_validation and ('model_classification_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_classification_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_classification_pk` when calling `get_elements_from_classification`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_elements_from_classification`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_elements_from_classification`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_classification_pk' in local_var_params:
            path_params['model_classification_pk'] = local_var_params['model_classification_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/classification/{model_classification_pk}/element', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[Element]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_layer(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve a layer of a model  # noqa: E501

        Retrieve a layer of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_layer(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this layer. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: Layer
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_layer_with_http_info(cloud_pk, id, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_layer_with_http_info(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve a layer of a model  # noqa: E501

        Retrieve a layer of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_layer_with_http_info(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this layer. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(Layer, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_layer" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_layer`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `get_layer`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_layer`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_layer`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/layer/{id}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Layer',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_layers(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all layers of a model  # noqa: E501

        Retrieve all layers of a model. Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_layers(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[Layer]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_layers_with_http_info(cloud_pk, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_layers_with_http_info(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all layers of a model  # noqa: E501

        Retrieve all layers of a model. Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_layers_with_http_info(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[Layer], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_layers" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_layers`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_layers`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_layers`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/layer', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[Layer]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_material(self, cloud_pk, element_uuid, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve a material of a model  # noqa: E501

        Retrieve a material of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_material(cloud_pk, element_uuid, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param int id: A unique integer value identifying this material. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: Material
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_material_with_http_info(cloud_pk, element_uuid, id, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_material_with_http_info(self, cloud_pk, element_uuid, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve a material of a model  # noqa: E501

        Retrieve a material of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_material_with_http_info(cloud_pk, element_uuid, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param int id: A unique integer value identifying this material. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(Material, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'id',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_material" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_material`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `get_material`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `get_material`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_material`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_material`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/material/{id}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Material',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_materials(self, cloud_pk, element_uuid, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all materials of a model  # noqa: E501

        Retrieve all materials of a model. Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_materials(cloud_pk, element_uuid, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[Material]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_materials_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_materials_with_http_info(self, cloud_pk, element_uuid, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all materials of a model  # noqa: E501

        Retrieve all materials of a model. Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_materials_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[Material], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_materials" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_materials`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `get_materials`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_materials`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_materials`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/material', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[Material]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_model(self, cloud_pk, id, project_pk, **kwargs):  # noqa: E501
        """Retrieve one model  # noqa: E501

         Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_model(cloud_pk, id, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this model. (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: Model
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_model_with_http_info(cloud_pk, id, project_pk, **kwargs)  # noqa: E501

    def get_model_with_http_info(self, cloud_pk, id, project_pk, **kwargs):  # noqa: E501
        """Retrieve one model  # noqa: E501

         Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_model_with_http_info(cloud_pk, id, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this model. (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(Model, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_model" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_model`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `get_model`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_model`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{id}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Model',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_model_classifications(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all classifications in a model  # noqa: E501

        Retrieve all classifications in a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_model_classifications(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[Classification]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_model_classifications_with_http_info(cloud_pk, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_model_classifications_with_http_info(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all classifications in a model  # noqa: E501

        Retrieve all classifications in a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_model_classifications_with_http_info(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[Classification], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_model_classifications" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_model_classifications`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_model_classifications`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_model_classifications`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/classification', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[Classification]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_model_material(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve a material of a model  # noqa: E501

        Retrieve a material of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_model_material(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this material. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: Material
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_model_material_with_http_info(cloud_pk, id, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_model_material_with_http_info(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve a material of a model  # noqa: E501

        Retrieve a material of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_model_material_with_http_info(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this material. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(Material, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_model_material" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_model_material`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `get_model_material`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_model_material`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_model_material`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/material/{id}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Material',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_model_materials(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all materials of a model  # noqa: E501

        Retrieve all materials of a model. Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_model_materials(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[Material]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_model_materials_with_http_info(cloud_pk, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_model_materials_with_http_info(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all materials of a model  # noqa: E501

        Retrieve all materials of a model. Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_model_materials_with_http_info(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[Material], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_model_materials" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_model_materials`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_model_materials`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_model_materials`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/material', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[Material]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_model_properties(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all Properties of a model  # noqa: E501

        Retrieve all PropertySets of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_model_properties(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[ModelProperty]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_model_properties_with_http_info(cloud_pk, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_model_properties_with_http_info(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all Properties of a model  # noqa: E501

        Retrieve all PropertySets of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_model_properties_with_http_info(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[ModelProperty], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_model_properties" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_model_properties`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_model_properties`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_model_properties`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/property', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[ModelProperty]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_model_property(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve a Property of a model  # noqa: E501

        Retrieve a Property of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_model_property(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this property. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: ModelProperty
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_model_property_with_http_info(cloud_pk, id, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_model_property_with_http_info(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve a Property of a model  # noqa: E501

        Retrieve a Property of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_model_property_with_http_info(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this property. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(ModelProperty, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_model_property" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_model_property`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `get_model_property`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_model_property`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_model_property`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/property/{id}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='ModelProperty',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_model_property_definition(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve a PropertyDefinition of a model  # noqa: E501

        Retrieve a PropertyDefinition of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_model_property_definition(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this property definition. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: PropertyDefinition
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_model_property_definition_with_http_info(cloud_pk, id, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_model_property_definition_with_http_info(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve a PropertyDefinition of a model  # noqa: E501

        Retrieve a PropertyDefinition of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_model_property_definition_with_http_info(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this property definition. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(PropertyDefinition, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_model_property_definition" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_model_property_definition`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `get_model_property_definition`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_model_property_definition`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_model_property_definition`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/propertydefinition/{id}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='PropertyDefinition',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_model_property_definitions(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all PropertyDefinitions of a model  # noqa: E501

        Retrieve all PropertyDefinitions of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_model_property_definitions(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[PropertyDefinition]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_model_property_definitions_with_http_info(cloud_pk, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_model_property_definitions_with_http_info(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all PropertyDefinitions of a model  # noqa: E501

        Retrieve all PropertyDefinitions of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_model_property_definitions_with_http_info(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[PropertyDefinition], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_model_property_definitions" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_model_property_definitions`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_model_property_definitions`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_model_property_definitions`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/propertydefinition', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[PropertyDefinition]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_model_unit(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve a Unit of a model  # noqa: E501

        Retrieve a Unit of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_model_unit(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this unit. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: Unit
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_model_unit_with_http_info(cloud_pk, id, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_model_unit_with_http_info(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve a Unit of a model  # noqa: E501

        Retrieve a Unit of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_model_unit_with_http_info(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this unit. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(Unit, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_model_unit" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_model_unit`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `get_model_unit`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_model_unit`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_model_unit`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/unit/{id}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Unit',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_model_units(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all Units of a model  # noqa: E501

        Retrieve all Units of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_model_units(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[Unit]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_model_units_with_http_info(cloud_pk, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_model_units_with_http_info(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all Units of a model  # noqa: E501

        Retrieve all Units of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_model_units_with_http_info(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[Unit], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_model_units" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_model_units`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_model_units`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_model_units`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/unit', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[Unit]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_models(self, cloud_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all models  # noqa: E501

        Retrieve all models. The field `type` allows you to discriminate which kind of model it is. Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_models(cloud_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str project_pk: (required)
        :param str status: Filter the returned list by status
        :param str source: Filter the returned list by source
        :param str type: Filter the returned list by type
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[Model]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_models_with_http_info(cloud_pk, project_pk, **kwargs)  # noqa: E501

    def get_models_with_http_info(self, cloud_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all models  # noqa: E501

        Retrieve all models. The field `type` allows you to discriminate which kind of model it is. Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_models_with_http_info(cloud_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str project_pk: (required)
        :param str status: Filter the returned list by status
        :param str source: Filter the returned list by source
        :param str type: Filter the returned list by type
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[Model], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'project_pk',
            'status',
            'source',
            'type'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_models" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_models`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_models`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []
        if 'status' in local_var_params and local_var_params['status'] is not None:  # noqa: E501
            query_params.append(('status', local_var_params['status']))  # noqa: E501
        if 'source' in local_var_params and local_var_params['source'] is not None:  # noqa: E501
            query_params.append(('source', local_var_params['source']))  # noqa: E501
        if 'type' in local_var_params and local_var_params['type'] is not None:  # noqa: E501
            query_params.append(('type', local_var_params['type']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[Model]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_plan_positioning(self, cloud_pk, id, model_pk, project_pk, storey_pk, **kwargs):  # noqa: E501
        """Retrieve the postioning of the plan in the storey  # noqa: E501

        Retrieve the postioning of the plan in the storey Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_plan_positioning(cloud_pk, id, model_pk, project_pk, storey_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this storey. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str storey_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: PositioningPlan
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_plan_positioning_with_http_info(cloud_pk, id, model_pk, project_pk, storey_pk, **kwargs)  # noqa: E501

    def get_plan_positioning_with_http_info(self, cloud_pk, id, model_pk, project_pk, storey_pk, **kwargs):  # noqa: E501
        """Retrieve the postioning of the plan in the storey  # noqa: E501

        Retrieve the postioning of the plan in the storey Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_plan_positioning_with_http_info(cloud_pk, id, model_pk, project_pk, storey_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this storey. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str storey_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(PositioningPlan, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk',
            'storey_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_plan_positioning" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_plan_positioning`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `get_plan_positioning`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_plan_positioning`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_plan_positioning`")  # noqa: E501
        # verify the required parameter 'storey_pk' is set
        if self.api_client.client_side_validation and ('storey_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['storey_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `storey_pk` when calling `get_plan_positioning`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'storey_pk' in local_var_params:
            path_params['storey_pk'] = local_var_params['storey_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/storey/{storey_pk}/plan/{id}/positioning', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='PositioningPlan',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_processor_handler(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve a processor handler  # noqa: E501

         Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_processor_handler(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this processor handler. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: ProcessorHandler
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_processor_handler_with_http_info(cloud_pk, id, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_processor_handler_with_http_info(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve a processor handler  # noqa: E501

         Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_processor_handler_with_http_info(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this processor handler. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(ProcessorHandler, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_processor_handler" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_processor_handler`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `get_processor_handler`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_processor_handler`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_processor_handler`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/processorhandler/{id}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='ProcessorHandler',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_processor_handlers(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Get all processor handlers  # noqa: E501

         Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_processor_handlers(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[ProcessorHandler]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_processor_handlers_with_http_info(cloud_pk, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_processor_handlers_with_http_info(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Get all processor handlers  # noqa: E501

         Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_processor_handlers_with_http_info(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[ProcessorHandler], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_processor_handlers" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_processor_handlers`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_processor_handlers`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_processor_handlers`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/processorhandler', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[ProcessorHandler]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_property_set(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve a PropertySet of a model  # noqa: E501

        Retrieve a PropertySet of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_property_set(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this property set. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: PropertySet
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_property_set_with_http_info(cloud_pk, id, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_property_set_with_http_info(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve a PropertySet of a model  # noqa: E501

        Retrieve a PropertySet of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_property_set_with_http_info(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this property set. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(PropertySet, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_property_set" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_property_set`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `get_property_set`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_property_set`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_property_set`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/propertyset/{id}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='PropertySet',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_property_sets(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all PropertySets of a model  # noqa: E501

        Retrieve all PropertySets of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_property_sets(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[PropertySet]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_property_sets_with_http_info(cloud_pk, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_property_sets_with_http_info(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all PropertySets of a model  # noqa: E501

        Retrieve all PropertySets of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_property_sets_with_http_info(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[PropertySet], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_property_sets" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_property_sets`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_property_sets`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_property_sets`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/propertyset', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[PropertySet]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_raw_elements(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all elements in a optimized format  # noqa: E501

                 Returns elements, property_sets, properties, definitions and units in a JSON optimized structure  Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_raw_elements(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str type: Filter the returned list by type
        :param str classification: Filter the returned list by classification
        :param str classification__notation: Filter the returned list by classification__notation
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: RawElements
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_raw_elements_with_http_info(cloud_pk, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_raw_elements_with_http_info(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all elements in a optimized format  # noqa: E501

                 Returns elements, property_sets, properties, definitions and units in a JSON optimized structure  Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_raw_elements_with_http_info(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str type: Filter the returned list by type
        :param str classification: Filter the returned list by classification
        :param str classification__notation: Filter the returned list by classification__notation
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(RawElements, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'type',
            'classification',
            'classification__notation'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_raw_elements" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_raw_elements`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_raw_elements`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_raw_elements`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []
        if 'type' in local_var_params and local_var_params['type'] is not None:  # noqa: E501
            query_params.append(('type', local_var_params['type']))  # noqa: E501
        if 'classification' in local_var_params and local_var_params['classification'] is not None:  # noqa: E501
            query_params.append(('classification', local_var_params['classification']))  # noqa: E501
        if 'classification__notation' in local_var_params and local_var_params['classification__notation'] is not None:  # noqa: E501
            query_params.append(('classification__notation', local_var_params['classification__notation']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/raw', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='RawElements',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_simple_element(self, cloud_pk, model_pk, project_pk, uuid, **kwargs):  # noqa: E501
        """Retrieve an element of a model with a simple value representation  # noqa: E501

                 Retrieve an element of a model with a simple value representation         Format response :             {                 :element_uuid: {                     \"attributes\": {                         :property_name: value,                         :property_name: value                     },                     :property_set_name: {                         :property_name: value,                         :property_name: value                     }                 }             }  Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_simple_element(cloud_pk, model_pk, project_pk, uuid, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str uuid: IFC element or element type UUID (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: SimpleElement
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_simple_element_with_http_info(cloud_pk, model_pk, project_pk, uuid, **kwargs)  # noqa: E501

    def get_simple_element_with_http_info(self, cloud_pk, model_pk, project_pk, uuid, **kwargs):  # noqa: E501
        """Retrieve an element of a model with a simple value representation  # noqa: E501

                 Retrieve an element of a model with a simple value representation         Format response :             {                 :element_uuid: {                     \"attributes\": {                         :property_name: value,                         :property_name: value                     },                     :property_set_name: {                         :property_name: value,                         :property_name: value                     }                 }             }  Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_simple_element_with_http_info(cloud_pk, model_pk, project_pk, uuid, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str uuid: IFC element or element type UUID (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(SimpleElement, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'uuid'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_simple_element" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_simple_element`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_simple_element`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_simple_element`")  # noqa: E501
        # verify the required parameter 'uuid' is set
        if self.api_client.client_side_validation and ('uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `uuid` when calling `get_simple_element`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'uuid' in local_var_params:
            path_params['uuid'] = local_var_params['uuid']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{uuid}/simple', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='SimpleElement',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_simple_elements(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all elements of a model with a simple value representation  # noqa: E501

                 Retrieve all elements of a model with a simple value representation         Format response :             {                 :element_uuid: {                     \"attributes\": {                         :property_name: value,                         :property_name: value                     },                     :property_set_name: {                         :property_name: value,                         :property_name: value                     }                 }             }  Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_simple_elements(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str type: Filter the returned list by type
        :param str classification: Filter the returned list by classification
        :param str classification__notation: Filter the returned list by classification__notation
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: SimpleElement
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_simple_elements_with_http_info(cloud_pk, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_simple_elements_with_http_info(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all elements of a model with a simple value representation  # noqa: E501

                 Retrieve all elements of a model with a simple value representation         Format response :             {                 :element_uuid: {                     \"attributes\": {                         :property_name: value,                         :property_name: value                     },                     :property_set_name: {                         :property_name: value,                         :property_name: value                     }                 }             }  Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_simple_elements_with_http_info(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str type: Filter the returned list by type
        :param str classification: Filter the returned list by classification
        :param str classification__notation: Filter the returned list by classification__notation
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(SimpleElement, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'type',
            'classification',
            'classification__notation'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_simple_elements" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_simple_elements`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_simple_elements`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_simple_elements`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []
        if 'type' in local_var_params and local_var_params['type'] is not None:  # noqa: E501
            query_params.append(('type', local_var_params['type']))  # noqa: E501
        if 'classification' in local_var_params and local_var_params['classification'] is not None:  # noqa: E501
            query_params.append(('classification', local_var_params['classification']))  # noqa: E501
        if 'classification__notation' in local_var_params and local_var_params['classification__notation'] is not None:  # noqa: E501
            query_params.append(('classification__notation', local_var_params['classification__notation']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/simple', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='SimpleElement',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_space(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve one space of the model  # noqa: E501

        Retrieve one space of the model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_space(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this space. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: Space
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_space_with_http_info(cloud_pk, id, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_space_with_http_info(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve one space of the model  # noqa: E501

        Retrieve one space of the model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_space_with_http_info(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this space. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(Space, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_space" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_space`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `get_space`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_space`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_space`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/space/{id}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Space',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_spaces(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all spaces of the model  # noqa: E501

        Retrieve all spaces of the model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_spaces(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[Space]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_spaces_with_http_info(cloud_pk, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_spaces_with_http_info(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all spaces of the model  # noqa: E501

        Retrieve all spaces of the model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_spaces_with_http_info(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[Space], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_spaces" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_spaces`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_spaces`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_spaces`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/space', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[Space]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_storey(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve a storey of a model  # noqa: E501

        Retrieve a storey of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_storey(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this storey. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: Storey
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_storey_with_http_info(cloud_pk, id, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_storey_with_http_info(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve a storey of a model  # noqa: E501

        Retrieve a storey of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_storey_with_http_info(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this storey. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(Storey, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_storey" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_storey`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `get_storey`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_storey`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_storey`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/storey/{id}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Storey',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_storeys(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all storeys of a model  # noqa: E501

        Retrieve all storeys of a model. Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_storeys(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[Storey]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_storeys_with_http_info(cloud_pk, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_storeys_with_http_info(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all storeys of a model  # noqa: E501

        Retrieve all storeys of a model. Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_storeys_with_http_info(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[Storey], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_storeys" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_storeys`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_storeys`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_storeys`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/storey', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[Storey]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_system(self, cloud_pk, model_pk, project_pk, uuid, **kwargs):  # noqa: E501
        """Retrieve a system of a model  # noqa: E501

        Retrieve a system of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_system(cloud_pk, model_pk, project_pk, uuid, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str uuid: IFC sytem or system type UUID (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: System
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_system_with_http_info(cloud_pk, model_pk, project_pk, uuid, **kwargs)  # noqa: E501

    def get_system_with_http_info(self, cloud_pk, model_pk, project_pk, uuid, **kwargs):  # noqa: E501
        """Retrieve a system of a model  # noqa: E501

        Retrieve a system of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_system_with_http_info(cloud_pk, model_pk, project_pk, uuid, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str uuid: IFC sytem or system type UUID (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(System, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'uuid'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_system" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_system`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_system`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_system`")  # noqa: E501
        # verify the required parameter 'uuid' is set
        if self.api_client.client_side_validation and ('uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `uuid` when calling `get_system`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'uuid' in local_var_params:
            path_params['uuid'] = local_var_params['uuid']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/system/{uuid}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='System',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_systems(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all systems of a model  # noqa: E501

        Retrieve all systems of a model. Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_systems(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[System]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_systems_with_http_info(cloud_pk, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_systems_with_http_info(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve all systems of a model  # noqa: E501

        Retrieve all systems of a model. Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_systems_with_http_info(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[System], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_systems" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_systems`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_systems`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_systems`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/system', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[System]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_zone(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve one zone of a model  # noqa: E501

        Retrieve one zone of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_zone(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this zone. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: Zone
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_zone_with_http_info(cloud_pk, id, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_zone_with_http_info(self, cloud_pk, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve one zone of a model  # noqa: E501

        Retrieve one zone of a model Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_zone_with_http_info(cloud_pk, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this zone. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(Zone, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_zone" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_zone`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `get_zone`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_zone`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_zone`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/zone/{id}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Zone',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_zone_space(self, cloud_pk, id, model_pk, project_pk, zone_pk, **kwargs):  # noqa: E501
        """Retrieve one space of a zone  # noqa: E501

        Retrieve one space of a zone Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_zone_space(cloud_pk, id, model_pk, project_pk, zone_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this space. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str zone_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: ZoneSpace
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_zone_space_with_http_info(cloud_pk, id, model_pk, project_pk, zone_pk, **kwargs)  # noqa: E501

    def get_zone_space_with_http_info(self, cloud_pk, id, model_pk, project_pk, zone_pk, **kwargs):  # noqa: E501
        """Retrieve one space of a zone  # noqa: E501

        Retrieve one space of a zone Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_zone_space_with_http_info(cloud_pk, id, model_pk, project_pk, zone_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this space. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str zone_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(ZoneSpace, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk',
            'zone_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_zone_space" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_zone_space`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `get_zone_space`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_zone_space`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_zone_space`")  # noqa: E501
        # verify the required parameter 'zone_pk' is set
        if self.api_client.client_side_validation and ('zone_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['zone_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `zone_pk` when calling `get_zone_space`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'zone_pk' in local_var_params:
            path_params['zone_pk'] = local_var_params['zone_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/zone/{zone_pk}/space/{id}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='ZoneSpace',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_zone_spaces(self, cloud_pk, model_pk, project_pk, zone_pk, **kwargs):  # noqa: E501
        """Retrieve all spaces of a zone  # noqa: E501

        Retrieve all spaces of a zone Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_zone_spaces(cloud_pk, model_pk, project_pk, zone_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str zone_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[ZoneSpace]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_zone_spaces_with_http_info(cloud_pk, model_pk, project_pk, zone_pk, **kwargs)  # noqa: E501

    def get_zone_spaces_with_http_info(self, cloud_pk, model_pk, project_pk, zone_pk, **kwargs):  # noqa: E501
        """Retrieve all spaces of a zone  # noqa: E501

        Retrieve all spaces of a zone Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_zone_spaces_with_http_info(cloud_pk, model_pk, project_pk, zone_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str zone_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[ZoneSpace], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'zone_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_zone_spaces" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_zone_spaces`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_zone_spaces`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_zone_spaces`")  # noqa: E501
        # verify the required parameter 'zone_pk' is set
        if self.api_client.client_side_validation and ('zone_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['zone_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `zone_pk` when calling `get_zone_spaces`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'zone_pk' in local_var_params:
            path_params['zone_pk'] = local_var_params['zone_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/zone/{zone_pk}/space', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[ZoneSpace]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_zones(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve zones of a model  # noqa: E501

        Retrieve parent zones of a model. Children zones we'll be in the 'zones' field Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_zones(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str color: Filter the returned list by color
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[Zone]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.get_zones_with_http_info(cloud_pk, model_pk, project_pk, **kwargs)  # noqa: E501

    def get_zones_with_http_info(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """Retrieve zones of a model  # noqa: E501

        Retrieve parent zones of a model. Children zones we'll be in the 'zones' field Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_zones_with_http_info(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str color: Filter the returned list by color
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[Zone], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'color'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_zones" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `get_zones`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `get_zones`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `get_zones`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []
        if 'color' in local_var_params and local_var_params['color'] is not None:  # noqa: E501
            query_params.append(('color', local_var_params['color']))  # noqa: E501

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/zone', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[Zone]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def link_documents_of_element(self, cloud_pk, element_uuid, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Link one or many documents to an element  # noqa: E501

                 Bulk create available.         You can either post an object or a list of objects.         Is you post a list, the response will be a list (in the same order) of created objects or of errors if any         If at least one create succeeded, the status code will be 201. If every create failed, the status code we'll be 400 with the list of errors  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.link_documents_of_element(cloud_pk, element_uuid, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[int] data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[Document]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.link_documents_of_element_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def link_documents_of_element_with_http_info(self, cloud_pk, element_uuid, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Link one or many documents to an element  # noqa: E501

                 Bulk create available.         You can either post an object or a list of objects.         Is you post a list, the response will be a list (in the same order) of created objects or of errors if any         If at least one create succeeded, the status code will be 201. If every create failed, the status code we'll be 400 with the list of errors  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.link_documents_of_element_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param list[int] data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[Document], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method link_documents_of_element" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `link_documents_of_element`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `link_documents_of_element`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `link_documents_of_element`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `link_documents_of_element`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `link_documents_of_element`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/documents', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[Document]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def list_classification_element_relations(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """List all associations between classifications and elements  # noqa: E501

        List all associations between classifications and elements Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.list_classification_element_relations(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: list[ElementClassificationRelation]
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.list_classification_element_relations_with_http_info(cloud_pk, model_pk, project_pk, **kwargs)  # noqa: E501

    def list_classification_element_relations_with_http_info(self, cloud_pk, model_pk, project_pk, **kwargs):  # noqa: E501
        """List all associations between classifications and elements  # noqa: E501

        List all associations between classifications and elements Required scopes: ifc:read, model:read  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.list_classification_element_relations_with_http_info(cloud_pk, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(list[ElementClassificationRelation], status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method list_classification_element_relations" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `list_classification_element_relations`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `list_classification_element_relations`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `list_classification_element_relations`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/classification-element', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='list[ElementClassificationRelation]',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def merge_ifcs(self, cloud_pk, project_pk, data, **kwargs):  # noqa: E501
        """Merge IFC files  # noqa: E501

        Only works for IFC files. Merge IFC files. The merged IFC file will be put in the same folder that the first IFC of the list Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.merge_ifcs(cloud_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str project_pk: (required)
        :param IfcMerge data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.merge_ifcs_with_http_info(cloud_pk, project_pk, data, **kwargs)  # noqa: E501

    def merge_ifcs_with_http_info(self, cloud_pk, project_pk, data, **kwargs):  # noqa: E501
        """Merge IFC files  # noqa: E501

        Only works for IFC files. Merge IFC files. The merged IFC file will be put in the same folder that the first IFC of the list Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.merge_ifcs_with_http_info(cloud_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str project_pk: (required)
        :param IfcMerge data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method merge_ifcs" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `merge_ifcs`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `merge_ifcs`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `merge_ifcs`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/merge', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def optimize_ifc(self, cloud_pk, id, project_pk, data, **kwargs):  # noqa: E501
        """Optimize the IFC  # noqa: E501

        Only works for IFC files. Optimize the IFC. A new optimized IFC file will be put in the same folder that the original IFC Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.optimize_ifc(cloud_pk, id, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this model. (required)
        :param str project_pk: (required)
        :param IfcOptimize data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.optimize_ifc_with_http_info(cloud_pk, id, project_pk, data, **kwargs)  # noqa: E501

    def optimize_ifc_with_http_info(self, cloud_pk, id, project_pk, data, **kwargs):  # noqa: E501
        """Optimize the IFC  # noqa: E501

        Only works for IFC files. Optimize the IFC. A new optimized IFC file will be put in the same folder that the original IFC Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.optimize_ifc_with_http_info(cloud_pk, id, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this model. (required)
        :param str project_pk: (required)
        :param IfcOptimize data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method optimize_ifc" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `optimize_ifc`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `optimize_ifc`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `optimize_ifc`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `optimize_ifc`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{id}/optimize', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def remove_all_element_property_set(self, cloud_pk, element_uuid, model_pk, project_pk, **kwargs):  # noqa: E501
        """Remove all property sets from element  # noqa: E501

        Remove all property sets from element. Property Sets will not be deleted, just detached from element Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.remove_all_element_property_set(cloud_pk, element_uuid, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.remove_all_element_property_set_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, **kwargs)  # noqa: E501

    def remove_all_element_property_set_with_http_info(self, cloud_pk, element_uuid, model_pk, project_pk, **kwargs):  # noqa: E501
        """Remove all property sets from element  # noqa: E501

        Remove all property sets from element. Property Sets will not be deleted, just detached from element Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.remove_all_element_property_set_with_http_info(cloud_pk, element_uuid, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method remove_all_element_property_set" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `remove_all_element_property_set`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `remove_all_element_property_set`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `remove_all_element_property_set`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `remove_all_element_property_set`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/propertyset/all', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def remove_classification_of_element(self, cloud_pk, element_uuid, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Remove a classification from an element  # noqa: E501

        The classification will not be deleted Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.remove_classification_of_element(cloud_pk, element_uuid, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param int id: A unique integer value identifying this classification. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.remove_classification_of_element_with_http_info(cloud_pk, element_uuid, id, model_pk, project_pk, **kwargs)  # noqa: E501

    def remove_classification_of_element_with_http_info(self, cloud_pk, element_uuid, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Remove a classification from an element  # noqa: E501

        The classification will not be deleted Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.remove_classification_of_element_with_http_info(cloud_pk, element_uuid, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param int id: A unique integer value identifying this classification. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'id',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method remove_classification_of_element" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `remove_classification_of_element`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `remove_classification_of_element`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `remove_classification_of_element`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `remove_classification_of_element`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `remove_classification_of_element`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/classification/{id}', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def remove_document_of_element(self, cloud_pk, element_uuid, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Remove a documents from an element  # noqa: E501

        The document will not be deleted Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.remove_document_of_element(cloud_pk, element_uuid, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param int id: A unique integer value identifying this document. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.remove_document_of_element_with_http_info(cloud_pk, element_uuid, id, model_pk, project_pk, **kwargs)  # noqa: E501

    def remove_document_of_element_with_http_info(self, cloud_pk, element_uuid, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Remove a documents from an element  # noqa: E501

        The document will not be deleted Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.remove_document_of_element_with_http_info(cloud_pk, element_uuid, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param int id: A unique integer value identifying this document. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'id',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method remove_document_of_element" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `remove_document_of_element`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `remove_document_of_element`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `remove_document_of_element`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `remove_document_of_element`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `remove_document_of_element`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/documents/{id}', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def remove_element_property_set(self, cloud_pk, element_uuid, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Remove a PropertySet from an element  # noqa: E501

        Delete the relation between the element and the property set. Does not delete any object Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.remove_element_property_set(cloud_pk, element_uuid, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param int id: A unique integer value identifying this property set. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.remove_element_property_set_with_http_info(cloud_pk, element_uuid, id, model_pk, project_pk, **kwargs)  # noqa: E501

    def remove_element_property_set_with_http_info(self, cloud_pk, element_uuid, id, model_pk, project_pk, **kwargs):  # noqa: E501
        """Remove a PropertySet from an element  # noqa: E501

        Delete the relation between the element and the property set. Does not delete any object Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.remove_element_property_set_with_http_info(cloud_pk, element_uuid, id, model_pk, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param int id: A unique integer value identifying this property set. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'id',
            'model_pk',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method remove_element_property_set" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `remove_element_property_set`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `remove_element_property_set`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `remove_element_property_set`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `remove_element_property_set`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `remove_element_property_set`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/propertyset/{id}', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def remove_element_property_set_property(self, cloud_pk, element_uuid, id, model_pk, project_pk, propertyset_pk, **kwargs):  # noqa: E501
        """Remove a property from a PropertySet  # noqa: E501

         Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.remove_element_property_set_property(cloud_pk, element_uuid, id, model_pk, project_pk, propertyset_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param int id: A unique integer value identifying this property. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str propertyset_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.remove_element_property_set_property_with_http_info(cloud_pk, element_uuid, id, model_pk, project_pk, propertyset_pk, **kwargs)  # noqa: E501

    def remove_element_property_set_property_with_http_info(self, cloud_pk, element_uuid, id, model_pk, project_pk, propertyset_pk, **kwargs):  # noqa: E501
        """Remove a property from a PropertySet  # noqa: E501

         Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.remove_element_property_set_property_with_http_info(cloud_pk, element_uuid, id, model_pk, project_pk, propertyset_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param int id: A unique integer value identifying this property. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str propertyset_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'id',
            'model_pk',
            'project_pk',
            'propertyset_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method remove_element_property_set_property" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `remove_element_property_set_property`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `remove_element_property_set_property`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `remove_element_property_set_property`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `remove_element_property_set_property`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `remove_element_property_set_property`")  # noqa: E501
        # verify the required parameter 'propertyset_pk' is set
        if self.api_client.client_side_validation and ('propertyset_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['propertyset_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `propertyset_pk` when calling `remove_element_property_set_property`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'propertyset_pk' in local_var_params:
            path_params['propertyset_pk'] = local_var_params['propertyset_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/propertyset/{propertyset_pk}/property/{id}', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def remove_element_property_set_property_definition(self, cloud_pk, element_uuid, id, model_pk, project_pk, property_pk, propertyset_pk, **kwargs):  # noqa: E501
        """Remove a Definition from a Property  # noqa: E501

         Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.remove_element_property_set_property_definition(cloud_pk, element_uuid, id, model_pk, project_pk, property_pk, propertyset_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param int id: A unique integer value identifying this property definition. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str property_pk: (required)
        :param str propertyset_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.remove_element_property_set_property_definition_with_http_info(cloud_pk, element_uuid, id, model_pk, project_pk, property_pk, propertyset_pk, **kwargs)  # noqa: E501

    def remove_element_property_set_property_definition_with_http_info(self, cloud_pk, element_uuid, id, model_pk, project_pk, property_pk, propertyset_pk, **kwargs):  # noqa: E501
        """Remove a Definition from a Property  # noqa: E501

         Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.remove_element_property_set_property_definition_with_http_info(cloud_pk, element_uuid, id, model_pk, project_pk, property_pk, propertyset_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param int id: A unique integer value identifying this property definition. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str property_pk: (required)
        :param str propertyset_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'id',
            'model_pk',
            'project_pk',
            'property_pk',
            'propertyset_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method remove_element_property_set_property_definition" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `remove_element_property_set_property_definition`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `remove_element_property_set_property_definition`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `remove_element_property_set_property_definition`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `remove_element_property_set_property_definition`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `remove_element_property_set_property_definition`")  # noqa: E501
        # verify the required parameter 'property_pk' is set
        if self.api_client.client_side_validation and ('property_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['property_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `property_pk` when calling `remove_element_property_set_property_definition`")  # noqa: E501
        # verify the required parameter 'propertyset_pk' is set
        if self.api_client.client_side_validation and ('propertyset_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['propertyset_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `propertyset_pk` when calling `remove_element_property_set_property_definition`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'property_pk' in local_var_params:
            path_params['property_pk'] = local_var_params['property_pk']  # noqa: E501
        if 'propertyset_pk' in local_var_params:
            path_params['propertyset_pk'] = local_var_params['propertyset_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/propertyset/{propertyset_pk}/property/{property_pk}/propertydefinition/{id}', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def remove_element_property_set_property_definition_unit(self, cloud_pk, element_uuid, id, model_pk, project_pk, property_pk, propertydefinition_pk, propertyset_pk, **kwargs):  # noqa: E501
        """Remove a Unit from a Definition  # noqa: E501

        Remove a Unit from a Definition Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.remove_element_property_set_property_definition_unit(cloud_pk, element_uuid, id, model_pk, project_pk, property_pk, propertydefinition_pk, propertyset_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param int id: A unique integer value identifying this unit. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str property_pk: (required)
        :param str propertydefinition_pk: (required)
        :param str propertyset_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.remove_element_property_set_property_definition_unit_with_http_info(cloud_pk, element_uuid, id, model_pk, project_pk, property_pk, propertydefinition_pk, propertyset_pk, **kwargs)  # noqa: E501

    def remove_element_property_set_property_definition_unit_with_http_info(self, cloud_pk, element_uuid, id, model_pk, project_pk, property_pk, propertydefinition_pk, propertyset_pk, **kwargs):  # noqa: E501
        """Remove a Unit from a Definition  # noqa: E501

        Remove a Unit from a Definition Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.remove_element_property_set_property_definition_unit_with_http_info(cloud_pk, element_uuid, id, model_pk, project_pk, property_pk, propertydefinition_pk, propertyset_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param int id: A unique integer value identifying this unit. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str property_pk: (required)
        :param str propertydefinition_pk: (required)
        :param str propertyset_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'id',
            'model_pk',
            'project_pk',
            'property_pk',
            'propertydefinition_pk',
            'propertyset_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method remove_element_property_set_property_definition_unit" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `remove_element_property_set_property_definition_unit`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `remove_element_property_set_property_definition_unit`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `remove_element_property_set_property_definition_unit`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `remove_element_property_set_property_definition_unit`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `remove_element_property_set_property_definition_unit`")  # noqa: E501
        # verify the required parameter 'property_pk' is set
        if self.api_client.client_side_validation and ('property_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['property_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `property_pk` when calling `remove_element_property_set_property_definition_unit`")  # noqa: E501
        # verify the required parameter 'propertydefinition_pk' is set
        if self.api_client.client_side_validation and ('propertydefinition_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['propertydefinition_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `propertydefinition_pk` when calling `remove_element_property_set_property_definition_unit`")  # noqa: E501
        # verify the required parameter 'propertyset_pk' is set
        if self.api_client.client_side_validation and ('propertyset_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['propertyset_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `propertyset_pk` when calling `remove_element_property_set_property_definition_unit`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'property_pk' in local_var_params:
            path_params['property_pk'] = local_var_params['property_pk']  # noqa: E501
        if 'propertydefinition_pk' in local_var_params:
            path_params['propertydefinition_pk'] = local_var_params['propertydefinition_pk']  # noqa: E501
        if 'propertyset_pk' in local_var_params:
            path_params['propertyset_pk'] = local_var_params['propertyset_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/propertyset/{propertyset_pk}/property/{property_pk}/propertydefinition/{propertydefinition_pk}/unit/{id}', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def remove_elements_from_classification(self, cloud_pk, model_classification_pk, model_pk, project_pk, uuid, **kwargs):  # noqa: E501
        """Remove the classification from all elements  # noqa: E501

        Remove the classification from all elements. No element nor classification will be deleted Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.remove_elements_from_classification(cloud_pk, model_classification_pk, model_pk, project_pk, uuid, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_classification_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str uuid: IFC element or element type UUID (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.remove_elements_from_classification_with_http_info(cloud_pk, model_classification_pk, model_pk, project_pk, uuid, **kwargs)  # noqa: E501

    def remove_elements_from_classification_with_http_info(self, cloud_pk, model_classification_pk, model_pk, project_pk, uuid, **kwargs):  # noqa: E501
        """Remove the classification from all elements  # noqa: E501

        Remove the classification from all elements. No element nor classification will be deleted Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.remove_elements_from_classification_with_http_info(cloud_pk, model_classification_pk, model_pk, project_pk, uuid, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_classification_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str uuid: IFC element or element type UUID (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_classification_pk',
            'model_pk',
            'project_pk',
            'uuid'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method remove_elements_from_classification" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `remove_elements_from_classification`")  # noqa: E501
        # verify the required parameter 'model_classification_pk' is set
        if self.api_client.client_side_validation and ('model_classification_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_classification_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_classification_pk` when calling `remove_elements_from_classification`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `remove_elements_from_classification`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `remove_elements_from_classification`")  # noqa: E501
        # verify the required parameter 'uuid' is set
        if self.api_client.client_side_validation and ('uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `uuid` when calling `remove_elements_from_classification`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_classification_pk' in local_var_params:
            path_params['model_classification_pk'] = local_var_params['model_classification_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'uuid' in local_var_params:
            path_params['uuid'] = local_var_params['uuid']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/classification/{model_classification_pk}/element/{uuid}', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def reprocess_model(self, cloud_pk, id, project_pk, **kwargs):  # noqa: E501
        """Reprocess Model file  # noqa: E501

        Reprocess the model. All data that are not in the original model files will be lost Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.reprocess_model(cloud_pk, id, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this model. (required)
        :param str project_pk: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.reprocess_model_with_http_info(cloud_pk, id, project_pk, **kwargs)  # noqa: E501

    def reprocess_model_with_http_info(self, cloud_pk, id, project_pk, **kwargs):  # noqa: E501
        """Reprocess Model file  # noqa: E501

        Reprocess the model. All data that are not in the original model files will be lost Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.reprocess_model_with_http_info(cloud_pk, id, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this model. (required)
        :param str project_pk: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'project_pk'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method reprocess_model" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `reprocess_model`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `reprocess_model`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `reprocess_model`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{id}/reprocess', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def update_access_token(self, cloud_pk, model_pk, project_pk, token, data, **kwargs):  # noqa: E501
        """Update some fields of a token  # noqa: E501

        You can update the expiration date or the read_only field Required scopes: ifc:token_manage, model:token_manage  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_access_token(cloud_pk, model_pk, project_pk, token, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str token: (required)
        :param IfcAccessToken data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: IfcAccessToken
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.update_access_token_with_http_info(cloud_pk, model_pk, project_pk, token, data, **kwargs)  # noqa: E501

    def update_access_token_with_http_info(self, cloud_pk, model_pk, project_pk, token, data, **kwargs):  # noqa: E501
        """Update some fields of a token  # noqa: E501

        You can update the expiration date or the read_only field Required scopes: ifc:token_manage, model:token_manage  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_access_token_with_http_info(cloud_pk, model_pk, project_pk, token, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str token: (required)
        :param IfcAccessToken data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(IfcAccessToken, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'token',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method update_access_token" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `update_access_token`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `update_access_token`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `update_access_token`")  # noqa: E501
        # verify the required parameter 'token' is set
        if self.api_client.client_side_validation and ('token' not in local_var_params or  # noqa: E501
                                                        local_var_params['token'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `token` when calling `update_access_token`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `update_access_token`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'token' in local_var_params:
            path_params['token'] = local_var_params['token']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/access_token/{token}', 'PATCH',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='IfcAccessToken',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def update_element(self, cloud_pk, model_pk, project_pk, uuid, data, **kwargs):  # noqa: E501
        """Update some fields of an element  # noqa: E501

        Update some fields of an element. The IFC file will not be updated. The created element will be accessible over the API and when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_element(cloud_pk, model_pk, project_pk, uuid, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str uuid: IFC element or element type UUID (required)
        :param Element data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: Element
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.update_element_with_http_info(cloud_pk, model_pk, project_pk, uuid, data, **kwargs)  # noqa: E501

    def update_element_with_http_info(self, cloud_pk, model_pk, project_pk, uuid, data, **kwargs):  # noqa: E501
        """Update some fields of an element  # noqa: E501

        Update some fields of an element. The IFC file will not be updated. The created element will be accessible over the API and when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_element_with_http_info(cloud_pk, model_pk, project_pk, uuid, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str uuid: IFC element or element type UUID (required)
        :param Element data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(Element, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'uuid',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method update_element" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `update_element`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `update_element`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `update_element`")  # noqa: E501
        # verify the required parameter 'uuid' is set
        if self.api_client.client_side_validation and ('uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `uuid` when calling `update_element`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `update_element`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'uuid' in local_var_params:
            path_params['uuid'] = local_var_params['uuid']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{uuid}', 'PATCH',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Element',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def update_element_property_set_property(self, cloud_pk, element_uuid, id, model_pk, project_pk, propertyset_pk, data, **kwargs):  # noqa: E501
        """Update a property from an element  # noqa: E501

        Update a property value from an element. If the element is the only one to have this property, the property will be update in place. If many elements share this property, a new property will be created to replace the property for this element. Keeping the property for all other elements. If you want to update the property of all elements, see updateIfcProperty Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_element_property_set_property(cloud_pk, element_uuid, id, model_pk, project_pk, propertyset_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param int id: A unique integer value identifying this property. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str propertyset_pk: (required)
        :param ModelProperty data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: ModelProperty
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.update_element_property_set_property_with_http_info(cloud_pk, element_uuid, id, model_pk, project_pk, propertyset_pk, data, **kwargs)  # noqa: E501

    def update_element_property_set_property_with_http_info(self, cloud_pk, element_uuid, id, model_pk, project_pk, propertyset_pk, data, **kwargs):  # noqa: E501
        """Update a property from an element  # noqa: E501

        Update a property value from an element. If the element is the only one to have this property, the property will be update in place. If many elements share this property, a new property will be created to replace the property for this element. Keeping the property for all other elements. If you want to update the property of all elements, see updateIfcProperty Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_element_property_set_property_with_http_info(cloud_pk, element_uuid, id, model_pk, project_pk, propertyset_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str element_uuid: (required)
        :param int id: A unique integer value identifying this property. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str propertyset_pk: (required)
        :param ModelProperty data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(ModelProperty, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'element_uuid',
            'id',
            'model_pk',
            'project_pk',
            'propertyset_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method update_element_property_set_property" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `update_element_property_set_property`")  # noqa: E501
        # verify the required parameter 'element_uuid' is set
        if self.api_client.client_side_validation and ('element_uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['element_uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `element_uuid` when calling `update_element_property_set_property`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `update_element_property_set_property`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `update_element_property_set_property`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `update_element_property_set_property`")  # noqa: E501
        # verify the required parameter 'propertyset_pk' is set
        if self.api_client.client_side_validation and ('propertyset_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['propertyset_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `propertyset_pk` when calling `update_element_property_set_property`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `update_element_property_set_property`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'element_uuid' in local_var_params:
            path_params['element_uuid'] = local_var_params['element_uuid']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'propertyset_pk' in local_var_params:
            path_params['propertyset_pk'] = local_var_params['propertyset_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/element/{element_uuid}/propertyset/{propertyset_pk}/property/{id}', 'PATCH',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='ModelProperty',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def update_layer(self, cloud_pk, id, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update some fields of a layer  # noqa: E501

        Update some fields of a layer. The IFC file will not be updated. The created layer will be accessible over the API and when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_layer(cloud_pk, id, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this layer. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param Layer data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: Layer
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.update_layer_with_http_info(cloud_pk, id, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def update_layer_with_http_info(self, cloud_pk, id, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update some fields of a layer  # noqa: E501

        Update some fields of a layer. The IFC file will not be updated. The created layer will be accessible over the API and when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_layer_with_http_info(cloud_pk, id, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this layer. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param Layer data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(Layer, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method update_layer" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `update_layer`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `update_layer`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `update_layer`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `update_layer`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `update_layer`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/layer/{id}', 'PATCH',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Layer',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def update_model(self, cloud_pk, id, project_pk, data, **kwargs):  # noqa: E501
        """Update some fields of a model  # noqa: E501

        Update some fields of a model Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_model(cloud_pk, id, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this model. (required)
        :param str project_pk: (required)
        :param Model data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: Model
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.update_model_with_http_info(cloud_pk, id, project_pk, data, **kwargs)  # noqa: E501

    def update_model_with_http_info(self, cloud_pk, id, project_pk, data, **kwargs):  # noqa: E501
        """Update some fields of a model  # noqa: E501

        Update some fields of a model Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_model_with_http_info(cloud_pk, id, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this model. (required)
        :param str project_pk: (required)
        :param Model data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(Model, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method update_model" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `update_model`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `update_model`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `update_model`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `update_model`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{id}', 'PATCH',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Model',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def update_model_files(self, cloud_pk, id, project_pk, **kwargs):  # noqa: E501
        """Update models file (gltf, svg, structure, etc)  # noqa: E501

                 Patch model files (gltf, structure, svg, etc)  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_model_files(cloud_pk, id, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this model. (required)
        :param str project_pk: (required)
        :param file structure_file:
        :param file systems_file:
        :param file map_file:
        :param file gltf_file:
        :param file gltf_with_openings_file:
        :param file bvh_tree_file:
        :param file viewer_360_file:
        :param file xkt_file:
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: ModelFiles
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.update_model_files_with_http_info(cloud_pk, id, project_pk, **kwargs)  # noqa: E501

    def update_model_files_with_http_info(self, cloud_pk, id, project_pk, **kwargs):  # noqa: E501
        """Update models file (gltf, svg, structure, etc)  # noqa: E501

                 Patch model files (gltf, structure, svg, etc)  Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_model_files_with_http_info(cloud_pk, id, project_pk, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this model. (required)
        :param str project_pk: (required)
        :param file structure_file:
        :param file systems_file:
        :param file map_file:
        :param file gltf_file:
        :param file gltf_with_openings_file:
        :param file bvh_tree_file:
        :param file viewer_360_file:
        :param file xkt_file:
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(ModelFiles, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'project_pk',
            'structure_file',
            'systems_file',
            'map_file',
            'gltf_file',
            'gltf_with_openings_file',
            'bvh_tree_file',
            'viewer_360_file',
            'xkt_file'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method update_model_files" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `update_model_files`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `update_model_files`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `update_model_files`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}
        if 'structure_file' in local_var_params:
            local_var_files['structure_file'] = local_var_params['structure_file']  # noqa: E501
        if 'systems_file' in local_var_params:
            local_var_files['systems_file'] = local_var_params['systems_file']  # noqa: E501
        if 'map_file' in local_var_params:
            local_var_files['map_file'] = local_var_params['map_file']  # noqa: E501
        if 'gltf_file' in local_var_params:
            local_var_files['gltf_file'] = local_var_params['gltf_file']  # noqa: E501
        if 'gltf_with_openings_file' in local_var_params:
            local_var_files['gltf_with_openings_file'] = local_var_params['gltf_with_openings_file']  # noqa: E501
        if 'bvh_tree_file' in local_var_params:
            local_var_files['bvh_tree_file'] = local_var_params['bvh_tree_file']  # noqa: E501
        if 'viewer_360_file' in local_var_params:
            local_var_files['viewer_360_file'] = local_var_params['viewer_360_file']  # noqa: E501
        if 'xkt_file' in local_var_params:
            local_var_files['xkt_file'] = local_var_params['xkt_file']  # noqa: E501

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

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['multipart/form-data', 'application/x-www-form-urlencoded'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{id}/files', 'PATCH',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='ModelFiles',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def update_model_property(self, cloud_pk, id, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update some fields of a Property  # noqa: E501

        Update some fields of a Property Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_model_property(cloud_pk, id, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this property. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param ModelProperty data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: ModelProperty
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.update_model_property_with_http_info(cloud_pk, id, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def update_model_property_with_http_info(self, cloud_pk, id, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update some fields of a Property  # noqa: E501

        Update some fields of a Property Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_model_property_with_http_info(cloud_pk, id, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this property. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param ModelProperty data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(ModelProperty, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method update_model_property" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `update_model_property`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `update_model_property`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `update_model_property`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `update_model_property`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `update_model_property`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/property/{id}', 'PATCH',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='ModelProperty',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def update_model_property_definition(self, cloud_pk, id, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update some fields of many PropertyDefinitions of a model  # noqa: E501

         Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_model_property_definition(cloud_pk, id, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this property definition. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param PropertyDefinition data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: PropertyDefinition
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.update_model_property_definition_with_http_info(cloud_pk, id, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def update_model_property_definition_with_http_info(self, cloud_pk, id, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update some fields of many PropertyDefinitions of a model  # noqa: E501

         Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_model_property_definition_with_http_info(cloud_pk, id, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this property definition. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param PropertyDefinition data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(PropertyDefinition, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method update_model_property_definition" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `update_model_property_definition`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `update_model_property_definition`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `update_model_property_definition`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `update_model_property_definition`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `update_model_property_definition`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/propertydefinition/{id}', 'PATCH',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='PropertyDefinition',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def update_model_unit(self, cloud_pk, id, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update some fields of a Unit of a model  # noqa: E501

         Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_model_unit(cloud_pk, id, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this unit. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param Unit data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: Unit
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.update_model_unit_with_http_info(cloud_pk, id, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def update_model_unit_with_http_info(self, cloud_pk, id, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update some fields of a Unit of a model  # noqa: E501

         Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_model_unit_with_http_info(cloud_pk, id, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this unit. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param Unit data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(Unit, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method update_model_unit" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `update_model_unit`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `update_model_unit`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `update_model_unit`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `update_model_unit`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `update_model_unit`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/unit/{id}', 'PATCH',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Unit',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def update_plan_positioning(self, cloud_pk, id, model_pk, project_pk, storey_pk, data, **kwargs):  # noqa: E501
        """Update the postioning of the plan in the storey  # noqa: E501

        Update the postioning of the plan in the storey Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_plan_positioning(cloud_pk, id, model_pk, project_pk, storey_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this storey. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str storey_pk: (required)
        :param PositioningPlan data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: PositioningPlan
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.update_plan_positioning_with_http_info(cloud_pk, id, model_pk, project_pk, storey_pk, data, **kwargs)  # noqa: E501

    def update_plan_positioning_with_http_info(self, cloud_pk, id, model_pk, project_pk, storey_pk, data, **kwargs):  # noqa: E501
        """Update the postioning of the plan in the storey  # noqa: E501

        Update the postioning of the plan in the storey Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_plan_positioning_with_http_info(cloud_pk, id, model_pk, project_pk, storey_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this storey. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str storey_pk: (required)
        :param PositioningPlan data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(PositioningPlan, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk',
            'storey_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method update_plan_positioning" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `update_plan_positioning`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `update_plan_positioning`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `update_plan_positioning`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `update_plan_positioning`")  # noqa: E501
        # verify the required parameter 'storey_pk' is set
        if self.api_client.client_side_validation and ('storey_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['storey_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `storey_pk` when calling `update_plan_positioning`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `update_plan_positioning`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'storey_pk' in local_var_params:
            path_params['storey_pk'] = local_var_params['storey_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/storey/{storey_pk}/plan/{id}/positioning', 'PATCH',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='PositioningPlan',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def update_processor_handler(self, cloud_pk, id, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update the status of a processor handler  # noqa: E501

         Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_processor_handler(cloud_pk, id, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this processor handler. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param ProcessorHandler data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: ProcessorHandler
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.update_processor_handler_with_http_info(cloud_pk, id, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def update_processor_handler_with_http_info(self, cloud_pk, id, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update the status of a processor handler  # noqa: E501

         Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_processor_handler_with_http_info(cloud_pk, id, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this processor handler. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param ProcessorHandler data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(ProcessorHandler, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method update_processor_handler" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `update_processor_handler`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `update_processor_handler`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `update_processor_handler`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `update_processor_handler`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `update_processor_handler`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/processorhandler/{id}', 'PATCH',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='ProcessorHandler',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def update_property_set(self, cloud_pk, id, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update some fields of a PropertySet  # noqa: E501

        Update some fields of a PropertySet Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_property_set(cloud_pk, id, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this property set. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param PropertySet data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: PropertySet
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.update_property_set_with_http_info(cloud_pk, id, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def update_property_set_with_http_info(self, cloud_pk, id, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update some fields of a PropertySet  # noqa: E501

        Update some fields of a PropertySet Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_property_set_with_http_info(cloud_pk, id, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this property set. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param PropertySet data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(PropertySet, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method update_property_set" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `update_property_set`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `update_property_set`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `update_property_set`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `update_property_set`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `update_property_set`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/propertyset/{id}', 'PATCH',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='PropertySet',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def update_space(self, cloud_pk, id, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update some fields of a space  # noqa: E501

        Update some fields of a space. The IFC file will not be updated. The created space will be accessible over the API and when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_space(cloud_pk, id, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this space. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param Space data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: Space
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.update_space_with_http_info(cloud_pk, id, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def update_space_with_http_info(self, cloud_pk, id, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update some fields of a space  # noqa: E501

        Update some fields of a space. The IFC file will not be updated. The created space will be accessible over the API and when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_space_with_http_info(cloud_pk, id, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this space. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param Space data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(Space, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method update_space" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `update_space`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `update_space`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `update_space`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `update_space`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `update_space`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/space/{id}', 'PATCH',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Space',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def update_storey(self, cloud_pk, id, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update some fields of a storey  # noqa: E501

        Update some fields of a storey Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_storey(cloud_pk, id, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this storey. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param Storey data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: Storey
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.update_storey_with_http_info(cloud_pk, id, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def update_storey_with_http_info(self, cloud_pk, id, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update some fields of a storey  # noqa: E501

        Update some fields of a storey Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_storey_with_http_info(cloud_pk, id, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this storey. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param Storey data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(Storey, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method update_storey" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `update_storey`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `update_storey`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `update_storey`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `update_storey`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `update_storey`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/storey/{id}', 'PATCH',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Storey',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def update_system(self, cloud_pk, model_pk, project_pk, uuid, data, **kwargs):  # noqa: E501
        """Update some fields of a system  # noqa: E501

        Update some fields of a system. The IFC file will not be updated. The created system will be accessible over the API and when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_system(cloud_pk, model_pk, project_pk, uuid, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str uuid: IFC sytem or system type UUID (required)
        :param System data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: System
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.update_system_with_http_info(cloud_pk, model_pk, project_pk, uuid, data, **kwargs)  # noqa: E501

    def update_system_with_http_info(self, cloud_pk, model_pk, project_pk, uuid, data, **kwargs):  # noqa: E501
        """Update some fields of a system  # noqa: E501

        Update some fields of a system. The IFC file will not be updated. The created system will be accessible over the API and when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_system_with_http_info(cloud_pk, model_pk, project_pk, uuid, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str uuid: IFC sytem or system type UUID (required)
        :param System data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(System, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'model_pk',
            'project_pk',
            'uuid',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method update_system" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `update_system`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `update_system`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `update_system`")  # noqa: E501
        # verify the required parameter 'uuid' is set
        if self.api_client.client_side_validation and ('uuid' not in local_var_params or  # noqa: E501
                                                        local_var_params['uuid'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `uuid` when calling `update_system`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `update_system`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'uuid' in local_var_params:
            path_params['uuid'] = local_var_params['uuid']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/system/{uuid}', 'PATCH',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='System',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def update_zone(self, cloud_pk, id, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update some fields of a zone  # noqa: E501

        Update some fields of a zone. The IFC file will not be updated. The created zone will be accessible over the API and when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_zone(cloud_pk, id, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this zone. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param Zone data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: Zone
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.update_zone_with_http_info(cloud_pk, id, model_pk, project_pk, data, **kwargs)  # noqa: E501

    def update_zone_with_http_info(self, cloud_pk, id, model_pk, project_pk, data, **kwargs):  # noqa: E501
        """Update some fields of a zone  # noqa: E501

        Update some fields of a zone. The IFC file will not be updated. The created zone will be accessible over the API and when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_zone_with_http_info(cloud_pk, id, model_pk, project_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this zone. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param Zone data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(Zone, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method update_zone" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `update_zone`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `update_zone`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `update_zone`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `update_zone`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `update_zone`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/zone/{id}', 'PATCH',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Zone',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)

    def update_zone_space(self, cloud_pk, id, model_pk, project_pk, zone_pk, data, **kwargs):  # noqa: E501
        """Update some fields of a space  # noqa: E501

        Update some fields of a space. The IFC file will not be updated. The created space will be accessible over the API and when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_zone_space(cloud_pk, id, model_pk, project_pk, zone_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this space. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str zone_pk: (required)
        :param ZoneSpace data: (required)
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: ZoneSpace
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        return self.update_zone_space_with_http_info(cloud_pk, id, model_pk, project_pk, zone_pk, data, **kwargs)  # noqa: E501

    def update_zone_space_with_http_info(self, cloud_pk, id, model_pk, project_pk, zone_pk, data, **kwargs):  # noqa: E501
        """Update some fields of a space  # noqa: E501

        Update some fields of a space. The IFC file will not be updated. The created space will be accessible over the API and when exporting an IFC file Required scopes: ifc:write, model:write  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_zone_space_with_http_info(cloud_pk, id, model_pk, project_pk, zone_pk, data, async_req=True)
        >>> result = thread.get()

        :param async_req bool: execute request asynchronously
        :param str cloud_pk: (required)
        :param int id: A unique integer value identifying this space. (required)
        :param str model_pk: (required)
        :param str project_pk: (required)
        :param str zone_pk: (required)
        :param ZoneSpace data: (required)
        :param _return_http_data_only: response data without head status code
                                       and headers
        :param _preload_content: if False, the urllib3.HTTPResponse object will
                                 be returned without reading/decoding response
                                 data. Default is True.
        :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.
        :return: tuple(ZoneSpace, status_code(int), headers(HTTPHeaderDict))
                 If the method is called asynchronously,
                 returns the request thread.
        """

        local_var_params = locals()

        all_params = [
            'cloud_pk',
            'id',
            'model_pk',
            'project_pk',
            'zone_pk',
            'data'
        ]
        all_params.extend(
            [
                'async_req',
                '_return_http_data_only',
                '_preload_content',
                '_request_timeout'
            ]
        )

        for key, val in six.iteritems(local_var_params['kwargs']):
            if key not in all_params:
                raise ApiTypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method update_zone_space" % key
                )
            local_var_params[key] = val
        del local_var_params['kwargs']
        # verify the required parameter 'cloud_pk' is set
        if self.api_client.client_side_validation and ('cloud_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['cloud_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `cloud_pk` when calling `update_zone_space`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in local_var_params or  # noqa: E501
                                                        local_var_params['id'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `id` when calling `update_zone_space`")  # noqa: E501
        # verify the required parameter 'model_pk' is set
        if self.api_client.client_side_validation and ('model_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['model_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `model_pk` when calling `update_zone_space`")  # noqa: E501
        # verify the required parameter 'project_pk' is set
        if self.api_client.client_side_validation and ('project_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['project_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `project_pk` when calling `update_zone_space`")  # noqa: E501
        # verify the required parameter 'zone_pk' is set
        if self.api_client.client_side_validation and ('zone_pk' not in local_var_params or  # noqa: E501
                                                        local_var_params['zone_pk'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `zone_pk` when calling `update_zone_space`")  # noqa: E501
        # verify the required parameter 'data' is set
        if self.api_client.client_side_validation and ('data' not in local_var_params or  # noqa: E501
                                                        local_var_params['data'] is None):  # noqa: E501
            raise ApiValueError("Missing the required parameter `data` when calling `update_zone_space`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'cloud_pk' in local_var_params:
            path_params['cloud_pk'] = local_var_params['cloud_pk']  # noqa: E501
        if 'id' in local_var_params:
            path_params['id'] = local_var_params['id']  # noqa: E501
        if 'model_pk' in local_var_params:
            path_params['model_pk'] = local_var_params['model_pk']  # noqa: E501
        if 'project_pk' in local_var_params:
            path_params['project_pk'] = local_var_params['project_pk']  # noqa: E501
        if 'zone_pk' in local_var_params:
            path_params['zone_pk'] = local_var_params['zone_pk']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'data' in local_var_params:
            body_params = local_var_params['data']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

        # Authentication setting
        auth_settings = ['Bearer', 'bimdata_connect', 'client_credentials']  # noqa: E501

        return self.api_client.call_api(
            '/cloud/{cloud_pk}/project/{project_pk}/model/{model_pk}/zone/{zone_pk}/space/{id}', 'PATCH',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='ZoneSpace',  # noqa: E501
            auth_settings=auth_settings,
            async_req=local_var_params.get('async_req'),
            _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
            _preload_content=local_var_params.get('_preload_content', True),
            _request_timeout=local_var_params.get('_request_timeout'),
            collection_formats=collection_formats)
