Update api spec (#351)

* YOYO NEW API SPEC!

* I have generated the latest API!

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
This commit is contained in:
zoo-github-actions-auth[bot]
2025-01-07 12:27:04 -08:00
committed by GitHub
parent fd5580b061
commit 45277b313d
12 changed files with 1183 additions and 794 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,7 @@
"""Contains all the data models used in inputs/outputs""" """Contains all the data models used in inputs/outputs"""
from .account_provider import AccountProvider from .account_provider import AccountProvider
from .add_hole_from_offset import AddHoleFromOffset
from .add_org_member import AddOrgMember from .add_org_member import AddOrgMember
from .address_details import AddressDetails from .address_details import AddressDetails
from .angle import Angle from .angle import Angle
@ -99,6 +100,7 @@ from .entity_get_sketch_paths import EntityGetSketchPaths
from .entity_linear_pattern import EntityLinearPattern from .entity_linear_pattern import EntityLinearPattern
from .entity_linear_pattern_transform import EntityLinearPatternTransform from .entity_linear_pattern_transform import EntityLinearPatternTransform
from .entity_make_helix import EntityMakeHelix from .entity_make_helix import EntityMakeHelix
from .entity_make_helix_from_params import EntityMakeHelixFromParams
from .entity_mirror import EntityMirror from .entity_mirror import EntityMirror
from .entity_mirror_across_edge import EntityMirrorAcrossEdge from .entity_mirror_across_edge import EntityMirrorAcrossEdge
from .entity_set_opacity import EntitySetOpacity from .entity_set_opacity import EntitySetOpacity
@ -113,6 +115,7 @@ from .extend_path import ExtendPath
from .extended_user import ExtendedUser from .extended_user import ExtendedUser
from .extended_user_results_page import ExtendedUserResultsPage from .extended_user_results_page import ExtendedUserResultsPage
from .extrude import Extrude from .extrude import Extrude
from .extruded_face_info import ExtrudedFaceInfo
from .extrusion_face_cap_type import ExtrusionFaceCapType from .extrusion_face_cap_type import ExtrusionFaceCapType
from .extrusion_face_info import ExtrusionFaceInfo from .extrusion_face_info import ExtrusionFaceInfo
from .face_get_center import FaceGetCenter from .face_get_center import FaceGetCenter
@ -271,6 +274,7 @@ from .set_selection_type import SetSelectionType
from .set_tool import SetTool from .set_tool import SetTool
from .shortlink import Shortlink from .shortlink import Shortlink
from .shortlink_results_page import ShortlinkResultsPage from .shortlink_results_page import ShortlinkResultsPage
from .side_face import SideFace
from .sketch_mode_disable import SketchModeDisable from .sketch_mode_disable import SketchModeDisable
from .solid2d_add_hole import Solid2dAddHole from .solid2d_add_hole import Solid2dAddHole
from .solid3d_fillet_edge import Solid3dFilletEdge from .solid3d_fillet_edge import Solid3dFilletEdge

View File

@ -0,0 +1,11 @@
from typing import List
from pydantic import BaseModel, ConfigDict
class AddHoleFromOffset(BaseModel):
"""The response from the `AddHoleFromOffset` command."""
entity_ids: List[str]
model_config = ConfigDict(protected_namespaces=())

View File

@ -4,4 +4,6 @@ from pydantic import BaseModel, ConfigDict
class EntityMakeHelix(BaseModel): class EntityMakeHelix(BaseModel):
"""The response from the `EntityMakeHelix` endpoint.""" """The response from the `EntityMakeHelix` endpoint."""
helix_id: str
model_config = ConfigDict(protected_namespaces=()) model_config = ConfigDict(protected_namespaces=())

View File

@ -0,0 +1,9 @@
from pydantic import BaseModel, ConfigDict
class EntityMakeHelixFromParams(BaseModel):
"""The response from the `EntityMakeHelixFromParams` endpoint."""
helix_id: str
model_config = ConfigDict(protected_namespaces=())

View File

@ -1,7 +1,11 @@
from typing import List
from pydantic import BaseModel, ConfigDict from pydantic import BaseModel, ConfigDict
class EntityMirror(BaseModel): class EntityMirror(BaseModel):
"""The response from the `EntityMirror` endpoint.""" """The response from the `EntityMirror` endpoint."""
entity_ids: List[str]
model_config = ConfigDict(protected_namespaces=()) model_config = ConfigDict(protected_namespaces=())

View File

@ -1,7 +1,11 @@
from typing import List
from pydantic import BaseModel, ConfigDict from pydantic import BaseModel, ConfigDict
class EntityMirrorAcrossEdge(BaseModel): class EntityMirrorAcrossEdge(BaseModel):
"""The response from the `EntityMirrorAcrossEdge` endpoint.""" """The response from the `EntityMirrorAcrossEdge` endpoint."""
entity_ids: List[str]
model_config = ConfigDict(protected_namespaces=()) model_config = ConfigDict(protected_namespaces=())

View File

@ -0,0 +1,17 @@
from typing import List, Optional
from pydantic import BaseModel, ConfigDict
from ..models.side_face import SideFace
class ExtrudedFaceInfo(BaseModel):
"""IDs for the extruded faces."""
bottom: Optional[str] = None
sides: List[SideFace]
top: str
model_config = ConfigDict(protected_namespaces=())

View File

@ -12,6 +12,7 @@ from ..models.color import Color
from ..models.cut_type import CutType from ..models.cut_type import CutType
from ..models.distance_type import DistanceType from ..models.distance_type import DistanceType
from ..models.entity_type import EntityType from ..models.entity_type import EntityType
from ..models.extruded_face_info import ExtrudedFaceInfo
from ..models.image_format import ImageFormat from ..models.image_format import ImageFormat
from ..models.import_file import ImportFile from ..models.import_file import ImportFile
from ..models.input_format import InputFormat from ..models.input_format import InputFormat
@ -83,6 +84,8 @@ class OptionExtrude(BaseModel):
distance: LengthUnit distance: LengthUnit
faces: Optional[ExtrudedFaceInfo] = None
target: ModelingCmdId target: ModelingCmdId
type: Literal["extrude"] = "extrude" type: Literal["extrude"] = "extrude"
@ -421,13 +424,35 @@ class OptionEntityMakeHelix(BaseModel):
revolutions: float revolutions: float
start_angle: Angle start_angle: Angle = {"unit": "degrees", "value": 0.0} # type: ignore
type: Literal["entity_make_helix"] = "entity_make_helix" type: Literal["entity_make_helix"] = "entity_make_helix"
model_config = ConfigDict(protected_namespaces=()) model_config = ConfigDict(protected_namespaces=())
class OptionEntityMakeHelixFromParams(BaseModel):
"""Create a helix using the specified parameters."""
axis: Point3d
center: Point3d
is_clockwise: bool
length: LengthUnit
radius: float
revolutions: float
start_angle: Angle = {"unit": "degrees", "value": 0.0} # type: ignore
type: Literal["entity_make_helix_from_params"] = "entity_make_helix_from_params"
model_config = ConfigDict(protected_namespaces=())
class OptionEntityMirror(BaseModel): class OptionEntityMirror(BaseModel):
"""Mirror the input entities over the specified axis. (Currently only supports sketches)""" """Mirror the input entities over the specified axis. (Currently only supports sketches)"""
@ -1376,6 +1401,18 @@ class OptionMakeOffsetPath(BaseModel):
model_config = ConfigDict(protected_namespaces=()) model_config = ConfigDict(protected_namespaces=())
class OptionAddHoleFromOffset(BaseModel):
"""Add a hole to a closed path by offsetting it a uniform distance inward."""
object_id: str
offset: LengthUnit
type: Literal["add_hole_from_offset"] = "add_hole_from_offset"
model_config = ConfigDict(protected_namespaces=())
ModelingCmd = RootModel[ ModelingCmd = RootModel[
Annotated[ Annotated[
Union[ Union[
@ -1408,6 +1445,7 @@ ModelingCmd = RootModel[
OptionEntityLinearPattern, OptionEntityLinearPattern,
OptionEntityCircularPattern, OptionEntityCircularPattern,
OptionEntityMakeHelix, OptionEntityMakeHelix,
OptionEntityMakeHelixFromParams,
OptionEntityMirror, OptionEntityMirror,
OptionEntityMirrorAcrossEdge, OptionEntityMirrorAcrossEdge,
OptionSelectWithPoint, OptionSelectWithPoint,
@ -1490,6 +1528,7 @@ ModelingCmd = RootModel[
OptionSelectGet, OptionSelectGet,
OptionGetNumObjects, OptionGetNumObjects,
OptionMakeOffsetPath, OptionMakeOffsetPath,
OptionAddHoleFromOffset,
], ],
Field(discriminator="type"), Field(discriminator="type"),
] ]

View File

@ -3,6 +3,7 @@ from typing import Literal, Union
from pydantic import BaseModel, ConfigDict, Field, RootModel from pydantic import BaseModel, ConfigDict, Field, RootModel
from typing_extensions import Annotated from typing_extensions import Annotated
from ..models.add_hole_from_offset import AddHoleFromOffset
from ..models.camera_drag_end import CameraDragEnd from ..models.camera_drag_end import CameraDragEnd
from ..models.camera_drag_move import CameraDragMove from ..models.camera_drag_move import CameraDragMove
from ..models.camera_drag_start import CameraDragStart from ..models.camera_drag_start import CameraDragStart
@ -40,6 +41,7 @@ from ..models.entity_get_sketch_paths import EntityGetSketchPaths
from ..models.entity_linear_pattern import EntityLinearPattern from ..models.entity_linear_pattern import EntityLinearPattern
from ..models.entity_linear_pattern_transform import EntityLinearPatternTransform from ..models.entity_linear_pattern_transform import EntityLinearPatternTransform
from ..models.entity_make_helix import EntityMakeHelix from ..models.entity_make_helix import EntityMakeHelix
from ..models.entity_make_helix_from_params import EntityMakeHelixFromParams
from ..models.entity_mirror import EntityMirror from ..models.entity_mirror import EntityMirror
from ..models.entity_mirror_across_edge import EntityMirrorAcrossEdge from ..models.entity_mirror_across_edge import EntityMirrorAcrossEdge
from ..models.entity_set_opacity import EntitySetOpacity from ..models.entity_set_opacity import EntitySetOpacity
@ -251,36 +253,6 @@ class OptionDefaultCameraPerspectiveSettings(BaseModel):
model_config = ConfigDict(protected_namespaces=()) model_config = ConfigDict(protected_namespaces=())
class OptionEntityMakeHelix(BaseModel):
""""""
data: EntityMakeHelix
type: Literal["entity_make_helix"] = "entity_make_helix"
model_config = ConfigDict(protected_namespaces=())
class OptionEntityMirror(BaseModel):
""""""
data: EntityMirror
type: Literal["entity_mirror"] = "entity_mirror"
model_config = ConfigDict(protected_namespaces=())
class OptionEntityMirrorAcrossEdge(BaseModel):
""""""
data: EntityMirrorAcrossEdge
type: Literal["entity_mirror_across_edge"] = "entity_mirror_across_edge"
model_config = ConfigDict(protected_namespaces=())
class OptionSelectAdd(BaseModel): class OptionSelectAdd(BaseModel):
"""""" """"""
@ -883,6 +855,16 @@ class OptionMakeOffsetPath(BaseModel):
model_config = ConfigDict(protected_namespaces=()) model_config = ConfigDict(protected_namespaces=())
class OptionAddHoleFromOffset(BaseModel):
""""""
data: AddHoleFromOffset
type: Literal["add_hole_from_offset"] = "add_hole_from_offset"
model_config = ConfigDict(protected_namespaces=())
class OptionDefaultCameraFocusOn(BaseModel): class OptionDefaultCameraFocusOn(BaseModel):
"""""" """"""
@ -1255,6 +1237,46 @@ class OptionEntityCircularPattern(BaseModel):
model_config = ConfigDict(protected_namespaces=()) model_config = ConfigDict(protected_namespaces=())
class OptionEntityMirror(BaseModel):
""""""
data: EntityMirror
type: Literal["entity_mirror"] = "entity_mirror"
model_config = ConfigDict(protected_namespaces=())
class OptionEntityMirrorAcrossEdge(BaseModel):
""""""
data: EntityMirrorAcrossEdge
type: Literal["entity_mirror_across_edge"] = "entity_mirror_across_edge"
model_config = ConfigDict(protected_namespaces=())
class OptionEntityMakeHelix(BaseModel):
""""""
data: EntityMakeHelix
type: Literal["entity_make_helix"] = "entity_make_helix"
model_config = ConfigDict(protected_namespaces=())
class OptionEntityMakeHelixFromParams(BaseModel):
""""""
data: EntityMakeHelixFromParams
type: Literal["entity_make_helix_from_params"] = "entity_make_helix_from_params"
model_config = ConfigDict(protected_namespaces=())
class OptionSolid3DGetExtrusionFaceInfo(BaseModel): class OptionSolid3DGetExtrusionFaceInfo(BaseModel):
"""""" """"""
@ -1291,9 +1313,6 @@ OkModelingCmdResponse = RootModel[
OptionCameraDragStart, OptionCameraDragStart,
OptionDefaultCameraLookAt, OptionDefaultCameraLookAt,
OptionDefaultCameraPerspectiveSettings, OptionDefaultCameraPerspectiveSettings,
OptionEntityMakeHelix,
OptionEntityMirror,
OptionEntityMirrorAcrossEdge,
OptionSelectAdd, OptionSelectAdd,
OptionSelectRemove, OptionSelectRemove,
OptionSceneClearAll, OptionSceneClearAll,
@ -1354,6 +1373,7 @@ OkModelingCmdResponse = RootModel[
OptionViewIsometric, OptionViewIsometric,
OptionGetNumObjects, OptionGetNumObjects,
OptionMakeOffsetPath, OptionMakeOffsetPath,
OptionAddHoleFromOffset,
OptionDefaultCameraFocusOn, OptionDefaultCameraFocusOn,
OptionSelectGet, OptionSelectGet,
OptionSolid3DGetAllEdgeFaces, OptionSolid3DGetAllEdgeFaces,
@ -1391,6 +1411,10 @@ OkModelingCmdResponse = RootModel[
OptionEntityLinearPatternTransform, OptionEntityLinearPatternTransform,
OptionEntityLinearPattern, OptionEntityLinearPattern,
OptionEntityCircularPattern, OptionEntityCircularPattern,
OptionEntityMirror,
OptionEntityMirrorAcrossEdge,
OptionEntityMakeHelix,
OptionEntityMakeHelixFromParams,
OptionSolid3DGetExtrusionFaceInfo, OptionSolid3DGetExtrusionFaceInfo,
OptionExtrusionFaceInfo, OptionExtrusionFaceInfo,
], ],

View File

@ -0,0 +1,11 @@
from pydantic import BaseModel, ConfigDict
class SideFace(BaseModel):
"""IDs for a side face, extruded from the path of some sketch/2D shape."""
face_id: str
path_id: str
model_config = ConfigDict(protected_namespaces=())

382
spec.json
View File

@ -14793,6 +14793,23 @@
} }
] ]
}, },
"AddHoleFromOffset": {
"description": "The response from the `AddHoleFromOffset` command.",
"type": "object",
"properties": {
"entity_ids": {
"description": "If the offset path splits into multiple paths, this will contain the UUIDs of the new paths. If the offset path remains as a single path, this will be empty, and the resulting ID of the (single) new path will be the ID of the `AddHoleFromOffset` command.",
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
}
},
"required": [
"entity_ids"
]
},
"AddOrgMember": { "AddOrgMember": {
"description": "Data for adding a member to an org.", "description": "Data for adding a member to an org.",
"type": "object", "type": "object",
@ -18334,15 +18351,65 @@
}, },
"EntityMakeHelix": { "EntityMakeHelix": {
"description": "The response from the `EntityMakeHelix` endpoint.", "description": "The response from the `EntityMakeHelix` endpoint.",
"type": "object" "type": "object",
"properties": {
"helix_id": {
"description": "The UUID of the helix that was created.",
"type": "string",
"format": "uuid"
}
},
"required": [
"helix_id"
]
},
"EntityMakeHelixFromParams": {
"description": "The response from the `EntityMakeHelixFromParams` endpoint.",
"type": "object",
"properties": {
"helix_id": {
"description": "The UUID of the helix that was created.",
"type": "string",
"format": "uuid"
}
},
"required": [
"helix_id"
]
}, },
"EntityMirror": { "EntityMirror": {
"description": "The response from the `EntityMirror` endpoint.", "description": "The response from the `EntityMirror` endpoint.",
"type": "object" "type": "object",
"properties": {
"entity_ids": {
"description": "The UUIDs of the entities that were created.",
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
}
},
"required": [
"entity_ids"
]
}, },
"EntityMirrorAcrossEdge": { "EntityMirrorAcrossEdge": {
"description": "The response from the `EntityMirrorAcrossEdge` endpoint.", "description": "The response from the `EntityMirrorAcrossEdge` endpoint.",
"type": "object" "type": "object",
"properties": {
"entity_ids": {
"description": "The UUIDs of the entities that were created.",
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
}
},
"required": [
"entity_ids"
]
}, },
"EntitySetOpacity": { "EntitySetOpacity": {
"description": "The response from the `EntitySetOpacity` endpoint.", "description": "The response from the `EntitySetOpacity` endpoint.",
@ -18733,6 +18800,34 @@
"description": "The response from the `Extrude` endpoint.", "description": "The response from the `Extrude` endpoint.",
"type": "object" "type": "object"
}, },
"ExtrudedFaceInfo": {
"description": "IDs for the extruded faces.",
"type": "object",
"properties": {
"bottom": {
"nullable": true,
"description": "The face made from the original 2D shape being extruded. If the solid is extruded from a shape which already has an ID (e.g. extruding something which was sketched on a face), this doesn't need to be sent.",
"type": "string",
"format": "uuid"
},
"sides": {
"description": "Any intermediate sides between the top and bottom.",
"type": "array",
"items": {
"$ref": "#/components/schemas/SideFace"
}
},
"top": {
"description": "Top face of the extrusion (parallel and further away from the original 2D shape being extruded).",
"type": "string",
"format": "uuid"
}
},
"required": [
"sides",
"top"
]
},
"ExtrusionFaceCapType": { "ExtrusionFaceCapType": {
"description": "Possible types of faces which can be extruded from a 3D solid.", "description": "Possible types of faces which can be extruded from a 3D solid.",
"oneOf": [ "oneOf": [
@ -21623,6 +21718,15 @@
} }
] ]
}, },
"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": { "target": {
"description": "Which sketch to extrude. Must be a closed 2D solid.", "description": "Which sketch to extrude. Must be a closed 2D solid.",
"allOf": [ "allOf": [
@ -22530,7 +22634,11 @@
"format": "double" "format": "double"
}, },
"start_angle": { "start_angle": {
"description": "Start angle (in degrees).", "description": "Start angle.",
"default": {
"unit": "degrees",
"value": 0.0
},
"allOf": [ "allOf": [
{ {
"$ref": "#/components/schemas/Angle" "$ref": "#/components/schemas/Angle"
@ -22549,7 +22657,77 @@
"is_clockwise", "is_clockwise",
"length", "length",
"revolutions", "revolutions",
"start_angle", "type"
]
},
{
"description": "Create a helix using the specified parameters.",
"type": "object",
"properties": {
"axis": {
"description": "Axis of the helix. The helix will be created around and in the direction of this axis.",
"allOf": [
{
"$ref": "#/components/schemas/Point3d"
}
]
},
"center": {
"description": "Center of the helix at the base of the helix.",
"allOf": [
{
"$ref": "#/components/schemas/Point3d"
}
]
},
"is_clockwise": {
"description": "Is the helix rotation clockwise?",
"type": "boolean"
},
"length": {
"description": "Length of the helix.",
"allOf": [
{
"$ref": "#/components/schemas/LengthUnit"
}
]
},
"radius": {
"description": "Radius of the helix.",
"type": "number",
"format": "double"
},
"revolutions": {
"description": "Number of revolutions.",
"type": "number",
"format": "double"
},
"start_angle": {
"description": "Start angle.",
"default": {
"unit": "degrees",
"value": 0.0
},
"allOf": [
{
"$ref": "#/components/schemas/Angle"
}
]
},
"type": {
"type": "string",
"enum": [
"entity_make_helix_from_params"
]
}
},
"required": [
"axis",
"center",
"is_clockwise",
"length",
"radius",
"revolutions",
"type" "type"
] ]
}, },
@ -24837,6 +25015,36 @@
"offset", "offset",
"type" "type"
] ]
},
{
"description": "Add a hole to a closed path by offsetting it a uniform distance inward.",
"type": "object",
"properties": {
"object_id": {
"description": "The closed path to add a hole to.",
"type": "string",
"format": "uuid"
},
"offset": {
"description": "The distance to offset the path (positive for outset, negative for inset)",
"allOf": [
{
"$ref": "#/components/schemas/LengthUnit"
}
]
},
"type": {
"type": "string",
"enum": [
"add_hole_from_offset"
]
}
},
"required": [
"object_id",
"offset",
"type"
]
} }
] ]
}, },
@ -25199,60 +25407,6 @@
"type" "type"
] ]
}, },
{
"type": "object",
"properties": {
"data": {
"$ref": "#/components/schemas/EntityMakeHelix"
},
"type": {
"type": "string",
"enum": [
"entity_make_helix"
]
}
},
"required": [
"data",
"type"
]
},
{
"type": "object",
"properties": {
"data": {
"$ref": "#/components/schemas/EntityMirror"
},
"type": {
"type": "string",
"enum": [
"entity_mirror"
]
}
},
"required": [
"data",
"type"
]
},
{
"type": "object",
"properties": {
"data": {
"$ref": "#/components/schemas/EntityMirrorAcrossEdge"
},
"type": {
"type": "string",
"enum": [
"entity_mirror_across_edge"
]
}
},
"required": [
"data",
"type"
]
},
{ {
"type": "object", "type": "object",
"properties": { "properties": {
@ -26333,6 +26487,24 @@
"type" "type"
] ]
}, },
{
"type": "object",
"properties": {
"data": {
"$ref": "#/components/schemas/AddHoleFromOffset"
},
"type": {
"type": "string",
"enum": [
"add_hole_from_offset"
]
}
},
"required": [
"data",
"type"
]
},
{ {
"type": "object", "type": "object",
"properties": { "properties": {
@ -26999,6 +27171,78 @@
"type" "type"
] ]
}, },
{
"type": "object",
"properties": {
"data": {
"$ref": "#/components/schemas/EntityMirror"
},
"type": {
"type": "string",
"enum": [
"entity_mirror"
]
}
},
"required": [
"data",
"type"
]
},
{
"type": "object",
"properties": {
"data": {
"$ref": "#/components/schemas/EntityMirrorAcrossEdge"
},
"type": {
"type": "string",
"enum": [
"entity_mirror_across_edge"
]
}
},
"required": [
"data",
"type"
]
},
{
"type": "object",
"properties": {
"data": {
"$ref": "#/components/schemas/EntityMakeHelix"
},
"type": {
"type": "string",
"enum": [
"entity_make_helix"
]
}
},
"required": [
"data",
"type"
]
},
{
"type": "object",
"properties": {
"data": {
"$ref": "#/components/schemas/EntityMakeHelixFromParams"
},
"type": {
"type": "string",
"enum": [
"entity_make_helix_from_params"
]
}
},
"required": [
"data",
"type"
]
},
{ {
"type": "object", "type": "object",
"properties": { "properties": {
@ -29334,6 +29578,26 @@
"items" "items"
] ]
}, },
"SideFace": {
"description": "IDs for a side face, extruded from the path of some sketch/2D shape.",
"type": "object",
"properties": {
"face_id": {
"description": "Desired ID for the resulting face.",
"type": "string",
"format": "uuid"
},
"path_id": {
"description": "ID of the path this face is being extruded from.",
"type": "string",
"format": "uuid"
}
},
"required": [
"face_id",
"path_id"
]
},
"SketchModeDisable": { "SketchModeDisable": {
"description": "The response from the `SketchModeDisable` endpoint.", "description": "The response from the `SketchModeDisable` endpoint.",
"type": "object" "type": "object"