# coding: utf-8

"""
    Onshape REST API

    The Onshape REST API consumed by all clients.  # noqa: E501

    The version of the OpenAPI document: 1.111
    Contact: api-support@onshape.zendesk.com
    Generated by: https://openapi-generator.tech
"""

from __future__ import absolute_import

# python 2 and python 3 compatibility library
import six
from onshape_client.oas.api_client import ApiClient
from onshape_client.oas.exceptions import ApiTypeError, ApiValueError
from onshape_client.oas.model_utils import (  # noqa: F401
    check_allowed_values,
    check_validations,
    file_type,
    int,
    none_type,
    str,
    validate_and_convert_types,
)
from onshape_client.oas.models import bt_bounding_box_info
from onshape_client.oas.models import bt_configuration_response2019
from onshape_client.oas.models import bt_document_element_info
from onshape_client.oas.models import bt_export_model_bodies_response734
from onshape_client.oas.models import bt_export_tessellated_edges_response327
from onshape_client.oas.models import bt_export_tessellated_faces_response898
from onshape_client.oas.models import bt_feature_api_base1430
from onshape_client.oas.models import bt_feature_definition_call1406
from onshape_client.oas.models import bt_feature_definition_response1617
from onshape_client.oas.models import bt_feature_list_response2457
from onshape_client.oas.models import bt_feature_script_eval_call2377
from onshape_client.oas.models import bt_feature_script_eval_response1859
from onshape_client.oas.models import bt_feature_specs_response664
from onshape_client.oas.models import bt_id_translation_info
from onshape_client.oas.models import bt_id_translation_params
from onshape_client.oas.models import bt_mass_properties_bulk_info
from onshape_client.oas.models import bt_model_element_params
from onshape_client.oas.models import bt_named_views_info
from onshape_client.oas.models import bt_root_diff_info
from onshape_client.oas.models import bt_set_feature_rollback_response1042
from onshape_client.oas.models import bt_shaded_views_info
from onshape_client.oas.models import bt_translate_format_params
from onshape_client.oas.models import bt_translation_request_info
from onshape_client.oas.models import bt_update_features_response1333


