diff --git a/.gitignore b/.gitignore index 5c705903a..4060152fd 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,5 @@ testing docs/_build/ docs/_autosummary/ docs/html/_sources/ + +snapshot.png diff --git a/generate/functions-ws.py.jinja2 b/generate/functions-ws.py.jinja2 index d53428e57..b995d663a 100644 --- a/generate/functions-ws.py.jinja2 +++ b/generate/functions-ws.py.jinja2 @@ -93,7 +93,7 @@ def sync( client=client, ) - return ws_connect(kwargs["url"].replace("http", "ws"), additional_headers=kwargs["headers"], close_timeout=120, compression=None, max_size=None) # type: ignore + return ws_connect(kwargs["url"].replace("http", "ws"), additional_headers=kwargs["headers"], close_timeout=120, max_size=None) # type: ignore @@ -126,7 +126,7 @@ async def asyncio( client=client, ) - return await ws_connect_async(kwargs["url"].replace("http", "ws"), extra_headers=kwargs["headers"], close_timeout=120, compression=None, max_size=None) + return await ws_connect_async(kwargs["url"].replace("http", "ws"), extra_headers=kwargs["headers"], close_timeout=120, max_size=None) {% if has_request_body %} @@ -183,11 +183,11 @@ class WebSocket: def send(self, data:{% for arg in args %}{%if arg.name == "body" %}{{arg.type}}{% endif %}{% endfor %}): """Send data to the websocket.""" - self.ws.send(json.dumps(data.model_dump(mode="json"))) + self.ws.send(json.dumps(data.model_dump())) def send_binary(self, data:{% for arg in args %}{%if arg.name == "body" %}{{arg.type}}{% endif %}{% endfor %}): """Send data as bson to the websocket.""" - self.ws.send(bson.encode(data.model_dump(mode="json"))) # type: ignore + self.ws.send(bson.encode(data.model_dump())) # type: ignore def recv(self) -> {{response_type}}: """Receive data from the websocket.""" diff --git a/generate/generate.py b/generate/generate.py index 93b1c9743..2499ffc2b 100755 --- a/generate/generate.py +++ b/generate/generate.py @@ -1293,7 +1293,7 @@ def generateAnyOfType(path: str, name: str, schema: dict, data: dict): # Write the sum type. description = getAnyOfDescription(schema) - content = generateUnionType(all_options, name, description) + content = generateUnionType(all_options, name, description, tag) f.write(content) # Close the file. @@ -1307,7 +1307,9 @@ def getAnyOfDescription(schema: dict) -> str: return "" -def generateUnionType(types: List[str], name: str, description: str) -> str: +def generateUnionType( + types: List[str], name: str, description: str, tag: Optional[str] +) -> str: ArgType = TypedDict( "ArgType", { @@ -1324,12 +1326,14 @@ def generateUnionType(types: List[str], name: str, description: str) -> str: "types": List[ArgType], "description": str, "name": str, + "tag": Optional[str], }, ) template_info: TemplateType = { "types": [], "description": description, "name": name, + "tag": tag, } for type in types: if type == "SuccessWebSocketResponse": @@ -1496,7 +1500,7 @@ def generateOneOfType(path: str, name: str, schema: dict, data: dict): # Write the sum type. description = getOneOfDescription(schema) - content = generateUnionType(all_options, name, description) + content = generateUnionType(all_options, name, description, tag) f.write(content) # Close the file. @@ -2058,7 +2062,7 @@ def getTypeName(schema: dict) -> str: elif schema["format"] == "byte": return "Base64Data" elif schema["format"] == "uuid": - return "UUID" + return "str" elif schema["format"] == "url": return "AnyUrl" elif schema["format"] == "phone": diff --git a/generate/object.py.jinja2 b/generate/object.py.jinja2 index 9cbb4d80d..fe2b18ac8 100644 --- a/generate/object.py.jinja2 +++ b/generate/object.py.jinja2 @@ -1,5 +1,5 @@ import datetime -from typing import List, Optional, Dict, Union, Any +from typing import List, Optional, Dict, Union, Any, Literal from uuid import UUID from pydantic import BaseModel, Base64Bytes, AnyUrl @@ -14,7 +14,7 @@ class {{ name }}(BaseModel): """{{ description }}""" {% for field in fields %} {% if field.value %} - {{ field.name }}: {{ field.type }} = {{ field.value }} + {{ field.name }}: Literal[{{ field.value }}] = {{ field.value }} {% else %} {{ field.name }}: {{ field.type }} {% endif %} diff --git a/generate/union-type.py.jinja2 b/generate/union-type.py.jinja2 index fd5a54ce9..b17accb10 100644 --- a/generate/union-type.py.jinja2 +++ b/generate/union-type.py.jinja2 @@ -1,10 +1,21 @@ from typing import Dict, Any, Union, Type, TypeVar -from pydantic import RootModel +from pydantic import RootModel, Field + +from typing_extensions import Annotated + +{% if tag %} +{{name}} = RootModel[Annotated[Union[ + {% for type in types %} + {{type.name}}, + {% endfor %} + ], Field(discriminator='{{tag}}')]] +{% else %} {{name}} = RootModel[Union[ {% for type in types %} {{type.name}}, {% endfor %} ]] +{% endif %} diff --git a/kittycad.py.patch.json b/kittycad.py.patch.json index 0fef58002..290e807cf 100644 --- a/kittycad.py.patch.json +++ b/kittycad.py.patch.json @@ -1,130 +1,10 @@ [ { "op": "add", - "path": "/paths/~1users-extended~1{id}/get/x-python", + "path": "/paths/~1file~1execute~1{lang}/post/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import get_user_extended\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ExtendedUser\nfrom kittycad.types import Response\n\n\ndef example_get_user_extended():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ExtendedUser, Error]] = get_user_extended.sync(\n client=client,\n id=\"\",\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ExtendedUser = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.users.get_user_extended.html" - } - }, - { - "op": "add", - "path": "/paths/~1.well-known~1ai-plugin.json/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.meta import get_ai_plugin_manifest\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import AiPluginManifest, Error\nfrom kittycad.types import Response\n\n\ndef example_get_ai_plugin_manifest():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[AiPluginManifest, Error]\n ] = get_ai_plugin_manifest.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: AiPluginManifest = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.meta.get_ai_plugin_manifest.html" - } - }, - { - "op": "add", - "path": "/paths/~1file~1surface-area/post/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.file import create_file_surface_area\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, FileSurfaceArea\nfrom kittycad.models.file_import_format import FileImportFormat\nfrom kittycad.models.unit_area import UnitArea\nfrom kittycad.types import Response\n\n\ndef example_create_file_surface_area():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[FileSurfaceArea, Error]\n ] = create_file_surface_area.sync(\n client=client,\n output_unit=UnitArea.CM2,\n src_format=FileImportFormat.FBX,\n body=bytes(\"some bytes\", \"utf-8\"),\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: FileSurfaceArea = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.file.create_file_surface_area.html" - } - }, - { - "op": "add", - "path": "/paths/~1user~1api-calls~1{id}/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.api_calls import get_api_call_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import ApiCallWithPrice, Error\nfrom kittycad.types import Response\n\n\ndef example_get_api_call_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ApiCallWithPrice, Error]] = get_api_call_for_user.sync(\n client=client,\n id=\"\",\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiCallWithPrice = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.api_calls.get_api_call_for_user.html" - } - }, - { - "op": "add", - "path": "/paths/~1unit~1conversion~1pressure~1{input_unit}~1{output_unit}/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.unit import get_pressure_unit_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UnitPressureConversion\nfrom kittycad.models.unit_pressure import UnitPressure\nfrom kittycad.types import Response\n\n\ndef example_get_pressure_unit_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[UnitPressureConversion, Error]\n ] = get_pressure_unit_conversion.sync(\n client=client,\n input_unit=UnitPressure.ATMOSPHERES,\n output_unit=UnitPressure.ATMOSPHERES,\n value=3.14,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitPressureConversion = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.unit.get_pressure_unit_conversion.html" - } - }, - { - "op": "add", - "path": "/paths/~1user~1payment~1intent/post/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import create_payment_intent_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, PaymentIntent\nfrom kittycad.types import Response\n\n\ndef example_create_payment_intent_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[PaymentIntent, Error]\n ] = create_payment_intent_for_user.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: PaymentIntent = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.payments.create_payment_intent_for_user.html" - } - }, - { - "op": "add", - "path": "/paths/~1user~1payment/put/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import update_payment_information_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Customer, Error\nfrom kittycad.models.billing_info import BillingInfo\nfrom kittycad.types import Response\n\n\ndef example_update_payment_information_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[Customer, Error]\n ] = update_payment_information_for_user.sync(\n client=client,\n body=BillingInfo(\n name=\"\",\n phone=\"\",\n ),\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Customer = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.payments.update_payment_information_for_user.html" - } - }, - { - "op": "add", - "path": "/paths/~1user~1payment/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import get_payment_information_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Customer, Error\nfrom kittycad.types import Response\n\n\ndef example_get_payment_information_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[Customer, Error]\n ] = get_payment_information_for_user.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Customer = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.payments.get_payment_information_for_user.html" - } - }, - { - "op": "add", - "path": "/paths/~1user~1payment/delete/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import delete_payment_information_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_delete_payment_information_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = delete_payment_information_for_user.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.payments.delete_payment_information_for_user.html" - } - }, - { - "op": "add", - "path": "/paths/~1user~1payment/post/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import create_payment_information_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Customer, Error\nfrom kittycad.models.billing_info import BillingInfo\nfrom kittycad.types import Response\n\n\ndef example_create_payment_information_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[Customer, Error]\n ] = create_payment_information_for_user.sync(\n client=client,\n body=BillingInfo(\n name=\"\",\n phone=\"\",\n ),\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Customer = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.payments.create_payment_information_for_user.html" - } - }, - { - "op": "add", - "path": "/paths/~1apps~1github~1consent/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.apps import apps_github_consent\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import AppClientInfo, Error\nfrom kittycad.types import Response\n\n\ndef example_apps_github_consent():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[AppClientInfo, Error]] = apps_github_consent.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: AppClientInfo = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.apps.apps_github_consent.html" - } - }, - { - "op": "add", - "path": "/paths/~1unit~1conversion~1mass~1{input_unit}~1{output_unit}/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.unit import get_mass_unit_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UnitMassConversion\nfrom kittycad.models.unit_mass import UnitMass\nfrom kittycad.types import Response\n\n\ndef example_get_mass_unit_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[UnitMassConversion, Error]\n ] = get_mass_unit_conversion.sync(\n client=client,\n input_unit=UnitMass.G,\n output_unit=UnitMass.G,\n value=3.14,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitMassConversion = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.unit.get_mass_unit_conversion.html" - } - }, - { - "op": "add", - "path": "/paths/~1user~1api-calls/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.api_calls import user_list_api_calls\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import ApiCallWithPriceResultsPage, Error\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_user_list_api_calls():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[ApiCallWithPriceResultsPage, Error]\n ] = user_list_api_calls.sync(\n client=client,\n sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING,\n limit=None, # Optional[int]\n page_token=None, # Optional[str]\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiCallWithPriceResultsPage = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.api_calls.user_list_api_calls.html" - } - }, - { - "op": "add", - "path": "/paths/~1unit~1conversion~1power~1{input_unit}~1{output_unit}/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.unit import get_power_unit_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UnitPowerConversion\nfrom kittycad.models.unit_power import UnitPower\nfrom kittycad.types import Response\n\n\ndef example_get_power_unit_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[UnitPowerConversion, Error]\n ] = get_power_unit_conversion.sync(\n client=client,\n input_unit=UnitPower.BTU_PER_MINUTE,\n output_unit=UnitPower.BTU_PER_MINUTE,\n value=3.14,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitPowerConversion = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.unit.get_power_unit_conversion.html" - } - }, - { - "op": "add", - "path": "/paths/~1user~1payment~1invoices/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import list_invoices_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, Invoice\nfrom kittycad.types import Response\n\n\ndef example_list_invoices_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[List[Invoice], Error]] = list_invoices_for_user.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: List[Invoice] = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.payments.list_invoices_for_user.html" - } - }, - { - "op": "add", - "path": "/paths/~1user~1payment~1methods/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import list_payment_methods_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, PaymentMethod\nfrom kittycad.types import Response\n\n\ndef example_list_payment_methods_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[List[PaymentMethod], Error]\n ] = list_payment_methods_for_user.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: List[PaymentMethod] = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.payments.list_payment_methods_for_user.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.executor import create_file_execution\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import CodeOutput, Error\nfrom kittycad.models.code_language import CodeLanguage\nfrom kittycad.types import Response\n\n\ndef example_create_file_execution():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[CodeOutput, Error]] = create_file_execution.sync(\n client=client,\n lang=CodeLanguage.GO,\n output=None, # Optional[str]\n body=bytes(\"some bytes\", \"utf-8\"),\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: CodeOutput = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.executor.create_file_execution.html" } }, { @@ -137,218 +17,18 @@ }, { "op": "add", - "path": "/paths/~1ping/get/x-python", + "path": "/paths/~1unit~1conversion~1force~1{input_unit}~1{output_unit}/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.meta import ping\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, Pong\nfrom kittycad.types import Response\n\n\ndef example_ping():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[Pong, Error]] = ping.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Pong = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.meta.ping.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.unit import get_force_unit_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UnitForceConversion\nfrom kittycad.models.unit_force import UnitForce\nfrom kittycad.types import Response\n\n\ndef example_get_force_unit_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[UnitForceConversion, Error]\n ] = get_force_unit_conversion.sync(\n client=client,\n input_unit=UnitForce.DYNES,\n output_unit=UnitForce.DYNES,\n value=3.14,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitForceConversion = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.unit.get_force_unit_conversion.html" } }, { "op": "add", - "path": "/paths/~1openai~1openapi.json/get/x-python", + "path": "/paths/~1logout/post/x-python", "value": { - "example": "from kittycad.api.meta import get_openai_schema\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.types import Response\n\n\ndef example_get_openai_schema():\n # Create our client.\n client = ClientFromEnv()\n\n get_openai_schema.sync(\n client=client,\n )\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.meta.get_openai_schema.html" - } - }, - { - "op": "add", - "path": "/paths/~1api-calls/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.api_calls import list_api_calls\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import ApiCallWithPriceResultsPage, Error\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_list_api_calls():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[ApiCallWithPriceResultsPage, Error]\n ] = list_api_calls.sync(\n client=client,\n sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING,\n limit=None, # Optional[int]\n page_token=None, # Optional[str]\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiCallWithPriceResultsPage = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.api_calls.list_api_calls.html" - } - }, - { - "op": "add", - "path": "/paths/~1user~1extended/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import get_user_self_extended\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ExtendedUser\nfrom kittycad.types import Response\n\n\ndef example_get_user_self_extended():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ExtendedUser, Error]] = get_user_self_extended.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ExtendedUser = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.users.get_user_self_extended.html" - } - }, - { - "op": "add", - "path": "/paths/~1api-calls~1{id}/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.api_calls import get_api_call\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import ApiCallWithPrice, Error\nfrom kittycad.types import Response\n\n\ndef example_get_api_call():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ApiCallWithPrice, Error]] = get_api_call.sync(\n client=client,\n id=\"\",\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiCallWithPrice = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.api_calls.get_api_call.html" - } - }, - { - "op": "add", - "path": "/paths/~1ai-prompts/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ai import list_ai_prompts\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import AiPromptResultsPage, Error\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_list_ai_prompts():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[AiPromptResultsPage, Error]] = list_ai_prompts.sync(\n client=client,\n sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING,\n limit=None, # Optional[int]\n page_token=None, # Optional[str]\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: AiPromptResultsPage = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.ai.list_ai_prompts.html" - } - }, - { - "op": "add", - "path": "/paths/~1users-extended/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import list_users_extended\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ExtendedUserResultsPage\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_list_users_extended():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[ExtendedUserResultsPage, Error]\n ] = list_users_extended.sync(\n client=client,\n sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING,\n limit=None, # Optional[int]\n page_token=None, # Optional[str]\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ExtendedUserResultsPage = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.users.list_users_extended.html" - } - }, - { - "op": "add", - "path": "/paths/~1users~1{id}/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import get_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, User\nfrom kittycad.types import Response\n\n\ndef example_get_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[User, Error]] = get_user.sync(\n client=client,\n id=\"\",\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: User = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.users.get_user.html" - } - }, - { - "op": "add", - "path": "/paths/~1_meta~1info/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.meta import get_metadata\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, Metadata\nfrom kittycad.types import Response\n\n\ndef example_get_metadata():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[Metadata, Error]] = get_metadata.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Metadata = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.meta.get_metadata.html" - } - }, - { - "op": "add", - "path": "/paths/~1apps~1github~1callback/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.apps import apps_github_callback\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_apps_github_callback():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = apps_github_callback.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.apps.apps_github_callback.html" - } - }, - { - "op": "add", - "path": "/paths/~1file~1density/post/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.file import create_file_density\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, FileDensity\nfrom kittycad.models.file_import_format import FileImportFormat\nfrom kittycad.models.unit_density import UnitDensity\nfrom kittycad.models.unit_mass import UnitMass\nfrom kittycad.types import Response\n\n\ndef example_create_file_density():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[FileDensity, Error]] = create_file_density.sync(\n client=client,\n material_mass=3.14,\n material_mass_unit=UnitMass.G,\n output_unit=UnitDensity.LB_FT3,\n src_format=FileImportFormat.FBX,\n body=bytes(\"some bytes\", \"utf-8\"),\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: FileDensity = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.file.create_file_density.html" - } - }, - { - "op": "add", - "path": "/paths/~1apps~1github~1webhook/post/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.apps import apps_github_webhook\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_apps_github_webhook():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = apps_github_webhook.sync(\n client=client,\n body=bytes(\"some bytes\", \"utf-8\"),\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.apps.apps_github_webhook.html" - } - }, - { - "op": "add", - "path": "/paths/~1file~1volume/post/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.file import create_file_volume\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, FileVolume\nfrom kittycad.models.file_import_format import FileImportFormat\nfrom kittycad.models.unit_volume import UnitVolume\nfrom kittycad.types import Response\n\n\ndef example_create_file_volume():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[FileVolume, Error]] = create_file_volume.sync(\n client=client,\n output_unit=UnitVolume.CM3,\n src_format=FileImportFormat.FBX,\n body=bytes(\"some bytes\", \"utf-8\"),\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: FileVolume = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.file.create_file_volume.html" - } - }, - { - "op": "add", - "path": "/paths/~1auth~1email/post/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.hidden import auth_email\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, VerificationToken\nfrom kittycad.models.email_authentication_form import EmailAuthenticationForm\nfrom kittycad.types import Response\n\n\ndef example_auth_email():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[VerificationToken, Error]] = auth_email.sync(\n client=client,\n body=EmailAuthenticationForm(\n email=\"\",\n ),\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: VerificationToken = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.hidden.auth_email.html" - } - }, - { - "op": "add", - "path": "/paths/~1ai-prompts~1{id}/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ai import get_ai_prompt\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import AiPrompt, Error\nfrom kittycad.types import Response\n\n\ndef example_get_ai_prompt():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[AiPrompt, Error]] = get_ai_prompt.sync(\n client=client,\n id=\"\",\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: AiPrompt = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.ai.get_ai_prompt.html" - } - }, - { - "op": "add", - "path": "/paths/~1user/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import get_user_self\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, User\nfrom kittycad.types import Response\n\n\ndef example_get_user_self():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[User, Error]] = get_user_self.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: User = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.users.get_user_self.html" - } - }, - { - "op": "add", - "path": "/paths/~1user/delete/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import delete_user_self\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_delete_user_self():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = delete_user_self.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.users.delete_user_self.html" - } - }, - { - "op": "add", - "path": "/paths/~1user/put/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import update_user_self\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, User\nfrom kittycad.models.update_user import UpdateUser\nfrom kittycad.types import Response\n\n\ndef example_update_user_self():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[User, Error]] = update_user_self.sync(\n client=client,\n body=UpdateUser(\n company=\"\",\n discord=\"\",\n first_name=\"\",\n github=\"\",\n last_name=\"\",\n phone=\"\",\n ),\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: User = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.users.update_user_self.html" - } - }, - { - "op": "add", - "path": "/paths/~1unit~1conversion~1torque~1{input_unit}~1{output_unit}/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.unit import get_torque_unit_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UnitTorqueConversion\nfrom kittycad.models.unit_torque import UnitTorque\nfrom kittycad.types import Response\n\n\ndef example_get_torque_unit_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[UnitTorqueConversion, Error]\n ] = get_torque_unit_conversion.sync(\n client=client,\n input_unit=UnitTorque.NEWTON_METRES,\n output_unit=UnitTorque.NEWTON_METRES,\n value=3.14,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitTorqueConversion = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.unit.get_torque_unit_conversion.html" - } - }, - { - "op": "add", - "path": "/paths/~1ws~1executor~1term/get/x-python", - "value": { - "example": "from kittycad.api.executor import create_executor_term\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.types import Response\n\n\ndef example_create_executor_term():\n # Create our client.\n client = ClientFromEnv()\n\n # Connect to the websocket.\n with create_executor_term.sync(\n client=client,\n ) as websocket:\n # Send a message.\n websocket.send(\"{}\")\n\n # Get the messages.\n for message in websocket:\n print(message)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.executor.create_executor_term.html" - } - }, - { - "op": "add", - "path": "/paths/~1unit~1conversion~1current~1{input_unit}~1{output_unit}/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.unit import get_current_unit_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UnitCurrentConversion\nfrom kittycad.models.unit_current import UnitCurrent\nfrom kittycad.types import Response\n\n\ndef example_get_current_unit_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[UnitCurrentConversion, Error]\n ] = get_current_unit_conversion.sync(\n client=client,\n input_unit=UnitCurrent.AMPERES,\n output_unit=UnitCurrent.AMPERES,\n value=3.14,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitCurrentConversion = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.unit.get_current_unit_conversion.html" - } - }, - { - "op": "add", - "path": "/paths/~1unit~1conversion~1frequency~1{input_unit}~1{output_unit}/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.unit import get_frequency_unit_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UnitFrequencyConversion\nfrom kittycad.models.unit_frequency import UnitFrequency\nfrom kittycad.types import Response\n\n\ndef example_get_frequency_unit_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[UnitFrequencyConversion, Error]\n ] = get_frequency_unit_conversion.sync(\n client=client,\n input_unit=UnitFrequency.GIGAHERTZ,\n output_unit=UnitFrequency.GIGAHERTZ,\n value=3.14,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitFrequencyConversion = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.unit.get_frequency_unit_conversion.html" - } - }, - { - "op": "add", - "path": "/paths/~1unit~1conversion~1volume~1{input_unit}~1{output_unit}/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.unit import get_volume_unit_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UnitVolumeConversion\nfrom kittycad.models.unit_volume import UnitVolume\nfrom kittycad.types import Response\n\n\ndef example_get_volume_unit_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[UnitVolumeConversion, Error]\n ] = get_volume_unit_conversion.sync(\n client=client,\n input_unit=UnitVolume.CM3,\n output_unit=UnitVolume.CM3,\n value=3.14,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitVolumeConversion = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.unit.get_volume_unit_conversion.html" - } - }, - { - "op": "add", - "path": "/paths/~1file~1center-of-mass/post/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.file import create_file_center_of_mass\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, FileCenterOfMass\nfrom kittycad.models.file_import_format import FileImportFormat\nfrom kittycad.models.unit_length import UnitLength\nfrom kittycad.types import Response\n\n\ndef example_create_file_center_of_mass():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[FileCenterOfMass, Error]\n ] = create_file_center_of_mass.sync(\n client=client,\n output_unit=UnitLength.CM,\n src_format=FileImportFormat.FBX,\n body=bytes(\"some bytes\", \"utf-8\"),\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: FileCenterOfMass = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.file.create_file_center_of_mass.html" - } - }, - { - "op": "add", - "path": "/paths/~1/get/x-python", - "value": { - "example": "from kittycad.api.meta import get_schema\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.types import Response\n\n\ndef example_get_schema():\n # Create our client.\n client = ClientFromEnv()\n\n get_schema.sync(\n client=client,\n )\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.meta.get_schema.html" - } - }, - { - "op": "add", - "path": "/paths/~1ai~1text-to-cad~1{output_format}/post/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ai import create_text_to_cad\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, TextToCad\nfrom kittycad.models.file_export_format import FileExportFormat\nfrom kittycad.models.text_to_cad_create_body import TextToCadCreateBody\nfrom kittycad.types import Response\n\n\ndef example_create_text_to_cad():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[TextToCad, Error]] = create_text_to_cad.sync(\n client=client,\n output_format=FileExportFormat.FBX,\n body=TextToCadCreateBody(\n prompt=\"\",\n ),\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: TextToCad = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.ai.create_text_to_cad.html" - } - }, - { - "op": "add", - "path": "/paths/~1unit~1conversion~1area~1{input_unit}~1{output_unit}/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.unit import get_area_unit_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UnitAreaConversion\nfrom kittycad.models.unit_area import UnitArea\nfrom kittycad.types import Response\n\n\ndef example_get_area_unit_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[UnitAreaConversion, Error]\n ] = get_area_unit_conversion.sync(\n client=client,\n input_unit=UnitArea.CM2,\n output_unit=UnitArea.CM2,\n value=3.14,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitAreaConversion = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.unit.get_area_unit_conversion.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.hidden import logout\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_logout():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = logout.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.hidden.logout.html" } }, { @@ -369,66 +49,18 @@ }, { "op": "add", - "path": "/paths/~1ws~1modeling~1commands/get/x-python", + "path": "/paths/~1users~1{id}/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.modeling import modeling_commands_ws\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, WebSocketRequest, WebSocketResponse\nfrom kittycad.models.rtc_sdp_type import RtcSdpType\nfrom kittycad.models.rtc_session_description import RtcSessionDescription\nfrom kittycad.models.web_socket_request import sdp_offer\nfrom kittycad.types import Response\n\n\ndef example_modeling_commands_ws():\n # Create our client.\n client = ClientFromEnv()\n\n # Connect to the websocket.\n with modeling_commands_ws.WebSocket(\n client=client,\n fps=10,\n unlocked_framerate=False,\n video_res_height=10,\n video_res_width=10,\n webrtc=False,\n ) as websocket:\n # Send a message.\n websocket.send(\n WebSocketRequest(\n sdp_offer(\n offer=RtcSessionDescription(\n sdp=\"\",\n type=RtcSdpType.UNSPECIFIED,\n ),\n )\n )\n )\n\n # Get a message.\n message = websocket.recv()\n print(message)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.modeling.modeling_commands_ws.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import get_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, User\nfrom kittycad.types import Response\n\n\ndef example_get_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[User, Error]] = get_user.sync(\n client=client,\n id=\"\",\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: User = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.users.get_user.html" } }, { "op": "add", - "path": "/paths/~1unit~1conversion~1force~1{input_unit}~1{output_unit}/get/x-python", + "path": "/paths/~1api-calls~1{id}/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.unit import get_force_unit_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UnitForceConversion\nfrom kittycad.models.unit_force import UnitForce\nfrom kittycad.types import Response\n\n\ndef example_get_force_unit_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[UnitForceConversion, Error]\n ] = get_force_unit_conversion.sync(\n client=client,\n input_unit=UnitForce.DYNES,\n output_unit=UnitForce.DYNES,\n value=3.14,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitForceConversion = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.unit.get_force_unit_conversion.html" - } - }, - { - "op": "add", - "path": "/paths/~1unit~1conversion~1length~1{input_unit}~1{output_unit}/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.unit import get_length_unit_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UnitLengthConversion\nfrom kittycad.models.unit_length import UnitLength\nfrom kittycad.types import Response\n\n\ndef example_get_length_unit_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[UnitLengthConversion, Error]\n ] = get_length_unit_conversion.sync(\n client=client,\n input_unit=UnitLength.CM,\n output_unit=UnitLength.CM,\n value=3.14,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitLengthConversion = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.unit.get_length_unit_conversion.html" - } - }, - { - "op": "add", - "path": "/paths/~1internal~1discord~1api-token~1{discord_id}/get/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.meta import internal_get_api_token_for_discord_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import ApiToken, Error\nfrom kittycad.types import Response\n\n\ndef example_internal_get_api_token_for_discord_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[ApiToken, Error]\n ] = internal_get_api_token_for_discord_user.sync(\n client=client,\n discord_id=\"\",\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiToken = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.meta.internal_get_api_token_for_discord_user.html" - } - }, - { - "op": "add", - "path": "/paths/~1file~1conversion~1{src_format}~1{output_format}/post/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.file import create_file_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, FileConversion\nfrom kittycad.models.file_export_format import FileExportFormat\nfrom kittycad.models.file_import_format import FileImportFormat\nfrom kittycad.types import Response\n\n\ndef example_create_file_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[FileConversion, Error]] = create_file_conversion.sync(\n client=client,\n output_format=FileExportFormat.FBX,\n src_format=FileImportFormat.FBX,\n body=bytes(\"some bytes\", \"utf-8\"),\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: FileConversion = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.file.create_file_conversion.html" - } - }, - { - "op": "add", - "path": "/paths/~1logout/post/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.hidden import logout\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_logout():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = logout.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.hidden.logout.html" - } - }, - { - "op": "add", - "path": "/paths/~1user~1payment~1methods~1{id}/delete/x-python", - "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import delete_payment_method_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_delete_payment_method_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = delete_payment_method_for_user.sync(\n client=client,\n id=\"\",\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.payments.delete_payment_method_for_user.html" - } - }, - { - "op": "add", - "path": "/paths/~1user~1front-hash/get/x-python", - "value": { - "example": "from kittycad.api.users import get_user_front_hash_self\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.types import Response\n\n\ndef example_get_user_front_hash_self():\n # Create our client.\n client = ClientFromEnv()\n\n get_user_front_hash_self.sync(\n client=client,\n )\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.users.get_user_front_hash_self.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.api_calls import get_api_call\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import ApiCallWithPrice, Error\nfrom kittycad.types import Response\n\n\ndef example_get_api_call():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ApiCallWithPrice, Error]] = get_api_call.sync(\n client=client,\n id=\"\",\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiCallWithPrice = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.api_calls.get_api_call.html" } }, { @@ -441,10 +73,58 @@ }, { "op": "add", - "path": "/paths/~1api-call-metrics/get/x-python", + "path": "/paths/~1user/put/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.api_calls import get_api_call_metrics\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import ApiCallQueryGroup, Error\nfrom kittycad.models.api_call_query_group_by import ApiCallQueryGroupBy\nfrom kittycad.types import Response\n\n\ndef example_get_api_call_metrics():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[List[ApiCallQueryGroup], Error]\n ] = get_api_call_metrics.sync(\n client=client,\n group_by=ApiCallQueryGroupBy.EMAIL,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: List[ApiCallQueryGroup] = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.api_calls.get_api_call_metrics.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import update_user_self\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, User\nfrom kittycad.models.update_user import UpdateUser\nfrom kittycad.types import Response\n\n\ndef example_update_user_self():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[User, Error]] = update_user_self.sync(\n client=client,\n body=UpdateUser(\n company=\"\",\n discord=\"\",\n first_name=\"\",\n github=\"\",\n last_name=\"\",\n phone=\"\",\n ),\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: User = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.users.update_user_self.html" + } + }, + { + "op": "add", + "path": "/paths/~1user/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import get_user_self\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, User\nfrom kittycad.types import Response\n\n\ndef example_get_user_self():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[User, Error]] = get_user_self.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: User = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.users.get_user_self.html" + } + }, + { + "op": "add", + "path": "/paths/~1user/delete/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import delete_user_self\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_delete_user_self():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = delete_user_self.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.users.delete_user_self.html" + } + }, + { + "op": "add", + "path": "/paths/~1users-extended/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import list_users_extended\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ExtendedUserResultsPage\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_list_users_extended():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[ExtendedUserResultsPage, Error]\n ] = list_users_extended.sync(\n client=client,\n sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING,\n limit=None, # Optional[int]\n page_token=None, # Optional[str]\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ExtendedUserResultsPage = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.users.list_users_extended.html" + } + }, + { + "op": "add", + "path": "/paths/~1ai-prompts/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ai import list_ai_prompts\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import AiPromptResultsPage, Error\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_list_ai_prompts():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[AiPromptResultsPage, Error]] = list_ai_prompts.sync(\n client=client,\n sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING,\n limit=None, # Optional[int]\n page_token=None, # Optional[str]\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: AiPromptResultsPage = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.ai.list_ai_prompts.html" + } + }, + { + "op": "add", + "path": "/paths/~1user~1api-calls~1{id}/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.api_calls import get_api_call_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import ApiCallWithPrice, Error\nfrom kittycad.types import Response\n\n\ndef example_get_api_call_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ApiCallWithPrice, Error]] = get_api_call_for_user.sync(\n client=client,\n id=\"\",\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiCallWithPrice = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.api_calls.get_api_call_for_user.html" + } + }, + { + "op": "add", + "path": "/paths/~1user~1front-hash/get/x-python", + "value": { + "example": "from kittycad.api.users import get_user_front_hash_self\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.types import Response\n\n\ndef example_get_user_front_hash_self():\n # Create our client.\n client = ClientFromEnv()\n\n get_user_front_hash_self.sync(\n client=client,\n )\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.users.get_user_front_hash_self.html" } }, { @@ -455,6 +135,30 @@ "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.api_calls.list_async_operations.html" } }, + { + "op": "add", + "path": "/paths/~1users~1{id}~1api-calls/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.api_calls import list_api_calls_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import ApiCallWithPriceResultsPage, Error\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_list_api_calls_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[ApiCallWithPriceResultsPage, Error]\n ] = list_api_calls_for_user.sync(\n client=client,\n id=\"\",\n sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING,\n limit=None, # Optional[int]\n page_token=None, # Optional[str]\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiCallWithPriceResultsPage = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.api_calls.list_api_calls_for_user.html" + } + }, + { + "op": "add", + "path": "/paths/~1user~1payment~1invoices/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import list_invoices_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, Invoice\nfrom kittycad.types import Response\n\n\ndef example_list_invoices_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[List[Invoice], Error]] = list_invoices_for_user.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: List[Invoice] = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.payments.list_invoices_for_user.html" + } + }, + { + "op": "add", + "path": "/paths/~1unit~1conversion~1mass~1{input_unit}~1{output_unit}/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.unit import get_mass_unit_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UnitMassConversion\nfrom kittycad.models.unit_mass import UnitMass\nfrom kittycad.types import Response\n\n\ndef example_get_mass_unit_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[UnitMassConversion, Error]\n ] = get_mass_unit_conversion.sync(\n client=client,\n input_unit=UnitMass.G,\n output_unit=UnitMass.G,\n value=3.14,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitMassConversion = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.unit.get_mass_unit_conversion.html" + } + }, { "op": "add", "path": "/paths/~1auth~1email~1callback/get/x-python", @@ -465,66 +169,114 @@ }, { "op": "add", - "path": "/paths/~1user~1payment~1balance/get/x-python", + "path": "/paths/~1/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import get_payment_balance_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import CustomerBalance, Error\nfrom kittycad.types import Response\n\n\ndef example_get_payment_balance_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[CustomerBalance, Error]\n ] = get_payment_balance_for_user.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: CustomerBalance = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.payments.get_payment_balance_for_user.html" + "example": "from kittycad.api.meta import get_schema\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.types import Response\n\n\ndef example_get_schema():\n # Create our client.\n client = ClientFromEnv()\n\n get_schema.sync(\n client=client,\n )\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.meta.get_schema.html" } }, { "op": "add", - "path": "/paths/~1file~1execute~1{lang}/post/x-python", + "path": "/paths/~1users-extended~1{id}/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.executor import create_file_execution\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import CodeOutput, Error\nfrom kittycad.models.code_language import CodeLanguage\nfrom kittycad.types import Response\n\n\ndef example_create_file_execution():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[CodeOutput, Error]] = create_file_execution.sync(\n client=client,\n lang=CodeLanguage.GO,\n output=None, # Optional[str]\n body=bytes(\"some bytes\", \"utf-8\"),\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: CodeOutput = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.executor.create_file_execution.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import get_user_extended\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ExtendedUser\nfrom kittycad.types import Response\n\n\ndef example_get_user_extended():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ExtendedUser, Error]] = get_user_extended.sync(\n client=client,\n id=\"\",\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ExtendedUser = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.users.get_user_extended.html" } }, { "op": "add", - "path": "/paths/~1users/get/x-python", + "path": "/paths/~1openai~1openapi.json/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import list_users\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UserResultsPage\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_list_users():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[UserResultsPage, Error]] = list_users.sync(\n client=client,\n sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING,\n limit=None, # Optional[int]\n page_token=None, # Optional[str]\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UserResultsPage = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.users.list_users.html" + "example": "from kittycad.api.meta import get_openai_schema\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.types import Response\n\n\ndef example_get_openai_schema():\n # Create our client.\n client = ClientFromEnv()\n\n get_openai_schema.sync(\n client=client,\n )\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.meta.get_openai_schema.html" } }, { "op": "add", - "path": "/paths/~1file~1mass/post/x-python", + "path": "/paths/~1unit~1conversion~1angle~1{input_unit}~1{output_unit}/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.file import create_file_mass\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, FileMass\nfrom kittycad.models.file_import_format import FileImportFormat\nfrom kittycad.models.unit_density import UnitDensity\nfrom kittycad.models.unit_mass import UnitMass\nfrom kittycad.types import Response\n\n\ndef example_create_file_mass():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[FileMass, Error]] = create_file_mass.sync(\n client=client,\n material_density=3.14,\n material_density_unit=UnitDensity.LB_FT3,\n output_unit=UnitMass.G,\n src_format=FileImportFormat.FBX,\n body=bytes(\"some bytes\", \"utf-8\"),\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: FileMass = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.file.create_file_mass.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.unit import get_angle_unit_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UnitAngleConversion\nfrom kittycad.models.unit_angle import UnitAngle\nfrom kittycad.types import Response\n\n\ndef example_get_angle_unit_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[UnitAngleConversion, Error]\n ] = get_angle_unit_conversion.sync(\n client=client,\n input_unit=UnitAngle.DEGREES,\n output_unit=UnitAngle.DEGREES,\n value=3.14,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitAngleConversion = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.unit.get_angle_unit_conversion.html" } }, { "op": "add", - "path": "/paths/~1user~1text-to-cad~1{id}/get/x-python", + "path": "/paths/~1unit~1conversion~1frequency~1{input_unit}~1{output_unit}/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ai import get_text_to_cad_model_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, TextToCad\nfrom kittycad.types import Response\n\n\ndef example_get_text_to_cad_model_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[TextToCad, Error]\n ] = get_text_to_cad_model_for_user.sync(\n client=client,\n id=\"\",\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: TextToCad = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.ai.get_text_to_cad_model_for_user.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.unit import get_frequency_unit_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UnitFrequencyConversion\nfrom kittycad.models.unit_frequency import UnitFrequency\nfrom kittycad.types import Response\n\n\ndef example_get_frequency_unit_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[UnitFrequencyConversion, Error]\n ] = get_frequency_unit_conversion.sync(\n client=client,\n input_unit=UnitFrequency.GIGAHERTZ,\n output_unit=UnitFrequency.GIGAHERTZ,\n value=3.14,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitFrequencyConversion = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.unit.get_frequency_unit_conversion.html" } }, { "op": "add", - "path": "/paths/~1user~1text-to-cad~1{id}/post/x-python", + "path": "/paths/~1unit~1conversion~1pressure~1{input_unit}~1{output_unit}/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ai import create_text_to_cad_model_feedback\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.ai_feedback import AiFeedback\nfrom kittycad.types import Response\n\n\ndef example_create_text_to_cad_model_feedback():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = create_text_to_cad_model_feedback.sync(\n client=client,\n id=\"\",\n feedback=AiFeedback.THUMBS_UP,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.ai.create_text_to_cad_model_feedback.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.unit import get_pressure_unit_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UnitPressureConversion\nfrom kittycad.models.unit_pressure import UnitPressure\nfrom kittycad.types import Response\n\n\ndef example_get_pressure_unit_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[UnitPressureConversion, Error]\n ] = get_pressure_unit_conversion.sync(\n client=client,\n input_unit=UnitPressure.ATMOSPHERES,\n output_unit=UnitPressure.ATMOSPHERES,\n value=3.14,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitPressureConversion = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.unit.get_pressure_unit_conversion.html" } }, { "op": "add", - "path": "/paths/~1user~1payment~1tax/get/x-python", + "path": "/paths/~1user~1payment/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import validate_customer_tax_information_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_validate_customer_tax_information_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = validate_customer_tax_information_for_user.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.payments.validate_customer_tax_information_for_user.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import get_payment_information_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Customer, Error\nfrom kittycad.types import Response\n\n\ndef example_get_payment_information_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[Customer, Error]\n ] = get_payment_information_for_user.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Customer = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.payments.get_payment_information_for_user.html" } }, { "op": "add", - "path": "/paths/~1users~1{id}~1api-calls/get/x-python", + "path": "/paths/~1user~1payment/put/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.api_calls import list_api_calls_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import ApiCallWithPriceResultsPage, Error\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_list_api_calls_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[ApiCallWithPriceResultsPage, Error]\n ] = list_api_calls_for_user.sync(\n client=client,\n id=\"\",\n sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING,\n limit=None, # Optional[int]\n page_token=None, # Optional[str]\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiCallWithPriceResultsPage = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.api_calls.list_api_calls_for_user.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import update_payment_information_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Customer, Error\nfrom kittycad.models.billing_info import BillingInfo\nfrom kittycad.types import Response\n\n\ndef example_update_payment_information_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[Customer, Error]\n ] = update_payment_information_for_user.sync(\n client=client,\n body=BillingInfo(\n name=\"\",\n phone=\"\",\n ),\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Customer = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.payments.update_payment_information_for_user.html" + } + }, + { + "op": "add", + "path": "/paths/~1user~1payment/delete/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import delete_payment_information_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_delete_payment_information_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = delete_payment_information_for_user.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.payments.delete_payment_information_for_user.html" + } + }, + { + "op": "add", + "path": "/paths/~1user~1payment/post/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import create_payment_information_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Customer, Error\nfrom kittycad.models.billing_info import BillingInfo\nfrom kittycad.types import Response\n\n\ndef example_create_payment_information_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[Customer, Error]\n ] = create_payment_information_for_user.sync(\n client=client,\n body=BillingInfo(\n name=\"\",\n phone=\"\",\n ),\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Customer = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.payments.create_payment_information_for_user.html" + } + }, + { + "op": "add", + "path": "/paths/~1ai-prompts~1{id}/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ai import get_ai_prompt\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import AiPrompt, Error\nfrom kittycad.types import Response\n\n\ndef example_get_ai_prompt():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[AiPrompt, Error]] = get_ai_prompt.sync(\n client=client,\n id=\"\",\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: AiPrompt = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.ai.get_ai_prompt.html" + } + }, + { + "op": "add", + "path": "/paths/~1api-calls/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.api_calls import list_api_calls\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import ApiCallWithPriceResultsPage, Error\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_list_api_calls():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[ApiCallWithPriceResultsPage, Error]\n ] = list_api_calls.sync(\n client=client,\n sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING,\n limit=None, # Optional[int]\n page_token=None, # Optional[str]\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiCallWithPriceResultsPage = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.api_calls.list_api_calls.html" + } + }, + { + "op": "add", + "path": "/paths/~1unit~1conversion~1current~1{input_unit}~1{output_unit}/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.unit import get_current_unit_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UnitCurrentConversion\nfrom kittycad.models.unit_current import UnitCurrent\nfrom kittycad.types import Response\n\n\ndef example_get_current_unit_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[UnitCurrentConversion, Error]\n ] = get_current_unit_conversion.sync(\n client=client,\n input_unit=UnitCurrent.AMPERES,\n output_unit=UnitCurrent.AMPERES,\n value=3.14,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitCurrentConversion = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.unit.get_current_unit_conversion.html" + } + }, + { + "op": "add", + "path": "/paths/~1internal~1discord~1api-token~1{discord_id}/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.meta import internal_get_api_token_for_discord_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import ApiToken, Error\nfrom kittycad.types import Response\n\n\ndef example_internal_get_api_token_for_discord_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[ApiToken, Error]\n ] = internal_get_api_token_for_discord_user.sync(\n client=client,\n discord_id=\"\",\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiToken = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.meta.internal_get_api_token_for_discord_user.html" } }, { @@ -543,6 +295,14 @@ "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.api_tokens.delete_api_token_for_user.html" } }, + { + "op": "add", + "path": "/paths/~1user~1payment~1methods~1{id}/delete/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import delete_payment_method_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_delete_payment_method_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = delete_payment_method_for_user.sync(\n client=client,\n id=\"\",\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.payments.delete_payment_method_for_user.html" + } + }, { "op": "add", "path": "/paths/~1user~1session~1{token}/get/x-python", @@ -553,18 +313,26 @@ }, { "op": "add", - "path": "/paths/~1user~1text-to-cad/get/x-python", + "path": "/paths/~1user~1text-to-cad~1{id}/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ai import list_text_to_cad_models_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, TextToCadResultsPage\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_list_text_to_cad_models_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[TextToCadResultsPage, Error]\n ] = list_text_to_cad_models_for_user.sync(\n client=client,\n sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING,\n limit=None, # Optional[int]\n page_token=None, # Optional[str]\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: TextToCadResultsPage = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.ai.list_text_to_cad_models_for_user.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ai import get_text_to_cad_model_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, TextToCad\nfrom kittycad.types import Response\n\n\ndef example_get_text_to_cad_model_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[TextToCad, Error]\n ] = get_text_to_cad_model_for_user.sync(\n client=client,\n id=\"\",\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: TextToCad = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.ai.get_text_to_cad_model_for_user.html" } }, { "op": "add", - "path": "/paths/~1unit~1conversion~1angle~1{input_unit}~1{output_unit}/get/x-python", + "path": "/paths/~1user~1text-to-cad~1{id}/post/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.unit import get_angle_unit_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UnitAngleConversion\nfrom kittycad.models.unit_angle import UnitAngle\nfrom kittycad.types import Response\n\n\ndef example_get_angle_unit_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[UnitAngleConversion, Error]\n ] = get_angle_unit_conversion.sync(\n client=client,\n input_unit=UnitAngle.DEGREES,\n output_unit=UnitAngle.DEGREES,\n value=3.14,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitAngleConversion = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.unit.get_angle_unit_conversion.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ai import create_text_to_cad_model_feedback\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.ai_feedback import AiFeedback\nfrom kittycad.types import Response\n\n\ndef example_create_text_to_cad_model_feedback():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = create_text_to_cad_model_feedback.sync(\n client=client,\n id=\"\",\n feedback=AiFeedback.THUMBS_UP,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.ai.create_text_to_cad_model_feedback.html" + } + }, + { + "op": "add", + "path": "/paths/~1ws~1executor~1term/get/x-python", + "value": { + "example": "from kittycad.api.executor import create_executor_term\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.types import Response\n\n\ndef example_create_executor_term():\n # Create our client.\n client = ClientFromEnv()\n\n # Connect to the websocket.\n with create_executor_term.sync(\n client=client,\n ) as websocket:\n # Send a message.\n websocket.send(\"{}\")\n\n # Get the messages.\n for message in websocket:\n print(message)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.executor.create_executor_term.html" } }, { @@ -575,6 +343,30 @@ "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.users.get_user_onboarding_self.html" } }, + { + "op": "add", + "path": "/paths/~1api-call-metrics/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.api_calls import get_api_call_metrics\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import ApiCallQueryGroup, Error\nfrom kittycad.models.api_call_query_group_by import ApiCallQueryGroupBy\nfrom kittycad.types import Response\n\n\ndef example_get_api_call_metrics():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[List[ApiCallQueryGroup], Error]\n ] = get_api_call_metrics.sync(\n client=client,\n group_by=ApiCallQueryGroupBy.EMAIL,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: List[ApiCallQueryGroup] = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.api_calls.get_api_call_metrics.html" + } + }, + { + "op": "add", + "path": "/paths/~1user~1payment~1balance/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import get_payment_balance_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import CustomerBalance, Error\nfrom kittycad.types import Response\n\n\ndef example_get_payment_balance_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[CustomerBalance, Error]\n ] = get_payment_balance_for_user.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: CustomerBalance = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.payments.get_payment_balance_for_user.html" + } + }, + { + "op": "add", + "path": "/paths/~1file~1volume/post/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.file import create_file_volume\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, FileVolume\nfrom kittycad.models.file_import_format import FileImportFormat\nfrom kittycad.models.unit_volume import UnitVolume\nfrom kittycad.types import Response\n\n\ndef example_create_file_volume():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[FileVolume, Error]] = create_file_volume.sync(\n client=client,\n output_unit=UnitVolume.CM3,\n src_format=FileImportFormat.FBX,\n body=bytes(\"some bytes\", \"utf-8\"),\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: FileVolume = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.file.create_file_volume.html" + } + }, { "op": "add", "path": "/paths/~1unit~1conversion~1energy~1{input_unit}~1{output_unit}/get/x-python", @@ -583,6 +375,214 @@ "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.unit.get_energy_unit_conversion.html" } }, + { + "op": "add", + "path": "/paths/~1user~1text-to-cad/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ai import list_text_to_cad_models_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, TextToCadResultsPage\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_list_text_to_cad_models_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[TextToCadResultsPage, Error]\n ] = list_text_to_cad_models_for_user.sync(\n client=client,\n sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING,\n limit=None, # Optional[int]\n page_token=None, # Optional[str]\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: TextToCadResultsPage = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.ai.list_text_to_cad_models_for_user.html" + } + }, + { + "op": "add", + "path": "/paths/~1file~1conversion~1{src_format}~1{output_format}/post/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.file import create_file_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, FileConversion\nfrom kittycad.models.file_export_format import FileExportFormat\nfrom kittycad.models.file_import_format import FileImportFormat\nfrom kittycad.types import Response\n\n\ndef example_create_file_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[FileConversion, Error]] = create_file_conversion.sync(\n client=client,\n output_format=FileExportFormat.FBX,\n src_format=FileImportFormat.FBX,\n body=bytes(\"some bytes\", \"utf-8\"),\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: FileConversion = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.file.create_file_conversion.html" + } + }, + { + "op": "add", + "path": "/paths/~1unit~1conversion~1torque~1{input_unit}~1{output_unit}/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.unit import get_torque_unit_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UnitTorqueConversion\nfrom kittycad.models.unit_torque import UnitTorque\nfrom kittycad.types import Response\n\n\ndef example_get_torque_unit_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[UnitTorqueConversion, Error]\n ] = get_torque_unit_conversion.sync(\n client=client,\n input_unit=UnitTorque.NEWTON_METRES,\n output_unit=UnitTorque.NEWTON_METRES,\n value=3.14,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitTorqueConversion = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.unit.get_torque_unit_conversion.html" + } + }, + { + "op": "add", + "path": "/paths/~1auth~1email/post/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.hidden import auth_email\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, VerificationToken\nfrom kittycad.models.email_authentication_form import EmailAuthenticationForm\nfrom kittycad.types import Response\n\n\ndef example_auth_email():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[VerificationToken, Error]] = auth_email.sync(\n client=client,\n body=EmailAuthenticationForm(\n email=\"\",\n ),\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: VerificationToken = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.hidden.auth_email.html" + } + }, + { + "op": "add", + "path": "/paths/~1.well-known~1ai-plugin.json/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.meta import get_ai_plugin_manifest\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import AiPluginManifest, Error\nfrom kittycad.types import Response\n\n\ndef example_get_ai_plugin_manifest():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[AiPluginManifest, Error]\n ] = get_ai_plugin_manifest.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: AiPluginManifest = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.meta.get_ai_plugin_manifest.html" + } + }, + { + "op": "add", + "path": "/paths/~1unit~1conversion~1power~1{input_unit}~1{output_unit}/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.unit import get_power_unit_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UnitPowerConversion\nfrom kittycad.models.unit_power import UnitPower\nfrom kittycad.types import Response\n\n\ndef example_get_power_unit_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[UnitPowerConversion, Error]\n ] = get_power_unit_conversion.sync(\n client=client,\n input_unit=UnitPower.BTU_PER_MINUTE,\n output_unit=UnitPower.BTU_PER_MINUTE,\n value=3.14,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitPowerConversion = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.unit.get_power_unit_conversion.html" + } + }, + { + "op": "add", + "path": "/paths/~1user~1api-calls/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.api_calls import user_list_api_calls\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import ApiCallWithPriceResultsPage, Error\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_user_list_api_calls():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[ApiCallWithPriceResultsPage, Error]\n ] = user_list_api_calls.sync(\n client=client,\n sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING,\n limit=None, # Optional[int]\n page_token=None, # Optional[str]\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiCallWithPriceResultsPage = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.api_calls.user_list_api_calls.html" + } + }, + { + "op": "add", + "path": "/paths/~1apps~1github~1callback/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.apps import apps_github_callback\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_apps_github_callback():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = apps_github_callback.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.apps.apps_github_callback.html" + } + }, + { + "op": "add", + "path": "/paths/~1file~1center-of-mass/post/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.file import create_file_center_of_mass\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, FileCenterOfMass\nfrom kittycad.models.file_import_format import FileImportFormat\nfrom kittycad.models.unit_length import UnitLength\nfrom kittycad.types import Response\n\n\ndef example_create_file_center_of_mass():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[FileCenterOfMass, Error]\n ] = create_file_center_of_mass.sync(\n client=client,\n output_unit=UnitLength.CM,\n src_format=FileImportFormat.FBX,\n body=bytes(\"some bytes\", \"utf-8\"),\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: FileCenterOfMass = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.file.create_file_center_of_mass.html" + } + }, + { + "op": "add", + "path": "/paths/~1_meta~1info/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.meta import get_metadata\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, Metadata\nfrom kittycad.types import Response\n\n\ndef example_get_metadata():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[Metadata, Error]] = get_metadata.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Metadata = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.meta.get_metadata.html" + } + }, + { + "op": "add", + "path": "/paths/~1unit~1conversion~1area~1{input_unit}~1{output_unit}/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.unit import get_area_unit_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UnitAreaConversion\nfrom kittycad.models.unit_area import UnitArea\nfrom kittycad.types import Response\n\n\ndef example_get_area_unit_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[UnitAreaConversion, Error]\n ] = get_area_unit_conversion.sync(\n client=client,\n input_unit=UnitArea.CM2,\n output_unit=UnitArea.CM2,\n value=3.14,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitAreaConversion = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.unit.get_area_unit_conversion.html" + } + }, + { + "op": "add", + "path": "/paths/~1user~1payment~1methods/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import list_payment_methods_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, PaymentMethod\nfrom kittycad.types import Response\n\n\ndef example_list_payment_methods_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[List[PaymentMethod], Error]\n ] = list_payment_methods_for_user.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: List[PaymentMethod] = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.payments.list_payment_methods_for_user.html" + } + }, + { + "op": "add", + "path": "/paths/~1file~1surface-area/post/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.file import create_file_surface_area\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, FileSurfaceArea\nfrom kittycad.models.file_import_format import FileImportFormat\nfrom kittycad.models.unit_area import UnitArea\nfrom kittycad.types import Response\n\n\ndef example_create_file_surface_area():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[FileSurfaceArea, Error]\n ] = create_file_surface_area.sync(\n client=client,\n output_unit=UnitArea.CM2,\n src_format=FileImportFormat.FBX,\n body=bytes(\"some bytes\", \"utf-8\"),\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: FileSurfaceArea = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.file.create_file_surface_area.html" + } + }, + { + "op": "add", + "path": "/paths/~1ping/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.meta import ping\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, Pong\nfrom kittycad.types import Response\n\n\ndef example_ping():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[Pong, Error]] = ping.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Pong = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.meta.ping.html" + } + }, + { + "op": "add", + "path": "/paths/~1unit~1conversion~1length~1{input_unit}~1{output_unit}/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.unit import get_length_unit_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UnitLengthConversion\nfrom kittycad.models.unit_length import UnitLength\nfrom kittycad.types import Response\n\n\ndef example_get_length_unit_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[UnitLengthConversion, Error]\n ] = get_length_unit_conversion.sync(\n client=client,\n input_unit=UnitLength.CM,\n output_unit=UnitLength.CM,\n value=3.14,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitLengthConversion = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.unit.get_length_unit_conversion.html" + } + }, + { + "op": "add", + "path": "/paths/~1apps~1github~1webhook/post/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.apps import apps_github_webhook\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_apps_github_webhook():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = apps_github_webhook.sync(\n client=client,\n body=bytes(\"some bytes\", \"utf-8\"),\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.apps.apps_github_webhook.html" + } + }, + { + "op": "add", + "path": "/paths/~1file~1density/post/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.file import create_file_density\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, FileDensity\nfrom kittycad.models.file_import_format import FileImportFormat\nfrom kittycad.models.unit_density import UnitDensity\nfrom kittycad.models.unit_mass import UnitMass\nfrom kittycad.types import Response\n\n\ndef example_create_file_density():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[FileDensity, Error]] = create_file_density.sync(\n client=client,\n material_mass=3.14,\n material_mass_unit=UnitMass.G,\n output_unit=UnitDensity.LB_FT3,\n src_format=FileImportFormat.FBX,\n body=bytes(\"some bytes\", \"utf-8\"),\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: FileDensity = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.file.create_file_density.html" + } + }, + { + "op": "add", + "path": "/paths/~1ws~1modeling~1commands/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.modeling import modeling_commands_ws\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, WebSocketRequest, WebSocketResponse\nfrom kittycad.models.rtc_sdp_type import RtcSdpType\nfrom kittycad.models.rtc_session_description import RtcSessionDescription\nfrom kittycad.models.web_socket_request import sdp_offer\nfrom kittycad.types import Response\n\n\ndef example_modeling_commands_ws():\n # Create our client.\n client = ClientFromEnv()\n\n # Connect to the websocket.\n with modeling_commands_ws.WebSocket(\n client=client,\n fps=10,\n unlocked_framerate=False,\n video_res_height=10,\n video_res_width=10,\n webrtc=False,\n ) as websocket:\n # Send a message.\n websocket.send(\n WebSocketRequest(\n sdp_offer(\n offer=RtcSessionDescription(\n sdp=\"\",\n type=RtcSdpType.UNSPECIFIED,\n ),\n )\n )\n )\n\n # Get a message.\n message = websocket.recv()\n print(message)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.modeling.modeling_commands_ws.html" + } + }, + { + "op": "add", + "path": "/paths/~1unit~1conversion~1volume~1{input_unit}~1{output_unit}/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.unit import get_volume_unit_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UnitVolumeConversion\nfrom kittycad.models.unit_volume import UnitVolume\nfrom kittycad.types import Response\n\n\ndef example_get_volume_unit_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[UnitVolumeConversion, Error]\n ] = get_volume_unit_conversion.sync(\n client=client,\n input_unit=UnitVolume.CM3,\n output_unit=UnitVolume.CM3,\n value=3.14,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitVolumeConversion = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.unit.get_volume_unit_conversion.html" + } + }, + { + "op": "add", + "path": "/paths/~1user~1payment~1tax/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import validate_customer_tax_information_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_validate_customer_tax_information_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = validate_customer_tax_information_for_user.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.payments.validate_customer_tax_information_for_user.html" + } + }, + { + "op": "add", + "path": "/paths/~1apps~1github~1consent/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.apps import apps_github_consent\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import AppClientInfo, Error\nfrom kittycad.types import Response\n\n\ndef example_apps_github_consent():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[AppClientInfo, Error]] = apps_github_consent.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: AppClientInfo = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.apps.apps_github_consent.html" + } + }, + { + "op": "add", + "path": "/paths/~1file~1mass/post/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.file import create_file_mass\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, FileMass\nfrom kittycad.models.file_import_format import FileImportFormat\nfrom kittycad.models.unit_density import UnitDensity\nfrom kittycad.models.unit_mass import UnitMass\nfrom kittycad.types import Response\n\n\ndef example_create_file_mass():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[FileMass, Error]] = create_file_mass.sync(\n client=client,\n material_density=3.14,\n material_density_unit=UnitDensity.LB_FT3,\n output_unit=UnitMass.G,\n src_format=FileImportFormat.FBX,\n body=bytes(\"some bytes\", \"utf-8\"),\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: FileMass = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.file.create_file_mass.html" + } + }, + { + "op": "add", + "path": "/paths/~1user~1extended/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import get_user_self_extended\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ExtendedUser\nfrom kittycad.types import Response\n\n\ndef example_get_user_self_extended():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ExtendedUser, Error]] = get_user_self_extended.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ExtendedUser = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.users.get_user_self_extended.html" + } + }, + { + "op": "add", + "path": "/paths/~1users/get/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import list_users\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UserResultsPage\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_list_users():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[UserResultsPage, Error]] = list_users.sync(\n client=client,\n sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING,\n limit=None, # Optional[int]\n page_token=None, # Optional[str]\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UserResultsPage = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.users.list_users.html" + } + }, + { + "op": "add", + "path": "/paths/~1user~1payment~1intent/post/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import create_payment_intent_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, PaymentIntent\nfrom kittycad.types import Response\n\n\ndef example_create_payment_intent_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[PaymentIntent, Error]\n ] = create_payment_intent_for_user.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: PaymentIntent = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.payments.create_payment_intent_for_user.html" + } + }, + { + "op": "add", + "path": "/paths/~1ai~1text-to-cad~1{output_format}/post/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ai import create_text_to_cad\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, TextToCad\nfrom kittycad.models.file_export_format import FileExportFormat\nfrom kittycad.models.text_to_cad_create_body import TextToCadCreateBody\nfrom kittycad.types import Response\n\n\ndef example_create_text_to_cad():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[TextToCad, Error]] = create_text_to_cad.sync(\n client=client,\n output_format=FileExportFormat.FBX,\n body=TextToCadCreateBody(\n prompt=\"\",\n ),\n )\n\n if isinstance(result, Error) or result == None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: TextToCad = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.kittycad.io/_autosummary/kittycad.api.ai.create_text_to_cad.html" + } + }, { "op": "add", "path": "/info/x-python", diff --git a/kittycad/api/executor/create_executor_term.py b/kittycad/api/executor/create_executor_term.py index 817dc19da..3499c694c 100644 --- a/kittycad/api/executor/create_executor_term.py +++ b/kittycad/api/executor/create_executor_term.py @@ -33,7 +33,7 @@ def sync( client=client, ) - return ws_connect(kwargs["url"].replace("http", "ws"), additional_headers=kwargs["headers"], close_timeout=120, compression=None, max_size=None) # type: ignore + return ws_connect(kwargs["url"].replace("http", "ws"), additional_headers=kwargs["headers"], close_timeout=120, max_size=None) # type: ignore async def asyncio( @@ -50,6 +50,5 @@ async def asyncio( kwargs["url"].replace("http", "ws"), extra_headers=kwargs["headers"], close_timeout=120, - compression=None, max_size=None, ) diff --git a/kittycad/api/modeling/modeling_commands_ws.py b/kittycad/api/modeling/modeling_commands_ws.py index 3ddaa3cfd..39697173c 100644 --- a/kittycad/api/modeling/modeling_commands_ws.py +++ b/kittycad/api/modeling/modeling_commands_ws.py @@ -82,7 +82,7 @@ def sync( client=client, ) - return ws_connect(kwargs["url"].replace("http", "ws"), additional_headers=kwargs["headers"], close_timeout=120, compression=None, max_size=None) # type: ignore + return ws_connect(kwargs["url"].replace("http", "ws"), additional_headers=kwargs["headers"], close_timeout=120, max_size=None) # type: ignore async def asyncio( @@ -109,7 +109,6 @@ async def asyncio( kwargs["url"].replace("http", "ws"), extra_headers=kwargs["headers"], close_timeout=120, - compression=None, max_size=None, ) @@ -161,11 +160,11 @@ class WebSocket: def send(self, data: WebSocketRequest): """Send data to the websocket.""" - self.ws.send(json.dumps(data.model_dump(mode="json"))) + self.ws.send(json.dumps(data.model_dump())) def send_binary(self, data: WebSocketRequest): """Send data as bson to the websocket.""" - self.ws.send(bson.encode(data.model_dump(mode="json"))) # type: ignore + self.ws.send(bson.encode(data.model_dump())) # type: ignore def recv(self) -> WebSocketResponse: """Receive data from the websocket.""" diff --git a/kittycad/client_test.py b/kittycad/client_test.py index e00ffeccd..639d9b509 100644 --- a/kittycad/client_test.py +++ b/kittycad/client_test.py @@ -1,7 +1,7 @@ import json import os import uuid -from typing import Optional, Union, cast +from typing import Optional, Union import pytest @@ -20,7 +20,6 @@ from .models import ( Direction, Error, ExtendedUserResultsPage, - FailureWebSocketResponse, FileConversion, FileExportFormat, FileImportFormat, @@ -32,7 +31,6 @@ from .models import ( ModelingCmd, ModelingCmdId, Pong, - SuccessWebSocketResponse, System, UnitDensity, UnitLength, @@ -40,6 +38,7 @@ from .models import ( UnitVolume, User, WebSocketRequest, + WebSocketResponse, ) from .models.input_format import obj from .models.modeling_cmd import ( @@ -48,7 +47,6 @@ from .models.modeling_cmd import ( start_path, take_snapshot, ) -from .models.ok_web_socket_response_data import modeling from .models.web_socket_request import modeling_cmd_req from .types import Unset @@ -385,16 +383,29 @@ def test_ws_import(): websocket.send_binary(req) # Get the success message. - message = websocket.recv() - if isinstance(message, FailureWebSocketResponse): - raise Exception(message) - elif isinstance(message, SuccessWebSocketResponse): - response = cast(SuccessWebSocketResponse, message) - resp = cast(modeling, response.resp) - print(json.dumps(resp.model_dump_json())) - # Get the object id from the response. - # TODO: FIX - object_id = uuid.uuid4() + object_id = "" + for message in websocket: + message_dict = message.model_dump() + if message_dict["success"] is not True: + raise Exception(message_dict) + elif message_dict["resp"]["type"] != "modeling": + continue + elif ( + message_dict["resp"]["data"]["modeling_response"]["type"] + != "import_files" + ): + # We have a modeling command response. + # Make sure its the import files response. + raise Exception(message_dict) + else: + # Okay we have the import files response. + # Break since now we know it was a success. + object_id = str( + message_dict["resp"]["data"]["modeling_response"]["data"][ + "object_id" + ] + ) + break # Now we want to focus on the object. cmd_id = uuid.uuid4() @@ -408,8 +419,17 @@ def test_ws_import(): websocket.send(req) # Get the success message. - message = websocket.recv() - print(json.dumps(message.model_dump_json())) + for message in websocket: + message_dict = message.model_dump() + if message_dict["success"] is not True: + raise Exception(message_dict) + elif message_dict["resp"]["type"] != "modeling": + continue + elif message_dict["request_id"] == str(cmd_id): + # We got a success response for our cmd. + break + else: + raise Exception(message_dict) # Now we want to snapshot as a png. cmd_id = uuid.uuid4() @@ -422,3 +442,50 @@ def test_ws_import(): ) ) websocket.send(req) + + # Get the success message. + png_contents = b"" + for message in websocket: + message_dict = message.model_dump() + if message_dict["success"] is not True: + raise Exception(message_dict) + elif message_dict["resp"]["type"] != "modeling": + continue + elif ( + message_dict["resp"]["data"]["modeling_response"]["type"] + != "take_snapshot" + ): + # Make sure its the correct response. + raise Exception(message_dict) + else: + # Okay we have the snapshot response. + # Break since now we know it was a success. + png_contents = message_dict["resp"]["data"]["modeling_response"][ + "data" + ]["contents"].get_decoded() + break + + # Save the contents to a file. + png_path = os.path.join(dir_path, "..", "assets", "snapshot.png") + with open(png_path, "wb") as f: + f.write(png_contents) + + # Ensure the file is not empty. + assert len(png_contents) > 0 + + # Ensure the file exists. + assert os.path.exists(png_path) + + +def test_serialize_deserialize(): + json_str = """{"success":true,"request_id":"16a06065-6ca3-4a96-a042-d0bec6b161a6","resp":{"type":"modeling","data":{"modeling_response":{"type":"import_files","data":{"object_id":"f61ac02e-77bd-468f-858f-fd4141a26acd"}}}}}""" + d = json.loads(json_str) + print(d) + message = WebSocketResponse(**d) + model_dump = message.model_dump() + print(model_dump) + assert model_dump["success"] is True # type: ignore + assert model_dump["request_id"] == "16a06065-6ca3-4a96-a042-d0bec6b161a6" # type: ignore + assert model_dump["resp"]["type"] == "modeling" # type: ignore + assert model_dump["resp"]["data"]["modeling_response"]["type"] == "import_files" # type: ignore + assert model_dump["resp"]["data"]["modeling_response"]["data"]["object_id"] == "f61ac02e-77bd-468f-858f-fd4141a26acd" # type: ignore diff --git a/kittycad/models/async_api_call_output.py b/kittycad/models/async_api_call_output.py index c353353a7..7d2ce398a 100644 --- a/kittycad/models/async_api_call_output.py +++ b/kittycad/models/async_api_call_output.py @@ -1,7 +1,8 @@ import datetime -from typing import Dict, Optional, Union +from typing import Dict, Literal, Optional, Union -from pydantic import BaseModel, RootModel +from pydantic import BaseModel, Field, RootModel +from typing_extensions import Annotated from ..models.ai_feedback import AiFeedback from ..models.api_call_status import ApiCallStatus @@ -44,7 +45,7 @@ class file_conversion(BaseModel): status: ApiCallStatus - type: str = "file_conversion" + type: Literal["file_conversion"] = "file_conversion" updated_at: datetime.datetime @@ -72,7 +73,7 @@ class file_center_of_mass(BaseModel): status: ApiCallStatus - type: str = "file_center_of_mass" + type: Literal["file_center_of_mass"] = "file_center_of_mass" updated_at: datetime.datetime @@ -104,7 +105,7 @@ class file_mass(BaseModel): status: ApiCallStatus - type: str = "file_mass" + type: Literal["file_mass"] = "file_mass" updated_at: datetime.datetime @@ -130,7 +131,7 @@ class file_volume(BaseModel): status: ApiCallStatus - type: str = "file_volume" + type: Literal["file_volume"] = "file_volume" updated_at: datetime.datetime @@ -164,7 +165,7 @@ class file_density(BaseModel): status: ApiCallStatus - type: str = "file_density" + type: Literal["file_density"] = "file_density" updated_at: datetime.datetime @@ -192,7 +193,7 @@ class file_surface_area(BaseModel): surface_area: Optional[float] = None - type: str = "file_surface_area" + type: Literal["file_surface_area"] = "file_surface_area" updated_at: datetime.datetime @@ -224,7 +225,7 @@ class text_to_cad(BaseModel): status: ApiCallStatus - type: str = "text_to_cad" + type: Literal["text_to_cad"] = "text_to_cad" updated_at: datetime.datetime @@ -232,13 +233,16 @@ class text_to_cad(BaseModel): AsyncApiCallOutput = RootModel[ - Union[ - file_conversion, - file_center_of_mass, - file_mass, - file_volume, - file_density, - file_surface_area, - text_to_cad, + Annotated[ + Union[ + file_conversion, + file_center_of_mass, + file_mass, + file_volume, + file_density, + file_surface_area, + text_to_cad, + ], + Field(discriminator="type"), ] ] diff --git a/kittycad/models/device_access_token_request_form.py b/kittycad/models/device_access_token_request_form.py index 01ba7691b..8f0d9a1f2 100644 --- a/kittycad/models/device_access_token_request_form.py +++ b/kittycad/models/device_access_token_request_form.py @@ -1,4 +1,3 @@ -from uuid import UUID from pydantic import BaseModel @@ -8,8 +7,8 @@ from ..models.o_auth2_grant_type import OAuth2GrantType class DeviceAccessTokenRequestForm(BaseModel): """The form for a device access token request.""" - client_id: UUID + client_id: str - device_code: UUID + device_code: str grant_type: OAuth2GrantType diff --git a/kittycad/models/device_auth_request_form.py b/kittycad/models/device_auth_request_form.py index c38c560d0..8e413f9a3 100644 --- a/kittycad/models/device_auth_request_form.py +++ b/kittycad/models/device_auth_request_form.py @@ -1,4 +1,3 @@ -from uuid import UUID from pydantic import BaseModel @@ -7,4 +6,4 @@ from pydantic import BaseModel class DeviceAuthRequestForm(BaseModel): """The request parameters for the OAuth 2.0 Device Authorization Grant flow.""" - client_id: UUID + client_id: str diff --git a/kittycad/models/entity_get_all_child_uuids.py b/kittycad/models/entity_get_all_child_uuids.py index e99bafc18..99bcb84c5 100644 --- a/kittycad/models/entity_get_all_child_uuids.py +++ b/kittycad/models/entity_get_all_child_uuids.py @@ -1,5 +1,4 @@ from typing import List -from uuid import UUID from pydantic import BaseModel @@ -8,4 +7,4 @@ from pydantic import BaseModel class EntityGetAllChildUuids(BaseModel): """The response from the `EntityGetAllChildUuids` command.""" - entity_ids: List[UUID] + entity_ids: List[str] diff --git a/kittycad/models/entity_get_child_uuid.py b/kittycad/models/entity_get_child_uuid.py index 82e4c5b4d..7806bd660 100644 --- a/kittycad/models/entity_get_child_uuid.py +++ b/kittycad/models/entity_get_child_uuid.py @@ -1,4 +1,3 @@ -from uuid import UUID from pydantic import BaseModel @@ -7,4 +6,4 @@ from pydantic import BaseModel class EntityGetChildUuid(BaseModel): """The response from the `EntityGetChildUuid` command.""" - entity_id: UUID + entity_id: str diff --git a/kittycad/models/entity_get_parent_id.py b/kittycad/models/entity_get_parent_id.py index 5a97729a8..fce6bb61a 100644 --- a/kittycad/models/entity_get_parent_id.py +++ b/kittycad/models/entity_get_parent_id.py @@ -1,4 +1,3 @@ -from uuid import UUID from pydantic import BaseModel @@ -7,4 +6,4 @@ from pydantic import BaseModel class EntityGetParentId(BaseModel): """The response from the `EntityGetParentId` command.""" - entity_id: UUID + entity_id: str diff --git a/kittycad/models/failure_web_socket_response.py b/kittycad/models/failure_web_socket_response.py index a2ed081d5..4dc51ca55 100644 --- a/kittycad/models/failure_web_socket_response.py +++ b/kittycad/models/failure_web_socket_response.py @@ -1,5 +1,4 @@ from typing import List, Optional -from uuid import UUID from pydantic import BaseModel @@ -11,6 +10,6 @@ class FailureWebSocketResponse(BaseModel): errors: List[ApiError] - request_id: Optional[UUID] = None + request_id: Optional[str] = None success: bool diff --git a/kittycad/models/highlight_set_entity.py b/kittycad/models/highlight_set_entity.py index 9708572b9..8206e041b 100644 --- a/kittycad/models/highlight_set_entity.py +++ b/kittycad/models/highlight_set_entity.py @@ -1,5 +1,4 @@ from typing import Optional -from uuid import UUID from pydantic import BaseModel @@ -8,6 +7,6 @@ from pydantic import BaseModel class HighlightSetEntity(BaseModel): """The response from the `HighlightSetEntity` command.""" - entity_id: Optional[UUID] = None + entity_id: Optional[str] = None sequence: Optional[int] = None diff --git a/kittycad/models/import_files.py b/kittycad/models/import_files.py index de2b52512..f53e64d78 100644 --- a/kittycad/models/import_files.py +++ b/kittycad/models/import_files.py @@ -1,4 +1,3 @@ -from uuid import UUID from pydantic import BaseModel @@ -7,4 +6,4 @@ from pydantic import BaseModel class ImportFiles(BaseModel): """Data from importing the files""" - object_id: UUID + object_id: str diff --git a/kittycad/models/input_format.py b/kittycad/models/input_format.py index a3c6240f3..c3bd51728 100644 --- a/kittycad/models/input_format.py +++ b/kittycad/models/input_format.py @@ -1,6 +1,7 @@ -from typing import Union +from typing import Literal, Union -from pydantic import BaseModel, RootModel +from pydantic import BaseModel, Field, RootModel +from typing_extensions import Annotated from ..models.system import System from ..models.unit_length import UnitLength @@ -9,13 +10,13 @@ from ..models.unit_length import UnitLength class fbx(BaseModel): """Autodesk Filmbox (FBX) format.""" - type: str = "fbx" + type: Literal["fbx"] = "fbx" class gltf(BaseModel): """Binary glTF 2.0. We refer to this as glTF since that is how our customers refer to it, but this can also import binary glTF (glb).""" - type: str = "gltf" + type: Literal["gltf"] = "gltf" class obj(BaseModel): @@ -23,7 +24,7 @@ class obj(BaseModel): coords: System - type: str = "obj" + type: Literal["obj"] = "obj" units: UnitLength @@ -33,7 +34,7 @@ class ply(BaseModel): coords: System - type: str = "ply" + type: Literal["ply"] = "ply" units: UnitLength @@ -41,13 +42,13 @@ class ply(BaseModel): class sldprt(BaseModel): """SolidWorks part (SLDPRT) format.""" - type: str = "sldprt" + type: Literal["sldprt"] = "sldprt" class step(BaseModel): """ISO 10303-21 (STEP) format.""" - type: str = "step" + type: Literal["step"] = "step" class stl(BaseModel): @@ -55,19 +56,22 @@ class stl(BaseModel): coords: System - type: str = "stl" + type: Literal["stl"] = "stl" units: UnitLength InputFormat = RootModel[ - Union[ - fbx, - gltf, - obj, - ply, - sldprt, - step, - stl, + Annotated[ + Union[ + fbx, + gltf, + obj, + ply, + sldprt, + step, + stl, + ], + Field(discriminator="type"), ] ] diff --git a/kittycad/models/modeling_cmd.py b/kittycad/models/modeling_cmd.py index 4ffb07afc..5f19ea087 100644 --- a/kittycad/models/modeling_cmd.py +++ b/kittycad/models/modeling_cmd.py @@ -1,7 +1,7 @@ -from typing import List, Optional, Union -from uuid import UUID +from typing import List, Literal, Optional, Union -from pydantic import BaseModel, RootModel +from pydantic import BaseModel, Field, RootModel +from typing_extensions import Annotated from ..models.annotation_options import AnnotationOptions from ..models.annotation_type import AnnotationType @@ -29,7 +29,7 @@ from ..models.unit_volume import UnitVolume class start_path(BaseModel): """Start a path.""" - type: str = "start_path" + type: Literal["start_path"] = "start_path" class move_path_pen(BaseModel): @@ -39,7 +39,7 @@ class move_path_pen(BaseModel): to: Point3d - type: str = "move_path_pen" + type: Literal["move_path_pen"] = "move_path_pen" class extend_path(BaseModel): @@ -49,7 +49,7 @@ class extend_path(BaseModel): segment: PathSegment - type: str = "extend_path" + type: Literal["extend_path"] = "extend_path" class extrude(BaseModel): @@ -61,15 +61,15 @@ class extrude(BaseModel): target: ModelingCmdId - type: str = "extrude" + type: Literal["extrude"] = "extrude" class close_path(BaseModel): """Closes a path, converting it to a 2D solid.""" - path_id: UUID + path_id: str - type: str = "close_path" + type: Literal["close_path"] = "close_path" class camera_drag_start(BaseModel): @@ -77,7 +77,7 @@ class camera_drag_start(BaseModel): interaction: CameraDragInteractionType - type: str = "camera_drag_start" + type: Literal["camera_drag_start"] = "camera_drag_start" window: Point2d @@ -89,7 +89,7 @@ class camera_drag_move(BaseModel): sequence: Optional[int] = None - type: str = "camera_drag_move" + type: Literal["camera_drag_move"] = "camera_drag_move" window: Point2d @@ -99,7 +99,7 @@ class camera_drag_end(BaseModel): interaction: CameraDragInteractionType - type: str = "camera_drag_end" + type: Literal["camera_drag_end"] = "camera_drag_end" window: Point2d @@ -109,7 +109,7 @@ class default_camera_look_at(BaseModel): center: Point3d - type: str = "default_camera_look_at" + type: Literal["default_camera_look_at"] = "default_camera_look_at" up: Point3d @@ -121,7 +121,7 @@ class default_camera_zoom(BaseModel): magnitude: float - type: str = "default_camera_zoom" + type: Literal["default_camera_zoom"] = "default_camera_zoom" class default_camera_enable_sketch_mode(BaseModel): @@ -135,7 +135,9 @@ class default_camera_enable_sketch_mode(BaseModel): ortho: bool - type: str = "default_camera_enable_sketch_mode" + type: Literal[ + "default_camera_enable_sketch_mode" + ] = "default_camera_enable_sketch_mode" x_axis: Point3d @@ -145,43 +147,45 @@ class default_camera_enable_sketch_mode(BaseModel): class default_camera_disable_sketch_mode(BaseModel): """Disable sketch mode, from the default camera.""" - type: str = "default_camera_disable_sketch_mode" + type: Literal[ + "default_camera_disable_sketch_mode" + ] = "default_camera_disable_sketch_mode" class default_camera_focus_on(BaseModel): """Focus default camera on object.""" - type: str = "default_camera_focus_on" + type: Literal["default_camera_focus_on"] = "default_camera_focus_on" - uuid: UUID + uuid: str class export(BaseModel): """Export the scene to a file.""" - entity_ids: List[UUID] + entity_ids: List[str] format: OutputFormat source_unit: UnitLength - type: str = "export" + type: Literal["export"] = "export" class entity_get_parent_id(BaseModel): """What is this entity's parent?""" - entity_id: UUID + entity_id: str - type: str = "entity_get_parent_id" + type: Literal["entity_get_parent_id"] = "entity_get_parent_id" class entity_get_num_children(BaseModel): """How many children does the entity have?""" - entity_id: UUID + entity_id: str - type: str = "entity_get_num_children" + type: Literal["entity_get_num_children"] = "entity_get_num_children" class entity_get_child_uuid(BaseModel): @@ -189,31 +193,31 @@ class entity_get_child_uuid(BaseModel): child_index: int - entity_id: UUID + entity_id: str - type: str = "entity_get_child_uuid" + type: Literal["entity_get_child_uuid"] = "entity_get_child_uuid" class entity_get_all_child_uuids(BaseModel): """What are all UUIDs of this entity's children?""" - entity_id: UUID + entity_id: str - type: str = "entity_get_all_child_uuids" + type: Literal["entity_get_all_child_uuids"] = "entity_get_all_child_uuids" class edit_mode_enter(BaseModel): """Enter edit mode""" - target: UUID + target: str - type: str = "edit_mode_enter" + type: Literal["edit_mode_enter"] = "edit_mode_enter" class edit_mode_exit(BaseModel): """Exit edit mode""" - type: str = "edit_mode_exit" + type: Literal["edit_mode_exit"] = "edit_mode_exit" class select_with_point(BaseModel): @@ -223,43 +227,43 @@ class select_with_point(BaseModel): selection_type: SceneSelectionType - type: str = "select_with_point" + type: Literal["select_with_point"] = "select_with_point" class select_clear(BaseModel): """Clear the selection""" - type: str = "select_clear" + type: Literal["select_clear"] = "select_clear" class select_add(BaseModel): """Adds one or more entities (by UUID) to the selection.""" - entities: List[UUID] + entities: List[str] - type: str = "select_add" + type: Literal["select_add"] = "select_add" class select_remove(BaseModel): """Removes one or more entities (by UUID) from the selection.""" - entities: List[UUID] + entities: List[str] - type: str = "select_remove" + type: Literal["select_remove"] = "select_remove" class select_replace(BaseModel): """Replaces the current selection with these new entities (by UUID). Equivalent to doing SelectClear then SelectAdd.""" - entities: List[UUID] + entities: List[str] - type: str = "select_replace" + type: Literal["select_replace"] = "select_replace" class select_get(BaseModel): """Find all IDs of selected entities""" - type: str = "select_get" + type: Literal["select_get"] = "select_get" class highlight_set_entity(BaseModel): @@ -269,15 +273,15 @@ class highlight_set_entity(BaseModel): sequence: Optional[int] = None - type: str = "highlight_set_entity" + type: Literal["highlight_set_entity"] = "highlight_set_entity" class highlight_set_entities(BaseModel): """Changes the current highlighted entity to these entities.""" - entities: List[UUID] + entities: List[str] - type: str = "highlight_set_entities" + type: Literal["highlight_set_entities"] = "highlight_set_entities" class new_annotation(BaseModel): @@ -289,17 +293,17 @@ class new_annotation(BaseModel): options: AnnotationOptions - type: str = "new_annotation" + type: Literal["new_annotation"] = "new_annotation" class update_annotation(BaseModel): """Update an annotation""" - annotation_id: UUID + annotation_id: str options: AnnotationOptions - type: str = "update_annotation" + type: Literal["update_annotation"] = "update_annotation" class object_visible(BaseModel): @@ -307,45 +311,45 @@ class object_visible(BaseModel): hidden: bool - object_id: UUID + object_id: str - type: str = "object_visible" + type: Literal["object_visible"] = "object_visible" class object_bring_to_front(BaseModel): """Bring an object to the front of the scene""" - object_id: UUID + object_id: str - type: str = "object_bring_to_front" + type: Literal["object_bring_to_front"] = "object_bring_to_front" class get_entity_type(BaseModel): """What type of entity is this?""" - entity_id: UUID + entity_id: str - type: str = "get_entity_type" + type: Literal["get_entity_type"] = "get_entity_type" class solid2d_add_hole(BaseModel): """Add a hole to a Solid2d object before extruding it.""" - hole_id: UUID + hole_id: str - object_id: UUID + object_id: str - type: str = "solid2d_add_hole" + type: Literal["solid2d_add_hole"] = "solid2d_add_hole" class solid3d_get_all_edge_faces(BaseModel): """Gets all faces which use the given edge.""" - edge_id: UUID + edge_id: str - object_id: UUID + object_id: str - type: str = "solid3d_get_all_edge_faces" + type: Literal["solid3d_get_all_edge_faces"] = "solid3d_get_all_edge_faces" class solid3d_get_all_opposite_edges(BaseModel): @@ -353,47 +357,47 @@ class solid3d_get_all_opposite_edges(BaseModel): along_vector: Optional[Point3d] = None - edge_id: UUID + edge_id: str - object_id: UUID + object_id: str - type: str = "solid3d_get_all_opposite_edges" + type: Literal["solid3d_get_all_opposite_edges"] = "solid3d_get_all_opposite_edges" class solid3d_get_opposite_edge(BaseModel): """Gets the edge opposite the given edge, along the given face.""" - edge_id: UUID + edge_id: str - face_id: UUID + face_id: str - object_id: UUID + object_id: str - type: str = "solid3d_get_opposite_edge" + type: Literal["solid3d_get_opposite_edge"] = "solid3d_get_opposite_edge" class solid3d_get_next_adjacent_edge(BaseModel): """Gets the next adjacent edge for the given edge, along the given face.""" - edge_id: UUID + edge_id: str - face_id: UUID + face_id: str - object_id: UUID + object_id: str - type: str = "solid3d_get_next_adjacent_edge" + type: Literal["solid3d_get_next_adjacent_edge"] = "solid3d_get_next_adjacent_edge" class solid3d_get_prev_adjacent_edge(BaseModel): """Gets the previous adjacent edge for the given edge, along the given face.""" - edge_id: UUID + edge_id: str - face_id: UUID + face_id: str - object_id: UUID + object_id: str - type: str = "solid3d_get_prev_adjacent_edge" + type: Literal["solid3d_get_prev_adjacent_edge"] = "solid3d_get_prev_adjacent_edge" class send_object(BaseModel): @@ -401,19 +405,19 @@ class send_object(BaseModel): front: bool - object_id: UUID + object_id: str - type: str = "send_object" + type: Literal["send_object"] = "send_object" class entity_set_opacity(BaseModel): """Set opacity of the entity.""" - entity_id: UUID + entity_id: str opacity: float - type: str = "entity_set_opacity" + type: Literal["entity_set_opacity"] = "entity_set_opacity" class entity_fade(BaseModel): @@ -421,11 +425,11 @@ class entity_fade(BaseModel): duration_seconds: Optional[float] = None - entity_id: UUID + entity_id: str fade_in: bool - type: str = "entity_fade" + type: Literal["entity_fade"] = "entity_fade" class make_plane(BaseModel): @@ -439,7 +443,7 @@ class make_plane(BaseModel): size: float - type: str = "make_plane" + type: Literal["make_plane"] = "make_plane" x_axis: Point3d @@ -451,9 +455,9 @@ class plane_set_color(BaseModel): color: Color - plane_id: UUID + plane_id: str - type: str = "plane_set_color" + type: Literal["plane_set_color"] = "plane_set_color" class set_tool(BaseModel): @@ -461,7 +465,7 @@ class set_tool(BaseModel): tool: SceneToolType - type: str = "set_tool" + type: Literal["set_tool"] = "set_tool" class mouse_move(BaseModel): @@ -469,7 +473,7 @@ class mouse_move(BaseModel): sequence: Optional[int] = None - type: str = "mouse_move" + type: Literal["mouse_move"] = "mouse_move" window: Point2d @@ -477,7 +481,7 @@ class mouse_move(BaseModel): class mouse_click(BaseModel): """Send a mouse click event. Updates modified/selected entities.""" - type: str = "mouse_click" + type: Literal["mouse_click"] = "mouse_click" window: Point2d @@ -491,31 +495,31 @@ class sketch_mode_enable(BaseModel): ortho: bool - plane_id: UUID + plane_id: str - type: str = "sketch_mode_enable" + type: Literal["sketch_mode_enable"] = "sketch_mode_enable" class sketch_mode_disable(BaseModel): """Disable sketch mode.""" - type: str = "sketch_mode_disable" + type: Literal["sketch_mode_disable"] = "sketch_mode_disable" class curve_get_type(BaseModel): """Get type of a given curve.""" - curve_id: UUID + curve_id: str - type: str = "curve_get_type" + type: Literal["curve_get_type"] = "curve_get_type" class curve_get_control_points(BaseModel): """Get control points of a given curve.""" - curve_id: UUID + curve_id: str - type: str = "curve_get_control_points" + type: Literal["curve_get_control_points"] = "curve_get_control_points" class take_snapshot(BaseModel): @@ -523,7 +527,7 @@ class take_snapshot(BaseModel): format: ImageFormat - type: str = "take_snapshot" + type: Literal["take_snapshot"] = "take_snapshot" class make_axes_gizmo(BaseModel): @@ -533,39 +537,41 @@ class make_axes_gizmo(BaseModel): gizmo_mode: bool - type: str = "make_axes_gizmo" + type: Literal["make_axes_gizmo"] = "make_axes_gizmo" class path_get_info(BaseModel): """Query the given path""" - path_id: UUID + path_id: str - type: str = "path_get_info" + type: Literal["path_get_info"] = "path_get_info" class path_get_curve_uuids_for_vertices(BaseModel): """Get curves for vertices within a path""" - path_id: UUID + path_id: str - type: str = "path_get_curve_uuids_for_vertices" + type: Literal[ + "path_get_curve_uuids_for_vertices" + ] = "path_get_curve_uuids_for_vertices" - vertex_ids: List[UUID] + vertex_ids: List[str] class path_get_vertex_uuids(BaseModel): """Get vertices within a path""" - path_id: UUID + path_id: str - type: str = "path_get_vertex_uuids" + type: Literal["path_get_vertex_uuids"] = "path_get_vertex_uuids" class handle_mouse_drag_start(BaseModel): """Start dragging mouse.""" - type: str = "handle_mouse_drag_start" + type: Literal["handle_mouse_drag_start"] = "handle_mouse_drag_start" window: Point2d @@ -575,7 +581,7 @@ class handle_mouse_drag_move(BaseModel): sequence: Optional[int] = None - type: str = "handle_mouse_drag_move" + type: Literal["handle_mouse_drag_move"] = "handle_mouse_drag_move" window: Point2d @@ -583,7 +589,7 @@ class handle_mouse_drag_move(BaseModel): class handle_mouse_drag_end(BaseModel): """Stop dragging mouse.""" - type: str = "handle_mouse_drag_end" + type: Literal["handle_mouse_drag_end"] = "handle_mouse_drag_end" window: Point2d @@ -591,17 +597,17 @@ class handle_mouse_drag_end(BaseModel): class remove_scene_objects(BaseModel): """Remove scene objects.""" - object_ids: List[UUID] + object_ids: List[str] - type: str = "remove_scene_objects" + type: Literal["remove_scene_objects"] = "remove_scene_objects" class plane_intersect_and_project(BaseModel): """Utility method. Performs both a ray cast and projection to plane-local coordinates. Returns the plane coordinates for the given window coordinates.""" - plane_id: UUID + plane_id: str - type: str = "plane_intersect_and_project" + type: Literal["plane_intersect_and_project"] = "plane_intersect_and_project" window: Point2d @@ -609,9 +615,9 @@ class plane_intersect_and_project(BaseModel): class curve_get_end_points(BaseModel): """Find the start and end of a curve.""" - curve_id: UUID + curve_id: str - type: str = "curve_get_end_points" + type: Literal["curve_get_end_points"] = "curve_get_end_points" class reconfigure_stream(BaseModel): @@ -621,7 +627,7 @@ class reconfigure_stream(BaseModel): height: int - type: str = "reconfigure_stream" + type: Literal["reconfigure_stream"] = "reconfigure_stream" width: int @@ -633,13 +639,13 @@ class import_files(BaseModel): format: InputFormat - type: str = "import_files" + type: Literal["import_files"] = "import_files" class mass(BaseModel): """Get the mass of entities in the scene or the default scene.""" - entity_ids: List[UUID] + entity_ids: List[str] material_density: float @@ -649,13 +655,13 @@ class mass(BaseModel): source_unit: UnitLength - type: str = "mass" + type: Literal["mass"] = "mass" class density(BaseModel): """Get the density of entities in the scene or the default scene.""" - entity_ids: List[UUID] + entity_ids: List[str] material_mass: float @@ -665,49 +671,49 @@ class density(BaseModel): source_unit: UnitLength - type: str = "density" + type: Literal["density"] = "density" class volume(BaseModel): """Get the volume of entities in the scene or the default scene.""" - entity_ids: List[UUID] + entity_ids: List[str] output_unit: UnitVolume source_unit: UnitLength - type: str = "volume" + type: Literal["volume"] = "volume" class center_of_mass(BaseModel): """Get the center of mass of entities in the scene or the default scene.""" - entity_ids: List[UUID] + entity_ids: List[str] output_unit: UnitLength source_unit: UnitLength - type: str = "center_of_mass" + type: Literal["center_of_mass"] = "center_of_mass" class surface_area(BaseModel): """Get the surface area of entities in the scene or the default scene.""" - entity_ids: List[UUID] + entity_ids: List[str] output_unit: UnitArea source_unit: UnitLength - type: str = "surface_area" + type: Literal["surface_area"] = "surface_area" class get_sketch_mode_plane(BaseModel): """Get the plane of the sketch mode. This is useful for getting the normal of the plane after a user selects a plane.""" - type: str = "get_sketch_mode_plane" + type: Literal["get_sketch_mode_plane"] = "get_sketch_mode_plane" class curve_set_constraint(BaseModel): @@ -717,83 +723,86 @@ class curve_set_constraint(BaseModel): constraint_type: PathComponentConstraintType - object_id: UUID + object_id: str - type: str = "curve_set_constraint" + type: Literal["curve_set_constraint"] = "curve_set_constraint" ModelingCmd = RootModel[ - Union[ - start_path, - move_path_pen, - extend_path, - extrude, - close_path, - camera_drag_start, - camera_drag_move, - camera_drag_end, - default_camera_look_at, - default_camera_zoom, - default_camera_enable_sketch_mode, - default_camera_disable_sketch_mode, - default_camera_focus_on, - export, - entity_get_parent_id, - entity_get_num_children, - entity_get_child_uuid, - entity_get_all_child_uuids, - edit_mode_enter, - edit_mode_exit, - select_with_point, - select_clear, - select_add, - select_remove, - select_replace, - select_get, - highlight_set_entity, - highlight_set_entities, - new_annotation, - update_annotation, - object_visible, - object_bring_to_front, - get_entity_type, - solid2d_add_hole, - solid3d_get_all_edge_faces, - solid3d_get_all_opposite_edges, - solid3d_get_opposite_edge, - solid3d_get_next_adjacent_edge, - solid3d_get_prev_adjacent_edge, - send_object, - entity_set_opacity, - entity_fade, - make_plane, - plane_set_color, - set_tool, - mouse_move, - mouse_click, - sketch_mode_enable, - sketch_mode_disable, - curve_get_type, - curve_get_control_points, - take_snapshot, - make_axes_gizmo, - path_get_info, - path_get_curve_uuids_for_vertices, - path_get_vertex_uuids, - handle_mouse_drag_start, - handle_mouse_drag_move, - handle_mouse_drag_end, - remove_scene_objects, - plane_intersect_and_project, - curve_get_end_points, - reconfigure_stream, - import_files, - mass, - density, - volume, - center_of_mass, - surface_area, - get_sketch_mode_plane, - curve_set_constraint, + Annotated[ + Union[ + start_path, + move_path_pen, + extend_path, + extrude, + close_path, + camera_drag_start, + camera_drag_move, + camera_drag_end, + default_camera_look_at, + default_camera_zoom, + default_camera_enable_sketch_mode, + default_camera_disable_sketch_mode, + default_camera_focus_on, + export, + entity_get_parent_id, + entity_get_num_children, + entity_get_child_uuid, + entity_get_all_child_uuids, + edit_mode_enter, + edit_mode_exit, + select_with_point, + select_clear, + select_add, + select_remove, + select_replace, + select_get, + highlight_set_entity, + highlight_set_entities, + new_annotation, + update_annotation, + object_visible, + object_bring_to_front, + get_entity_type, + solid2d_add_hole, + solid3d_get_all_edge_faces, + solid3d_get_all_opposite_edges, + solid3d_get_opposite_edge, + solid3d_get_next_adjacent_edge, + solid3d_get_prev_adjacent_edge, + send_object, + entity_set_opacity, + entity_fade, + make_plane, + plane_set_color, + set_tool, + mouse_move, + mouse_click, + sketch_mode_enable, + sketch_mode_disable, + curve_get_type, + curve_get_control_points, + take_snapshot, + make_axes_gizmo, + path_get_info, + path_get_curve_uuids_for_vertices, + path_get_vertex_uuids, + handle_mouse_drag_start, + handle_mouse_drag_move, + handle_mouse_drag_end, + remove_scene_objects, + plane_intersect_and_project, + curve_get_end_points, + reconfigure_stream, + import_files, + mass, + density, + volume, + center_of_mass, + surface_area, + get_sketch_mode_plane, + curve_set_constraint, + ], + Field(discriminator="type"), ] ] diff --git a/kittycad/models/mouse_click.py b/kittycad/models/mouse_click.py index ed77bc793..97d89b37a 100644 --- a/kittycad/models/mouse_click.py +++ b/kittycad/models/mouse_click.py @@ -1,5 +1,4 @@ from typing import List -from uuid import UUID from pydantic import BaseModel @@ -8,6 +7,6 @@ from pydantic import BaseModel class MouseClick(BaseModel): """The response from the `MouseClick` command.""" - entities_modified: List[UUID] + entities_modified: List[str] - entities_selected: List[UUID] + entities_selected: List[str] diff --git a/kittycad/models/ok_modeling_cmd_response.py b/kittycad/models/ok_modeling_cmd_response.py index 608abcf09..d603fc4b1 100644 --- a/kittycad/models/ok_modeling_cmd_response.py +++ b/kittycad/models/ok_modeling_cmd_response.py @@ -1,6 +1,7 @@ -from typing import Union +from typing import Literal, Union -from pydantic import BaseModel, RootModel +from pydantic import BaseModel, Field, RootModel +from typing_extensions import Annotated from ..models.center_of_mass import CenterOfMass from ..models.curve_get_control_points import CurveGetControlPoints @@ -37,7 +38,7 @@ from ..models.volume import Volume class empty(BaseModel): """An empty response, used for any command that does not explicitly have a response defined here.""" - type: str = "empty" + type: Literal["empty"] = "empty" class export(BaseModel): @@ -45,7 +46,7 @@ class export(BaseModel): data: Export - type: str = "export" + type: Literal["export"] = "export" class select_with_point(BaseModel): @@ -53,7 +54,7 @@ class select_with_point(BaseModel): data: SelectWithPoint - type: str = "select_with_point" + type: Literal["select_with_point"] = "select_with_point" class highlight_set_entity(BaseModel): @@ -61,7 +62,7 @@ class highlight_set_entity(BaseModel): data: HighlightSetEntity - type: str = "highlight_set_entity" + type: Literal["highlight_set_entity"] = "highlight_set_entity" class entity_get_child_uuid(BaseModel): @@ -69,7 +70,7 @@ class entity_get_child_uuid(BaseModel): data: EntityGetChildUuid - type: str = "entity_get_child_uuid" + type: Literal["entity_get_child_uuid"] = "entity_get_child_uuid" class entity_get_num_children(BaseModel): @@ -77,7 +78,7 @@ class entity_get_num_children(BaseModel): data: EntityGetNumChildren - type: str = "entity_get_num_children" + type: Literal["entity_get_num_children"] = "entity_get_num_children" class entity_get_parent_id(BaseModel): @@ -85,7 +86,7 @@ class entity_get_parent_id(BaseModel): data: EntityGetParentId - type: str = "entity_get_parent_id" + type: Literal["entity_get_parent_id"] = "entity_get_parent_id" class entity_get_all_child_uuids(BaseModel): @@ -93,7 +94,7 @@ class entity_get_all_child_uuids(BaseModel): data: EntityGetAllChildUuids - type: str = "entity_get_all_child_uuids" + type: Literal["entity_get_all_child_uuids"] = "entity_get_all_child_uuids" class select_get(BaseModel): @@ -101,7 +102,7 @@ class select_get(BaseModel): data: SelectGet - type: str = "select_get" + type: Literal["select_get"] = "select_get" class get_entity_type(BaseModel): @@ -109,7 +110,7 @@ class get_entity_type(BaseModel): data: GetEntityType - type: str = "get_entity_type" + type: Literal["get_entity_type"] = "get_entity_type" class solid3d_get_all_edge_faces(BaseModel): @@ -117,7 +118,7 @@ class solid3d_get_all_edge_faces(BaseModel): data: Solid3dGetAllEdgeFaces - type: str = "solid3d_get_all_edge_faces" + type: Literal["solid3d_get_all_edge_faces"] = "solid3d_get_all_edge_faces" class solid3d_get_all_opposite_edges(BaseModel): @@ -125,7 +126,7 @@ class solid3d_get_all_opposite_edges(BaseModel): data: Solid3dGetAllOppositeEdges - type: str = "solid3d_get_all_opposite_edges" + type: Literal["solid3d_get_all_opposite_edges"] = "solid3d_get_all_opposite_edges" class solid3d_get_opposite_edge(BaseModel): @@ -133,7 +134,7 @@ class solid3d_get_opposite_edge(BaseModel): data: Solid3dGetOppositeEdge - type: str = "solid3d_get_opposite_edge" + type: Literal["solid3d_get_opposite_edge"] = "solid3d_get_opposite_edge" class solid3d_get_prev_adjacent_edge(BaseModel): @@ -141,7 +142,7 @@ class solid3d_get_prev_adjacent_edge(BaseModel): data: Solid3dGetPrevAdjacentEdge - type: str = "solid3d_get_prev_adjacent_edge" + type: Literal["solid3d_get_prev_adjacent_edge"] = "solid3d_get_prev_adjacent_edge" class solid3d_get_next_adjacent_edge(BaseModel): @@ -149,7 +150,7 @@ class solid3d_get_next_adjacent_edge(BaseModel): data: Solid3dGetNextAdjacentEdge - type: str = "solid3d_get_next_adjacent_edge" + type: Literal["solid3d_get_next_adjacent_edge"] = "solid3d_get_next_adjacent_edge" class mouse_click(BaseModel): @@ -157,7 +158,7 @@ class mouse_click(BaseModel): data: MouseClick - type: str = "mouse_click" + type: Literal["mouse_click"] = "mouse_click" class curve_get_type(BaseModel): @@ -165,7 +166,7 @@ class curve_get_type(BaseModel): data: CurveGetType - type: str = "curve_get_type" + type: Literal["curve_get_type"] = "curve_get_type" class curve_get_control_points(BaseModel): @@ -173,7 +174,7 @@ class curve_get_control_points(BaseModel): data: CurveGetControlPoints - type: str = "curve_get_control_points" + type: Literal["curve_get_control_points"] = "curve_get_control_points" class take_snapshot(BaseModel): @@ -181,7 +182,7 @@ class take_snapshot(BaseModel): data: TakeSnapshot - type: str = "take_snapshot" + type: Literal["take_snapshot"] = "take_snapshot" class path_get_info(BaseModel): @@ -189,7 +190,7 @@ class path_get_info(BaseModel): data: PathGetInfo - type: str = "path_get_info" + type: Literal["path_get_info"] = "path_get_info" class path_get_curve_uuids_for_vertices(BaseModel): @@ -197,7 +198,9 @@ class path_get_curve_uuids_for_vertices(BaseModel): data: PathGetCurveUuidsForVertices - type: str = "path_get_curve_uuids_for_vertices" + type: Literal[ + "path_get_curve_uuids_for_vertices" + ] = "path_get_curve_uuids_for_vertices" class path_get_vertex_uuids(BaseModel): @@ -205,7 +208,7 @@ class path_get_vertex_uuids(BaseModel): data: PathGetVertexUuids - type: str = "path_get_vertex_uuids" + type: Literal["path_get_vertex_uuids"] = "path_get_vertex_uuids" class plane_intersect_and_project(BaseModel): @@ -213,7 +216,7 @@ class plane_intersect_and_project(BaseModel): data: PlaneIntersectAndProject - type: str = "plane_intersect_and_project" + type: Literal["plane_intersect_and_project"] = "plane_intersect_and_project" class curve_get_end_points(BaseModel): @@ -221,7 +224,7 @@ class curve_get_end_points(BaseModel): data: CurveGetEndPoints - type: str = "curve_get_end_points" + type: Literal["curve_get_end_points"] = "curve_get_end_points" class import_files(BaseModel): @@ -229,7 +232,7 @@ class import_files(BaseModel): data: ImportFiles - type: str = "import_files" + type: Literal["import_files"] = "import_files" class mass(BaseModel): @@ -237,7 +240,7 @@ class mass(BaseModel): data: Mass - type: str = "mass" + type: Literal["mass"] = "mass" class volume(BaseModel): @@ -245,7 +248,7 @@ class volume(BaseModel): data: Volume - type: str = "volume" + type: Literal["volume"] = "volume" class density(BaseModel): @@ -253,7 +256,7 @@ class density(BaseModel): data: Density - type: str = "density" + type: Literal["density"] = "density" class surface_area(BaseModel): @@ -261,7 +264,7 @@ class surface_area(BaseModel): data: SurfaceArea - type: str = "surface_area" + type: Literal["surface_area"] = "surface_area" class center_of_mass(BaseModel): @@ -269,7 +272,7 @@ class center_of_mass(BaseModel): data: CenterOfMass - type: str = "center_of_mass" + type: Literal["center_of_mass"] = "center_of_mass" class get_sketch_mode_plane(BaseModel): @@ -277,41 +280,44 @@ class get_sketch_mode_plane(BaseModel): data: GetSketchModePlane - type: str = "get_sketch_mode_plane" + type: Literal["get_sketch_mode_plane"] = "get_sketch_mode_plane" OkModelingCmdResponse = RootModel[ - Union[ - empty, - export, - select_with_point, - highlight_set_entity, - entity_get_child_uuid, - entity_get_num_children, - entity_get_parent_id, - entity_get_all_child_uuids, - select_get, - get_entity_type, - solid3d_get_all_edge_faces, - solid3d_get_all_opposite_edges, - solid3d_get_opposite_edge, - solid3d_get_prev_adjacent_edge, - solid3d_get_next_adjacent_edge, - mouse_click, - curve_get_type, - curve_get_control_points, - take_snapshot, - path_get_info, - path_get_curve_uuids_for_vertices, - path_get_vertex_uuids, - plane_intersect_and_project, - curve_get_end_points, - import_files, - mass, - volume, - density, - surface_area, - center_of_mass, - get_sketch_mode_plane, + Annotated[ + Union[ + empty, + export, + select_with_point, + highlight_set_entity, + entity_get_child_uuid, + entity_get_num_children, + entity_get_parent_id, + entity_get_all_child_uuids, + select_get, + get_entity_type, + solid3d_get_all_edge_faces, + solid3d_get_all_opposite_edges, + solid3d_get_opposite_edge, + solid3d_get_prev_adjacent_edge, + solid3d_get_next_adjacent_edge, + mouse_click, + curve_get_type, + curve_get_control_points, + take_snapshot, + path_get_info, + path_get_curve_uuids_for_vertices, + path_get_vertex_uuids, + plane_intersect_and_project, + curve_get_end_points, + import_files, + mass, + volume, + density, + surface_area, + center_of_mass, + get_sketch_mode_plane, + ], + Field(discriminator="type"), ] ] diff --git a/kittycad/models/ok_web_socket_response_data.py b/kittycad/models/ok_web_socket_response_data.py index 686962f02..430c480ed 100644 --- a/kittycad/models/ok_web_socket_response_data.py +++ b/kittycad/models/ok_web_socket_response_data.py @@ -1,6 +1,7 @@ -from typing import List, Union +from typing import List, Literal, Union -from pydantic import BaseModel, RootModel +from pydantic import BaseModel, Field, RootModel +from typing_extensions import Annotated from ..models.ice_server import IceServer from ..models.ok_modeling_cmd_response import OkModelingCmdResponse @@ -20,7 +21,7 @@ class ice_server_info(BaseModel): data: IceServerInfoData - type: str = "ice_server_info" + type: Literal["ice_server_info"] = "ice_server_info" class TrickleIceData(BaseModel): @@ -34,7 +35,7 @@ class trickle_ice(BaseModel): data: TrickleIceData - type: str = "trickle_ice" + type: Literal["trickle_ice"] = "trickle_ice" class SdpAnswerData(BaseModel): @@ -48,7 +49,7 @@ class sdp_answer(BaseModel): data: SdpAnswerData - type: str = "sdp_answer" + type: Literal["sdp_answer"] = "sdp_answer" class ModelingData(BaseModel): @@ -62,7 +63,7 @@ class modeling(BaseModel): data: ModelingData - type: str = "modeling" + type: Literal["modeling"] = "modeling" class ExportData(BaseModel): @@ -76,7 +77,7 @@ class export(BaseModel): data: ExportData - type: str = "export" + type: Literal["export"] = "export" class MetricsRequestData(BaseModel): @@ -88,16 +89,19 @@ class metrics_request(BaseModel): data: MetricsRequestData - type: str = "metrics_request" + type: Literal["metrics_request"] = "metrics_request" OkWebSocketResponseData = RootModel[ - Union[ - ice_server_info, - trickle_ice, - sdp_answer, - modeling, - export, - metrics_request, + Annotated[ + Union[ + ice_server_info, + trickle_ice, + sdp_answer, + modeling, + export, + metrics_request, + ], + Field(discriminator="type"), ] ] diff --git a/kittycad/models/output_format.py b/kittycad/models/output_format.py index 8efcfd2ba..75f9b126d 100644 --- a/kittycad/models/output_format.py +++ b/kittycad/models/output_format.py @@ -1,6 +1,7 @@ -from typing import Union +from typing import Literal, Union -from pydantic import BaseModel, RootModel +from pydantic import BaseModel, Field, RootModel +from typing_extensions import Annotated from ..models.fbx_storage import FbxStorage from ..models.gltf_presentation import GltfPresentation @@ -17,7 +18,7 @@ class fbx(BaseModel): storage: FbxStorage - type: str = "fbx" + type: Literal["fbx"] = "fbx" class gltf(BaseModel): @@ -27,7 +28,7 @@ class gltf(BaseModel): storage: GltfStorage - type: str = "gltf" + type: Literal["gltf"] = "gltf" class obj(BaseModel): @@ -35,7 +36,7 @@ class obj(BaseModel): coords: System - type: str = "obj" + type: Literal["obj"] = "obj" units: UnitLength @@ -49,7 +50,7 @@ class ply(BaseModel): storage: PlyStorage - type: str = "ply" + type: Literal["ply"] = "ply" units: UnitLength @@ -59,7 +60,7 @@ class step(BaseModel): coords: System - type: str = "step" + type: Literal["step"] = "step" class stl(BaseModel): @@ -71,18 +72,21 @@ class stl(BaseModel): storage: StlStorage - type: str = "stl" + type: Literal["stl"] = "stl" units: UnitLength OutputFormat = RootModel[ - Union[ - fbx, - gltf, - obj, - ply, - step, - stl, + Annotated[ + Union[ + fbx, + gltf, + obj, + ply, + step, + stl, + ], + Field(discriminator="type"), ] ] diff --git a/kittycad/models/path_get_curve_uuids_for_vertices.py b/kittycad/models/path_get_curve_uuids_for_vertices.py index 46ca92532..b481674dc 100644 --- a/kittycad/models/path_get_curve_uuids_for_vertices.py +++ b/kittycad/models/path_get_curve_uuids_for_vertices.py @@ -1,5 +1,4 @@ from typing import List -from uuid import UUID from pydantic import BaseModel @@ -8,4 +7,4 @@ from pydantic import BaseModel class PathGetCurveUuidsForVertices(BaseModel): """The response from the `PathGetCurveUuidsForVertices` command.""" - curve_ids: List[UUID] + curve_ids: List[str] diff --git a/kittycad/models/path_get_vertex_uuids.py b/kittycad/models/path_get_vertex_uuids.py index 443284fc7..5ca51cb19 100644 --- a/kittycad/models/path_get_vertex_uuids.py +++ b/kittycad/models/path_get_vertex_uuids.py @@ -1,5 +1,4 @@ from typing import List -from uuid import UUID from pydantic import BaseModel @@ -8,4 +7,4 @@ from pydantic import BaseModel class PathGetVertexUuids(BaseModel): """The response from the `PathGetVertexUuids` command.""" - vertex_ids: List[UUID] + vertex_ids: List[str] diff --git a/kittycad/models/path_segment.py b/kittycad/models/path_segment.py index 700711c95..32b735615 100644 --- a/kittycad/models/path_segment.py +++ b/kittycad/models/path_segment.py @@ -1,6 +1,7 @@ -from typing import Optional, Union +from typing import Literal, Optional, Union -from pydantic import BaseModel, RootModel +from pydantic import BaseModel, Field, RootModel +from typing_extensions import Annotated from ..models.angle import Angle from ..models.point2d import Point2d @@ -14,7 +15,7 @@ class line(BaseModel): relative: bool - type: str = "line" + type: Literal["line"] = "line" class arc(BaseModel): @@ -34,7 +35,7 @@ class arc(BaseModel): start: Optional[Angle] = None - type: str = "arc" + type: Literal["arc"] = "arc" class bezier(BaseModel): @@ -48,7 +49,7 @@ class bezier(BaseModel): relative: bool - type: str = "bezier" + type: Literal["bezier"] = "bezier" class tangential_arc(BaseModel): @@ -58,7 +59,7 @@ class tangential_arc(BaseModel): radius: float - type: str = "tangential_arc" + type: Literal["tangential_arc"] = "tangential_arc" class tangential_arc_to(BaseModel): @@ -68,15 +69,18 @@ class tangential_arc_to(BaseModel): to: Point3d - type: str = "tangential_arc_to" + type: Literal["tangential_arc_to"] = "tangential_arc_to" PathSegment = RootModel[ - Union[ - line, - arc, - bezier, - tangential_arc, - tangential_arc_to, + Annotated[ + Union[ + line, + arc, + bezier, + tangential_arc, + tangential_arc_to, + ], + Field(discriminator="type"), ] ] diff --git a/kittycad/models/select_get.py b/kittycad/models/select_get.py index 7db252319..7a8a30785 100644 --- a/kittycad/models/select_get.py +++ b/kittycad/models/select_get.py @@ -1,5 +1,4 @@ from typing import List -from uuid import UUID from pydantic import BaseModel @@ -8,4 +7,4 @@ from pydantic import BaseModel class SelectGet(BaseModel): """The response from the `SelectGet` command.""" - entity_ids: List[UUID] + entity_ids: List[str] diff --git a/kittycad/models/select_with_point.py b/kittycad/models/select_with_point.py index d15208229..871bd0026 100644 --- a/kittycad/models/select_with_point.py +++ b/kittycad/models/select_with_point.py @@ -1,5 +1,4 @@ from typing import Optional -from uuid import UUID from pydantic import BaseModel @@ -8,4 +7,4 @@ from pydantic import BaseModel class SelectWithPoint(BaseModel): """The response from the `SelectWithPoint` command.""" - entity_id: Optional[UUID] = None + entity_id: Optional[str] = None diff --git a/kittycad/models/selection.py b/kittycad/models/selection.py index 0f3a14fad..5f4485f7d 100644 --- a/kittycad/models/selection.py +++ b/kittycad/models/selection.py @@ -1,13 +1,14 @@ -from typing import Union +from typing import Literal, Union -from pydantic import BaseModel, RootModel +from pydantic import BaseModel, Field, RootModel +from typing_extensions import Annotated class default_scene(BaseModel): """Visit the default scene.""" - type: str = "default_scene" + type: Literal["default_scene"] = "default_scene" class scene_by_index(BaseModel): @@ -15,7 +16,7 @@ class scene_by_index(BaseModel): index: int - type: str = "scene_by_index" + type: Literal["scene_by_index"] = "scene_by_index" class scene_by_name(BaseModel): @@ -23,7 +24,7 @@ class scene_by_name(BaseModel): name: str - type: str = "scene_by_name" + type: Literal["scene_by_name"] = "scene_by_name" class mesh_by_index(BaseModel): @@ -31,7 +32,7 @@ class mesh_by_index(BaseModel): index: int - type: str = "mesh_by_index" + type: Literal["mesh_by_index"] = "mesh_by_index" class mesh_by_name(BaseModel): @@ -39,15 +40,18 @@ class mesh_by_name(BaseModel): name: str - type: str = "mesh_by_name" + type: Literal["mesh_by_name"] = "mesh_by_name" Selection = RootModel[ - Union[ - default_scene, - scene_by_index, - scene_by_name, - mesh_by_index, - mesh_by_name, + Annotated[ + Union[ + default_scene, + scene_by_index, + scene_by_name, + mesh_by_index, + mesh_by_name, + ], + Field(discriminator="type"), ] ] diff --git a/kittycad/models/solid3d_get_all_edge_faces.py b/kittycad/models/solid3d_get_all_edge_faces.py index 6a2442c42..ce836a7dd 100644 --- a/kittycad/models/solid3d_get_all_edge_faces.py +++ b/kittycad/models/solid3d_get_all_edge_faces.py @@ -1,5 +1,4 @@ from typing import List -from uuid import UUID from pydantic import BaseModel @@ -8,4 +7,4 @@ from pydantic import BaseModel class Solid3dGetAllEdgeFaces(BaseModel): """The response from the `Solid3dGetAllEdgeFaces` command.""" - faces: List[UUID] + faces: List[str] diff --git a/kittycad/models/solid3d_get_all_opposite_edges.py b/kittycad/models/solid3d_get_all_opposite_edges.py index d83d5c83e..91d40562d 100644 --- a/kittycad/models/solid3d_get_all_opposite_edges.py +++ b/kittycad/models/solid3d_get_all_opposite_edges.py @@ -1,5 +1,4 @@ from typing import List -from uuid import UUID from pydantic import BaseModel @@ -8,4 +7,4 @@ from pydantic import BaseModel class Solid3dGetAllOppositeEdges(BaseModel): """The response from the `Solid3dGetAllOppositeEdges` command.""" - edges: List[UUID] + edges: List[str] diff --git a/kittycad/models/solid3d_get_next_adjacent_edge.py b/kittycad/models/solid3d_get_next_adjacent_edge.py index 49e08b573..4724d7bbf 100644 --- a/kittycad/models/solid3d_get_next_adjacent_edge.py +++ b/kittycad/models/solid3d_get_next_adjacent_edge.py @@ -1,5 +1,4 @@ from typing import Optional -from uuid import UUID from pydantic import BaseModel @@ -8,4 +7,4 @@ from pydantic import BaseModel class Solid3dGetNextAdjacentEdge(BaseModel): """The response from the `Solid3dGetNextAdjacentEdge` command.""" - edge: Optional[UUID] = None + edge: Optional[str] = None diff --git a/kittycad/models/solid3d_get_opposite_edge.py b/kittycad/models/solid3d_get_opposite_edge.py index 2bb0f1f34..7e95ca9ff 100644 --- a/kittycad/models/solid3d_get_opposite_edge.py +++ b/kittycad/models/solid3d_get_opposite_edge.py @@ -1,4 +1,3 @@ -from uuid import UUID from pydantic import BaseModel @@ -7,4 +6,4 @@ from pydantic import BaseModel class Solid3dGetOppositeEdge(BaseModel): """The response from the `Solid3dGetOppositeEdge` command.""" - edge: UUID + edge: str diff --git a/kittycad/models/solid3d_get_prev_adjacent_edge.py b/kittycad/models/solid3d_get_prev_adjacent_edge.py index 51f90cf43..31298f73a 100644 --- a/kittycad/models/solid3d_get_prev_adjacent_edge.py +++ b/kittycad/models/solid3d_get_prev_adjacent_edge.py @@ -1,5 +1,4 @@ from typing import Optional -from uuid import UUID from pydantic import BaseModel @@ -8,4 +7,4 @@ from pydantic import BaseModel class Solid3dGetPrevAdjacentEdge(BaseModel): """The response from the `Solid3dGetPrevAdjacentEdge` command.""" - edge: Optional[UUID] = None + edge: Optional[str] = None diff --git a/kittycad/models/success_web_socket_response.py b/kittycad/models/success_web_socket_response.py index 898aae765..f602d6fc7 100644 --- a/kittycad/models/success_web_socket_response.py +++ b/kittycad/models/success_web_socket_response.py @@ -1,5 +1,4 @@ from typing import Optional -from uuid import UUID from pydantic import BaseModel @@ -9,7 +8,7 @@ from ..models.ok_web_socket_response_data import OkWebSocketResponseData class SuccessWebSocketResponse(BaseModel): """Successful Websocket response.""" - request_id: Optional[UUID] = None + request_id: Optional[str] = None resp: OkWebSocketResponseData diff --git a/kittycad/models/web_socket_request.py b/kittycad/models/web_socket_request.py index 320a032db..791fe167c 100644 --- a/kittycad/models/web_socket_request.py +++ b/kittycad/models/web_socket_request.py @@ -1,6 +1,7 @@ -from typing import List, Union +from typing import List, Literal, Union -from pydantic import BaseModel, RootModel +from pydantic import BaseModel, Field, RootModel +from typing_extensions import Annotated from ..models.client_metrics import ClientMetrics from ..models.modeling_cmd import ModelingCmd @@ -15,7 +16,7 @@ class trickle_ice(BaseModel): candidate: RtcIceCandidateInit - type: str = "trickle_ice" + type: Literal["trickle_ice"] = "trickle_ice" class sdp_offer(BaseModel): @@ -23,7 +24,7 @@ class sdp_offer(BaseModel): offer: RtcSessionDescription - type: str = "sdp_offer" + type: Literal["sdp_offer"] = "sdp_offer" class modeling_cmd_req(BaseModel): @@ -33,7 +34,7 @@ class modeling_cmd_req(BaseModel): cmd_id: ModelingCmdId - type: str = "modeling_cmd_req" + type: Literal["modeling_cmd_req"] = "modeling_cmd_req" class modeling_cmd_batch_req(BaseModel): @@ -41,13 +42,13 @@ class modeling_cmd_batch_req(BaseModel): requests: List[ModelingCmdReq] - type: str = "modeling_cmd_batch_req" + type: Literal["modeling_cmd_batch_req"] = "modeling_cmd_batch_req" class ping(BaseModel): """The client-to-server Ping to ensure the WebSocket stays alive.""" - type: str = "ping" + type: Literal["ping"] = "ping" class metrics_response(BaseModel): @@ -55,16 +56,19 @@ class metrics_response(BaseModel): metrics: ClientMetrics - type: str = "metrics_response" + type: Literal["metrics_response"] = "metrics_response" WebSocketRequest = RootModel[ - Union[ - trickle_ice, - sdp_offer, - modeling_cmd_req, - modeling_cmd_batch_req, - ping, - metrics_response, + Annotated[ + Union[ + trickle_ice, + sdp_offer, + modeling_cmd_req, + modeling_cmd_batch_req, + ping, + metrics_response, + ], + Field(discriminator="type"), ] ]