Skip to content

Commit cde6bd6

Browse files
Update api spec (#460)
* YOYO NEW API SPEC! * I have generated the latest API! --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent fbc16ba commit cde6bd6

File tree

7 files changed

+697
-473
lines changed

7 files changed

+697
-473
lines changed

kittycad.py.patch.json

Lines changed: 426 additions & 426 deletions
Large diffs are not rendered by default.

kittycad/examples_test.py

Lines changed: 67 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@
240240
from kittycad.models.api_token_uuid import ApiTokenUuid
241241
from kittycad.models.axis import Axis
242242
from kittycad.models.axis_direction_pair import AxisDirectionPair
243+
from kittycad.models.base64data import Base64Data
243244
from kittycad.models.billing_info import BillingInfo
244245
from kittycad.models.client_metrics import ClientMetrics
245246
from kittycad.models.code_language import CodeLanguage
@@ -252,15 +253,17 @@
252253
from kittycad.models.email_authentication_form import EmailAuthenticationForm
253254
from kittycad.models.enterprise_subscription_tier_price import (
254255
EnterpriseSubscriptionTierPrice,
255-
OptionPerUser,
256+
OptionFlat,
256257
)
257258
from kittycad.models.event import Event, OptionModelingAppEvent
258259
from kittycad.models.file_export_format import FileExportFormat
259260
from kittycad.models.file_import_format import FileImportFormat
260-
from kittycad.models.gltf_presentation import GltfPresentation
261-
from kittycad.models.gltf_storage import GltfStorage
262-
from kittycad.models.idp_metadata_source import IdpMetadataSource, OptionUrl
263-
from kittycad.models.input_format3d import InputFormat3d, OptionStl
261+
from kittycad.models.idp_metadata_source import (
262+
IdpMetadataSource,
263+
OptionBase64EncodedXml,
264+
OptionUrl,
265+
)
266+
from kittycad.models.input_format3d import InputFormat3d, OptionSldprt
264267
from kittycad.models.inquiry_form import InquiryForm
265268
from kittycad.models.inquiry_type import InquiryType
266269
from kittycad.models.kcl_code_completion_params import KclCodeCompletionParams
@@ -274,16 +277,18 @@
274277
ModelingAppOrganizationSubscriptionTier,
275278
)
276279
from kittycad.models.org_details import OrgDetails
277-
from kittycad.models.output_format3d import OptionGltf, OutputFormat3d
280+
from kittycad.models.output_format3d import OptionStl, OutputFormat3d
278281
from kittycad.models.plan_interval import PlanInterval
279282
from kittycad.models.post_effect_type import PostEffectType
280283
from kittycad.models.privacy_settings import PrivacySettings
281284
from kittycad.models.saml_identity_provider_create import SamlIdentityProviderCreate
285+
from kittycad.models.selection import OptionMeshByIndex, Selection
282286
from kittycad.models.service_account_uuid import ServiceAccountUuid
283287
from kittycad.models.session_uuid import SessionUuid
284288
from kittycad.models.source_position import SourcePosition
285289
from kittycad.models.source_range import SourceRange
286290
from kittycad.models.source_range_prompt import SourceRangePrompt
291+
from kittycad.models.stl_storage import StlStorage
287292
from kittycad.models.store_coupon_params import StoreCouponParams
288293
from kittycad.models.subscribe import Subscribe
289294
from kittycad.models.system import System
@@ -1386,12 +1391,6 @@ def test_create_file_conversion_options():
13861391
client=client,
13871392
body=ConversionParams(
13881393
output_format=OutputFormat3d(
1389-
OptionGltf(
1390-
presentation=GltfPresentation.COMPACT,
1391-
storage=GltfStorage.BINARY,
1392-
)
1393-
),
1394-
src_format=InputFormat3d(
13951394
OptionStl(
13961395
coords=System(
13971396
forward=AxisDirectionPair(
@@ -1403,9 +1402,20 @@ def test_create_file_conversion_options():
14031402
direction=Direction.POSITIVE,
14041403
),
14051404
),
1405+
selection=Selection(
1406+
OptionMeshByIndex(
1407+
index=10,
1408+
)
1409+
),
1410+
storage=StlStorage.ASCII,
14061411
units=UnitLength.CM,
14071412
)
14081413
),
1414+
src_format=InputFormat3d(
1415+
OptionSldprt(
1416+
split_closed_faces=False,
1417+
)
1418+
),
14091419
),
14101420
)
14111421
)
@@ -1423,12 +1433,6 @@ def test_create_file_conversion_options():
14231433
client=client,
14241434
body=ConversionParams(
14251435
output_format=OutputFormat3d(
1426-
OptionGltf(
1427-
presentation=GltfPresentation.COMPACT,
1428-
storage=GltfStorage.BINARY,
1429-
)
1430-
),
1431-
src_format=InputFormat3d(
14321436
OptionStl(
14331437
coords=System(
14341438
forward=AxisDirectionPair(
@@ -1440,9 +1444,20 @@ def test_create_file_conversion_options():
14401444
direction=Direction.POSITIVE,
14411445
),
14421446
),
1447+
selection=Selection(
1448+
OptionMeshByIndex(
1449+
index=10,
1450+
)
1451+
),
1452+
storage=StlStorage.ASCII,
14431453
units=UnitLength.CM,
14441454
)
14451455
),
1456+
src_format=InputFormat3d(
1457+
OptionSldprt(
1458+
split_closed_faces=False,
1459+
)
1460+
),
14461461
),
14471462
)
14481463
)
@@ -1461,12 +1476,6 @@ async def test_create_file_conversion_options_async():
14611476
client=client,
14621477
body=ConversionParams(
14631478
output_format=OutputFormat3d(
1464-
OptionGltf(
1465-
presentation=GltfPresentation.COMPACT,
1466-
storage=GltfStorage.BINARY,
1467-
)
1468-
),
1469-
src_format=InputFormat3d(
14701479
OptionStl(
14711480
coords=System(
14721481
forward=AxisDirectionPair(
@@ -1478,9 +1487,20 @@ async def test_create_file_conversion_options_async():
14781487
direction=Direction.POSITIVE,
14791488
),
14801489
),
1490+
selection=Selection(
1491+
OptionMeshByIndex(
1492+
index=10,
1493+
)
1494+
),
1495+
storage=StlStorage.ASCII,
14811496
units=UnitLength.CM,
14821497
)
14831498
),
1499+
src_format=InputFormat3d(
1500+
OptionSldprt(
1501+
split_closed_faces=False,
1502+
)
1503+
),
14841504
),
14851505
)
14861506

