Update api spec (#451)
* YOYO NEW API SPEC! * updates Signed-off-by: Jessie Frazelle <github@jessfraz.com> * I have generated the latest API! --------- Signed-off-by: Jessie Frazelle <github@jessfraz.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Jessie Frazelle <github@jessfraz.com>
This commit is contained in:
committed by
GitHub
parent
a0e3d35045
commit
b70dd57f46
@ -389,9 +389,9 @@ def generateTypeAndExamplePython(
|
|||||||
logging.error("schema: %s", json.dumps(schema, indent=4))
|
logging.error("schema: %s", json.dumps(schema, indent=4))
|
||||||
raise Exception("Unknown parameter type")
|
raise Exception("Unknown parameter type")
|
||||||
elif "oneOf" in schema and len(schema["oneOf"]) > 0:
|
elif "oneOf" in schema and len(schema["oneOf"]) > 0:
|
||||||
one_of = schema["oneOf"][0]
|
# Choose a random one.
|
||||||
if len(schema["oneOf"]) > 1:
|
index = random.randint(0, len(schema["oneOf"]) - 1)
|
||||||
one_of = schema["oneOf"][1]
|
one_of = schema["oneOf"][index]
|
||||||
|
|
||||||
# Check if this is a nested object.
|
# Check if this is a nested object.
|
||||||
if isNestedObjectOneOf(schema):
|
if isNestedObjectOneOf(schema):
|
||||||
@ -2377,7 +2377,8 @@ letters: List[str] = []
|
|||||||
def randletter() -> str:
|
def randletter() -> str:
|
||||||
letter1 = chr(random.randint(ord("A"), ord("Z")))
|
letter1 = chr(random.randint(ord("A"), ord("Z")))
|
||||||
letter2 = chr(random.randint(ord("A"), ord("Z")))
|
letter2 = chr(random.randint(ord("A"), ord("Z")))
|
||||||
letter = letter1 + letter2
|
letter3 = chr(random.randint(ord("A"), ord("Z")))
|
||||||
|
letter = letter1 + letter2 + letter3
|
||||||
while letter in letters:
|
while letter in letters:
|
||||||
return randletter()
|
return randletter()
|
||||||
letters.append(letter)
|
letters.append(letter)
|
||||||
|
File diff suppressed because it is too large
Load Diff
126
kittycad/api/file/create_file_conversion_options.py
Normal file
126
kittycad/api/file/create_file_conversion_options.py
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
from typing import Any, Dict, Optional, Union
|
||||||
|
|
||||||
|
import httpx
|
||||||
|
|
||||||
|
from ...client import Client
|
||||||
|
from ...models.conversion_params import ConversionParams
|
||||||
|
from ...models.error import Error
|
||||||
|
from ...models.file_conversion import FileConversion
|
||||||
|
from ...types import Response
|
||||||
|
|
||||||
|
|
||||||
|
def _get_kwargs(
|
||||||
|
body: ConversionParams,
|
||||||
|
*,
|
||||||
|
client: Client,
|
||||||
|
) -> Dict[str, Any]:
|
||||||
|
url = "{}/file/conversion".format(
|
||||||
|
client.base_url,
|
||||||
|
) # noqa: E501
|
||||||
|
|
||||||
|
headers: Dict[str, Any] = client.get_headers()
|
||||||
|
cookies: Dict[str, Any] = client.get_cookies()
|
||||||
|
|
||||||
|
return {
|
||||||
|
"url": url,
|
||||||
|
"headers": headers,
|
||||||
|
"cookies": cookies,
|
||||||
|
"timeout": client.get_timeout(),
|
||||||
|
"content": body.model_dump_json(),
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def _parse_response(
|
||||||
|
*, response: httpx.Response
|
||||||
|
) -> Optional[Union[FileConversion, Error]]:
|
||||||
|
if response.status_code == 201:
|
||||||
|
response_201 = FileConversion(**response.json())
|
||||||
|
return response_201
|
||||||
|
if response.status_code == 400:
|
||||||
|
response_4XX = Error(**response.json())
|
||||||
|
return response_4XX
|
||||||
|
if response.status_code == 500:
|
||||||
|
response_5XX = Error(**response.json())
|
||||||
|
return response_5XX
|
||||||
|
return Error(**response.json())
|
||||||
|
|
||||||
|
|
||||||
|
def _build_response(
|
||||||
|
*, response: httpx.Response
|
||||||
|
) -> Response[Optional[Union[FileConversion, Error]]]:
|
||||||
|
return Response(
|
||||||
|
status_code=response.status_code,
|
||||||
|
content=response.content,
|
||||||
|
headers=response.headers,
|
||||||
|
parsed=_parse_response(response=response),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def sync_detailed(
|
||||||
|
body: ConversionParams,
|
||||||
|
*,
|
||||||
|
client: Client,
|
||||||
|
) -> Response[Optional[Union[FileConversion, Error]]]:
|
||||||
|
kwargs = _get_kwargs(
|
||||||
|
body=body,
|
||||||
|
client=client,
|
||||||
|
)
|
||||||
|
|
||||||
|
response = httpx.post(
|
||||||
|
verify=client.verify_ssl,
|
||||||
|
**kwargs,
|
||||||
|
)
|
||||||
|
|
||||||
|
return _build_response(response=response)
|
||||||
|
|
||||||
|
|
||||||
|
def sync(
|
||||||
|
body: ConversionParams,
|
||||||
|
*,
|
||||||
|
client: Client,
|
||||||
|
) -> Optional[Union[FileConversion, Error]]:
|
||||||
|
"""This takes a HTTP multipart body with these fields in any order:
|
||||||
|
|
||||||
|
- The input and output format options (as JSON), name is 'body'. - The files to convert, in raw binary. Must supply filenames.
|
||||||
|
|
||||||
|
This starts a conversion job and returns the `id` of the operation. You can use the `id` returned from the request to get status information about the async operation from the `/async/operations/{id}` endpoint.""" # noqa: E501
|
||||||
|
|
||||||
|
return sync_detailed(
|
||||||
|
body=body,
|
||||||
|
client=client,
|
||||||
|
).parsed
|
||||||
|
|
||||||
|
|
||||||
|
async def asyncio_detailed(
|
||||||
|
body: ConversionParams,
|
||||||
|
*,
|
||||||
|
client: Client,
|
||||||
|
) -> Response[Optional[Union[FileConversion, Error]]]:
|
||||||
|
kwargs = _get_kwargs(
|
||||||
|
body=body,
|
||||||
|
client=client,
|
||||||
|
)
|
||||||
|
|
||||||
|
async with httpx.AsyncClient(verify=client.verify_ssl) as _client:
|
||||||
|
response = await _client.post(**kwargs)
|
||||||
|
|
||||||
|
return _build_response(response=response)
|
||||||
|
|
||||||
|
|
||||||
|
async def asyncio(
|
||||||
|
body: ConversionParams,
|
||||||
|
*,
|
||||||
|
client: Client,
|
||||||
|
) -> Optional[Union[FileConversion, Error]]:
|
||||||
|
"""This takes a HTTP multipart body with these fields in any order:
|
||||||
|
|
||||||
|
- The input and output format options (as JSON), name is 'body'. - The files to convert, in raw binary. Must supply filenames.
|
||||||
|
|
||||||
|
This starts a conversion job and returns the `id` of the operation. You can use the `id` returned from the request to get status information about the async operation from the `/async/operations/{id}` endpoint.""" # noqa: E501
|
||||||
|
|
||||||
|
return (
|
||||||
|
await asyncio_detailed(
|
||||||
|
body=body,
|
||||||
|
client=client,
|
||||||
|
)
|
||||||
|
).parsed
|
@ -1,105 +0,0 @@
|
|||||||
from typing import Any, Dict, Optional, Union
|
|
||||||
|
|
||||||
import httpx
|
|
||||||
|
|
||||||
from ...client import Client
|
|
||||||
from ...models.error import Error
|
|
||||||
from ...models.onboarding import Onboarding
|
|
||||||
from ...types import Response
|
|
||||||
|
|
||||||
|
|
||||||
def _get_kwargs(
|
|
||||||
*,
|
|
||||||
client: Client,
|
|
||||||
) -> Dict[str, Any]:
|
|
||||||
url = "{}/user/onboarding".format(
|
|
||||||
client.base_url,
|
|
||||||
) # noqa: E501
|
|
||||||
|
|
||||||
headers: Dict[str, Any] = client.get_headers()
|
|
||||||
cookies: Dict[str, Any] = client.get_cookies()
|
|
||||||
|
|
||||||
return {
|
|
||||||
"url": url,
|
|
||||||
"headers": headers,
|
|
||||||
"cookies": cookies,
|
|
||||||
"timeout": client.get_timeout(),
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def _parse_response(*, response: httpx.Response) -> Optional[Union[Onboarding, Error]]:
|
|
||||||
if response.status_code == 200:
|
|
||||||
response_200 = Onboarding(**response.json())
|
|
||||||
return response_200
|
|
||||||
if response.status_code == 400:
|
|
||||||
response_4XX = Error(**response.json())
|
|
||||||
return response_4XX
|
|
||||||
if response.status_code == 500:
|
|
||||||
response_5XX = Error(**response.json())
|
|
||||||
return response_5XX
|
|
||||||
return Error(**response.json())
|
|
||||||
|
|
||||||
|
|
||||||
def _build_response(
|
|
||||||
*, response: httpx.Response
|
|
||||||
) -> Response[Optional[Union[Onboarding, Error]]]:
|
|
||||||
return Response(
|
|
||||||
status_code=response.status_code,
|
|
||||||
content=response.content,
|
|
||||||
headers=response.headers,
|
|
||||||
parsed=_parse_response(response=response),
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def sync_detailed(
|
|
||||||
*,
|
|
||||||
client: Client,
|
|
||||||
) -> Response[Optional[Union[Onboarding, Error]]]:
|
|
||||||
kwargs = _get_kwargs(
|
|
||||||
client=client,
|
|
||||||
)
|
|
||||||
|
|
||||||
response = httpx.get(
|
|
||||||
verify=client.verify_ssl,
|
|
||||||
**kwargs,
|
|
||||||
)
|
|
||||||
|
|
||||||
return _build_response(response=response)
|
|
||||||
|
|
||||||
|
|
||||||
def sync(
|
|
||||||
*,
|
|
||||||
client: Client,
|
|
||||||
) -> Optional[Union[Onboarding, Error]]:
|
|
||||||
"""Checks key part of their api usage to determine their onboarding progress""" # noqa: E501
|
|
||||||
|
|
||||||
return sync_detailed(
|
|
||||||
client=client,
|
|
||||||
).parsed
|
|
||||||
|
|
||||||
|
|
||||||
async def asyncio_detailed(
|
|
||||||
*,
|
|
||||||
client: Client,
|
|
||||||
) -> Response[Optional[Union[Onboarding, Error]]]:
|
|
||||||
kwargs = _get_kwargs(
|
|
||||||
client=client,
|
|
||||||
)
|
|
||||||
|
|
||||||
async with httpx.AsyncClient(verify=client.verify_ssl) as _client:
|
|
||||||
response = await _client.get(**kwargs)
|
|
||||||
|
|
||||||
return _build_response(response=response)
|
|
||||||
|
|
||||||
|
|
||||||
async def asyncio(
|
|
||||||
*,
|
|
||||||
client: Client,
|
|
||||||
) -> Optional[Union[Onboarding, Error]]:
|
|
||||||
"""Checks key part of their api usage to determine their onboarding progress""" # noqa: E501
|
|
||||||
|
|
||||||
return (
|
|
||||||
await asyncio_detailed(
|
|
||||||
client=client,
|
|
||||||
)
|
|
||||||
).parsed
|
|
@ -30,6 +30,7 @@ from kittycad.api.executor import create_executor_term, create_file_execution
|
|||||||
from kittycad.api.file import (
|
from kittycad.api.file import (
|
||||||
create_file_center_of_mass,
|
create_file_center_of_mass,
|
||||||
create_file_conversion,
|
create_file_conversion,
|
||||||
|
create_file_conversion_options,
|
||||||
create_file_density,
|
create_file_density,
|
||||||
create_file_mass,
|
create_file_mass,
|
||||||
create_file_surface_area,
|
create_file_surface_area,
|
||||||
@ -150,7 +151,6 @@ from kittycad.api.users import (
|
|||||||
get_session_for_user,
|
get_session_for_user,
|
||||||
get_user,
|
get_user,
|
||||||
get_user_extended,
|
get_user_extended,
|
||||||
get_user_onboarding_self,
|
|
||||||
get_user_privacy_settings,
|
get_user_privacy_settings,
|
||||||
get_user_self,
|
get_user_self,
|
||||||
get_user_self_extended,
|
get_user_self_extended,
|
||||||
@ -196,7 +196,6 @@ from kittycad.models import (
|
|||||||
KclModel,
|
KclModel,
|
||||||
MlPrompt,
|
MlPrompt,
|
||||||
MlPromptResultsPage,
|
MlPromptResultsPage,
|
||||||
Onboarding,
|
|
||||||
Org,
|
Org,
|
||||||
OrgMember,
|
OrgMember,
|
||||||
OrgMemberResultsPage,
|
OrgMemberResultsPage,
|
||||||
@ -237,13 +236,17 @@ from kittycad.models.add_org_member import AddOrgMember
|
|||||||
from kittycad.models.api_call_query_group_by import ApiCallQueryGroupBy
|
from kittycad.models.api_call_query_group_by import ApiCallQueryGroupBy
|
||||||
from kittycad.models.api_call_status import ApiCallStatus
|
from kittycad.models.api_call_status import ApiCallStatus
|
||||||
from kittycad.models.api_token_uuid import ApiTokenUuid
|
from kittycad.models.api_token_uuid import ApiTokenUuid
|
||||||
from kittycad.models.base64data import Base64Data
|
from kittycad.models.axis import Axis
|
||||||
|
from kittycad.models.axis_direction_pair import AxisDirectionPair
|
||||||
from kittycad.models.billing_info import BillingInfo
|
from kittycad.models.billing_info import BillingInfo
|
||||||
|
from kittycad.models.client_metrics import ClientMetrics
|
||||||
from kittycad.models.code_language import CodeLanguage
|
from kittycad.models.code_language import CodeLanguage
|
||||||
from kittycad.models.code_option import CodeOption
|
from kittycad.models.code_option import CodeOption
|
||||||
|
from kittycad.models.conversion_params import ConversionParams
|
||||||
from kittycad.models.create_shortlink_request import CreateShortlinkRequest
|
from kittycad.models.create_shortlink_request import CreateShortlinkRequest
|
||||||
from kittycad.models.created_at_sort_mode import CreatedAtSortMode
|
from kittycad.models.created_at_sort_mode import CreatedAtSortMode
|
||||||
from kittycad.models.crm_data import CrmData
|
from kittycad.models.crm_data import CrmData
|
||||||
|
from kittycad.models.direction import Direction
|
||||||
from kittycad.models.email_authentication_form import EmailAuthenticationForm
|
from kittycad.models.email_authentication_form import EmailAuthenticationForm
|
||||||
from kittycad.models.enterprise_subscription_tier_price import (
|
from kittycad.models.enterprise_subscription_tier_price import (
|
||||||
EnterpriseSubscriptionTierPrice,
|
EnterpriseSubscriptionTierPrice,
|
||||||
@ -252,10 +255,10 @@ from kittycad.models.enterprise_subscription_tier_price import (
|
|||||||
from kittycad.models.event import Event, OptionModelingAppEvent
|
from kittycad.models.event import Event, OptionModelingAppEvent
|
||||||
from kittycad.models.file_export_format import FileExportFormat
|
from kittycad.models.file_export_format import FileExportFormat
|
||||||
from kittycad.models.file_import_format import FileImportFormat
|
from kittycad.models.file_import_format import FileImportFormat
|
||||||
from kittycad.models.idp_metadata_source import (
|
from kittycad.models.gltf_presentation import GltfPresentation
|
||||||
IdpMetadataSource,
|
from kittycad.models.gltf_storage import GltfStorage
|
||||||
OptionBase64EncodedXml,
|
from kittycad.models.idp_metadata_source import IdpMetadataSource, OptionUrl
|
||||||
)
|
from kittycad.models.input_format3d import InputFormat3d, OptionStl
|
||||||
from kittycad.models.inquiry_form import InquiryForm
|
from kittycad.models.inquiry_form import InquiryForm
|
||||||
from kittycad.models.inquiry_type import InquiryType
|
from kittycad.models.inquiry_type import InquiryType
|
||||||
from kittycad.models.kcl_code_completion_params import KclCodeCompletionParams
|
from kittycad.models.kcl_code_completion_params import KclCodeCompletionParams
|
||||||
@ -269,11 +272,10 @@ from kittycad.models.modeling_app_organization_subscription_tier import (
|
|||||||
ModelingAppOrganizationSubscriptionTier,
|
ModelingAppOrganizationSubscriptionTier,
|
||||||
)
|
)
|
||||||
from kittycad.models.org_details import OrgDetails
|
from kittycad.models.org_details import OrgDetails
|
||||||
|
from kittycad.models.output_format3d import OptionGltf, OutputFormat3d
|
||||||
from kittycad.models.plan_interval import PlanInterval
|
from kittycad.models.plan_interval import PlanInterval
|
||||||
from kittycad.models.post_effect_type import PostEffectType
|
from kittycad.models.post_effect_type import PostEffectType
|
||||||
from kittycad.models.privacy_settings import PrivacySettings
|
from kittycad.models.privacy_settings import PrivacySettings
|
||||||
from kittycad.models.rtc_sdp_type import RtcSdpType
|
|
||||||
from kittycad.models.rtc_session_description import RtcSessionDescription
|
|
||||||
from kittycad.models.saml_identity_provider_create import SamlIdentityProviderCreate
|
from kittycad.models.saml_identity_provider_create import SamlIdentityProviderCreate
|
||||||
from kittycad.models.service_account_uuid import ServiceAccountUuid
|
from kittycad.models.service_account_uuid import ServiceAccountUuid
|
||||||
from kittycad.models.session_uuid import SessionUuid
|
from kittycad.models.session_uuid import SessionUuid
|
||||||
@ -282,6 +284,7 @@ from kittycad.models.source_range import SourceRange
|
|||||||
from kittycad.models.source_range_prompt import SourceRangePrompt
|
from kittycad.models.source_range_prompt import SourceRangePrompt
|
||||||
from kittycad.models.store_coupon_params import StoreCouponParams
|
from kittycad.models.store_coupon_params import StoreCouponParams
|
||||||
from kittycad.models.subscribe import Subscribe
|
from kittycad.models.subscribe import Subscribe
|
||||||
|
from kittycad.models.system import System
|
||||||
from kittycad.models.text_to_cad_create_body import TextToCadCreateBody
|
from kittycad.models.text_to_cad_create_body import TextToCadCreateBody
|
||||||
from kittycad.models.text_to_cad_iteration_body import TextToCadIterationBody
|
from kittycad.models.text_to_cad_iteration_body import TextToCadIterationBody
|
||||||
from kittycad.models.text_to_cad_multi_file_iteration_body import (
|
from kittycad.models.text_to_cad_multi_file_iteration_body import (
|
||||||
@ -308,7 +311,7 @@ from kittycad.models.update_user import UpdateUser
|
|||||||
from kittycad.models.user_identifier import UserIdentifier
|
from kittycad.models.user_identifier import UserIdentifier
|
||||||
from kittycad.models.user_org_role import UserOrgRole
|
from kittycad.models.user_org_role import UserOrgRole
|
||||||
from kittycad.models.uuid import Uuid
|
from kittycad.models.uuid import Uuid
|
||||||
from kittycad.models.web_socket_request import OptionSdpOffer
|
from kittycad.models.web_socket_request import OptionMetricsResponse
|
||||||
from kittycad.models.zoo_product_subscriptions_org_request import (
|
from kittycad.models.zoo_product_subscriptions_org_request import (
|
||||||
ZooProductSubscriptionsOrgRequest,
|
ZooProductSubscriptionsOrgRequest,
|
||||||
)
|
)
|
||||||
@ -1328,6 +1331,145 @@ async def test_create_file_center_of_mass_async():
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.skip
|
||||||
|
def test_create_file_conversion_options():
|
||||||
|
# Create our client.
|
||||||
|
client = ClientFromEnv()
|
||||||
|
|
||||||
|
result: Optional[Union[FileConversion, Error]] = (
|
||||||
|
create_file_conversion_options.sync(
|
||||||
|
client=client,
|
||||||
|
body=ConversionParams(
|
||||||
|
output_format=OutputFormat3d(
|
||||||
|
OptionGltf(
|
||||||
|
presentation=GltfPresentation.COMPACT,
|
||||||
|
storage=GltfStorage.BINARY,
|
||||||
|
)
|
||||||
|
),
|
||||||
|
src_format=InputFormat3d(
|
||||||
|
OptionStl(
|
||||||
|
coords=System(
|
||||||
|
forward=AxisDirectionPair(
|
||||||
|
axis=Axis.Y,
|
||||||
|
direction=Direction.POSITIVE,
|
||||||
|
),
|
||||||
|
up=AxisDirectionPair(
|
||||||
|
axis=Axis.Y,
|
||||||
|
direction=Direction.POSITIVE,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
units=UnitLength.CM,
|
||||||
|
)
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
if isinstance(result, Error) or result is None:
|
||||||
|
print(result)
|
||||||
|
raise Exception("Error in response")
|
||||||
|
|
||||||
|
body: FileConversion = result
|
||||||
|
print(body)
|
||||||
|
|
||||||
|
# OR if you need more info (e.g. status_code)
|
||||||
|
response: Response[Optional[Union[FileConversion, Error]]] = (
|
||||||
|
create_file_conversion_options.sync_detailed(
|
||||||
|
client=client,
|
||||||
|
body=ConversionParams(
|
||||||
|
output_format=OutputFormat3d(
|
||||||
|
OptionGltf(
|
||||||
|
presentation=GltfPresentation.COMPACT,
|
||||||
|
storage=GltfStorage.BINARY,
|
||||||
|
)
|
||||||
|
),
|
||||||
|
src_format=InputFormat3d(
|
||||||
|
OptionStl(
|
||||||
|
coords=System(
|
||||||
|
forward=AxisDirectionPair(
|
||||||
|
axis=Axis.Y,
|
||||||
|
direction=Direction.POSITIVE,
|
||||||
|
),
|
||||||
|
up=AxisDirectionPair(
|
||||||
|
axis=Axis.Y,
|
||||||
|
direction=Direction.POSITIVE,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
units=UnitLength.CM,
|
||||||
|
)
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# OR run async
|
||||||
|
@pytest.mark.asyncio
|
||||||
|
@pytest.mark.skip
|
||||||
|
async def test_create_file_conversion_options_async():
|
||||||
|
# Create our client.
|
||||||
|
client = ClientFromEnv()
|
||||||
|
|
||||||
|
result: Optional[
|
||||||
|
Union[FileConversion, Error]
|
||||||
|
] = await create_file_conversion_options.asyncio(
|
||||||
|
client=client,
|
||||||
|
body=ConversionParams(
|
||||||
|
output_format=OutputFormat3d(
|
||||||
|
OptionGltf(
|
||||||
|
presentation=GltfPresentation.COMPACT,
|
||||||
|
storage=GltfStorage.BINARY,
|
||||||
|
)
|
||||||
|
),
|
||||||
|
src_format=InputFormat3d(
|
||||||
|
OptionStl(
|
||||||
|
coords=System(
|
||||||
|
forward=AxisDirectionPair(
|
||||||
|
axis=Axis.Y,
|
||||||
|
direction=Direction.POSITIVE,
|
||||||
|
),
|
||||||
|
up=AxisDirectionPair(
|
||||||
|
axis=Axis.Y,
|
||||||
|
direction=Direction.POSITIVE,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
units=UnitLength.CM,
|
||||||
|
)
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
# OR run async with more info
|
||||||
|
response: Response[
|
||||||
|
Optional[Union[FileConversion, Error]]
|
||||||
|
] = await create_file_conversion_options.asyncio_detailed(
|
||||||
|
client=client,
|
||||||
|
body=ConversionParams(
|
||||||
|
output_format=OutputFormat3d(
|
||||||
|
OptionGltf(
|
||||||
|
presentation=GltfPresentation.COMPACT,
|
||||||
|
storage=GltfStorage.BINARY,
|
||||||
|
)
|
||||||
|
),
|
||||||
|
src_format=InputFormat3d(
|
||||||
|
OptionStl(
|
||||||
|
coords=System(
|
||||||
|
forward=AxisDirectionPair(
|
||||||
|
axis=Axis.Y,
|
||||||
|
direction=Direction.POSITIVE,
|
||||||
|
),
|
||||||
|
up=AxisDirectionPair(
|
||||||
|
axis=Axis.Y,
|
||||||
|
direction=Direction.POSITIVE,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
units=UnitLength.CM,
|
||||||
|
)
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skip
|
@pytest.mark.skip
|
||||||
def test_create_file_conversion():
|
def test_create_file_conversion():
|
||||||
# Create our client.
|
# Create our client.
|
||||||
@ -3611,8 +3753,8 @@ def test_update_org_saml_idp():
|
|||||||
body=SamlIdentityProviderCreate(
|
body=SamlIdentityProviderCreate(
|
||||||
idp_entity_id="<string>",
|
idp_entity_id="<string>",
|
||||||
idp_metadata_source=IdpMetadataSource(
|
idp_metadata_source=IdpMetadataSource(
|
||||||
OptionBase64EncodedXml(
|
OptionUrl(
|
||||||
data=Base64Data(b"<bytes>"),
|
url="<string>",
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
technical_contact_email="<string>",
|
technical_contact_email="<string>",
|
||||||
@ -3633,8 +3775,8 @@ def test_update_org_saml_idp():
|
|||||||
body=SamlIdentityProviderCreate(
|
body=SamlIdentityProviderCreate(
|
||||||
idp_entity_id="<string>",
|
idp_entity_id="<string>",
|
||||||
idp_metadata_source=IdpMetadataSource(
|
idp_metadata_source=IdpMetadataSource(
|
||||||
OptionBase64EncodedXml(
|
OptionUrl(
|
||||||
data=Base64Data(b"<bytes>"),
|
url="<string>",
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
technical_contact_email="<string>",
|
technical_contact_email="<string>",
|
||||||
@ -3657,8 +3799,8 @@ async def test_update_org_saml_idp_async():
|
|||||||
body=SamlIdentityProviderCreate(
|
body=SamlIdentityProviderCreate(
|
||||||
idp_entity_id="<string>",
|
idp_entity_id="<string>",
|
||||||
idp_metadata_source=IdpMetadataSource(
|
idp_metadata_source=IdpMetadataSource(
|
||||||
OptionBase64EncodedXml(
|
OptionUrl(
|
||||||
data=Base64Data(b"<bytes>"),
|
url="<string>",
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
technical_contact_email="<string>",
|
technical_contact_email="<string>",
|
||||||
@ -3673,8 +3815,8 @@ async def test_update_org_saml_idp_async():
|
|||||||
body=SamlIdentityProviderCreate(
|
body=SamlIdentityProviderCreate(
|
||||||
idp_entity_id="<string>",
|
idp_entity_id="<string>",
|
||||||
idp_metadata_source=IdpMetadataSource(
|
idp_metadata_source=IdpMetadataSource(
|
||||||
OptionBase64EncodedXml(
|
OptionUrl(
|
||||||
data=Base64Data(b"<bytes>"),
|
url="<string>",
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
technical_contact_email="<string>",
|
technical_contact_email="<string>",
|
||||||
@ -3692,8 +3834,8 @@ def test_create_org_saml_idp():
|
|||||||
body=SamlIdentityProviderCreate(
|
body=SamlIdentityProviderCreate(
|
||||||
idp_entity_id="<string>",
|
idp_entity_id="<string>",
|
||||||
idp_metadata_source=IdpMetadataSource(
|
idp_metadata_source=IdpMetadataSource(
|
||||||
OptionBase64EncodedXml(
|
OptionUrl(
|
||||||
data=Base64Data(b"<bytes>"),
|
url="<string>",
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
technical_contact_email="<string>",
|
technical_contact_email="<string>",
|
||||||
@ -3714,8 +3856,8 @@ def test_create_org_saml_idp():
|
|||||||
body=SamlIdentityProviderCreate(
|
body=SamlIdentityProviderCreate(
|
||||||
idp_entity_id="<string>",
|
idp_entity_id="<string>",
|
||||||
idp_metadata_source=IdpMetadataSource(
|
idp_metadata_source=IdpMetadataSource(
|
||||||
OptionBase64EncodedXml(
|
OptionUrl(
|
||||||
data=Base64Data(b"<bytes>"),
|
url="<string>",
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
technical_contact_email="<string>",
|
technical_contact_email="<string>",
|
||||||
@ -3738,8 +3880,8 @@ async def test_create_org_saml_idp_async():
|
|||||||
body=SamlIdentityProviderCreate(
|
body=SamlIdentityProviderCreate(
|
||||||
idp_entity_id="<string>",
|
idp_entity_id="<string>",
|
||||||
idp_metadata_source=IdpMetadataSource(
|
idp_metadata_source=IdpMetadataSource(
|
||||||
OptionBase64EncodedXml(
|
OptionUrl(
|
||||||
data=Base64Data(b"<bytes>"),
|
url="<string>",
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
technical_contact_email="<string>",
|
technical_contact_email="<string>",
|
||||||
@ -3754,8 +3896,8 @@ async def test_create_org_saml_idp_async():
|
|||||||
body=SamlIdentityProviderCreate(
|
body=SamlIdentityProviderCreate(
|
||||||
idp_entity_id="<string>",
|
idp_entity_id="<string>",
|
||||||
idp_metadata_source=IdpMetadataSource(
|
idp_metadata_source=IdpMetadataSource(
|
||||||
OptionBase64EncodedXml(
|
OptionUrl(
|
||||||
data=Base64Data(b"<bytes>"),
|
url="<string>",
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
technical_contact_email="<string>",
|
technical_contact_email="<string>",
|
||||||
@ -5902,49 +6044,6 @@ async def test_get_oauth2_providers_for_user_async():
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skip
|
|
||||||
def test_get_user_onboarding_self():
|
|
||||||
# Create our client.
|
|
||||||
client = ClientFromEnv()
|
|
||||||
|
|
||||||
result: Optional[Union[Onboarding, Error]] = get_user_onboarding_self.sync(
|
|
||||||
client=client,
|
|
||||||
)
|
|
||||||
|
|
||||||
if isinstance(result, Error) or result is None:
|
|
||||||
print(result)
|
|
||||||
raise Exception("Error in response")
|
|
||||||
|
|
||||||
body: Onboarding = result
|
|
||||||
print(body)
|
|
||||||
|
|
||||||
# OR if you need more info (e.g. status_code)
|
|
||||||
response: Response[Optional[Union[Onboarding, Error]]] = (
|
|
||||||
get_user_onboarding_self.sync_detailed(
|
|
||||||
client=client,
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
# OR run async
|
|
||||||
@pytest.mark.asyncio
|
|
||||||
@pytest.mark.skip
|
|
||||||
async def test_get_user_onboarding_self_async():
|
|
||||||
# Create our client.
|
|
||||||
client = ClientFromEnv()
|
|
||||||
|
|
||||||
result: Optional[Union[Onboarding, Error]] = await get_user_onboarding_self.asyncio(
|
|
||||||
client=client,
|
|
||||||
)
|
|
||||||
|
|
||||||
# OR run async with more info
|
|
||||||
response: Response[
|
|
||||||
Optional[Union[Onboarding, Error]]
|
|
||||||
] = await get_user_onboarding_self.asyncio_detailed(
|
|
||||||
client=client,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skip
|
@pytest.mark.skip
|
||||||
def test_get_user_org():
|
def test_get_user_org():
|
||||||
# Create our client.
|
# Create our client.
|
||||||
@ -7831,11 +7930,8 @@ def test_modeling_commands_ws():
|
|||||||
# Send a message.
|
# Send a message.
|
||||||
websocket.send(
|
websocket.send(
|
||||||
WebSocketRequest(
|
WebSocketRequest(
|
||||||
OptionSdpOffer(
|
OptionMetricsResponse(
|
||||||
offer=RtcSessionDescription(
|
metrics=ClientMetrics(),
|
||||||
sdp="<string>",
|
|
||||||
type=RtcSdpType.UNSPECIFIED,
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -54,6 +54,7 @@ from .code_output import CodeOutput
|
|||||||
from .color import Color
|
from .color import Color
|
||||||
from .complementary_edges import ComplementaryEdges
|
from .complementary_edges import ComplementaryEdges
|
||||||
from .component_transform import ComponentTransform
|
from .component_transform import ComponentTransform
|
||||||
|
from .conversion_params import ConversionParams
|
||||||
from .country_code import CountryCode
|
from .country_code import CountryCode
|
||||||
from .coupon import Coupon
|
from .coupon import Coupon
|
||||||
from .create_shortlink_request import CreateShortlinkRequest
|
from .create_shortlink_request import CreateShortlinkRequest
|
||||||
@ -213,7 +214,6 @@ from .object_set_material_params_pbr import ObjectSetMaterialParamsPbr
|
|||||||
from .object_visible import ObjectVisible
|
from .object_visible import ObjectVisible
|
||||||
from .ok_modeling_cmd_response import OkModelingCmdResponse
|
from .ok_modeling_cmd_response import OkModelingCmdResponse
|
||||||
from .ok_web_socket_response_data import OkWebSocketResponseData
|
from .ok_web_socket_response_data import OkWebSocketResponseData
|
||||||
from .onboarding import Onboarding
|
|
||||||
from .opposite_for_angle import OppositeForAngle
|
from .opposite_for_angle import OppositeForAngle
|
||||||
from .opposite_for_length_unit import OppositeForLengthUnit
|
from .opposite_for_length_unit import OppositeForLengthUnit
|
||||||
from .org import Org
|
from .org import Org
|
||||||
@ -285,7 +285,9 @@ from .session_uuid import SessionUuid
|
|||||||
from .set_background_color import SetBackgroundColor
|
from .set_background_color import SetBackgroundColor
|
||||||
from .set_current_tool_properties import SetCurrentToolProperties
|
from .set_current_tool_properties import SetCurrentToolProperties
|
||||||
from .set_default_system_properties import SetDefaultSystemProperties
|
from .set_default_system_properties import SetDefaultSystemProperties
|
||||||
|
from .set_grid_auto_scale import SetGridAutoScale
|
||||||
from .set_grid_reference_plane import SetGridReferencePlane
|
from .set_grid_reference_plane import SetGridReferencePlane
|
||||||
|
from .set_grid_scale import SetGridScale
|
||||||
from .set_object_transform import SetObjectTransform
|
from .set_object_transform import SetObjectTransform
|
||||||
from .set_scene_units import SetSceneUnits
|
from .set_scene_units import SetSceneUnits
|
||||||
from .set_selection_filter import SetSelectionFilter
|
from .set_selection_filter import SetSelectionFilter
|
||||||
@ -335,6 +337,7 @@ from .token_revoke_request_form import TokenRevokeRequestForm
|
|||||||
from .transform import Transform
|
from .transform import Transform
|
||||||
from .transform_by_for_point3d import TransformByForPoint3d
|
from .transform_by_for_point3d import TransformByForPoint3d
|
||||||
from .transform_by_for_point4d import TransformByForPoint4d
|
from .transform_by_for_point4d import TransformByForPoint4d
|
||||||
|
from .twist_extrude import TwistExtrude
|
||||||
from .unit_angle import UnitAngle
|
from .unit_angle import UnitAngle
|
||||||
from .unit_angle_conversion import UnitAngleConversion
|
from .unit_angle_conversion import UnitAngleConversion
|
||||||
from .unit_area import UnitArea
|
from .unit_area import UnitArea
|
||||||
|
14
kittycad/models/conversion_params.py
Normal file
14
kittycad/models/conversion_params.py
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
|
from ..models.input_format3d import InputFormat3d
|
||||||
|
from ..models.output_format3d import OutputFormat3d
|
||||||
|
|
||||||
|
|
||||||
|
class ConversionParams(BaseModel):
|
||||||
|
"""Describes the file to convert (src) and what it should be converted into (output)."""
|
||||||
|
|
||||||
|
output_format: OutputFormat3d
|
||||||
|
|
||||||
|
src_format: InputFormat3d
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
@ -10,6 +10,4 @@ class EntityCircularPattern(BaseModel):
|
|||||||
|
|
||||||
entity_face_edge_ids: Optional[List[FaceEdgeInfo]] = None
|
entity_face_edge_ids: Optional[List[FaceEdgeInfo]] = None
|
||||||
|
|
||||||
entity_ids: Optional[List[str]] = None
|
|
||||||
|
|
||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
@ -8,8 +8,6 @@ from ..models.face_edge_info import FaceEdgeInfo
|
|||||||
class EntityClone(BaseModel):
|
class EntityClone(BaseModel):
|
||||||
"""The response from the `EntityClone` command."""
|
"""The response from the `EntityClone` command."""
|
||||||
|
|
||||||
entity_ids: Optional[List[str]] = None
|
|
||||||
|
|
||||||
face_edge_ids: Optional[List[FaceEdgeInfo]] = None
|
face_edge_ids: Optional[List[FaceEdgeInfo]] = None
|
||||||
|
|
||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
@ -10,6 +10,4 @@ class EntityLinearPattern(BaseModel):
|
|||||||
|
|
||||||
entity_face_edge_ids: Optional[List[FaceEdgeInfo]] = None
|
entity_face_edge_ids: Optional[List[FaceEdgeInfo]] = None
|
||||||
|
|
||||||
entity_ids: Optional[List[str]] = None
|
|
||||||
|
|
||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
@ -10,6 +10,4 @@ class EntityLinearPatternTransform(BaseModel):
|
|||||||
|
|
||||||
entity_face_edge_ids: Optional[List[FaceEdgeInfo]] = None
|
entity_face_edge_ids: Optional[List[FaceEdgeInfo]] = None
|
||||||
|
|
||||||
entity_ids: Optional[List[str]] = None
|
|
||||||
|
|
||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
@ -10,6 +10,4 @@ class EntityMirror(BaseModel):
|
|||||||
|
|
||||||
entity_face_edge_ids: Optional[List[FaceEdgeInfo]] = None
|
entity_face_edge_ids: Optional[List[FaceEdgeInfo]] = None
|
||||||
|
|
||||||
entity_ids: Optional[List[str]] = None
|
|
||||||
|
|
||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
@ -10,6 +10,4 @@ class EntityMirrorAcrossEdge(BaseModel):
|
|||||||
|
|
||||||
entity_face_edge_ids: Optional[List[FaceEdgeInfo]] = None
|
entity_face_edge_ids: Optional[List[FaceEdgeInfo]] = None
|
||||||
|
|
||||||
entity_ids: Optional[List[str]] = None
|
|
||||||
|
|
||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
@ -102,6 +102,28 @@ class OptionExtrude(BaseModel):
|
|||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class OptionTwistExtrude(BaseModel):
|
||||||
|
"""Command for twist extruding a solid 2d."""
|
||||||
|
|
||||||
|
angle_step_size: Angle = {"unit": "degrees", "value": 15.0} # type: ignore
|
||||||
|
|
||||||
|
center_2d: Point2d = {"x": 0.0, "y": 0.0} # type: ignore
|
||||||
|
|
||||||
|
distance: LengthUnit
|
||||||
|
|
||||||
|
faces: Optional[ExtrudedFaceInfo] = None
|
||||||
|
|
||||||
|
target: ModelingCmdId
|
||||||
|
|
||||||
|
tolerance: LengthUnit
|
||||||
|
|
||||||
|
total_rotation_angle: Angle
|
||||||
|
|
||||||
|
type: Literal["twist_extrude"] = "twist_extrude"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
class OptionSweep(BaseModel):
|
class OptionSweep(BaseModel):
|
||||||
"""Extrude the object along a path."""
|
"""Extrude the object along a path."""
|
||||||
|
|
||||||
@ -1620,6 +1642,26 @@ class OptionSetGridReferencePlane(BaseModel):
|
|||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class OptionSetGridScale(BaseModel):
|
||||||
|
"""Set the scale of the grid lines in the video feed."""
|
||||||
|
|
||||||
|
type: Literal["set_grid_scale"] = "set_grid_scale"
|
||||||
|
|
||||||
|
units: UnitLength
|
||||||
|
|
||||||
|
value: float
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class OptionSetGridAutoScale(BaseModel):
|
||||||
|
"""Set the grid lines to auto scale. The grid will get larger the further you zoom out, and smaller the more you zoom in."""
|
||||||
|
|
||||||
|
type: Literal["set_grid_auto_scale"] = "set_grid_auto_scale"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
ModelingCmd = RootModel[
|
ModelingCmd = RootModel[
|
||||||
Annotated[
|
Annotated[
|
||||||
Union[
|
Union[
|
||||||
@ -1628,6 +1670,7 @@ ModelingCmd = RootModel[
|
|||||||
OptionMovePathPen,
|
OptionMovePathPen,
|
||||||
OptionExtendPath,
|
OptionExtendPath,
|
||||||
OptionExtrude,
|
OptionExtrude,
|
||||||
|
OptionTwistExtrude,
|
||||||
OptionSweep,
|
OptionSweep,
|
||||||
OptionRevolve,
|
OptionRevolve,
|
||||||
OptionSolid3DShellFace,
|
OptionSolid3DShellFace,
|
||||||
@ -1751,6 +1794,8 @@ ModelingCmd = RootModel[
|
|||||||
OptionMakeOffsetPath,
|
OptionMakeOffsetPath,
|
||||||
OptionAddHoleFromOffset,
|
OptionAddHoleFromOffset,
|
||||||
OptionSetGridReferencePlane,
|
OptionSetGridReferencePlane,
|
||||||
|
OptionSetGridScale,
|
||||||
|
OptionSetGridAutoScale,
|
||||||
],
|
],
|
||||||
Field(discriminator="type"),
|
Field(discriminator="type"),
|
||||||
]
|
]
|
||||||
|
@ -114,7 +114,9 @@ from ..models.send_object import SendObject
|
|||||||
from ..models.set_background_color import SetBackgroundColor
|
from ..models.set_background_color import SetBackgroundColor
|
||||||
from ..models.set_current_tool_properties import SetCurrentToolProperties
|
from ..models.set_current_tool_properties import SetCurrentToolProperties
|
||||||
from ..models.set_default_system_properties import SetDefaultSystemProperties
|
from ..models.set_default_system_properties import SetDefaultSystemProperties
|
||||||
|
from ..models.set_grid_auto_scale import SetGridAutoScale
|
||||||
from ..models.set_grid_reference_plane import SetGridReferencePlane
|
from ..models.set_grid_reference_plane import SetGridReferencePlane
|
||||||
|
from ..models.set_grid_scale import SetGridScale
|
||||||
from ..models.set_object_transform import SetObjectTransform
|
from ..models.set_object_transform import SetObjectTransform
|
||||||
from ..models.set_scene_units import SetSceneUnits
|
from ..models.set_scene_units import SetSceneUnits
|
||||||
from ..models.set_selection_filter import SetSelectionFilter
|
from ..models.set_selection_filter import SetSelectionFilter
|
||||||
@ -136,6 +138,7 @@ from ..models.start_path import StartPath
|
|||||||
from ..models.surface_area import SurfaceArea
|
from ..models.surface_area import SurfaceArea
|
||||||
from ..models.sweep import Sweep
|
from ..models.sweep import Sweep
|
||||||
from ..models.take_snapshot import TakeSnapshot
|
from ..models.take_snapshot import TakeSnapshot
|
||||||
|
from ..models.twist_extrude import TwistExtrude
|
||||||
from ..models.update_annotation import UpdateAnnotation
|
from ..models.update_annotation import UpdateAnnotation
|
||||||
from ..models.view_isometric import ViewIsometric
|
from ..models.view_isometric import ViewIsometric
|
||||||
from ..models.volume import Volume
|
from ..models.volume import Volume
|
||||||
@ -200,6 +203,16 @@ class OptionExtrude(BaseModel):
|
|||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class OptionTwistExtrude(BaseModel):
|
||||||
|
""""""
|
||||||
|
|
||||||
|
data: TwistExtrude
|
||||||
|
|
||||||
|
type: Literal["twist_extrude"] = "twist_extrude"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
class OptionSweep(BaseModel):
|
class OptionSweep(BaseModel):
|
||||||
""""""
|
""""""
|
||||||
|
|
||||||
@ -1506,6 +1519,26 @@ class OptionBooleanSubtract(BaseModel):
|
|||||||
model_config = ConfigDict(protected_namespaces=())
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class OptionSetGridScale(BaseModel):
|
||||||
|
""""""
|
||||||
|
|
||||||
|
data: SetGridScale
|
||||||
|
|
||||||
|
type: Literal["set_grid_scale"] = "set_grid_scale"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
|
class OptionSetGridAutoScale(BaseModel):
|
||||||
|
""""""
|
||||||
|
|
||||||
|
data: SetGridAutoScale
|
||||||
|
|
||||||
|
type: Literal["set_grid_auto_scale"] = "set_grid_auto_scale"
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
|
||||||
|
|
||||||
OkModelingCmdResponse = RootModel[
|
OkModelingCmdResponse = RootModel[
|
||||||
Annotated[
|
Annotated[
|
||||||
Union[
|
Union[
|
||||||
@ -1515,6 +1548,7 @@ OkModelingCmdResponse = RootModel[
|
|||||||
OptionMovePathPen,
|
OptionMovePathPen,
|
||||||
OptionExtendPath,
|
OptionExtendPath,
|
||||||
OptionExtrude,
|
OptionExtrude,
|
||||||
|
OptionTwistExtrude,
|
||||||
OptionSweep,
|
OptionSweep,
|
||||||
OptionRevolve,
|
OptionRevolve,
|
||||||
OptionSolid3DShellFace,
|
OptionSolid3DShellFace,
|
||||||
@ -1645,6 +1679,8 @@ OkModelingCmdResponse = RootModel[
|
|||||||
OptionBooleanUnion,
|
OptionBooleanUnion,
|
||||||
OptionBooleanIntersection,
|
OptionBooleanIntersection,
|
||||||
OptionBooleanSubtract,
|
OptionBooleanSubtract,
|
||||||
|
OptionSetGridScale,
|
||||||
|
OptionSetGridAutoScale,
|
||||||
],
|
],
|
||||||
Field(discriminator="type"),
|
Field(discriminator="type"),
|
||||||
]
|
]
|
||||||
|
@ -1,16 +0,0 @@
|
|||||||
import datetime
|
|
||||||
from typing import Optional
|
|
||||||
|
|
||||||
from pydantic import BaseModel, ConfigDict
|
|
||||||
|
|
||||||
|
|
||||||
class Onboarding(BaseModel):
|
|
||||||
"""Onboarding details"""
|
|
||||||
|
|
||||||
first_call_from_modeling_app_date: Optional[datetime.datetime] = None
|
|
||||||
|
|
||||||
first_call_from_text_to_cad_date: Optional[datetime.datetime] = None
|
|
||||||
|
|
||||||
first_token_date: Optional[datetime.datetime] = None
|
|
||||||
|
|
||||||
model_config = ConfigDict(protected_namespaces=())
|
|
7
kittycad/models/set_grid_auto_scale.py
Normal file
7
kittycad/models/set_grid_auto_scale.py
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
|
|
||||||
|
class SetGridAutoScale(BaseModel):
|
||||||
|
"""The response from the 'SetGridScale'."""
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
7
kittycad/models/set_grid_scale.py
Normal file
7
kittycad/models/set_grid_scale.py
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
|
|
||||||
|
class SetGridScale(BaseModel):
|
||||||
|
"""The response from the 'SetGridScale'."""
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
@ -1,17 +1,20 @@
|
|||||||
from typing import Any
|
from typing import Optional
|
||||||
|
|
||||||
from pydantic import GetCoreSchemaHandler
|
from pydantic import BaseModel, ConfigDict
|
||||||
from pydantic_core import CoreSchema, core_schema
|
|
||||||
|
from ..models.origin_type import OriginType
|
||||||
|
from ..models.point3d import Point3d
|
||||||
|
|
||||||
|
|
||||||
class TransformByForPoint3d(str):
|
class TransformByForPoint3d(BaseModel):
|
||||||
""""""
|
"""How a property of an object should be transformed."""
|
||||||
|
|
||||||
def __str__(self) -> str:
|
is_local: bool
|
||||||
return self
|
|
||||||
|
|
||||||
@classmethod
|
origin: Optional[OriginType] = None
|
||||||
def __get_pydantic_core_schema__(
|
|
||||||
cls, source_type: Any, handler: GetCoreSchemaHandler
|
property: Point3d
|
||||||
) -> CoreSchema:
|
|
||||||
return core_schema.no_info_after_validator_function(cls, handler(str))
|
set: bool
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
@ -1,17 +1,20 @@
|
|||||||
from typing import Any
|
from typing import Optional
|
||||||
|
|
||||||
from pydantic import GetCoreSchemaHandler
|
from pydantic import BaseModel, ConfigDict
|
||||||
from pydantic_core import CoreSchema, core_schema
|
|
||||||
|
from ..models.origin_type import OriginType
|
||||||
|
from ..models.point4d import Point4d
|
||||||
|
|
||||||
|
|
||||||
class TransformByForPoint4d(str):
|
class TransformByForPoint4d(BaseModel):
|
||||||
""""""
|
"""How a property of an object should be transformed."""
|
||||||
|
|
||||||
def __str__(self) -> str:
|
is_local: bool
|
||||||
return self
|
|
||||||
|
|
||||||
@classmethod
|
origin: Optional[OriginType] = None
|
||||||
def __get_pydantic_core_schema__(
|
|
||||||
cls, source_type: Any, handler: GetCoreSchemaHandler
|
property: Point4d
|
||||||
) -> CoreSchema:
|
|
||||||
return core_schema.no_info_after_validator_function(cls, handler(str))
|
set: bool
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
||||||
|
7
kittycad/models/twist_extrude.py
Normal file
7
kittycad/models/twist_extrude.py
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
|
|
||||||
|
class TwistExtrude(BaseModel):
|
||||||
|
"""The response from the `TwistExtrude` endpoint."""
|
||||||
|
|
||||||
|
model_config = ConfigDict(protected_namespaces=())
|
@ -1,6 +1,6 @@
|
|||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "kittycad"
|
name = "kittycad"
|
||||||
version = "0.7.8"
|
version = "0.7.9"
|
||||||
description = "A client library for accessing KittyCAD"
|
description = "A client library for accessing KittyCAD"
|
||||||
|
|
||||||
authors = []
|
authors = []
|
||||||
@ -68,50 +68,50 @@ line-length = 88
|
|||||||
ignore = ["E501"]
|
ignore = ["E501"]
|
||||||
# Allow autofix for all enabled rules (when `--fix`) is provided.
|
# Allow autofix for all enabled rules (when `--fix`) is provided.
|
||||||
fixable = [
|
fixable = [
|
||||||
"A",
|
"A",
|
||||||
"B",
|
"B",
|
||||||
"C",
|
"C",
|
||||||
"D",
|
"D",
|
||||||
"E",
|
"E",
|
||||||
"F",
|
"F",
|
||||||
"G",
|
"G",
|
||||||
"I",
|
"I",
|
||||||
"N",
|
"N",
|
||||||
"Q",
|
"Q",
|
||||||
"S",
|
"S",
|
||||||
"T",
|
"T",
|
||||||
"W",
|
"W",
|
||||||
"ANN",
|
"ANN",
|
||||||
"ARG",
|
"ARG",
|
||||||
"BLE",
|
"BLE",
|
||||||
"COM",
|
"COM",
|
||||||
"DJ",
|
"DJ",
|
||||||
"DTZ",
|
"DTZ",
|
||||||
"EM",
|
"EM",
|
||||||
"ERA",
|
"ERA",
|
||||||
"EXE",
|
"EXE",
|
||||||
"FBT",
|
"FBT",
|
||||||
"ICN",
|
"ICN",
|
||||||
"INP",
|
"INP",
|
||||||
"ISC",
|
"ISC",
|
||||||
"NPY",
|
"NPY",
|
||||||
"PD",
|
"PD",
|
||||||
"PGH",
|
"PGH",
|
||||||
"PIE",
|
"PIE",
|
||||||
"PL",
|
"PL",
|
||||||
"PT",
|
"PT",
|
||||||
"PTH",
|
"PTH",
|
||||||
"PYI",
|
"PYI",
|
||||||
"RET",
|
"RET",
|
||||||
"RSE",
|
"RSE",
|
||||||
"RUF",
|
"RUF",
|
||||||
"SIM",
|
"SIM",
|
||||||
"SLF",
|
"SLF",
|
||||||
"TCH",
|
"TCH",
|
||||||
"TID",
|
"TID",
|
||||||
"TRY",
|
"TRY",
|
||||||
"UP",
|
"UP",
|
||||||
"YTT",
|
"YTT",
|
||||||
]
|
]
|
||||||
unfixable = []
|
unfixable = []
|
||||||
# Allow unused variables when underscore-prefixed.
|
# Allow unused variables when underscore-prefixed.
|
||||||
|
605
spec.json
605
spec.json
@ -2270,6 +2270,164 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"/file/conversion": {
|
||||||
|
"post": {
|
||||||
|
"tags": [
|
||||||
|
"file"
|
||||||
|
],
|
||||||
|
"summary": "Convert CAD file from one format to another.",
|
||||||
|
"description": "This takes a HTTP multipart body with these fields in any order:\n\n - The input and output format options (as JSON), name is 'body'. - The files to convert, in raw binary. Must supply filenames.\n\nThis starts a conversion job and returns the `id` of the operation. You can use the `id` returned from the request to get status information about the async operation from the `/async/operations/{id}` endpoint.",
|
||||||
|
"operationId": "create_file_conversion_options",
|
||||||
|
"requestBody": {
|
||||||
|
"description": "Convert files to other formats",
|
||||||
|
"content": {
|
||||||
|
"multipart/form-data": {
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/components/schemas/ConversionParams"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"responses": {
|
||||||
|
"201": {
|
||||||
|
"description": "successful creation",
|
||||||
|
"headers": {
|
||||||
|
"Access-Control-Allow-Credentials": {
|
||||||
|
"description": "Access-Control-Allow-Credentials header.",
|
||||||
|
"style": "simple",
|
||||||
|
"schema": {
|
||||||
|
"nullable": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Access-Control-Allow-Headers": {
|
||||||
|
"description": "Access-Control-Allow-Headers header. This is a comma-separated list of headers.",
|
||||||
|
"style": "simple",
|
||||||
|
"schema": {
|
||||||
|
"nullable": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Access-Control-Allow-Methods": {
|
||||||
|
"description": "Access-Control-Allow-Methods header.",
|
||||||
|
"style": "simple",
|
||||||
|
"schema": {
|
||||||
|
"nullable": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Access-Control-Allow-Origin": {
|
||||||
|
"description": "Access-Control-Allow-Origin header.",
|
||||||
|
"style": "simple",
|
||||||
|
"schema": {
|
||||||
|
"nullable": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Set-Cookie": {
|
||||||
|
"description": "Set-Cookie header.",
|
||||||
|
"style": "simple",
|
||||||
|
"schema": {
|
||||||
|
"nullable": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"X-Api-Call-Id": {
|
||||||
|
"description": "ID for this request. We return it so that users can report this to us and help us debug their problems.",
|
||||||
|
"style": "simple",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"content": {
|
||||||
|
"application/json": {
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/components/schemas/FileConversion"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"4XX": {
|
||||||
|
"$ref": "#/components/responses/Error"
|
||||||
|
},
|
||||||
|
"5XX": {
|
||||||
|
"$ref": "#/components/responses/Error"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"options": {
|
||||||
|
"tags": [
|
||||||
|
"hidden"
|
||||||
|
],
|
||||||
|
"summary": "OPTIONS endpoint.",
|
||||||
|
"description": "This is necessary for some preflight requests, specifically POST, PUT, and DELETE.",
|
||||||
|
"operationId": "options_file_conversion_options",
|
||||||
|
"responses": {
|
||||||
|
"204": {
|
||||||
|
"description": "resource updated",
|
||||||
|
"headers": {
|
||||||
|
"Access-Control-Allow-Credentials": {
|
||||||
|
"description": "Access-Control-Allow-Credentials header.",
|
||||||
|
"style": "simple",
|
||||||
|
"schema": {
|
||||||
|
"nullable": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Access-Control-Allow-Headers": {
|
||||||
|
"description": "Access-Control-Allow-Headers header. This is a comma-separated list of headers.",
|
||||||
|
"style": "simple",
|
||||||
|
"schema": {
|
||||||
|
"nullable": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Access-Control-Allow-Methods": {
|
||||||
|
"description": "Access-Control-Allow-Methods header.",
|
||||||
|
"style": "simple",
|
||||||
|
"schema": {
|
||||||
|
"nullable": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Access-Control-Allow-Origin": {
|
||||||
|
"description": "Access-Control-Allow-Origin header.",
|
||||||
|
"style": "simple",
|
||||||
|
"schema": {
|
||||||
|
"nullable": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Set-Cookie": {
|
||||||
|
"description": "Set-Cookie header.",
|
||||||
|
"style": "simple",
|
||||||
|
"schema": {
|
||||||
|
"nullable": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"X-Api-Call-Id": {
|
||||||
|
"description": "ID for this request. We return it so that users can report this to us and help us debug their problems.",
|
||||||
|
"style": "simple",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"4XX": {
|
||||||
|
"$ref": "#/components/responses/Error"
|
||||||
|
},
|
||||||
|
"5XX": {
|
||||||
|
"$ref": "#/components/responses/Error"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"/file/conversion/{src_format}/{output_format}": {
|
"/file/conversion/{src_format}/{output_format}": {
|
||||||
"post": {
|
"post": {
|
||||||
"tags": [
|
"tags": [
|
||||||
@ -13068,85 +13226,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"/user/onboarding": {
|
|
||||||
"get": {
|
|
||||||
"tags": [
|
|
||||||
"users",
|
|
||||||
"hidden"
|
|
||||||
],
|
|
||||||
"summary": "Get your user's onboarding status.",
|
|
||||||
"description": "Checks key part of their api usage to determine their onboarding progress",
|
|
||||||
"operationId": "get_user_onboarding_self",
|
|
||||||
"responses": {
|
|
||||||
"200": {
|
|
||||||
"description": "successful operation",
|
|
||||||
"headers": {
|
|
||||||
"Access-Control-Allow-Credentials": {
|
|
||||||
"description": "Access-Control-Allow-Credentials header.",
|
|
||||||
"style": "simple",
|
|
||||||
"schema": {
|
|
||||||
"nullable": true,
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Access-Control-Allow-Headers": {
|
|
||||||
"description": "Access-Control-Allow-Headers header. This is a comma-separated list of headers.",
|
|
||||||
"style": "simple",
|
|
||||||
"schema": {
|
|
||||||
"nullable": true,
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Access-Control-Allow-Methods": {
|
|
||||||
"description": "Access-Control-Allow-Methods header.",
|
|
||||||
"style": "simple",
|
|
||||||
"schema": {
|
|
||||||
"nullable": true,
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Access-Control-Allow-Origin": {
|
|
||||||
"description": "Access-Control-Allow-Origin header.",
|
|
||||||
"style": "simple",
|
|
||||||
"schema": {
|
|
||||||
"nullable": true,
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Set-Cookie": {
|
|
||||||
"description": "Set-Cookie header.",
|
|
||||||
"style": "simple",
|
|
||||||
"schema": {
|
|
||||||
"nullable": true,
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"X-Api-Call-Id": {
|
|
||||||
"description": "ID for this request. We return it so that users can report this to us and help us debug their problems.",
|
|
||||||
"style": "simple",
|
|
||||||
"required": true,
|
|
||||||
"schema": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"content": {
|
|
||||||
"application/json": {
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/components/schemas/Onboarding"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"4XX": {
|
|
||||||
"$ref": "#/components/responses/Error"
|
|
||||||
},
|
|
||||||
"5XX": {
|
|
||||||
"$ref": "#/components/responses/Error"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"/user/org": {
|
"/user/org": {
|
||||||
"get": {
|
"get": {
|
||||||
"tags": [
|
"tags": [
|
||||||
@ -20025,6 +20104,32 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"ConversionParams": {
|
||||||
|
"description": "Describes the file to convert (src) and what it should be converted into (output).",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"output_format": {
|
||||||
|
"description": "Describes the output file(s).",
|
||||||
|
"allOf": [
|
||||||
|
{
|
||||||
|
"$ref": "#/components/schemas/OutputFormat3d"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"src_format": {
|
||||||
|
"description": "Describes the input file(s).",
|
||||||
|
"allOf": [
|
||||||
|
{
|
||||||
|
"$ref": "#/components/schemas/InputFormat3d"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"output_format",
|
||||||
|
"src_format"
|
||||||
|
]
|
||||||
|
},
|
||||||
"CountryCode": {
|
"CountryCode": {
|
||||||
"description": "An ISO-3166 alpha-2 country code. Always uppercase.",
|
"description": "An ISO-3166 alpha-2 country code. Always uppercase.",
|
||||||
"type": "string"
|
"type": "string"
|
||||||
@ -20910,14 +21015,6 @@
|
|||||||
"items": {
|
"items": {
|
||||||
"$ref": "#/components/schemas/FaceEdgeInfo"
|
"$ref": "#/components/schemas/FaceEdgeInfo"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"entity_ids": {
|
|
||||||
"description": "The UUIDs of the entities that were created.",
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "string",
|
|
||||||
"format": "uuid"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -20925,14 +21022,6 @@
|
|||||||
"description": "The response from the `EntityClone` command.",
|
"description": "The response from the `EntityClone` command.",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"entity_ids": {
|
|
||||||
"description": "The UUIDs of the entities that were created.",
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "string",
|
|
||||||
"format": "uuid"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"face_edge_ids": {
|
"face_edge_ids": {
|
||||||
"description": "The Face and Edge Ids of the cloned entity.",
|
"description": "The Face and Edge Ids of the cloned entity.",
|
||||||
"type": "array",
|
"type": "array",
|
||||||
@ -21059,14 +21148,6 @@
|
|||||||
"items": {
|
"items": {
|
||||||
"$ref": "#/components/schemas/FaceEdgeInfo"
|
"$ref": "#/components/schemas/FaceEdgeInfo"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"entity_ids": {
|
|
||||||
"description": "The UUIDs of the entities that were created.",
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "string",
|
|
||||||
"format": "uuid"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -21080,14 +21161,6 @@
|
|||||||
"items": {
|
"items": {
|
||||||
"$ref": "#/components/schemas/FaceEdgeInfo"
|
"$ref": "#/components/schemas/FaceEdgeInfo"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"entity_ids": {
|
|
||||||
"description": "The UUIDs of the entities that were created.",
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "string",
|
|
||||||
"format": "uuid"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -21113,14 +21186,6 @@
|
|||||||
"items": {
|
"items": {
|
||||||
"$ref": "#/components/schemas/FaceEdgeInfo"
|
"$ref": "#/components/schemas/FaceEdgeInfo"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"entity_ids": {
|
|
||||||
"description": "The UUIDs of the entities that were created.",
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "string",
|
|
||||||
"format": "uuid"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -21134,14 +21199,6 @@
|
|||||||
"items": {
|
"items": {
|
||||||
"$ref": "#/components/schemas/FaceEdgeInfo"
|
"$ref": "#/components/schemas/FaceEdgeInfo"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"entity_ids": {
|
|
||||||
"description": "The UUIDs of the entities that were created.",
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "string",
|
|
||||||
"format": "uuid"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -24396,6 +24453,90 @@
|
|||||||
"type"
|
"type"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"description": "Command for twist extruding a solid 2d.",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"angle_step_size": {
|
||||||
|
"description": "Angle step interval (converted to whole number degrees and bounded between 4° and 90°)",
|
||||||
|
"default": {
|
||||||
|
"unit": "degrees",
|
||||||
|
"value": 15.0
|
||||||
|
},
|
||||||
|
"allOf": [
|
||||||
|
{
|
||||||
|
"$ref": "#/components/schemas/Angle"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"center_2d": {
|
||||||
|
"description": "Center to twist about (relative to 2D sketch)",
|
||||||
|
"default": {
|
||||||
|
"x": 0.0,
|
||||||
|
"y": 0.0
|
||||||
|
},
|
||||||
|
"allOf": [
|
||||||
|
{
|
||||||
|
"$ref": "#/components/schemas/Point2d"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"distance": {
|
||||||
|
"description": "How far off the plane to extrude",
|
||||||
|
"allOf": [
|
||||||
|
{
|
||||||
|
"$ref": "#/components/schemas/LengthUnit"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"faces": {
|
||||||
|
"nullable": true,
|
||||||
|
"description": "Which IDs should the new faces have? If this isn't given, the engine will generate IDs.",
|
||||||
|
"allOf": [
|
||||||
|
{
|
||||||
|
"$ref": "#/components/schemas/ExtrudedFaceInfo"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"target": {
|
||||||
|
"description": "Which sketch to extrude. Must be a closed 2D solid.",
|
||||||
|
"allOf": [
|
||||||
|
{
|
||||||
|
"$ref": "#/components/schemas/ModelingCmdId"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"tolerance": {
|
||||||
|
"description": "The twisted surface loft tolerance",
|
||||||
|
"allOf": [
|
||||||
|
{
|
||||||
|
"$ref": "#/components/schemas/LengthUnit"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"total_rotation_angle": {
|
||||||
|
"description": "Total rotation of the section",
|
||||||
|
"allOf": [
|
||||||
|
{
|
||||||
|
"$ref": "#/components/schemas/Angle"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"twist_extrude"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"distance",
|
||||||
|
"target",
|
||||||
|
"tolerance",
|
||||||
|
"total_rotation_angle",
|
||||||
|
"type"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"description": "Extrude the object along a path.",
|
"description": "Extrude the object along a path.",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
@ -28221,6 +28362,51 @@
|
|||||||
"reference_id",
|
"reference_id",
|
||||||
"type"
|
"type"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "Set the scale of the grid lines in the video feed.",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"set_grid_scale"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"units": {
|
||||||
|
"description": "Which units the `value` field uses.",
|
||||||
|
"allOf": [
|
||||||
|
{
|
||||||
|
"$ref": "#/components/schemas/UnitLength"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"value": {
|
||||||
|
"description": "Distance between grid lines represents this much distance.",
|
||||||
|
"type": "number",
|
||||||
|
"format": "float"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"type",
|
||||||
|
"units",
|
||||||
|
"value"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "Set the grid lines to auto scale. The grid will get larger the further you zoom out, and smaller the more you zoom in.",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"set_grid_auto_scale"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"type"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -28462,6 +28648,24 @@
|
|||||||
"type"
|
"type"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"data": {
|
||||||
|
"$ref": "#/components/schemas/TwistExtrude"
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"twist_extrude"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"data",
|
||||||
|
"type"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
@ -30801,6 +31005,42 @@
|
|||||||
"data",
|
"data",
|
||||||
"type"
|
"type"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"data": {
|
||||||
|
"$ref": "#/components/schemas/SetGridScale"
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"set_grid_scale"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"data",
|
||||||
|
"type"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"data": {
|
||||||
|
"$ref": "#/components/schemas/SetGridAutoScale"
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"set_grid_auto_scale"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"data",
|
||||||
|
"type"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -31096,33 +31336,6 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"Onboarding": {
|
|
||||||
"description": "Onboarding details",
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"first_call_from_modeling_app_date": {
|
|
||||||
"nullable": true,
|
|
||||||
"title": "DateTime",
|
|
||||||
"description": "When the user first used the modeling app.",
|
|
||||||
"type": "string",
|
|
||||||
"format": "date-time"
|
|
||||||
},
|
|
||||||
"first_call_from_text_to_cad_date": {
|
|
||||||
"nullable": true,
|
|
||||||
"title": "DateTime",
|
|
||||||
"description": "When the user first used text-to-CAD.",
|
|
||||||
"type": "string",
|
|
||||||
"format": "date-time"
|
|
||||||
},
|
|
||||||
"first_token_date": {
|
|
||||||
"nullable": true,
|
|
||||||
"title": "DateTime",
|
|
||||||
"description": "When the user created their first token.",
|
|
||||||
"type": "string",
|
|
||||||
"format": "date-time"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"OppositeForAngle": {
|
"OppositeForAngle": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
@ -33183,10 +33396,18 @@
|
|||||||
"description": "The response from the `SetDefaultSystemProperties` endpoint.",
|
"description": "The response from the `SetDefaultSystemProperties` endpoint.",
|
||||||
"type": "object"
|
"type": "object"
|
||||||
},
|
},
|
||||||
|
"SetGridAutoScale": {
|
||||||
|
"description": "The response from the 'SetGridScale'.",
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
"SetGridReferencePlane": {
|
"SetGridReferencePlane": {
|
||||||
"description": "The response from the 'SetGridReferencePlane'.",
|
"description": "The response from the 'SetGridReferencePlane'.",
|
||||||
"type": "object"
|
"type": "object"
|
||||||
},
|
},
|
||||||
|
"SetGridScale": {
|
||||||
|
"description": "The response from the 'SetGridScale'.",
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
"SetObjectTransform": {
|
"SetObjectTransform": {
|
||||||
"description": "The response from the `SetObjectTransform` command.",
|
"description": "The response from the `SetObjectTransform` command.",
|
||||||
"type": "object"
|
"type": "object"
|
||||||
@ -34451,10 +34672,82 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"TransformByForPoint3d": {
|
"TransformByForPoint3d": {
|
||||||
"type": "string"
|
"description": "How a property of an object should be transformed.",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"is_local": {
|
||||||
|
"deprecated": true,
|
||||||
|
"description": "If true, the transform is applied in local space. If false, the transform is applied in global space.",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"origin": {
|
||||||
|
"nullable": true,
|
||||||
|
"description": "What to use as the origin for the transformation. If not provided, will fall back to local or global origin, depending on whatever the `is_local` field was set to.",
|
||||||
|
"allOf": [
|
||||||
|
{
|
||||||
|
"$ref": "#/components/schemas/OriginType"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"description": "The scale, or rotation, or translation.",
|
||||||
|
"allOf": [
|
||||||
|
{
|
||||||
|
"$ref": "#/components/schemas/Point3d"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"set": {
|
||||||
|
"description": "If true, overwrite the previous value with this. If false, the previous value will be modified. E.g. when translating, `set=true` will set a new location, and `set=false` will translate the current location by the given X/Y/Z.",
|
||||||
|
"type": "boolean"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"is_local",
|
||||||
|
"property",
|
||||||
|
"set"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"TransformByForPoint4d": {
|
"TransformByForPoint4d": {
|
||||||
"type": "string"
|
"description": "How a property of an object should be transformed.",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"is_local": {
|
||||||
|
"deprecated": true,
|
||||||
|
"description": "If true, the transform is applied in local space. If false, the transform is applied in global space.",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"origin": {
|
||||||
|
"nullable": true,
|
||||||
|
"description": "What to use as the origin for the transformation. If not provided, will fall back to local or global origin, depending on whatever the `is_local` field was set to.",
|
||||||
|
"allOf": [
|
||||||
|
{
|
||||||
|
"$ref": "#/components/schemas/OriginType"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"property": {
|
||||||
|
"description": "The scale, or rotation, or translation.",
|
||||||
|
"allOf": [
|
||||||
|
{
|
||||||
|
"$ref": "#/components/schemas/Point4d"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"set": {
|
||||||
|
"description": "If true, overwrite the previous value with this. If false, the previous value will be modified. E.g. when translating, `set=true` will set a new location, and `set=false` will translate the current location by the given X/Y/Z.",
|
||||||
|
"type": "boolean"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"is_local",
|
||||||
|
"property",
|
||||||
|
"set"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"TwistExtrude": {
|
||||||
|
"description": "The response from the `TwistExtrude` endpoint.",
|
||||||
|
"type": "object"
|
||||||
},
|
},
|
||||||
"UnitAngle": {
|
"UnitAngle": {
|
||||||
"description": "The valid types of angle formats.",
|
"description": "The valid types of angle formats.",
|
||||||
|
Reference in New Issue
Block a user