class PartStudiosApi(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_part_studio_feature(self, did, wvm, wvmid, eid, **kwargs):
            """Add Feature  # 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_part_studio_feature(did, wvm, wvmid, eid, async_req=True)
            >>> result = thread.get()

            Args:
                did (str):
                wvm (str):
                wvmid (str):
                eid (str):

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

            Returns:
                bt_feature_definition_response1617.BTFeatureDefinitionResponse1617
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs["async_req"] = kwargs.get("async_req", False)
            kwargs["_return_http_data_only"] = kwargs.get(
                "_return_http_data_only", True
            )
            kwargs["_preload_content"] = kwargs.get("_preload_content", True)
            kwargs["_request_timeout"] = kwargs.get("_request_timeout", None)
            kwargs["_check_input_type"] = kwargs.get("_check_input_type", True)
            kwargs["_check_return_type"] = kwargs.get("_check_return_type", True)
            kwargs["_host_index"] = kwargs.get("_host_index", 0)
            kwargs["did"] = did
            kwargs["wvm"] = wvm
            kwargs["wvmid"] = wvmid
            kwargs["eid"] = eid
            return self.call_with_http_info(**kwargs)

        self.add_part_studio_feature = Endpoint(
            settings={
                "response_type": (
                    bt_feature_definition_response1617.BTFeatureDefinitionResponse1617,
                ),
                "auth": ["OAuth2"],
                "endpoint_path": "/api/partstudios/d/{did}/{wvm}/{wvmid}/e/{eid}/features",
                "operation_id": "add_part_studio_feature",
                "http_method": "POST",
                "servers": [],
            },
            params_map={
                "all": [
                    "did",
                    "wvm",
                    "wvmid",
                    "eid",
                    "bt_feature_definition_call_1406",
                ],
                "required": ["did", "wvm", "wvmid", "eid",],
                "nullable": [],
                "enum": [],
                "validation": [],
            },
            root_map={
                "validations": {},
                "allowed_values": {},
                "openapi_types": {
                    "did": (str,),
                    "wvm": (str,),
                    "wvmid": (str,),
                    "eid": (str,),
                    "bt_feature_definition_call_1406": (
                        bt_feature_definition_call1406.BTFeatureDefinitionCall1406,
                    ),
                },
                "attribute_map": {
                    "did": "did",
                    "wvm": "wvm",
                    "wvmid": "wvmid",
                    "eid": "eid",
                },
                "location_map": {
                    "did": "path",
                    "wvm": "path",
                    "wvmid": "path",
                    "eid": "path",
                    "bt_feature_definition_call_1406": "body",
                },
                "collection_format_map": {},
            },
            headers_map={
                "accept": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
                "content_type": [
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2"
                ],
            },
            api_client=api_client,
            callable=__add_part_studio_feature,
        )

        def __compare_part_studios(self, did, wvm, wvmid, eid, **kwargs):
            """Compare Part Studios  # noqa: E501

            This method makes a synchronous HTTP request by default. To make an
            asynchronous HTTP request, please pass async_req=True
            >>> thread = api.compare_part_studios(did, wvm, wvmid, eid, async_req=True)
            >>> result = thread.get()

            Args:
                did (str): Document ID.
                wvm (str): One of w or v or m corresponding to whether a workspace or version or microversion was entered.
                wvmid (str): Workspace (w), Version (v) or Microversion (m) ID.
                eid (str): Element ID.

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

            Returns:
                bt_root_diff_info.BTRootDiffInfo
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs["async_req"] = kwargs.get("async_req", False)
            kwargs["_return_http_data_only"] = kwargs.get(
                "_return_http_data_only", True
            )
            kwargs["_preload_content"] = kwargs.get("_preload_content", True)
            kwargs["_request_timeout"] = kwargs.get("_request_timeout", None)
            kwargs["_check_input_type"] = kwargs.get("_check_input_type", True)
            kwargs["_check_return_type"] = kwargs.get("_check_return_type", True)
            kwargs["_host_index"] = kwargs.get("_host_index", 0)
            kwargs["did"] = did
            kwargs["wvm"] = wvm
            kwargs["wvmid"] = wvmid
            kwargs["eid"] = eid
            return self.call_with_http_info(**kwargs)

        self.compare_part_studios = Endpoint(
            settings={
                "response_type": (bt_root_diff_info.BTRootDiffInfo,),
                "auth": ["OAuth2"],
                "endpoint_path": "/api/partstudios/d/{did}/{wvm}/{wvmid}/e/{eid}/compare",
                "operation_id": "compare_part_studios",
                "http_method": "GET",
                "servers": [],
            },
            params_map={
                "all": [
                    "did",
                    "wvm",
                    "wvmid",
                    "eid",
                    "workspace_id",
                    "version_id",
                    "microversion_id",
                    "source_configuration",
                    "target_configuration",
                    "link_document_id",
                ],
                "required": ["did", "wvm", "wvmid", "eid",],
                "nullable": [],
                "enum": [],
                "validation": [],
            },
            root_map={
                "validations": {},
                "allowed_values": {},
                "openapi_types": {
                    "did": (str,),
                    "wvm": (str,),
                    "wvmid": (str,),
                    "eid": (str,),
                    "workspace_id": (str,),
                    "version_id": (str,),
                    "microversion_id": (str,),
                    "source_configuration": (str,),
                    "target_configuration": (str,),
                    "link_document_id": (str,),
                },
                "attribute_map": {
                    "did": "did",
                    "wvm": "wvm",
                    "wvmid": "wvmid",
                    "eid": "eid",
                    "workspace_id": "workspaceId",
                    "version_id": "versionId",
                    "microversion_id": "microversionId",
                    "source_configuration": "sourceConfiguration",
                    "target_configuration": "targetConfiguration",
                    "link_document_id": "linkDocumentId",
                },
                "location_map": {
                    "did": "path",
                    "wvm": "path",
                    "wvmid": "path",
                    "eid": "path",
                    "workspace_id": "query",
                    "version_id": "query",
                    "microversion_id": "query",
                    "source_configuration": "query",
                    "target_configuration": "query",
                    "link_document_id": "query",
                },
                "collection_format_map": {},
            },
            headers_map={
                "accept": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
                "content_type": [],
            },
            api_client=api_client,
            callable=__compare_part_studios,
        )

        def __create_part_studio(self, did, wid, bt_model_element_params, **kwargs):
            """Create Part Studio  # 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_part_studio(did, wid, bt_model_element_params, async_req=True)
            >>> result = thread.get()

            Args:
                did (str): Document ID.
                wid (str): Workspace ID.
                bt_model_element_params (bt_model_element_params.BTModelElementParams):

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

            Returns:
                bt_document_element_info.BTDocumentElementInfo
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs["async_req"] = kwargs.get("async_req", False)
            kwargs["_return_http_data_only"] = kwargs.get(
                "_return_http_data_only", True
            )
            kwargs["_preload_content"] = kwargs.get("_preload_content", True)
            kwargs["_request_timeout"] = kwargs.get("_request_timeout", None)
            kwargs["_check_input_type"] = kwargs.get("_check_input_type", True)
            kwargs["_check_return_type"] = kwargs.get("_check_return_type", True)
            kwargs["_host_index"] = kwargs.get("_host_index", 0)
            kwargs["did"] = did
            kwargs["wid"] = wid
            kwargs["bt_model_element_params"] = bt_model_element_params
            return self.call_with_http_info(**kwargs)

        self.create_part_studio = Endpoint(
            settings={
                "response_type": (bt_document_element_info.BTDocumentElementInfo,),
                "auth": ["OAuth2"],
                "endpoint_path": "/api/partstudios/d/{did}/w/{wid}",
                "operation_id": "create_part_studio",
                "http_method": "POST",
                "servers": [],
            },
            params_map={
                "all": ["did", "wid", "bt_model_element_params",],
                "required": ["did", "wid", "bt_model_element_params",],
                "nullable": [],
                "enum": [],
                "validation": [],
            },
            root_map={
                "validations": {},
                "allowed_values": {},
                "openapi_types": {
                    "did": (str,),
                    "wid": (str,),
                    "bt_model_element_params": (
                        bt_model_element_params.BTModelElementParams,
                    ),
                },
                "attribute_map": {"did": "did", "wid": "wid",},
                "location_map": {
                    "did": "path",
                    "wid": "path",
                    "bt_model_element_params": "body",
                },
                "collection_format_map": {},
            },
            headers_map={
                "accept": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
                "content_type": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
            },
            api_client=api_client,
            callable=__create_part_studio,
        )

        def __create_part_studio_translation(
            self, did, wv, wvid, eid, bt_translate_format_params, **kwargs
        ):
            """Create Part Studio translation  # 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_part_studio_translation(did, wv, wvid, eid, bt_translate_format_params, async_req=True)
            >>> result = thread.get()

            Args:
                did (str): Document ID.
                wv (str): One of w or v corresponding to whether a workspace or version was specified.
                wvid (str): Workspace (w) or Version (v) ID.
                eid (str): Element ID.
                bt_translate_format_params (bt_translate_format_params.BTTranslateFormatParams):

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

            Returns:
                bt_translation_request_info.BTTranslationRequestInfo
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs["async_req"] = kwargs.get("async_req", False)
            kwargs["_return_http_data_only"] = kwargs.get(
                "_return_http_data_only", True
            )
            kwargs["_preload_content"] = kwargs.get("_preload_content", True)
            kwargs["_request_timeout"] = kwargs.get("_request_timeout", None)
            kwargs["_check_input_type"] = kwargs.get("_check_input_type", True)
            kwargs["_check_return_type"] = kwargs.get("_check_return_type", True)
            kwargs["_host_index"] = kwargs.get("_host_index", 0)
            kwargs["did"] = did
            kwargs["wv"] = wv
            kwargs["wvid"] = wvid
            kwargs["eid"] = eid
            kwargs["bt_translate_format_params"] = bt_translate_format_params
            return self.call_with_http_info(**kwargs)

        self.create_part_studio_translation = Endpoint(
            settings={
                "response_type": (
                    bt_translation_request_info.BTTranslationRequestInfo,
                ),
                "auth": ["OAuth2"],
                "endpoint_path": "/api/partstudios/d/{did}/{wv}/{wvid}/e/{eid}/translations",
                "operation_id": "create_part_studio_translation",
                "http_method": "POST",
                "servers": [],
            },
            params_map={
                "all": ["did", "wv", "wvid", "eid", "bt_translate_format_params",],
                "required": ["did", "wv", "wvid", "eid", "bt_translate_format_params",],
                "nullable": [],
                "enum": [],
                "validation": [],
            },
            root_map={
                "validations": {},
                "allowed_values": {},
                "openapi_types": {
                    "did": (str,),
                    "wv": (str,),
                    "wvid": (str,),
                    "eid": (str,),
                    "bt_translate_format_params": (
                        bt_translate_format_params.BTTranslateFormatParams,
                    ),
                },
                "attribute_map": {
                    "did": "did",
                    "wv": "wv",
                    "wvid": "wvid",
                    "eid": "eid",
                },
                "location_map": {
                    "did": "path",
                    "wv": "path",
                    "wvid": "path",
                    "eid": "path",
                    "bt_translate_format_params": "body",
                },
                "collection_format_map": {},
            },
            headers_map={
                "accept": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
                "content_type": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
            },
            api_client=api_client,
            callable=__create_part_studio_translation,
        )

        def __delete_part_studio_feature(self, did, wid, eid, fid, **kwargs):
            """Delete Feature  # 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_part_studio_feature(did, wid, eid, fid, async_req=True)
            >>> result = thread.get()

            Args:
                did (str): Document ID.
                wid (str): Workspace ID.
                eid (str): Element ID.
                fid (str): The id of the feature being updated. This id should be URL encoded and must match the featureId found in the serialized structure

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

            Returns:
                bt_feature_api_base1430.BTFeatureApiBase1430
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs["async_req"] = kwargs.get("async_req", False)
            kwargs["_return_http_data_only"] = kwargs.get(
                "_return_http_data_only", True
            )
            kwargs["_preload_content"] = kwargs.get("_preload_content", True)
            kwargs["_request_timeout"] = kwargs.get("_request_timeout", None)
            kwargs["_check_input_type"] = kwargs.get("_check_input_type", True)
            kwargs["_check_return_type"] = kwargs.get("_check_return_type", True)
            kwargs["_host_index"] = kwargs.get("_host_index", 0)
            kwargs["did"] = did
            kwargs["wid"] = wid
            kwargs["eid"] = eid
            kwargs["fid"] = fid
            return self.call_with_http_info(**kwargs)

        self.delete_part_studio_feature = Endpoint(
            settings={
                "response_type": (bt_feature_api_base1430.BTFeatureApiBase1430,),
                "auth": ["OAuth2"],
                "endpoint_path": "/api/partstudios/d/{did}/w/{wid}/e/{eid}/features/featureid/{fid}",
                "operation_id": "delete_part_studio_feature",
                "http_method": "DELETE",
                "servers": [],
            },
            params_map={
                "all": ["did", "wid", "eid", "fid",],
                "required": ["did", "wid", "eid", "fid",],
                "nullable": [],
                "enum": [],
                "validation": [],
            },
            root_map={
                "validations": {},
                "allowed_values": {},
                "openapi_types": {
                    "did": (str,),
                    "wid": (str,),
                    "eid": (str,),
                    "fid": (str,),
                },
                "attribute_map": {
                    "did": "did",
                    "wid": "wid",
                    "eid": "eid",
                    "fid": "fid",
                },
                "location_map": {
                    "did": "path",
                    "wid": "path",
                    "eid": "path",
                    "fid": "path",
                },
                "collection_format_map": {},
            },
            headers_map={
                "accept": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
                "content_type": [],
            },
            api_client=api_client,
            callable=__delete_part_studio_feature,
        )

        def __eval_feature_script(self, did, wvm, wvmid, eid, **kwargs):
            """Evaluate FeatureScript  # noqa: E501

            This method makes a synchronous HTTP request by default. To make an
            asynchronous HTTP request, please pass async_req=True
            >>> thread = api.eval_feature_script(did, wvm, wvmid, eid, async_req=True)
            >>> result = thread.get()

            Args:
                did (str): Document ID.
                wvm (str): One of w or v or m corresponding to whether a workspace or version or microversion was entered.
                wvmid (str): Workspace (w), Version (v) or Microversion (m) ID.
                eid (str): Element ID.

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

            Returns:
                bt_feature_script_eval_response1859.BTFeatureScriptEvalResponse1859
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs["async_req"] = kwargs.get("async_req", False)
            kwargs["_return_http_data_only"] = kwargs.get(
                "_return_http_data_only", True
            )
            kwargs["_preload_content"] = kwargs.get("_preload_content", True)
            kwargs["_request_timeout"] = kwargs.get("_request_timeout", None)
            kwargs["_check_input_type"] = kwargs.get("_check_input_type", True)
            kwargs["_check_return_type"] = kwargs.get("_check_return_type", True)
            kwargs["_host_index"] = kwargs.get("_host_index", 0)
            kwargs["did"] = did
            kwargs["wvm"] = wvm
            kwargs["wvmid"] = wvmid
            kwargs["eid"] = eid
            return self.call_with_http_info(**kwargs)

        self.eval_feature_script = Endpoint(
            settings={
                "response_type": (
                    bt_feature_script_eval_response1859.BTFeatureScriptEvalResponse1859,
                ),
                "auth": ["OAuth2"],
                "endpoint_path": "/api/partstudios/d/{did}/{wvm}/{wvmid}/e/{eid}/featurescript",
                "operation_id": "eval_feature_script",
                "http_method": "POST",
                "servers": [],
            },
            params_map={
                "all": [
                    "did",
                    "wvm",
                    "wvmid",
                    "eid",
                    "configuration",
                    "bt_feature_script_eval_call_2377",
                ],
                "required": ["did", "wvm", "wvmid", "eid",],
                "nullable": [],
                "enum": [],
                "validation": [],
            },
            root_map={
                "validations": {},
                "allowed_values": {},
                "openapi_types": {
                    "did": (str,),
                    "wvm": (str,),
                    "wvmid": (str,),
                    "eid": (str,),
                    "configuration": (str,),
                    "bt_feature_script_eval_call_2377": (
                        bt_feature_script_eval_call2377.BTFeatureScriptEvalCall2377,
                    ),
                },
                "attribute_map": {
                    "did": "did",
                    "wvm": "wvm",
                    "wvmid": "wvmid",
                    "eid": "eid",
                    "configuration": "configuration",
                },
                "location_map": {
                    "did": "path",
                    "wvm": "path",
                    "wvmid": "path",
                    "eid": "path",
                    "configuration": "query",
                    "bt_feature_script_eval_call_2377": "body",
                },
                "collection_format_map": {},
            },
            headers_map={
                "accept": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
                "content_type": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
            },
            api_client=api_client,
            callable=__eval_feature_script,
        )

        def __export_ps1(self, did, wvm, wvmid, eid, **kwargs):
            """Export Part Studio to Parasolid  # 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_ps1(did, wvm, wvmid, eid, async_req=True)
            >>> result = thread.get()

            Args:
                did (str): Document ID.
                wvm (str): One of w or v or m corresponding to whether a workspace or version or microversion was entered.
                wvmid (str): Workspace (w), Version (v) or Microversion (m) ID.
                eid (str): Element ID.

            Keyword Args:
                part_ids (str): IDs of the parts to retrieve. Repeat query param to add more than one (i.e. partId&#x3D;JHK&amp;partId&#x3D;JHD). May not be combined with other ID filters. [optional]
                version (str): Parasolid version. [optional] if omitted the server will use the default value of '0'
                include_export_ids (bool): Whether topolgy ids should be exported as parasolid attributes. [optional] if omitted the server will use the default value of False
                configuration (str): Configuration string.. [optional]
                link_document_id (str): Id of document that links to the document being accessed. This may provide additional access rights to the document. Allowed only with version (v) path parameter.. [optional]
                _return_http_data_only (bool): response data without head status
                    code and headers. Default is True.
                _preload_content (bool): if False, the urllib3.HTTPResponse object
                    will be returned without reading/decoding response data.
                    Default is True.
                _request_timeout (float/tuple): timeout setting for this request. If one
                    number provided, it will be total request timeout. It can also
                    be a pair (tuple) of (connection, read) timeouts.
                    Default is None.
                _check_input_type (bool): specifies if type checking
                    should be done one the data sent to the server.
                    Default is True.
                _check_return_type (bool): specifies if type checking
                    should be done one the data received from the server.
                    Default is True.
                _host_index (int): specifies the index of the server
                    that we want to use.
                    Default is 0.
                async_req (bool): execute request asynchronously

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

        self.export_ps1 = Endpoint(
            settings={
                "response_type": None,
                "auth": ["OAuth2"],
                "endpoint_path": "/api/partstudios/d/{did}/{wvm}/{wvmid}/e/{eid}/parasolid",
                "operation_id": "export_ps1",
                "http_method": "GET",
                "servers": [],
            },
            params_map={
                "all": [
                    "did",
                    "wvm",
                    "wvmid",
                    "eid",
                    "part_ids",
                    "version",
                    "include_export_ids",
                    "configuration",
                    "link_document_id",
                ],
                "required": ["did", "wvm", "wvmid", "eid",],
                "nullable": [],
                "enum": [],
                "validation": [],
            },
            root_map={
                "validations": {},
                "allowed_values": {},
                "openapi_types": {
                    "did": (str,),
                    "wvm": (str,),
                    "wvmid": (str,),
                    "eid": (str,),
                    "part_ids": (str,),
                    "version": (str,),
                    "include_export_ids": (bool,),
                    "configuration": (str,),
                    "link_document_id": (str,),
                },
                "attribute_map": {
                    "did": "did",
                    "wvm": "wvm",
                    "wvmid": "wvmid",
                    "eid": "eid",
                    "part_ids": "partIds",
                    "version": "version",
                    "include_export_ids": "includeExportIds",
                    "configuration": "configuration",
                    "link_document_id": "linkDocumentId",
                },
                "location_map": {
                    "did": "path",
                    "wvm": "path",
                    "wvmid": "path",
                    "eid": "path",
                    "part_ids": "query",
                    "version": "query",
                    "include_export_ids": "query",
                    "configuration": "query",
                    "link_document_id": "query",
                },
                "collection_format_map": {},
            },
            headers_map={"accept": [], "content_type": [],},
            api_client=api_client,
            callable=__export_ps1,
        )

        def __export_stl1(self, did, wvm, wvmid, eid, **kwargs):
            """Export Part Studio to STL  # 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_stl1(did, wvm, wvmid, eid, async_req=True)
            >>> result = thread.get()

            Args:
                did (str): Document ID.
                wvm (str): One of w or v or m corresponding to whether a workspace or version or microversion was entered.
                wvmid (str): Workspace (w), Version (v) or Microversion (m) ID.
                eid (str): Element ID.

            Keyword Args:
                part_ids (str): IDs of the parts to retrieve. Repeat query param to add more than one (i.e. partId&#x3D;JHK&amp;partId&#x3D;JHD). May not be combined with other ID filters. [optional]
                mode (str): Type of file: text, binary. [optional] if omitted the server will use the default value of 'text'
                grouping (bool): Whether parts should be exported as a group or individually in a .zip file. [optional] if omitted the server will use the default value of True
                scale (float): Scale for measurements.. [optional] if omitted the server will use the default value of 1.0
                units (str): Name of base unit (meter, centimeter, millimeter, inch, foot, or yard). [optional] if omitted the server will use the default value of 'inch'
                angle_tolerance (float): Angle tolerance (in radians). This specifies the limit on the sum of the angular deviations of a tessellation chord from the tangent vectors at two chord endpoints. The specified value must be less than PI/2. This parameter currently has a default value chosen based on the complexity of the parts being tessellated.. [optional]
                chord_tolerance (float): Chord tolerance (in meters). This specifies the limit on the maximum deviation of a tessellation chord from the true surface/edge. This parameter currently has a default value chosen based on the size and complexity of the parts being tessellated.. [optional]
                max_facet_width (float): Max facet width. This specifies the limit on the size of any side of a tessellation facet.. [optional]
                min_facet_width (float): Max facet width. This specifies the limit on the size of any side of a tessellation facet.. [optional]
                configuration (str): Configuration string.. [optional]
                link_document_id (str): Id of document that links to the document being accessed. This may provide additional access rights to the document. Allowed only with version (v) path parameter.. [optional]
                _return_http_data_only (bool): response data without head status
                    code and headers. Default is True.
                _preload_content (bool): if False, the urllib3.HTTPResponse object
                    will be returned without reading/decoding response data.
                    Default is True.
                _request_timeout (float/tuple): timeout setting for this request. If one
                    number provided, it will be total request timeout. It can also
                    be a pair (tuple) of (connection, read) timeouts.
                    Default is None.
                _check_input_type (bool): specifies if type checking
                    should be done one the data sent to the server.
                    Default is True.
                _check_return_type (bool): specifies if type checking
                    should be done one the data received from the server.
                    Default is True.
                _host_index (int): specifies the index of the server
                    that we want to use.
                    Default is 0.
                async_req (bool): execute request asynchronously

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

        self.export_stl1 = Endpoint(
            settings={
                "response_type": None,
                "auth": ["OAuth2"],
                "endpoint_path": "/api/partstudios/d/{did}/{wvm}/{wvmid}/e/{eid}/stl",
                "operation_id": "export_stl1",
                "http_method": "GET",
                "servers": [],
            },
            params_map={
                "all": [
                    "did",
                    "wvm",
                    "wvmid",
                    "eid",
                    "part_ids",
                    "mode",
                    "grouping",
                    "scale",
                    "units",
                    "angle_tolerance",
                    "chord_tolerance",
                    "max_facet_width",
                    "min_facet_width",
                    "configuration",
                    "link_document_id",
                ],
                "required": ["did", "wvm", "wvmid", "eid",],
                "nullable": [],
                "enum": [],
                "validation": [],
            },
            root_map={
                "validations": {},
                "allowed_values": {},
                "openapi_types": {
                    "did": (str,),
                    "wvm": (str,),
                    "wvmid": (str,),
                    "eid": (str,),
                    "part_ids": (str,),
                    "mode": (str,),
                    "grouping": (bool,),
                    "scale": (float,),
                    "units": (str,),
                    "angle_tolerance": (float,),
                    "chord_tolerance": (float,),
                    "max_facet_width": (float,),
                    "min_facet_width": (float,),
                    "configuration": (str,),
                    "link_document_id": (str,),
                },
                "attribute_map": {
                    "did": "did",
                    "wvm": "wvm",
                    "wvmid": "wvmid",
                    "eid": "eid",
                    "part_ids": "partIds",
                    "mode": "mode",
                    "grouping": "grouping",
                    "scale": "scale",
                    "units": "units",
                    "angle_tolerance": "angleTolerance",
                    "chord_tolerance": "chordTolerance",
                    "max_facet_width": "maxFacetWidth",
                    "min_facet_width": "minFacetWidth",
                    "configuration": "configuration",
                    "link_document_id": "linkDocumentId",
                },
                "location_map": {
                    "did": "path",
                    "wvm": "path",
                    "wvmid": "path",
                    "eid": "path",
                    "part_ids": "query",
                    "mode": "query",
                    "grouping": "query",
                    "scale": "query",
                    "units": "query",
                    "angle_tolerance": "query",
                    "chord_tolerance": "query",
                    "max_facet_width": "query",
                    "min_facet_width": "query",
                    "configuration": "query",
                    "link_document_id": "query",
                },
                "collection_format_map": {},
            },
            headers_map={"accept": [], "content_type": [],},
            api_client=api_client,
            callable=__export_stl1,
        )

        def __get_part_studio_body_details(self, did, wvm, wvmid, eid, **kwargs):
            """Array of body information  # 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_part_studio_body_details(did, wvm, wvmid, eid, async_req=True)
            >>> result = thread.get()

            Args:
                did (str):
                wvm (str):
                wvmid (str):
                eid (str):

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

            Returns:
                bt_export_model_bodies_response734.BTExportModelBodiesResponse734
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs["async_req"] = kwargs.get("async_req", False)
            kwargs["_return_http_data_only"] = kwargs.get(
                "_return_http_data_only", True
            )
            kwargs["_preload_content"] = kwargs.get("_preload_content", True)
            kwargs["_request_timeout"] = kwargs.get("_request_timeout", None)
            kwargs["_check_input_type"] = kwargs.get("_check_input_type", True)
            kwargs["_check_return_type"] = kwargs.get("_check_return_type", True)
            kwargs["_host_index"] = kwargs.get("_host_index", 0)
            kwargs["did"] = did
            kwargs["wvm"] = wvm
            kwargs["wvmid"] = wvmid
            kwargs["eid"] = eid
            return self.call_with_http_info(**kwargs)

        self.get_part_studio_body_details = Endpoint(
            settings={
                "response_type": (
                    bt_export_model_bodies_response734.BTExportModelBodiesResponse734,
                ),
                "auth": ["OAuth2"],
                "endpoint_path": "/api/partstudios/d/{did}/{wvm}/{wvmid}/e/{eid}/bodydetails",
                "operation_id": "get_part_studio_body_details",
                "http_method": "GET",
                "servers": [],
            },
            params_map={
                "all": [
                    "did",
                    "wvm",
                    "wvmid",
                    "eid",
                    "configuration",
                    "link_document_id",
                    "rollback_bar_index",
                    "body",
                ],
                "required": ["did", "wvm", "wvmid", "eid",],
                "nullable": [],
                "enum": [],
                "validation": [],
            },
            root_map={
                "validations": {},
                "allowed_values": {},
                "openapi_types": {
                    "did": (str,),
                    "wvm": (str,),
                    "wvmid": (str,),
                    "eid": (str,),
                    "configuration": (str,),
                    "link_document_id": (str,),
                    "rollback_bar_index": (int,),
                    "body": (str,),
                },
                "attribute_map": {
                    "did": "did",
                    "wvm": "wvm",
                    "wvmid": "wvmid",
                    "eid": "eid",
                    "configuration": "configuration",
                    "link_document_id": "linkDocumentId",
                    "rollback_bar_index": "rollbackBarIndex",
                },
                "location_map": {
                    "did": "path",
                    "wvm": "path",
                    "wvmid": "path",
                    "eid": "path",
                    "configuration": "query",
                    "link_document_id": "query",
                    "rollback_bar_index": "query",
                    "body": "body",
                },
                "collection_format_map": {},
            },
            headers_map={
                "accept": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
                "content_type": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
            },
            api_client=api_client,
            callable=__get_part_studio_body_details,
        )

        def __get_part_studio_bounding_boxes(self, did, wvm, wvmid, eid, **kwargs):
            """Mass properties of parts or a PartStudio.  # 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_part_studio_bounding_boxes(did, wvm, wvmid, eid, async_req=True)
            >>> result = thread.get()

            Args:
                did (str): Document ID.
                wvm (str): One of w or v or m corresponding to whether a workspace or version or microversion was entered.
                wvmid (str): Workspace (w), Version (v) or Microversion (m) ID.
                eid (str): Element ID.

            Keyword Args:
                include_hidden (bool): Whether or not to include bounding boxes for hidden parts.. [optional] if omitted the server will use the default value of False
                include_wire_bodies (bool): Whether to include wire bodies in the bounding box.. [optional] if omitted the server will use the default value of True
                configuration (str): Configuration string.. [optional]
                link_document_id (str): Id of document that links to the document being accessed. This may provide additional access rights to the document. Allowed only with version (v) path parameter.. [optional]
                _return_http_data_only (bool): response data without head status
                    code and headers. Default is True.
                _preload_content (bool): if False, the urllib3.HTTPResponse object
                    will be returned without reading/decoding response data.
                    Default is True.
                _request_timeout (float/tuple): timeout setting for this request. If one
                    number provided, it will be total request timeout. It can also
                    be a pair (tuple) of (connection, read) timeouts.
                    Default is None.
                _check_input_type (bool): specifies if type checking
                    should be done one the data sent to the server.
                    Default is True.
                _check_return_type (bool): specifies if type checking
                    should be done one the data received from the server.
                    Default is True.
                _host_index (int): specifies the index of the server
                    that we want to use.
                    Default is 0.
                async_req (bool): execute request asynchronously

            Returns:
                bt_bounding_box_info.BTBoundingBoxInfo
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs["async_req"] = kwargs.get("async_req", False)
            kwargs["_return_http_data_only"] = kwargs.get(
                "_return_http_data_only", True
            )
            kwargs["_preload_content"] = kwargs.get("_preload_content", True)
            kwargs["_request_timeout"] = kwargs.get("_request_timeout", None)
            kwargs["_check_input_type"] = kwargs.get("_check_input_type", True)
            kwargs["_check_return_type"] = kwargs.get("_check_return_type", True)
            kwargs["_host_index"] = kwargs.get("_host_index", 0)
            kwargs["did"] = did
            kwargs["wvm"] = wvm
            kwargs["wvmid"] = wvmid
            kwargs["eid"] = eid
            return self.call_with_http_info(**kwargs)

        self.get_part_studio_bounding_boxes = Endpoint(
            settings={
                "response_type": (bt_bounding_box_info.BTBoundingBoxInfo,),
                "auth": ["OAuth2"],
                "endpoint_path": "/api/partstudios/d/{did}/{wvm}/{wvmid}/e/{eid}/boundingboxes",
                "operation_id": "get_part_studio_bounding_boxes",
                "http_method": "GET",
                "servers": [],
            },
            params_map={
                "all": [
                    "did",
                    "wvm",
                    "wvmid",
                    "eid",
                    "include_hidden",
                    "include_wire_bodies",
                    "configuration",
                    "link_document_id",
                ],
                "required": ["did", "wvm", "wvmid", "eid",],
                "nullable": [],
                "enum": [],
                "validation": [],
            },
            root_map={
                "validations": {},
                "allowed_values": {},
                "openapi_types": {
                    "did": (str,),
                    "wvm": (str,),
                    "wvmid": (str,),
                    "eid": (str,),
                    "include_hidden": (bool,),
                    "include_wire_bodies": (bool,),
                    "configuration": (str,),
                    "link_document_id": (str,),
                },
                "attribute_map": {
                    "did": "did",
                    "wvm": "wvm",
                    "wvmid": "wvmid",
                    "eid": "eid",
                    "include_hidden": "includeHidden",
                    "include_wire_bodies": "includeWireBodies",
                    "configuration": "configuration",
                    "link_document_id": "linkDocumentId",
                },
                "location_map": {
                    "did": "path",
                    "wvm": "path",
                    "wvmid": "path",
                    "eid": "path",
                    "include_hidden": "query",
                    "include_wire_bodies": "query",
                    "configuration": "query",
                    "link_document_id": "query",
                },
                "collection_format_map": {},
            },
            headers_map={
                "accept": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
                "content_type": [],
            },
            api_client=api_client,
            callable=__get_part_studio_bounding_boxes,
        )

        def __get_part_studio_configuration(self, did, wvm, wvmid, eid, **kwargs):
            """Get Configuration  # 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_part_studio_configuration(did, wvm, wvmid, eid, async_req=True)
            >>> result = thread.get()

            Args:
                did (str):
                wvm (str):
                wvmid (str):
                eid (str):

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

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

        self.get_part_studio_configuration = Endpoint(
            settings={
                "response_type": None,
                "auth": ["OAuth2"],
                "endpoint_path": "/api/partstudios/d/{did}/{wvm}/{wvmid}/e/{eid}/configuration",
                "operation_id": "get_part_studio_configuration",
                "http_method": "GET",
                "servers": [],
            },
            params_map={
                "all": ["did", "wvm", "wvmid", "eid",],
                "required": ["did", "wvm", "wvmid", "eid",],
                "nullable": [],
                "enum": [],
                "validation": [],
            },
            root_map={
                "validations": {},
                "allowed_values": {},
                "openapi_types": {
                    "did": (str,),
                    "wvm": (str,),
                    "wvmid": (str,),
                    "eid": (str,),
                },
                "attribute_map": {
                    "did": "did",
                    "wvm": "wvm",
                    "wvmid": "wvmid",
                    "eid": "eid",
                },
                "location_map": {
                    "did": "path",
                    "wvm": "path",
                    "wvmid": "path",
                    "eid": "path",
                },
                "collection_format_map": {},
            },
            headers_map={"accept": [], "content_type": [],},
            api_client=api_client,
            callable=__get_part_studio_configuration,
        )

        def __get_part_studio_feature_specs(self, did, wvm, wvmid, eid, **kwargs):
            """Get Feature Specs  # 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_part_studio_feature_specs(did, wvm, wvmid, eid, async_req=True)
            >>> result = thread.get()

            Args:
                did (str): Document ID.
                wvm (str): One of w or v or m corresponding to whether a workspace or version or microversion was entered.
                wvmid (str): Workspace (w), Version (v) or Microversion (m) ID.
                eid (str): Element ID.

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

            Returns:
                bt_feature_specs_response664.BTFeatureSpecsResponse664
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs["async_req"] = kwargs.get("async_req", False)
            kwargs["_return_http_data_only"] = kwargs.get(
                "_return_http_data_only", True
            )
            kwargs["_preload_content"] = kwargs.get("_preload_content", True)
            kwargs["_request_timeout"] = kwargs.get("_request_timeout", None)
            kwargs["_check_input_type"] = kwargs.get("_check_input_type", True)
            kwargs["_check_return_type"] = kwargs.get("_check_return_type", True)
            kwargs["_host_index"] = kwargs.get("_host_index", 0)
            kwargs["did"] = did
            kwargs["wvm"] = wvm
            kwargs["wvmid"] = wvmid
            kwargs["eid"] = eid
            return self.call_with_http_info(**kwargs)

        self.get_part_studio_feature_specs = Endpoint(
            settings={
                "response_type": (
                    bt_feature_specs_response664.BTFeatureSpecsResponse664,
                ),
                "auth": ["OAuth2"],
                "endpoint_path": "/api/partstudios/d/{did}/{wvm}/{wvmid}/e/{eid}/featurespecs",
                "operation_id": "get_part_studio_feature_specs",
                "http_method": "GET",
                "servers": [],
            },
            params_map={
                "all": ["did", "wvm", "wvmid", "eid",],
                "required": ["did", "wvm", "wvmid", "eid",],
                "nullable": [],
                "enum": [],
                "validation": [],
            },
            root_map={
                "validations": {},
                "allowed_values": {},
                "openapi_types": {
                    "did": (str,),
                    "wvm": (str,),
                    "wvmid": (str,),
                    "eid": (str,),
                },
                "attribute_map": {
                    "did": "did",
                    "wvm": "wvm",
                    "wvmid": "wvmid",
                    "eid": "eid",
                },
                "location_map": {
                    "did": "path",
                    "wvm": "path",
                    "wvmid": "path",
                    "eid": "path",
                },
                "collection_format_map": {},
            },
            headers_map={
                "accept": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
                "content_type": [],
            },
            api_client=api_client,
            callable=__get_part_studio_feature_specs,
        )

        def __get_part_studio_features(self, did, wvm, wvmid, eid, **kwargs):
            """Get Feature List  # 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_part_studio_features(did, wvm, wvmid, eid, async_req=True)
            >>> result = thread.get()

            Args:
                did (str): Document ID.
                wvm (str): One of w or v or m corresponding to whether a workspace or version or microversion was entered.
                wvmid (str): Workspace (w), Version (v) or Microversion (m) ID.
                eid (str): Element ID.

            Keyword Args:
                feature_id ([str]): ID of a feature; repeat query param to add more than one. [optional]
                link_document_id (str): Id of document that links to the document being accessed. This may provide additional access rights to the document. Allowed only with version (v) path parameter.. [optional]
                no_sketch_geometry (bool): Whether or not to output simple sketch info without geometry. [optional] if omitted the server will use the default value of False
                _return_http_data_only (bool): response data without head status
                    code and headers. Default is True.
                _preload_content (bool): if False, the urllib3.HTTPResponse object
                    will be returned without reading/decoding response data.
                    Default is True.
                _request_timeout (float/tuple): timeout setting for this request. If one
                    number provided, it will be total request timeout. It can also
                    be a pair (tuple) of (connection, read) timeouts.
                    Default is None.
                _check_input_type (bool): specifies if type checking
                    should be done one the data sent to the server.
                    Default is True.
                _check_return_type (bool): specifies if type checking
                    should be done one the data received from the server.
                    Default is True.
                _host_index (int): specifies the index of the server
                    that we want to use.
                    Default is 0.
                async_req (bool): execute request asynchronously

            Returns:
                bt_feature_list_response2457.BTFeatureListResponse2457
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs["async_req"] = kwargs.get("async_req", False)
            kwargs["_return_http_data_only"] = kwargs.get(
                "_return_http_data_only", True
            )
            kwargs["_preload_content"] = kwargs.get("_preload_content", True)
            kwargs["_request_timeout"] = kwargs.get("_request_timeout", None)
            kwargs["_check_input_type"] = kwargs.get("_check_input_type", True)
            kwargs["_check_return_type"] = kwargs.get("_check_return_type", True)
            kwargs["_host_index"] = kwargs.get("_host_index", 0)
            kwargs["did"] = did
            kwargs["wvm"] = wvm
            kwargs["wvmid"] = wvmid
            kwargs["eid"] = eid
            return self.call_with_http_info(**kwargs)

        self.get_part_studio_features = Endpoint(
            settings={
                "response_type": (
                    bt_feature_list_response2457.BTFeatureListResponse2457,
                ),
                "auth": ["OAuth2"],
                "endpoint_path": "/api/partstudios/d/{did}/{wvm}/{wvmid}/e/{eid}/features",
                "operation_id": "get_part_studio_features",
                "http_method": "GET",
                "servers": [],
            },
            params_map={
                "all": [
                    "did",
                    "wvm",
                    "wvmid",
                    "eid",
                    "feature_id",
                    "link_document_id",
                    "no_sketch_geometry",
                ],
                "required": ["did", "wvm", "wvmid", "eid",],
                "nullable": [],
                "enum": [],
                "validation": [],
            },
            root_map={
                "validations": {},
                "allowed_values": {},
                "openapi_types": {
                    "did": (str,),
                    "wvm": (str,),
                    "wvmid": (str,),
                    "eid": (str,),
                    "feature_id": ([str],),
                    "link_document_id": (str,),
                    "no_sketch_geometry": (bool,),
                },
                "attribute_map": {
                    "did": "did",
                    "wvm": "wvm",
                    "wvmid": "wvmid",
                    "eid": "eid",
                    "feature_id": "featureId",
                    "link_document_id": "linkDocumentId",
                    "no_sketch_geometry": "noSketchGeometry",
                },
                "location_map": {
                    "did": "path",
                    "wvm": "path",
                    "wvmid": "path",
                    "eid": "path",
                    "feature_id": "query",
                    "link_document_id": "query",
                    "no_sketch_geometry": "query",
                },
                "collection_format_map": {"feature_id": "multi",},
            },
            headers_map={
                "accept": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
                "content_type": [],
            },
            api_client=api_client,
            callable=__get_part_studio_features,
        )

        def __get_part_studio_mass_properties(self, did, wvm, wvmid, eid, **kwargs):
            """Mass properties of parts or a PartStudio.  # 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_part_studio_mass_properties(did, wvm, wvmid, eid, async_req=True)
            >>> result = thread.get()

            Args:
                did (str): Document ID.
                wvm (str): One of w or v or m corresponding to whether a workspace or version or microversion was entered.
                wvmid (str): Workspace (w), Version (v) or Microversion (m) ID.
                eid (str): Element ID.

            Keyword Args:
                part_id ([str]): IDs of the parts to retrieve. Repeat query param to add more than one (i.e. partId&#x3D;JHK&amp;partId&#x3D;JHD). May not be combined with other ID filters. [optional]
                mass_as_group (bool): If true, specified parts will be evaluated as a single object instead of individually. [optional] if omitted the server will use the default value of True
                configuration (str): Configuration string.. [optional]
                link_document_id (str): Id of document that links to the document being accessed. This may provide additional access rights to the document. Allowed only with version (v) path parameter.. [optional]
                _return_http_data_only (bool): response data without head status
                    code and headers. Default is True.
                _preload_content (bool): if False, the urllib3.HTTPResponse object
                    will be returned without reading/decoding response data.
                    Default is True.
                _request_timeout (float/tuple): timeout setting for this request. If one
                    number provided, it will be total request timeout. It can also
                    be a pair (tuple) of (connection, read) timeouts.
                    Default is None.
                _check_input_type (bool): specifies if type checking
                    should be done one the data sent to the server.
                    Default is True.
                _check_return_type (bool): specifies if type checking
                    should be done one the data received from the server.
                    Default is True.
                _host_index (int): specifies the index of the server
                    that we want to use.
                    Default is 0.
                async_req (bool): execute request asynchronously

            Returns:
                bt_mass_properties_bulk_info.BTMassPropertiesBulkInfo
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs["async_req"] = kwargs.get("async_req", False)
            kwargs["_return_http_data_only"] = kwargs.get(
                "_return_http_data_only", True
            )
            kwargs["_preload_content"] = kwargs.get("_preload_content", True)
            kwargs["_request_timeout"] = kwargs.get("_request_timeout", None)
            kwargs["_check_input_type"] = kwargs.get("_check_input_type", True)
            kwargs["_check_return_type"] = kwargs.get("_check_return_type", True)
            kwargs["_host_index"] = kwargs.get("_host_index", 0)
            kwargs["did"] = did
            kwargs["wvm"] = wvm
            kwargs["wvmid"] = wvmid
            kwargs["eid"] = eid
            return self.call_with_http_info(**kwargs)

        self.get_part_studio_mass_properties = Endpoint(
            settings={
                "response_type": (
                    bt_mass_properties_bulk_info.BTMassPropertiesBulkInfo,
                ),
                "auth": ["OAuth2"],
                "endpoint_path": "/api/partstudios/d/{did}/{wvm}/{wvmid}/e/{eid}/massproperties",
                "operation_id": "get_part_studio_mass_properties",
                "http_method": "GET",
                "servers": [],
            },
            params_map={
                "all": [
                    "did",
                    "wvm",
                    "wvmid",
                    "eid",
                    "part_id",
                    "mass_as_group",
                    "configuration",
                    "link_document_id",
                ],
                "required": ["did", "wvm", "wvmid", "eid",],
                "nullable": [],
                "enum": [],
                "validation": [],
            },
            root_map={
                "validations": {},
                "allowed_values": {},
                "openapi_types": {
                    "did": (str,),
                    "wvm": (str,),
                    "wvmid": (str,),
                    "eid": (str,),
                    "part_id": ([str],),
                    "mass_as_group": (bool,),
                    "configuration": (str,),
                    "link_document_id": (str,),
                },
                "attribute_map": {
                    "did": "did",
                    "wvm": "wvm",
                    "wvmid": "wvmid",
                    "eid": "eid",
                    "part_id": "partId",
                    "mass_as_group": "massAsGroup",
                    "configuration": "configuration",
                    "link_document_id": "linkDocumentId",
                },
                "location_map": {
                    "did": "path",
                    "wvm": "path",
                    "wvmid": "path",
                    "eid": "path",
                    "part_id": "query",
                    "mass_as_group": "query",
                    "configuration": "query",
                    "link_document_id": "query",
                },
                "collection_format_map": {"part_id": "multi",},
            },
            headers_map={
                "accept": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
                "content_type": [],
            },
            api_client=api_client,
            callable=__get_part_studio_mass_properties,
        )

        def __get_part_studio_named_views(self, did, eid, **kwargs):
            """Get Named Views  # 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_part_studio_named_views(did, eid, async_req=True)
            >>> result = thread.get()

            Args:
                did (str): Document ID.
                eid (str): Element ID.

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

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

        self.get_part_studio_named_views = Endpoint(
            settings={
                "response_type": (bt_named_views_info.BTNamedViewsInfo,),
                "auth": [],
                "endpoint_path": "/api/partstudios/d/{did}/e/{eid}/namedViews",
                "operation_id": "get_part_studio_named_views",
                "http_method": "GET",
                "servers": [],
            },
            params_map={
                "all": [
                    "did",
                    "eid",
                    "skip_perspective",
                    "include_section_cut_views",
                    "link_document_id",
                ],
                "required": ["did", "eid",],
                "nullable": [],
                "enum": [],
                "validation": [],
            },
            root_map={
                "validations": {},
                "allowed_values": {},
                "openapi_types": {
                    "did": (str,),
                    "eid": (str,),
                    "skip_perspective": (bool,),
                    "include_section_cut_views": (bool,),
                    "link_document_id": (str,),
                },
                "attribute_map": {
                    "did": "did",
                    "eid": "eid",
                    "skip_perspective": "skipPerspective",
                    "include_section_cut_views": "includeSectionCutViews",
                    "link_document_id": "linkDocumentId",
                },
                "location_map": {
                    "did": "path",
                    "eid": "path",
                    "skip_perspective": "query",
                    "include_section_cut_views": "query",
                    "link_document_id": "query",
                },
                "collection_format_map": {},
            },
            headers_map={
                "accept": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
                "content_type": [],
            },
            api_client=api_client,
            callable=__get_part_studio_named_views,
        )

        def __get_part_studio_shaded_views(self, did, wvm, wvmid, eid, **kwargs):
            """Get Shaded Views  # 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_part_studio_shaded_views(did, wvm, wvmid, eid, async_req=True)
            >>> result = thread.get()

            Args:
                did (str): Document ID.
                wvm (str): One of w or v or m corresponding to whether a workspace or version or microversion was entered.
                wvmid (str): Workspace (w), Version (v) or Microversion (m) ID.
                eid (str): Element ID.

            Keyword Args:
                view_matrix (str): 12-number view matrix (comma-separated), or one of the following named views: top, bottom, front, back, left, right The 12 entries in the view matrix form three rows and four columns, which is a linear transformation applied to the model itself. The matrix&#39;s first three columns maps the coordinate axes of the model to the coordinate axes of the view, and the fourth column translates the origin (in meters). The view coordinates have x pointing right, y pointing up, and z pointing towards the viewer, while a front view of the model has x pointing right, y pointing away from the viewer, and z pointing up. For example, the identity matrix viewMatrix&#x3D;1,0,0,0,0,1,0,0,0,0,1,0 corresponds to the top view, and viewMatrix&#x3D;0.612,0.612,0,0,-0.354,0.354,0.707,0,0.707,-0.707,0.707,0 corresponds (approximately) to the isometric view. The first three columns of the view matrix should be orthonormal and have a positive determinant.  If this is not the case, view behavior may be undefined.. [optional] if omitted the server will use the default value of 'front'
                output_height (int): Output image height (in pixels). [optional] if omitted the server will use the default value of 500
                output_width (int): Output image width (in pixels). [optional] if omitted the server will use the default value of 500
                pixel_size (float): Height and width represented by each pixel (in meters). If the value is 0, the display will be sized to fit the output image dimensions.. [optional] if omitted the server will use the default value of 0.003
                edges (str): The treatment to be applied to edges in the display. Options are show: show visible edges, hide: hide visible edges.. [optional] if omitted the server will use the default value of 'show'
                show_all_parts (bool): Whether or not all parts should be shown in the element, regardless of user setting. If false, the visibility setting made by the user will be reflected in the image. If true, all parts will be shown.. [optional] if omitted the server will use the default value of False
                include_surfaces (bool): Whether or not surfaces should be shown in the element. It is applicable only when showAllParts is true. If false, surfaces will be excluded. If true, all surfaces will be shown.. [optional] if omitted the server will use the default value of False
                use_anti_aliasing (bool): If true, an anti-aliasing factor will be used to smooth model boundaries in the final image result. If false, the image will be rasterized at the given resolution. Setting to true can have negative performance implications with respect to rendering time and memory usage. If a high-resolution image is requested and anti-aliasing is turned on, the server may not be able to fulfill the request.. [optional] if omitted the server will use the default value of False
                configuration (str): Configuration string.. [optional]
                link_document_id (str): Id of document that links to the document being accessed. This may provide additional access rights to the document. Allowed only with version (v) path parameter.. [optional]
                _return_http_data_only (bool): response data without head status
                    code and headers. Default is True.
                _preload_content (bool): if False, the urllib3.HTTPResponse object
                    will be returned without reading/decoding response data.
                    Default is True.
                _request_timeout (float/tuple): timeout setting for this request. If one
                    number provided, it will be total request timeout. It can also
                    be a pair (tuple) of (connection, read) timeouts.
                    Default is None.
                _check_input_type (bool): specifies if type checking
                    should be done one the data sent to the server.
                    Default is True.
                _check_return_type (bool): specifies if type checking
                    should be done one the data received from the server.
                    Default is True.
                _host_index (int): specifies the index of the server
                    that we want to use.
                    Default is 0.
                async_req (bool): execute request asynchronously

            Returns:
                bt_shaded_views_info.BTShadedViewsInfo
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs["async_req"] = kwargs.get("async_req", False)
            kwargs["_return_http_data_only"] = kwargs.get(
                "_return_http_data_only", True
            )
            kwargs["_preload_content"] = kwargs.get("_preload_content", True)
            kwargs["_request_timeout"] = kwargs.get("_request_timeout", None)
            kwargs["_check_input_type"] = kwargs.get("_check_input_type", True)
            kwargs["_check_return_type"] = kwargs.get("_check_return_type", True)
            kwargs["_host_index"] = kwargs.get("_host_index", 0)
            kwargs["did"] = did
            kwargs["wvm"] = wvm
            kwargs["wvmid"] = wvmid
            kwargs["eid"] = eid
            return self.call_with_http_info(**kwargs)

        self.get_part_studio_shaded_views = Endpoint(
            settings={
                "response_type": (bt_shaded_views_info.BTShadedViewsInfo,),
                "auth": ["OAuth2"],
                "endpoint_path": "/api/partstudios/d/{did}/{wvm}/{wvmid}/e/{eid}/shadedviews",
                "operation_id": "get_part_studio_shaded_views",
                "http_method": "GET",
                "servers": [],
            },
            params_map={
                "all": [
                    "did",
                    "wvm",
                    "wvmid",
                    "eid",
                    "view_matrix",
                    "output_height",
                    "output_width",
                    "pixel_size",
                    "edges",
                    "show_all_parts",
                    "include_surfaces",
                    "use_anti_aliasing",
                    "configuration",
                    "link_document_id",
                ],
                "required": ["did", "wvm", "wvmid", "eid",],
                "nullable": [],
                "enum": [],
                "validation": [],
            },
            root_map={
                "validations": {},
                "allowed_values": {},
                "openapi_types": {
                    "did": (str,),
                    "wvm": (str,),
                    "wvmid": (str,),
                    "eid": (str,),
                    "view_matrix": (str,),
                    "output_height": (int,),
                    "output_width": (int,),
                    "pixel_size": (float,),
                    "edges": (str,),
                    "show_all_parts": (bool,),
                    "include_surfaces": (bool,),
                    "use_anti_aliasing": (bool,),
                    "configuration": (str,),
                    "link_document_id": (str,),
                },
                "attribute_map": {
                    "did": "did",
                    "wvm": "wvm",
                    "wvmid": "wvmid",
                    "eid": "eid",
                    "view_matrix": "viewMatrix",
                    "output_height": "outputHeight",
                    "output_width": "outputWidth",
                    "pixel_size": "pixelSize",
                    "edges": "edges",
                    "show_all_parts": "showAllParts",
                    "include_surfaces": "includeSurfaces",
                    "use_anti_aliasing": "useAntiAliasing",
                    "configuration": "configuration",
                    "link_document_id": "linkDocumentId",
                },
                "location_map": {
                    "did": "path",
                    "wvm": "path",
                    "wvmid": "path",
                    "eid": "path",
                    "view_matrix": "query",
                    "output_height": "query",
                    "output_width": "query",
                    "pixel_size": "query",
                    "edges": "query",
                    "show_all_parts": "query",
                    "include_surfaces": "query",
                    "use_anti_aliasing": "query",
                    "configuration": "query",
                    "link_document_id": "query",
                },
                "collection_format_map": {},
            },
            headers_map={
                "accept": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
                "content_type": [],
            },
            api_client=api_client,
            callable=__get_part_studio_shaded_views,
        )

        def __get_part_studio_tessellated_edges(self, did, wvm, wvmid, eid, **kwargs):
            """Tesselated edges from a PartStudio.  # 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_part_studio_tessellated_edges(did, wvm, wvmid, eid, async_req=True)
            >>> result = thread.get()

            Args:
                did (str):
                wvm (str):
                wvmid (str):
                eid (str):

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

            Returns:
                bt_export_tessellated_edges_response327.BTExportTessellatedEdgesResponse327
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs["async_req"] = kwargs.get("async_req", False)
            kwargs["_return_http_data_only"] = kwargs.get(
                "_return_http_data_only", True
            )
            kwargs["_preload_content"] = kwargs.get("_preload_content", True)
            kwargs["_request_timeout"] = kwargs.get("_request_timeout", None)
            kwargs["_check_input_type"] = kwargs.get("_check_input_type", True)
            kwargs["_check_return_type"] = kwargs.get("_check_return_type", True)
            kwargs["_host_index"] = kwargs.get("_host_index", 0)
            kwargs["did"] = did
            kwargs["wvm"] = wvm
            kwargs["wvmid"] = wvmid
            kwargs["eid"] = eid
            return self.call_with_http_info(**kwargs)

        self.get_part_studio_tessellated_edges = Endpoint(
            settings={
                "response_type": (
                    bt_export_tessellated_edges_response327.BTExportTessellatedEdgesResponse327,
                ),
                "auth": ["OAuth2"],
                "endpoint_path": "/api/partstudios/d/{did}/{wvm}/{wvmid}/e/{eid}/tessellatededges",
                "operation_id": "get_part_studio_tessellated_edges",
                "http_method": "GET",
                "servers": [],
            },
            params_map={
                "all": [
                    "did",
                    "wvm",
                    "wvmid",
                    "eid",
                    "angle_tolerance",
                    "chord_tolerance",
                    "part_id",
                    "edge_id",
                    "configuration",
                    "link_document_id",
                ],
                "required": ["did", "wvm", "wvmid", "eid",],
                "nullable": [],
                "enum": [],
                "validation": [],
            },
            root_map={
                "validations": {},
                "allowed_values": {},
                "openapi_types": {
                    "did": (str,),
                    "wvm": (str,),
                    "wvmid": (str,),
                    "eid": (str,),
                    "angle_tolerance": (float,),
                    "chord_tolerance": (float,),
                    "part_id": ([str],),
                    "edge_id": ([str],),
                    "configuration": (str,),
                    "link_document_id": (str,),
                },
                "attribute_map": {
                    "did": "did",
                    "wvm": "wvm",
                    "wvmid": "wvmid",
                    "eid": "eid",
                    "angle_tolerance": "angleTolerance",
                    "chord_tolerance": "chordTolerance",
                    "part_id": "partId",
                    "edge_id": "edgeId",
                    "configuration": "configuration",
                    "link_document_id": "linkDocumentId",
                },
                "location_map": {
                    "did": "path",
                    "wvm": "path",
                    "wvmid": "path",
                    "eid": "path",
                    "angle_tolerance": "query",
                    "chord_tolerance": "query",
                    "part_id": "query",
                    "edge_id": "query",
                    "configuration": "query",
                    "link_document_id": "query",
                },
                "collection_format_map": {"part_id": "multi", "edge_id": "multi",},
            },
            headers_map={
                "accept": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
                "content_type": [],
            },
            api_client=api_client,
            callable=__get_part_studio_tessellated_edges,
        )

        def __get_part_studio_tessellated_faces(self, did, wvm, wvmid, eid, **kwargs):
            """Tesselated faces of the parts in the Part Studio.  # 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_part_studio_tessellated_faces(did, wvm, wvmid, eid, async_req=True)
            >>> result = thread.get()

            Args:
                did (str):
                wvm (str):
                wvmid (str):
                eid (str):

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

            Returns:
                bt_export_tessellated_faces_response898.BTExportTessellatedFacesResponse898
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs["async_req"] = kwargs.get("async_req", False)
            kwargs["_return_http_data_only"] = kwargs.get(
                "_return_http_data_only", True
            )
            kwargs["_preload_content"] = kwargs.get("_preload_content", True)
            kwargs["_request_timeout"] = kwargs.get("_request_timeout", None)
            kwargs["_check_input_type"] = kwargs.get("_check_input_type", True)
            kwargs["_check_return_type"] = kwargs.get("_check_return_type", True)
            kwargs["_host_index"] = kwargs.get("_host_index", 0)
            kwargs["did"] = did
            kwargs["wvm"] = wvm
            kwargs["wvmid"] = wvmid
            kwargs["eid"] = eid
            return self.call_with_http_info(**kwargs)

        self.get_part_studio_tessellated_faces = Endpoint(
            settings={
                "response_type": (
                    bt_export_tessellated_faces_response898.BTExportTessellatedFacesResponse898,
                ),
                "auth": ["OAuth2"],
                "endpoint_path": "/api/partstudios/d/{did}/{wvm}/{wvmid}/e/{eid}/tessellatedfaces",
                "operation_id": "get_part_studio_tessellated_faces",
                "http_method": "GET",
                "servers": [],
            },
            params_map={
                "all": [
                    "did",
                    "wvm",
                    "wvmid",
                    "eid",
                    "angle_tolerance",
                    "chord_tolerance",
                    "max_facet_width",
                    "output_vertex_normals",
                    "output_facet_normals",
                    "output_texture_coordinates",
                    "output_face_appearances",
                    "output_index_table",
                    "part_id",
                    "face_id",
                    "output_error_faces",
                    "configuration",
                    "link_document_id",
                    "body",
                ],
                "required": ["did", "wvm", "wvmid", "eid",],
                "nullable": [],
                "enum": [],
                "validation": [],
            },
            root_map={
                "validations": {},
                "allowed_values": {},
                "openapi_types": {
                    "did": (str,),
                    "wvm": (str,),
                    "wvmid": (str,),
                    "eid": (str,),
                    "angle_tolerance": (float,),
                    "chord_tolerance": (float,),
                    "max_facet_width": (float,),
                    "output_vertex_normals": (bool,),
                    "output_facet_normals": (bool,),
                    "output_texture_coordinates": (bool,),
                    "output_face_appearances": (bool,),
                    "output_index_table": (bool,),
                    "part_id": ([str],),
                    "face_id": ([str],),
                    "output_error_faces": (bool,),
                    "configuration": (str,),
                    "link_document_id": (str,),
                    "body": (str,),
                },
                "attribute_map": {
                    "did": "did",
                    "wvm": "wvm",
                    "wvmid": "wvmid",
                    "eid": "eid",
                    "angle_tolerance": "angleTolerance",
                    "chord_tolerance": "chordTolerance",
                    "max_facet_width": "maxFacetWidth",
                    "output_vertex_normals": "outputVertexNormals",
                    "output_facet_normals": "outputFacetNormals",
                    "output_texture_coordinates": "outputTextureCoordinates",
                    "output_face_appearances": "outputFaceAppearances",
                    "output_index_table": "outputIndexTable",
                    "part_id": "partId",
                    "face_id": "faceId",
                    "output_error_faces": "outputErrorFaces",
                    "configuration": "configuration",
                    "link_document_id": "linkDocumentId",
                },
                "location_map": {
                    "did": "path",
                    "wvm": "path",
                    "wvmid": "path",
                    "eid": "path",
                    "angle_tolerance": "query",
                    "chord_tolerance": "query",
                    "max_facet_width": "query",
                    "output_vertex_normals": "query",
                    "output_facet_normals": "query",
                    "output_texture_coordinates": "query",
                    "output_face_appearances": "query",
                    "output_index_table": "query",
                    "part_id": "query",
                    "face_id": "query",
                    "output_error_faces": "query",
                    "configuration": "query",
                    "link_document_id": "query",
                    "body": "body",
                },
                "collection_format_map": {"part_id": "multi", "face_id": "multi",},
            },
            headers_map={
                "accept": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
                "content_type": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
            },
            api_client=api_client,
            callable=__get_part_studio_tessellated_faces,
        )

        def __translate_ids(
            self, did, wvm, wvmid, eid, bt_id_translation_params, **kwargs
        ):
            """Id Translations  # noqa: E501

            This method makes a synchronous HTTP request by default. To make an
            asynchronous HTTP request, please pass async_req=True
            >>> thread = api.translate_ids(did, wvm, wvmid, eid, bt_id_translation_params, async_req=True)
            >>> result = thread.get()

            Args:
                did (str): Document ID.
                wvm (str): One of w or v or m corresponding to whether a workspace or version or microversion was entered.
                wvmid (str): Workspace (w), Version (v) or Microversion (m) ID.
                eid (str): Element ID.
                bt_id_translation_params (bt_id_translation_params.BTIdTranslationParams):

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

            Returns:
                bt_id_translation_info.BTIdTranslationInfo
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs["async_req"] = kwargs.get("async_req", False)
            kwargs["_return_http_data_only"] = kwargs.get(
                "_return_http_data_only", True
            )
            kwargs["_preload_content"] = kwargs.get("_preload_content", True)
            kwargs["_request_timeout"] = kwargs.get("_request_timeout", None)
            kwargs["_check_input_type"] = kwargs.get("_check_input_type", True)
            kwargs["_check_return_type"] = kwargs.get("_check_return_type", True)
            kwargs["_host_index"] = kwargs.get("_host_index", 0)
            kwargs["did"] = did
            kwargs["wvm"] = wvm
            kwargs["wvmid"] = wvmid
            kwargs["eid"] = eid
            kwargs["bt_id_translation_params"] = bt_id_translation_params
            return self.call_with_http_info(**kwargs)

        self.translate_ids = Endpoint(
            settings={
                "response_type": (bt_id_translation_info.BTIdTranslationInfo,),
                "auth": ["OAuth2"],
                "endpoint_path": "/api/partstudios/d/{did}/{wvm}/{wvmid}/e/{eid}/idtranslations",
                "operation_id": "translate_ids",
                "http_method": "POST",
                "servers": [],
            },
            params_map={
                "all": ["did", "wvm", "wvmid", "eid", "bt_id_translation_params",],
                "required": ["did", "wvm", "wvmid", "eid", "bt_id_translation_params",],
                "nullable": [],
                "enum": [],
                "validation": [],
            },
            root_map={
                "validations": {},
                "allowed_values": {},
                "openapi_types": {
                    "did": (str,),
                    "wvm": (str,),
                    "wvmid": (str,),
                    "eid": (str,),
                    "bt_id_translation_params": (
                        bt_id_translation_params.BTIdTranslationParams,
                    ),
                },
                "attribute_map": {
                    "did": "did",
                    "wvm": "wvm",
                    "wvmid": "wvmid",
                    "eid": "eid",
                },
                "location_map": {
                    "did": "path",
                    "wvm": "path",
                    "wvmid": "path",
                    "eid": "path",
                    "bt_id_translation_params": "body",
                },
                "collection_format_map": {},
            },
            headers_map={
                "accept": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
                "content_type": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
            },
            api_client=api_client,
            callable=__translate_ids,
        )

        def __update_features(self, did, wid, eid, **kwargs):
            """Update Features  # 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_features(did, wid, eid, async_req=True)
            >>> result = thread.get()

            Args:
                did (str): Document ID.
                wid (str): Workspace ID.
                eid (str): Element ID.

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

            Returns:
                bt_update_features_response1333.BTUpdateFeaturesResponse1333
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs["async_req"] = kwargs.get("async_req", False)
            kwargs["_return_http_data_only"] = kwargs.get(
                "_return_http_data_only", True
            )
            kwargs["_preload_content"] = kwargs.get("_preload_content", True)
            kwargs["_request_timeout"] = kwargs.get("_request_timeout", None)
            kwargs["_check_input_type"] = kwargs.get("_check_input_type", True)
            kwargs["_check_return_type"] = kwargs.get("_check_return_type", True)
            kwargs["_host_index"] = kwargs.get("_host_index", 0)
            kwargs["did"] = did
            kwargs["wid"] = wid
            kwargs["eid"] = eid
            return self.call_with_http_info(**kwargs)

        self.update_features = Endpoint(
            settings={
                "response_type": (
                    bt_update_features_response1333.BTUpdateFeaturesResponse1333,
                ),
                "auth": ["OAuth2"],
                "endpoint_path": "/api/partstudios/d/{did}/w/{wid}/e/{eid}/features/updates",
                "operation_id": "update_features",
                "http_method": "POST",
                "servers": [],
            },
            params_map={
                "all": ["did", "wid", "eid", "body",],
                "required": ["did", "wid", "eid",],
                "nullable": [],
                "enum": [],
                "validation": [],
            },
            root_map={
                "validations": {},
                "allowed_values": {},
                "openapi_types": {
                    "did": (str,),
                    "wid": (str,),
                    "eid": (str,),
                    "body": (str,),
                },
                "attribute_map": {"did": "did", "wid": "wid", "eid": "eid",},
                "location_map": {
                    "did": "path",
                    "wid": "path",
                    "eid": "path",
                    "body": "body",
                },
                "collection_format_map": {},
            },
            headers_map={
                "accept": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
                "content_type": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
            },
            api_client=api_client,
            callable=__update_features,
        )

        def __update_part_studio_configuration(self, did, wvm, wvmid, eid, **kwargs):
            """Update Configuration  # 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_part_studio_configuration(did, wvm, wvmid, eid, async_req=True)
            >>> result = thread.get()

            Args:
                did (str):
                wvm (str):
                wvmid (str):
                eid (str):

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

            Returns:
                bt_configuration_response2019.BTConfigurationResponse2019
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs["async_req"] = kwargs.get("async_req", False)
            kwargs["_return_http_data_only"] = kwargs.get(
                "_return_http_data_only", True
            )
            kwargs["_preload_content"] = kwargs.get("_preload_content", True)
            kwargs["_request_timeout"] = kwargs.get("_request_timeout", None)
            kwargs["_check_input_type"] = kwargs.get("_check_input_type", True)
            kwargs["_check_return_type"] = kwargs.get("_check_return_type", True)
            kwargs["_host_index"] = kwargs.get("_host_index", 0)
            kwargs["did"] = did
            kwargs["wvm"] = wvm
            kwargs["wvmid"] = wvmid
            kwargs["eid"] = eid
            return self.call_with_http_info(**kwargs)

        self.update_part_studio_configuration = Endpoint(
            settings={
                "response_type": (
                    bt_configuration_response2019.BTConfigurationResponse2019,
                ),
                "auth": ["OAuth2"],
                "endpoint_path": "/api/partstudios/d/{did}/{wvm}/{wvmid}/e/{eid}/configuration",
                "operation_id": "update_part_studio_configuration",
                "http_method": "POST",
                "servers": [],
            },
            params_map={
                "all": ["did", "wvm", "wvmid", "eid", "body",],
                "required": ["did", "wvm", "wvmid", "eid",],
                "nullable": [],
                "enum": [],
                "validation": [],
            },
            root_map={
                "validations": {},
                "allowed_values": {},
                "openapi_types": {
                    "did": (str,),
                    "wvm": (str,),
                    "wvmid": (str,),
                    "eid": (str,),
                    "body": (str,),
                },
                "attribute_map": {
                    "did": "did",
                    "wvm": "wvm",
                    "wvmid": "wvmid",
                    "eid": "eid",
                },
                "location_map": {
                    "did": "path",
                    "wvm": "path",
                    "wvmid": "path",
                    "eid": "path",
                    "body": "body",
                },
                "collection_format_map": {},
            },
            headers_map={
                "accept": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
                "content_type": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
            },
            api_client=api_client,
            callable=__update_part_studio_configuration,
        )

        def __update_part_studio_feature(self, did, wid, eid, fid, **kwargs):
            """Update Feature  # 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_part_studio_feature(did, wid, eid, fid, async_req=True)
            >>> result = thread.get()

            Args:
                did (str): Document ID.
                wid (str): Workspace ID.
                eid (str): Element ID.
                fid (str): The id of the feature being updated. This id should be URL encoded and must match the featureId found in the serialized structure

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

            Returns:
                bt_feature_definition_response1617.BTFeatureDefinitionResponse1617
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs["async_req"] = kwargs.get("async_req", False)
            kwargs["_return_http_data_only"] = kwargs.get(
                "_return_http_data_only", True
            )
            kwargs["_preload_content"] = kwargs.get("_preload_content", True)
            kwargs["_request_timeout"] = kwargs.get("_request_timeout", None)
            kwargs["_check_input_type"] = kwargs.get("_check_input_type", True)
            kwargs["_check_return_type"] = kwargs.get("_check_return_type", True)
            kwargs["_host_index"] = kwargs.get("_host_index", 0)
            kwargs["did"] = did
            kwargs["wid"] = wid
            kwargs["eid"] = eid
            kwargs["fid"] = fid
            return self.call_with_http_info(**kwargs)

        self.update_part_studio_feature = Endpoint(
            settings={
                "response_type": (
                    bt_feature_definition_response1617.BTFeatureDefinitionResponse1617,
                ),
                "auth": ["OAuth2"],
                "endpoint_path": "/api/partstudios/d/{did}/w/{wid}/e/{eid}/features/featureid/{fid}",
                "operation_id": "update_part_studio_feature",
                "http_method": "POST",
                "servers": [],
            },
            params_map={
                "all": ["did", "wid", "eid", "fid", "body",],
                "required": ["did", "wid", "eid", "fid",],
                "nullable": [],
                "enum": [],
                "validation": [],
            },
            root_map={
                "validations": {},
                "allowed_values": {},
                "openapi_types": {
                    "did": (str,),
                    "wid": (str,),
                    "eid": (str,),
                    "fid": (str,),
                    "body": (str,),
                },
                "attribute_map": {
                    "did": "did",
                    "wid": "wid",
                    "eid": "eid",
                    "fid": "fid",
                },
                "location_map": {
                    "did": "path",
                    "wid": "path",
                    "eid": "path",
                    "fid": "path",
                    "body": "body",
                },
                "collection_format_map": {},
            },
            headers_map={
                "accept": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
                "content_type": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
            },
            api_client=api_client,
            callable=__update_part_studio_feature,
        )

        def __update_rollback(self, did, wid, eid, **kwargs):
            """Update Feature Rollback  # 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_rollback(did, wid, eid, async_req=True)
            >>> result = thread.get()

            Args:
                did (str): Document ID.
                wid (str): Workspace ID.
                eid (str): Element ID.

            Keyword Args:
                body (str): The index at which the rollback index should be placed. Features  with entry index (0-based) higher than or equal to the value are rolled back. Value of -1 is treated  as an alias for \&quot;end of feature list\&quot;. Otherwise the value must be in the range 0 to the number of  entries in the feature list. [optional]
                _return_http_data_only (bool): response data without head status
                    code and headers. Default is True.
                _preload_content (bool): if False, the urllib3.HTTPResponse object
                    will be returned without reading/decoding response data.
                    Default is True.
                _request_timeout (float/tuple): timeout setting for this request. If one
                    number provided, it will be total request timeout. It can also
                    be a pair (tuple) of (connection, read) timeouts.
                    Default is None.
                _check_input_type (bool): specifies if type checking
                    should be done one the data sent to the server.
                    Default is True.
                _check_return_type (bool): specifies if type checking
                    should be done one the data received from the server.
                    Default is True.
                _host_index (int): specifies the index of the server
                    that we want to use.
                    Default is 0.
                async_req (bool): execute request asynchronously

            Returns:
                bt_set_feature_rollback_response1042.BTSetFeatureRollbackResponse1042
                    If the method is called asynchronously, returns the request
                    thread.
            """
            kwargs["async_req"] = kwargs.get("async_req", False)
            kwargs["_return_http_data_only"] = kwargs.get(
                "_return_http_data_only", True
            )
            kwargs["_preload_content"] = kwargs.get("_preload_content", True)
            kwargs["_request_timeout"] = kwargs.get("_request_timeout", None)
            kwargs["_check_input_type"] = kwargs.get("_check_input_type", True)
            kwargs["_check_return_type"] = kwargs.get("_check_return_type", True)
            kwargs["_host_index"] = kwargs.get("_host_index", 0)
            kwargs["did"] = did
            kwargs["wid"] = wid
            kwargs["eid"] = eid
            return self.call_with_http_info(**kwargs)

        self.update_rollback = Endpoint(
            settings={
                "response_type": (
                    bt_set_feature_rollback_response1042.BTSetFeatureRollbackResponse1042,
                ),
                "auth": ["OAuth2"],
                "endpoint_path": "/api/partstudios/d/{did}/w/{wid}/e/{eid}/features/rollback",
                "operation_id": "update_rollback",
                "http_method": "POST",
                "servers": [],
            },
            params_map={
                "all": ["did", "wid", "eid", "body",],
                "required": ["did", "wid", "eid",],
                "nullable": [],
                "enum": [],
                "validation": [],
            },
            root_map={
                "validations": {},
                "allowed_values": {},
                "openapi_types": {
                    "did": (str,),
                    "wid": (str,),
                    "eid": (str,),
                    "body": (str,),
                },
                "attribute_map": {"did": "did", "wid": "wid", "eid": "eid",},
                "location_map": {
                    "did": "path",
                    "wid": "path",
                    "eid": "path",
                    "body": "body",
                },
                "collection_format_map": {},
            },
            headers_map={
                "accept": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
                "content_type": [
                    "application/json;charset=UTF-8; qs=0.09",
                    "application/vnd.onshape.v1+json;charset=UTF-8;qs=0.1",
                    "application/vnd.onshape.v2+json;charset=UTF-8;qs=0.2",
                ],
            },
            api_client=api_client,
            callable=__update_rollback,
        )


class Endpoint(object):
    def __init__(
        self,
        settings=None,
        params_map=None,
        root_map=None,
        headers_map=None,
        api_client=None,
        callable=None,
    ):
        """Creates an endpoint

        Args:
            settings (dict): see below key value pairs
                'response_type' (tuple/None): response type
                'auth' (list): a list of auth type keys
                'endpoint_path' (str): the endpoint path
                'operation_id' (str): endpoint string identifier
                'http_method' (str): POST/PUT/PATCH/GET etc
                'servers' (list): list of str servers that this endpoint is at
            params_map (dict): see below key value pairs
                'all' (list): list of str endpoint parameter names
                'required' (list): list of required parameter names
                'nullable' (list): list of nullable parameter names
                'enum' (list): list of parameters with enum values
                'validation' (list): list of parameters with validations
            root_map
                'validations' (dict): the dict mapping endpoint parameter tuple
                    paths to their validation dictionaries
                'allowed_values' (dict): the dict mapping endpoint parameter
                    tuple paths to their allowed_values (enum) dictionaries
                'openapi_types' (dict): param_name to openapi type
                'attribute_map' (dict): param_name to camelCase name
                'location_map' (dict): param_name to  'body', 'file', 'form',
                    'header', 'path', 'query'
                collection_format_map (dict): param_name to `csv` etc.
            headers_map (dict): see below key value pairs
                'accept' (list): list of Accept header strings
                'content_type' (list): list of Content-Type header strings
            api_client (ApiClient) api client instance
            callable (function): the function which is invoked when the
                Endpoint is called
        """
        self.settings = settings
        self.params_map = params_map
        self.params_map["all"].extend(
            [
                "async_req",
                "_host_index",
                "_preload_content",
                "_request_timeout",
                "_return_http_data_only",
                "_check_input_type",
                "_check_return_type",
            ]
        )
        self.params_map["nullable"].extend(["_request_timeout"])
        self.validations = root_map["validations"]
        self.allowed_values = root_map["allowed_values"]
        self.openapi_types = root_map["openapi_types"]
        extra_types = {
            "async_req": (bool,),
            "_host_index": (int,),
            "_preload_content": (bool,),
            "_request_timeout": (none_type, int, (int,), [int]),
            "_return_http_data_only": (bool,),
            "_check_input_type": (bool,),
            "_check_return_type": (bool,),
        }
        self.openapi_types.update(extra_types)
        self.attribute_map = root_map["attribute_map"]
        self.location_map = root_map["location_map"]
        self.collection_format_map = root_map["collection_format_map"]
        self.headers_map = headers_map
        self.api_client = api_client
        self.callable = callable

    def __validate_inputs(self, kwargs):
        for param in self.params_map["enum"]:
            if param in kwargs:
                check_allowed_values(self.allowed_values, (param,), kwargs[param])

        for param in self.params_map["validation"]:
            if param in kwargs:
                check_validations(self.validations, (param,), kwargs[param])

        if kwargs["_check_input_type"] is False:
            return

        for key, value in six.iteritems(kwargs):
            fixed_val = validate_and_convert_types(
                value,
                self.openapi_types[key],
                [key],
                False,
                kwargs["_check_input_type"],
                configuration=self.api_client.configuration,
            )
            kwargs[key] = fixed_val

    def __gather_params(self, kwargs):
        params = {
            "body": None,
            "collection_format": {},
            "file": {},
            "form": [],
            "header": {},
            "path": {},
            "query": [],
        }

        for param_name, param_value in six.iteritems(kwargs):
            param_location = self.location_map.get(param_name)
            if param_location is None:
                continue
            if param_location:
                if param_location == "body":
                    params["body"] = param_value
                    continue
                base_name = self.attribute_map[param_name]
                if param_location == "form" and self.openapi_types[param_name] == (
                    file_type,
                ):
                    params["file"][param_name] = [param_value]
                elif param_location == "form" and self.openapi_types[param_name] == (
                    [file_type],
                ):
                    # param_value is already a list
                    params["file"][param_name] = param_value
                elif param_location in {"form", "query"}:
                    param_value_full = (base_name, param_value)
                    params[param_location].append(param_value_full)
                if param_location not in {"form", "query"}:
                    params[param_location][base_name] = param_value
                collection_format = self.collection_format_map.get(param_name)
                if collection_format:
                    params["collection_format"][base_name] = collection_format

        return params

    def __call__(self, *args, **kwargs):
        """ This method is invoked when endpoints are called
        Example:
        pet_api = PetApi()
        pet_api.add_pet  # this is an instance of the class Endpoint
        pet_api.add_pet()  # this invokes pet_api.add_pet.__call__()
        which then invokes the callable functions stored in that endpoint at
        pet_api.add_pet.callable or self.callable in this class
        """
        return self.callable(self, *args, **kwargs)

    def call_with_http_info(self, **kwargs):

        try:
            _host = self.settings["servers"][kwargs["_host_index"]]
        except IndexError:
            if self.settings["servers"]:
                raise ApiValueError(
                    "Invalid host index. Must be 0 <= index < %s"
                    % len(self.settings["servers"])
                )
            _host = None

        for key, value in six.iteritems(kwargs):
            if key not in self.params_map["all"]:
                raise ApiTypeError(
                    "Got an unexpected parameter '%s'"
                    " to method `%s`" % (key, self.settings["operation_id"])
                )
            # only throw this nullable ApiValueError if _check_input_type
            # is False, if _check_input_type==True we catch this case
            # in self.__validate_inputs
            if (
                key not in self.params_map["nullable"]
                and value is None
                and kwargs["_check_input_type"] is False
            ):
                raise ApiValueError(
                    "Value may not be None for non-nullable parameter `%s`"
                    " when calling `%s`" % (key, self.settings["operation_id"])
                )

        for key in self.params_map["required"]:
            if key not in kwargs.keys():
                raise ApiValueError(
                    "Missing the required parameter `%s` when calling "
                    "`%s`" % (key, self.settings["operation_id"])
                )

        self.__validate_inputs(kwargs)

        params = self.__gather_params(kwargs)

        accept_headers_list = self.headers_map["accept"]
        if accept_headers_list:
            params["header"]["Accept"] = self.api_client.select_header_accept(
                accept_headers_list
            )

        content_type_headers_list = self.headers_map["content_type"]
        if content_type_headers_list:
            header_list = self.api_client.select_header_content_type(
                content_type_headers_list
            )
            params["header"]["Content-Type"] = header_list

        return self.api_client.call_api(
            self.settings["endpoint_path"],
            self.settings["http_method"],
            params["path"],
            params["query"],
            params["header"],
            body=params["body"],
            post_params=params["form"],
            files=params["file"],
            response_type=self.settings["response_type"],
            auth_settings=self.settings["auth"],
            async_req=kwargs["async_req"],
            _check_type=kwargs["_check_return_type"],
            _return_http_data_only=kwargs["_return_http_data_only"],
            _preload_content=kwargs["_preload_content"],
            _request_timeout=kwargs["_request_timeout"],
            _host=_host,
            collection_formats=params["collection_format"],
        )