@@ -1491,12 +1511,6 @@ async def test_create_file_conversion_options_async():
14911511
client=client,
14921512
body=ConversionParams(
14931513
output_format=OutputFormat3d(
1494-
OptionGltf(
1495-
presentation=GltfPresentation.COMPACT,
1496-
storage=GltfStorage.BINARY,
1497-
)
1498-
),
1499-
src_format=InputFormat3d(
15001514
OptionStl(
15011515
coords=System(
15021516
forward=AxisDirectionPair(
@@ -1508,9 +1522,20 @@ async def test_create_file_conversion_options_async():
15081522
direction=Direction.POSITIVE,
15091523
),
15101524
),
1525+
selection=Selection(
1526+
OptionMeshByIndex(
1527+
index=10,
1528+
)
1529+
),
1530+
storage=StlStorage.ASCII,
15111531
units=UnitLength.CM,
15121532
)
15131533
),
1534+
src_format=InputFormat3d(
1535+
OptionSldprt(
1536+
split_closed_faces=False,
1537+
)
1538+
),
15141539
),
15151540
)
15161541

@@ -3798,8 +3823,8 @@ def test_update_org_saml_idp():
37983823
body=SamlIdentityProviderCreate(
37993824
idp_entity_id="<string>",
38003825
idp_metadata_source=IdpMetadataSource(
3801-
OptionUrl(
3802-
url="<string>",
3826+
OptionBase64EncodedXml(
3827+
data=Base64Data(b"<bytes>"),
38033828
)
38043829
),
38053830
technical_contact_email="<string>",
@@ -3820,8 +3845,8 @@ def test_update_org_saml_idp():
38203845
body=SamlIdentityProviderCreate(
38213846
idp_entity_id="<string>",
38223847
idp_metadata_source=IdpMetadataSource(
3823-
OptionUrl(
3824-
url="<string>",
3848+
OptionBase64EncodedXml(
3849+
data=Base64Data(b"<bytes>"),
38253850
)
38263851
),
38273852
technical_contact_email="<string>",
@@ -3844,8 +3869,8 @@ async def test_update_org_saml_idp_async():
38443869
body=SamlIdentityProviderCreate(
38453870
idp_entity_id="<string>",
38463871
idp_metadata_source=IdpMetadataSource(
3847-
OptionUrl(
3848-
url="<string>",
3872+
OptionBase64EncodedXml(
3873+
data=Base64Data(b"<bytes>"),
38493874
)
38503875
),
38513876
technical_contact_email="<string>",
@@ -3860,8 +3885,8 @@ async def test_update_org_saml_idp_async():
38603885
body=SamlIdentityProviderCreate(
38613886
idp_entity_id="<string>",
38623887
idp_metadata_source=IdpMetadataSource(
3863-
OptionUrl(
3864-
url="<string>",
3888+
OptionBase64EncodedXml(
3889+
data=Base64Data(b"<bytes>"),
38653890
)
38663891
),
38673892
technical_contact_email="<string>",
@@ -4360,7 +4385,7 @@ def test_update_enterprise_pricing_for_org():
43604385
client=client,
43614386
id=Uuid("<string>"),
43624387
body=EnterpriseSubscriptionTierPrice(
4363-
OptionPerUser(
4388+
OptionFlat(
43644389
interval=PlanInterval.DAY,
43654390
price=3.14,
43664391
)
@@ -4381,7 +4406,7 @@ def test_update_enterprise_pricing_for_org():
43814406
client=client,
43824407
id=Uuid("<string>"),
43834408
body=EnterpriseSubscriptionTierPrice(
4384-
OptionPerUser(
4409+
OptionFlat(
43854410
interval=PlanInterval.DAY,
43864411
price=3.14,
43874412
)
@@ -4403,7 +4428,7 @@ async def test_update_enterprise_pricing_for_org_async():
44034428
client=client,
44044429
id=Uuid("<string>"),
44054430
body=EnterpriseSubscriptionTierPrice(
4406-
OptionPerUser(
4431+
OptionFlat(
44074432
interval=PlanInterval.DAY,
44084433
price=3.14,
44094434
)
@@ -4417,7 +4442,7 @@ async def test_update_enterprise_pricing_for_org_async():
44174442
client=client,
44184443
id=Uuid("<string>"),
44194444
body=EnterpriseSubscriptionTierPrice(
4420-
OptionPerUser(
4445+
OptionFlat(
44214446
interval=PlanInterval.DAY,
44224447
price=3.14,
44234448
)

kittycad/models/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@
132132
from .extended_user import ExtendedUser
133133
from .extended_user_results_page import ExtendedUserResultsPage
134134
from .extrude import Extrude
135+
from .extrude_method import ExtrudeMethod
135136
from .extruded_face_info import ExtrudedFaceInfo
136137
from .extrusion_face_cap_type import ExtrusionFaceCapType
137138
from .extrusion_face_info import ExtrusionFaceInfo

kittycad/models/extrude_method.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from enum import Enum
2+
3+
4+
class ExtrudeMethod(str, Enum):
5+
"""Extrusion method determining if the extrusion will be part of the existing object or an entirely new object.""" # noqa: E501
6+
7+
"""# Create a new object that is not connected to the object it is extruded from. This will result in two objects after the operation. """ # noqa: E501
8+
NEW = "new"
9+
"""# This extrusion will be part of object it is extruded from. This will result in one object after the operation. """ # noqa: E501
10+
MERGE = "merge"
11+
12+
def __str__(self) -> str:
13+
return str(self.value)

kittycad/models/modeling_cmd.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from ..models.cut_type import CutType
1616
from ..models.distance_type import DistanceType
1717
from ..models.entity_type import EntityType
18+
from ..models.extrude_method import ExtrudeMethod
1819
from ..models.extruded_face_info import ExtrudedFaceInfo
1920
from ..models.image_format import ImageFormat
2021
from ..models.import_file import ImportFile
@@ -91,6 +92,8 @@ class OptionExtrude(BaseModel):
9192

9293
distance: LengthUnit
9394

95+
extrude_method: ExtrudeMethod = "merge" # type: ignore
96+
9497
faces: Optional[ExtrudedFaceInfo] = None
9598

9699
opposite: OppositeForLengthUnit = "None" # type: ignore
@@ -933,7 +936,7 @@ class OptionEntitySetOpacity(BaseModel):
933936
class OptionEntityFade(BaseModel):
934937
"""Fade entity in or out."""
935938

936-
duration_seconds: float = 0.4000000059604645
939+
duration_seconds: float = 0.4
937940

938941
entity_id: str
939942

kittycad/models/path_segment.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,42 @@ class OptionCircularInvolute(BaseModel):
109109
model_config = ConfigDict(protected_namespaces=())
110110

111111

112+
class OptionEllipse(BaseModel):
113+
"""Adds an elliptical arc segment."""
114+
115+
center: Point2d
116+
117+
end_angle: Angle
118+
119+
major_radius: LengthUnit
120+
121+
minor_radius: LengthUnit
122+
123+
start_angle: Angle
124+
125+
type: Literal["ellipse"] = "ellipse"
126+
127+
model_config = ConfigDict(protected_namespaces=())
128+
129+
130+
class OptionConicTo(BaseModel):
131+
"""Adds a generic conic section specified by the end point, interior point and tangents at the start and end of the section."""
132+
133+
end: Point2d
134+
135+
end_tangent: Point2d
136+
137+
interior: Point2d
138+
139+
relative: bool
140+
141+
start_tangent: Point2d
142+
143+
type: Literal["conic_to"] = "conic_to"
144+
145+
model_config = ConfigDict(protected_namespaces=())
146+
147+
112148
PathSegment = RootModel[
113149
Annotated[
114150
Union[
@@ -119,6 +155,8 @@ class OptionCircularInvolute(BaseModel):
119155
OptionTangentialArcTo,
120156
OptionArcTo,
121157
OptionCircularInvolute,
158+
OptionEllipse,
159+
OptionConicTo,
122160
],
123161
Field(discriminator="type"),
124162
]

0 commit comments

Comments
 (0)