diff --git a/.github/workflows/generate.yml b/.github/workflows/generate.yml index c22e7b88d..d0b017cc6 100644 --- a/.github/workflows/generate.yml +++ b/.github/workflows/generate.yml @@ -19,10 +19,23 @@ jobs: - uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.ref }} + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.13' + - name: Install Poetry + uses: snok/install-poetry@v1 + with: + version: latest + virtualenvs-create: true + virtualenvs-in-project: true + - name: Install dependencies + run: | + poetry update && poetry install - name: Run generate shell: bash run: | - make generate + ./generate/run.sh env: KITTYCAD_API_TOKEN: ${{secrets.KITTYCAD_API_TOKEN}} diff --git a/.gitignore b/.gitignore index d38f0c9c1..e0bb8d9b3 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,7 @@ dmypy.json # VS code .vscode/ +.claude /coverage.xml /.coverage diff --git a/generate/functions-ws.py.jinja2 b/generate/functions-ws.py.jinja2 index d309086c5..e70815898 100644 --- a/generate/functions-ws.py.jinja2 +++ b/generate/functions-ws.py.jinja2 @@ -17,6 +17,13 @@ from ...types import Response def _get_kwargs( + {% for arg in args %} + {% if arg.in_url %} + {% if arg.is_optional == False %} + {{arg.name}}: {{arg.type}}, + {% endif %} + {% endif %} + {% endfor %} {% for arg in args %} {% if arg.in_query %} {% if arg.is_optional == False %} @@ -27,6 +34,13 @@ def _get_kwargs( *, client: Client, {% for arg in args %} + {% if arg.in_url %} + {% if arg.is_optional %} + {{arg.name}}: {{arg.type}}, + {% endif %} + {% endif %} + {% endfor %} + {% for arg in args %} {% if arg.in_query %} {% if arg.is_optional %} {{arg.name}}: {{arg.type}}, @@ -65,6 +79,13 @@ def _get_kwargs( def sync( + {% for arg in args %} + {% if arg.in_url %} + {% if arg.is_optional == False %} + {{arg.name}}: {{arg.type}}, + {% endif %} + {% endif %} + {% endfor %} {% for arg in args %} {% if arg.in_query %} {% if arg.is_optional == False %} @@ -75,6 +96,13 @@ def sync( *, client: Client, {% for arg in args %} + {% if arg.in_url %} + {% if arg.is_optional %} + {{arg.name}}: {{arg.type}}, + {% endif %} + {% endif %} + {% endfor %} + {% for arg in args %} {% if arg.in_query %} {% if arg.is_optional %} {{arg.name}}: {{arg.type}}, @@ -85,6 +113,11 @@ def sync( {%if docs%}"""{{docs}}""" # noqa: E501{% endif %} kwargs = _get_kwargs( + {% for arg in args %} + {% if arg.in_url %} + {{arg.name}}={{arg.name}}, + {% endif %} + {% endfor %} {% for arg in args %} {% if arg.in_query %} {{arg.name}}={{arg.name}}, @@ -98,6 +131,13 @@ def sync( async def asyncio( + {% for arg in args %} + {% if arg.in_url %} + {% if arg.is_optional == False %} + {{arg.name}}: {{arg.type}}, + {% endif %} + {% endif %} + {% endfor %} {% for arg in args %} {% if arg.in_query %} {% if arg.is_optional == False %} @@ -108,6 +148,13 @@ async def asyncio( *, client: Client, {% for arg in args %} + {% if arg.in_url %} + {% if arg.is_optional %} + {{arg.name}}: {{arg.type}}, + {% endif %} + {% endif %} + {% endfor %} + {% for arg in args %} {% if arg.in_query %} {% if arg.is_optional %} {{arg.name}}: {{arg.type}}, @@ -118,6 +165,11 @@ async def asyncio( {%if docs%}"""{{docs}}""" # noqa: E501{% endif %} kwargs = _get_kwargs( + {% for arg in args %} + {% if arg.in_url %} + {{arg.name}}={{arg.name}}, + {% endif %} + {% endfor %} {% for arg in args %} {% if arg.in_query %} {{arg.name}}={{arg.name}}, @@ -135,6 +187,13 @@ class WebSocket: ws: ClientConnectionSync def __init__(self, + {% for arg in args %} + {% if arg.in_url %} + {% if arg.is_optional == False %} + {{arg.name}}: {{arg.type}}, + {% endif %} + {% endif %} + {% endfor %} {% for arg in args %} {% if arg.in_query %} {% if arg.is_optional == False %} @@ -144,6 +203,13 @@ class WebSocket: {% endfor %} client: Client, {% for arg in args %} + {% if arg.in_url %} + {% if arg.is_optional %} + {{arg.name}}: {{arg.type}}, + {% endif %} + {% endif %} + {% endfor %} + {% for arg in args %} {% if arg.in_query %} {% if arg.is_optional %} {{arg.name}}: {{arg.type}}, @@ -153,6 +219,13 @@ class WebSocket: ): self.ws = sync( {% for arg in args %} + {% if arg.in_url %} + {% if arg.is_optional == False %} + {{arg.name}}, + {% endif %} + {% endif %} + {% endfor %} + {% for arg in args %} {% if arg.in_query %} {% if arg.is_optional == False %} {{arg.name}}, @@ -161,6 +234,13 @@ class WebSocket: {% endfor %} client=client, {% for arg in args %} + {% if arg.in_url %} + {% if arg.is_optional %} + {{arg.name}}={{arg.name}}, + {% endif %} + {% endif %} + {% endfor %} + {% for arg in args %} {% if arg.in_query %} {% if arg.is_optional %} {{arg.name}}={{arg.name}}, diff --git a/generate/generate.py b/generate/generate.py index 3691ccb08..1db13422e 100755 --- a/generate/generate.py +++ b/generate/generate.py @@ -20,10 +20,101 @@ examples: List[str] = [] +def deduplicate_imports(imports_string: str) -> str: + """Deduplicate imports, prioritizing bulk imports over specific imports.""" + if not imports_string.strip(): + return imports_string + + # Preserve original format characteristics + has_trailing_newline = imports_string.endswith("\n") + lines = imports_string.strip().split("\n") + + # Track bulk imports from kittycad.models + bulk_imports = set() + + # First pass: collect all bulk imports + for line in lines: + line_stripped = line.strip() + if line_stripped.startswith("from kittycad.models import "): + # Extract the imported name + import_part = line_stripped.replace("from kittycad.models import ", "") + bulk_imports.add(import_part) + + # Second pass: identify and remove conflicting imports + deduplicated_lines = [] + i = 0 + while i < len(lines): + line = lines[i] + line_stripped = line.strip() + + # Skip empty lines + if not line_stripped: + deduplicated_lines.append(line) + i += 1 + continue + + # Handle multi-line imports from kittycad.models.* + if ( + line_stripped.startswith("from kittycad.models.") + and " import (" in line_stripped + ): + # This is the start of a multi-line import + import_block = [] + import_block.append(lines[i]) + i += 1 + + # Collect the rest of the import block until we find the closing parenthesis + while i < len(lines): + import_block.append(lines[i]) + if ")" in lines[i].strip(): + i += 1 + break + i += 1 + + # Check if any imported class name from this block conflicts with bulk imports + has_conflict = False + full_text = " ".join(import_block) + + for bulk_import in bulk_imports: + # Look for the bulk import name as a standalone word in the import block + if bulk_import in full_text: + has_conflict = True + break + + # If no conflicts, keep the entire import block + if not has_conflict: + deduplicated_lines.extend(import_block) + + # Handle single-line imports from kittycad.models.* + elif ( + line_stripped.startswith("from kittycad.models.") + and " import " in line_stripped + and "(" not in line_stripped + ): + # Extract the imported class name + import_name = line_stripped.split(" import ")[-1].strip() + # If we have a bulk import for this, skip the specific import + if import_name not in bulk_imports: + deduplicated_lines.append(line) + i += 1 + else: + # Regular line, just add it + deduplicated_lines.append(line) + i += 1 + + result = "\n".join(deduplicated_lines) + + # Preserve trailing newline if original had one + if has_trailing_newline: + result += "\n" + + return result + + def main(): cwd = os.getcwd() spec_path = os.path.join(cwd, "spec.json") - logging.info("opening spec file: ", spec_path) + logging.info("opening spec file: %s", spec_path) parser = BaseParser(spec_path) # Generate the types. @@ -81,14 +172,27 @@ def main(): # Write all the examples to a file. examples_test_path = os.path.join(cwd, "kittycad", "examples_test.py") - logging.info("opening examples test file: ", spec_path) + logging.info("opening examples test file: %s", examples_test_path) + # Write all the examples to a file. f = open(examples_test_path, "w") f.write("import pytest\n\n") f.write("import datetime\n\n") f.write("\n\n".join(examples)) f.close() + # Post-process with isort to clean up imports + import subprocess + + try: + subprocess.run( + ["python", "-m", "isort", examples_test_path], + check=True, + capture_output=True, + ) + except subprocess.CalledProcessError: + pass # If isort fails, continue anyway + def generatePaths(cwd: str, parser: dict) -> dict: # Make sure we have the directory. @@ -309,20 +413,25 @@ def generateTypeAndExamplePython( parameter_type = "float" parameter_example = "3.14" elif schema["type"] == "array" and "items" in schema: - items_type, items_example, items_imports = generateTypeAndExamplePython( - "", schema["items"], data, None, None - ) - example_imports = example_imports + items_imports - parameter_type = "List[" + items_type + "]" - if "minItems" in schema and schema["minItems"] > 1: - parameter_example = "[" - for i in range(schema["minItems"] - 1): - parameter_example = parameter_example + items_example + ", " - parameter_example = parameter_example + "]" + # Special case for uint8 arrays which represent bytes in Python + if "format" in schema["items"] and schema["items"]["format"] == "uint8": + parameter_type = "bytes" + parameter_example = 'b""' else: - parameter_example = "[" + items_example + "]" + items_type, items_example, items_imports = generateTypeAndExamplePython( + "", schema["items"], data, None, None + ) + example_imports = example_imports + items_imports + parameter_type = "List[" + items_type + "]" + if "minItems" in schema and schema["minItems"] > 1: + parameter_example = "[" + for i in range(schema["minItems"] - 1): + parameter_example = parameter_example + items_example + ", " + parameter_example = parameter_example + "]" + else: + parameter_example = "[" + items_example + "]" - example_imports = example_imports + ("from typing import List\n") + example_imports = example_imports + ("from typing import List\n") elif schema["type"] == "object" and "properties" in schema: if name == "": logging.error("schema: %s", json.dumps(schema, indent=4)) @@ -451,7 +560,7 @@ def generatePath(path: str, name: str, method: str, endpoint: dict, data: dict) tag_name = endpoint["tags"][0].replace("-", "_") path = os.path.join(path, tag_name) file_path = os.path.join(path, file_name) - logging.info("generating path functions: ", name, " at: ", file_path) + logging.info("generating path functions: %s at: %s", name, file_path) endpoint_refs = getEndpointRefs(endpoint, data) parameter_refs = getParameterRefs(endpoint) @@ -530,7 +639,10 @@ def generatePath(path: str, name: str, method: str, endpoint: dict, data: dict) if "x-dropshot-websocket" not in endpoint: params_str += "body=" + body_example + ",\n" else: - body_example = request_body_type + "(" + body_example + ")" + # For websockets, body_example should be wrapped with the request body type + # but not double-wrapped if it's already wrapped + if not body_example.startswith(request_body_type + "("): + body_example = request_body_type + "(" + body_example + ")" example_imports = ( example_imports + "from kittycad.models import " @@ -733,6 +845,9 @@ async def test_""" """ ) + # Deduplicate imports before creating examples + example_imports = deduplicate_imports(example_imports) + # This longer example we use for generating tests. # We only show the short example in the docs since it is much more intuitive to MEs example = ( @@ -748,12 +863,21 @@ async def test_""" # Make pretty. line_length = 82 short_sync_example = example_imports + short_sync_example - cleaned_example = black.format_str( - isort.api.sort_code_string( - short_sync_example, - ), - mode=black.FileMode(line_length=line_length), - ) + + try: + cleaned_example = black.format_str( + isort.api.sort_code_string( + short_sync_example, + ), + mode=black.FileMode(line_length=line_length), + ) + except Exception as e: + logging.error("Failed to format example for %s: %s", fn_name, e) + logging.error("Content being formatted:\n%s", short_sync_example) + logging.error( + "Content after isort:\n%s", isort.api.sort_code_string(short_sync_example) + ) + raise examples.append(example) @@ -1016,7 +1140,7 @@ async def test_""" "#/components/schemas/", "" ) else: - logging.error("parameter: ", parameter) + logging.error("parameter: %s", parameter) raise Exception("Unknown parameter type") if "nullable" in parameter["schema"]: if parameter["schema"]["nullable"]: @@ -1097,7 +1221,7 @@ def generateTypes(cwd: str, parser: dict): schemas = data["components"]["schemas"] for key in schemas: schema = schemas[key] - logging.info("generating schema: ", key) + logging.info("generating schema: %s", key) generateType(path, key, schema, data) f.write("from ." + camel_to_snake(key) + " import " + key + "\n") @@ -1129,7 +1253,7 @@ def generateType(path: str, name: str, schema: dict, data: dict): elif type_name == "string": generateStringType(file_path, name, schema, type_name) else: - logging.error("unsupported type: ", type_name) + logging.error("unsupported type: %s", type_name) raise Exception("unsupported type: ", type_name) elif "$ref" in schema: # Skip it since we will already have generated it. @@ -1139,13 +1263,13 @@ def generateType(path: str, name: str, schema: dict, data: dict): elif "anyOf" in schema: generateAnyOfType(file_path, name, schema, data) else: - logging.error("schema: ", [schema]) - logging.error("unsupported type: ", name) + logging.error("schema: %s", schema) + logging.error("unsupported type: %s", name) raise Exception("unsupported type: ", name) def generateStringType(path: str, name: str, schema: dict, type_name: str): - logging.info("generating type: ", name, " at: ", path) + logging.info("generating type: %s at: %s", name, path) f = open(path, "w") TemplateType = TypedDict( @@ -1177,7 +1301,7 @@ def generateStringType(path: str, name: str, schema: dict, type_name: str): def generateIntegerType(path: str, name: str, schema: dict, type_name: str): - logging.info("generating type: ", name, " at: ", path) + logging.info("generating type: %s at: %s", name, path) f = open(path, "w") TemplateType = TypedDict( @@ -1209,7 +1333,7 @@ def generateIntegerType(path: str, name: str, schema: dict, type_name: str): def generateFloatType(path: str, name: str, schema: dict, type_name: str): - logging.info("generating type: ", name, " at: ", path) + logging.info("generating type: %s at: %s", name, path) f = open(path, "w") TemplateType = TypedDict( @@ -1247,7 +1371,7 @@ def generateEnumType( type_name: str, additional_docs: List[str], ): - logging.info("generating type: ", name, " at: ", path) + logging.info("generating type: %s at: %s", name, path) f = open(path, "w") code = generateEnumTypeCode(name, schema, type_name, additional_docs) @@ -1301,7 +1425,7 @@ def generateEnumTypeCode( def generateAnyOfType(path: str, name: str, schema: dict, data: dict): - logging.info("generating type: ", name, " at: ", path) + logging.info("generating type: %s at: %s", name, path) if isEnumWithDocsOneOf(schema): additional_docs = [] @@ -1325,6 +1449,7 @@ def generateAnyOfType(path: str, name: str, schema: dict, data: dict): # Import the refs if there are any. all_options = [] + imported_refs: set[str] = set() # Track imported refs to avoid duplicates for any_of in schema["anyOf"]: if "allOf" in any_of: for all_of in any_of["allOf"]: @@ -1374,7 +1499,14 @@ def generateAnyOfType(path: str, name: str, schema: dict, data: dict): all_options.append(prop_name) else: object_code = generateObjectTypeCode( - prop_name, nested_object, "object", data, None, None + prop_name, + nested_object, + "object", + data, + None, + None, + False, + imported_refs, ) f.write(object_code) f.write("\n") @@ -1430,7 +1562,14 @@ def generateAnyOfType(path: str, name: str, schema: dict, data: dict): all_options.append(prop_name) else: object_code = generateObjectTypeCode( - prop_name, nested_object, "object", data, None, None + prop_name, + nested_object, + "object", + data, + None, + None, + False, + imported_refs, ) f.write(object_code) f.write("\n") @@ -1528,7 +1667,7 @@ def generateUnionType( def generateOneOfType(path: str, name: str, schema: dict, data: dict): - logging.info("generating type: ", name, " at: ", path) + logging.info("generating type: %s at: %s", name, path) if isEnumWithDocsOneOf(schema): additional_docs = [] @@ -1552,18 +1691,19 @@ def generateOneOfType(path: str, name: str, schema: dict, data: dict): # Import the refs if there are any. all_options = [] + imported_refs: set[str] = set() # Track imported refs to avoid duplicates for one_of in schema["oneOf"]: if "$ref" in one_of: ref = one_of["$ref"] ref_name = ref[ref.rfind("/") + 1 :] - f.write( - "from ." - + camel_to_snake(ref_name) - + " import " - + snake_to_title(ref_name) - + "\n" - ) - all_options.append(snake_to_title(ref_name)) + class_name = snake_to_title(ref_name) + # Use class name as the key to avoid importing same class multiple times regardless of path + if class_name not in imported_refs: + f.write( + "from ." + camel_to_snake(ref_name) + " import " + class_name + "\n" + ) + imported_refs.add(class_name) + all_options.append(class_name) if isNestedObjectOneOf(schema): # We want to write each of the nested objects. @@ -1580,21 +1720,31 @@ def generateOneOfType(path: str, name: str, schema: dict, data: dict): elif "$ref" in nested_object: ref = nested_object["$ref"] ref_name = ref[ref.rfind("/") + 1 :] - f.write( - "from ." - + camel_to_snake(ref_name) - + " import " - + ref_name - + "\n" - ) - f.write("\n") + # Use class name as the key to avoid importing same class multiple times regardless of path + if ref_name not in imported_refs: + f.write( + "from ." + + camel_to_snake(ref_name) + + " import " + + ref_name + + "\n" + ) + f.write("\n") + imported_refs.add(ref_name) if prop_name != ref_name: f.write(prop_name + " = " + ref_name + "\n") f.write("\n") - all_options.append(prop_name) + all_options.append(ref_name) else: object_code = generateObjectTypeCode( - prop_name, nested_object, "object", data, None, None + prop_name, + nested_object, + "object", + data, + None, + None, + False, + imported_refs, ) f.write(object_code) f.write("\n") @@ -1624,11 +1774,13 @@ def generateOneOfType(path: str, name: str, schema: dict, data: dict): data, None, None, + False, + imported_refs, ) f.write(content_code) f.write("\n") object_code = generateObjectTypeCode( - object_name, one_of, "object", data, tag, content, True + object_name, one_of, "object", data, tag, content, True, imported_refs ) f.write(object_code) f.write("\n") @@ -1639,7 +1791,7 @@ def generateOneOfType(path: str, name: str, schema: dict, data: dict): # Get the value of the tag. object_name = one_of["properties"][tag]["enum"][0] object_code = generateObjectTypeCode( - object_name, one_of, "object", data, tag, None, True + object_name, one_of, "object", data, tag, None, True, imported_refs ) f.write(object_code) f.write("\n") @@ -1653,6 +1805,8 @@ def generateOneOfType(path: str, name: str, schema: dict, data: dict): data, None, None, + False, + imported_refs, ) f.write(object_code) f.write("\n") @@ -1672,6 +1826,8 @@ def generateOneOfType(path: str, name: str, schema: dict, data: dict): data, None, None, + False, + imported_refs, ) f.write(object_code) f.write("\n") @@ -1702,6 +1858,7 @@ def generateObjectTypeCode( tag: Optional[str], content: Optional[str], is_option: bool = False, + imported_refs: Optional[set] = None, ) -> str: FieldType = TypedDict( "FieldType", @@ -1727,8 +1884,14 @@ def generateObjectTypeCode( imports = [] refs = getRefs(schema) + if imported_refs is None: + imported_refs = set() for ref in refs: - imports.append("from ..models." + camel_to_snake(ref) + " import " + ref + "\n") + if ref not in imported_refs: + imports.append( + "from ..models." + camel_to_snake(ref) + " import " + ref + "\n" + ) + imported_refs.add(ref) required = [] if "required" in schema: @@ -1800,7 +1963,7 @@ def generateObjectTypeCode( def generateObjectType(path: str, name: str, schema: dict, type_name: str, data: dict): - logging.info("generating type: ", name, " at: ", path) + logging.info("generating type: %s at: %s", name, path) f = open(path, "w") @@ -1913,11 +2076,11 @@ def getEndpointRefs(endpoint: dict, data: dict) -> List[str]: continue else: # Throw an error for an unsupported content type. - logging.error("content: ", content) + logging.error("content: %s", content) raise Exception("Unsupported content type: ", content_type) else: # Throw an error for an unsupported content type. - logging.error("content: ", content) + logging.error("content: %s", content) raise Exception("Unsupported content type: ", content_type) elif "$ref" in response: schema_name = response["$ref"].replace("#/components/responses/", "") @@ -1979,7 +2142,7 @@ def getRequestBodyRefs(endpoint: dict) -> List[str]: refs.append(ref) else: # Throw an error for an unsupported content type. - logging.error("content: ", content) + logging.error("content: %s", content) raise Exception("Unsupported content type: ", content_type) return refs @@ -2000,7 +2163,7 @@ def getRequestBodyTypeSchema( type_schema = data["components"]["schemas"][ref] return ref, type_schema elif json != {}: - logging.error("not a ref: ", json) + logging.error("not a ref: %s", json) raise Exception("not a ref") elif content_type == "text/plain": return "str", None @@ -2013,7 +2176,7 @@ def getRequestBodyTypeSchema( type_schema = data["components"]["schemas"][ref] return ref, type_schema elif form != {}: - logging.error("not a ref: ", form) + logging.error("not a ref: %s", form) raise Exception("not a ref") elif content_type == "multipart/form-data": form = content[content_type]["schema"] @@ -2025,7 +2188,7 @@ def getRequestBodyTypeSchema( type_schema = form return None, type_schema else: - logging.error("unsupported content type: ", content_type) + logging.error("unsupported content type: %s", content_type) raise Exception("unsupported content type") return None, None @@ -2089,7 +2252,7 @@ def get_function_parameters( elif "$ref" in parameter["schema"]: parameter["schema"]["$ref"].replace("#/components/schemas/", "") else: - logging.error("parameter: ", parameter) + logging.error("parameter: %s", parameter) raise Exception("Unknown parameter type") params.append(camel_to_snake(parameter_name)) if request_body_type: @@ -2354,9 +2517,14 @@ def getTypeName(schema: dict) -> str: return "bytes" else: return "List[" + item_type + "]" - elif "additionalProperties" in schema and schema["type"] == "object": - item_type = getTypeName(schema["additionalProperties"]) - return "Dict[str, " + item_type + "]" + elif schema["type"] == "object": + if "additionalProperties" in schema: + item_type = getTypeName(schema["additionalProperties"]) + return "Dict[str, " + item_type + "]" + elif "properties" in schema: + return "Dict[str, Any]" + else: + return "Dict[str, Any]" elif "$ref" in schema: return schema["$ref"].replace("#/components/schemas/", "") elif "allOf" in schema and len(schema["allOf"]) == 1: @@ -2364,7 +2532,7 @@ def getTypeName(schema: dict) -> str: elif "description" in schema: return "Any" - logging.error("schema: ", [schema]) + logging.error("schema: %s", schema) raise Exception("Unknown schema type") diff --git a/justfile b/justfile new file mode 100644 index 000000000..2108e604a --- /dev/null +++ b/justfile @@ -0,0 +1,7 @@ +install-deps: + uv pip install poetry + poetry update + poetry install + +generate: + ./generate/run.sh diff --git a/kittycad.py.patch.json b/kittycad.py.patch.json index e93dd24f0..c933fb4fb 100644 --- a/kittycad.py.patch.json +++ b/kittycad.py.patch.json @@ -1,34 +1,42 @@ [ { "op": "add", - "path": "/paths/~1ws~1modeling~1commands/get/x-python", + "path": "/info/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.client_metrics import ClientMetrics\nfrom kittycad.models.post_effect_type import PostEffectType\nfrom kittycad.models.web_socket_request import OptionMetricsResponse\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 post_effect=PostEffectType.PHOSPHOR,\n show_grid=False,\n unlocked_framerate=False,\n video_res_height=10,\n video_res_width=10,\n webrtc=False,\n api_call_id=None, # Optional[str]\n pool=None, # Optional[str]\n replay=None, # Optional[str]\n ) as websocket:\n\n # Send a message.\n websocket.send(\n WebSocketRequest(\n OptionMetricsResponse(\n metrics=ClientMetrics(),\n )\n )\n )\n\n # Get a message.\n message = websocket.recv()\n print(message)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.modeling.modeling_commands_ws.html" + "client": "# Create a client with your token.\nfrom kittycad.client import Client\n\nclient = Client(token=\"$TOKEN\")\n\n# - OR -\n\n# Create a new client with your token parsed from the environment variable:\n# `KITTYCAD_API_TOKEN` or `ZOO_API_TOKEN`.\n# Optionally, you can pass in `ZOO_HOST` to specify the host. But this only\n# needs to be done if you are using a different host than the default,\n# which implies you are running your own instance of the API.\nfrom kittycad.client import ClientFromEnv\n\nclient = ClientFromEnv()\n\n# NOTE: The python library additionally implements asyncio, however all the code samples we\n# show below use the sync functions for ease of use and understanding.\n# Check out the library docs at:\n# https://python.api.docs.zoo.dev/_autosummary/kittycad.api.html#module-kittycad.api\n# for more details.", + "install": "pip install kittycad" } }, { "op": "add", - "path": "/paths/~1ml-prompts/get/x-python", + "path": "/paths/~1org/post/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ml import list_ml_prompts\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, MlPromptResultsPage\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_list_ml_prompts():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[MlPromptResultsPage, Error]] = list_ml_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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: MlPromptResultsPage = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.ml.list_ml_prompts.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import create_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, Org\nfrom kittycad.models.org_details import OrgDetails\nfrom kittycad.types import Response\n\n\ndef example_create_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[Org, Error]] = create_org.sync(\n client=client,\n body=OrgDetails(\n billing_email=\"\",\n name=\"\",\n phone=\"\",\n ),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Org = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.create_org.html" } }, { "op": "add", - "path": "/paths/~1user~1api-tokens/post/x-python", + "path": "/paths/~1org/put/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.api_tokens import create_api_token_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import ApiToken, Error\nfrom kittycad.types import Response\n\n\ndef example_create_api_token_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ApiToken, Error]] = create_api_token_for_user.sync(\n client=client,\n label=None, # Optional[str]\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiToken = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.api_tokens.create_api_token_for_user.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import update_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, Org\nfrom kittycad.models.org_details import OrgDetails\nfrom kittycad.types import Response\n\n\ndef example_update_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[Org, Error]] = update_org.sync(\n client=client,\n body=OrgDetails(\n billing_email=\"\",\n name=\"\",\n phone=\"\",\n ),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Org = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.update_org.html" } }, { "op": "add", - "path": "/paths/~1user~1api-tokens/get/x-python", + "path": "/paths/~1org/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.api_tokens import list_api_tokens_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import ApiTokenResultsPage, Error\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_list_api_tokens_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ApiTokenResultsPage, Error]] = (\n list_api_tokens_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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiTokenResultsPage = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.api_tokens.list_api_tokens_for_user.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import get_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, Org\nfrom kittycad.types import Response\n\n\ndef example_get_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[Org, Error]] = get_org.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Org = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.get_org.html" + } + }, + { + "op": "add", + "path": "/paths/~1org/delete/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import delete_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_delete_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = delete_org.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.delete_org.html" } }, { @@ -41,426 +49,434 @@ }, { "op": "add", - "path": "/paths/~1api-call-metrics/get/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.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[Union[List[ApiCallQueryGroup], Error]] = (\n get_api_call_metrics.sync(\n client=client,\n group_by=ApiCallQueryGroupBy.EMAIL,\n )\n )\n\n if isinstance(result, Error) or result is 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.zoo.dev/_autosummary/kittycad.api.api_calls.get_api_call_metrics.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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitPressureConversion = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.unit.get_pressure_unit_conversion.html" } }, { "op": "add", - "path": "/paths/~1user~1api-calls/get/x-python", + "path": "/paths/~1user~1payment~1methods/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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiCallWithPriceResultsPage = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.api_calls.user_list_api_calls.html" + "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[Union[List[PaymentMethod], Error]] = (\n list_payment_methods_for_user.sync(\n client=client,\n )\n )\n\n if isinstance(result, Error) or result is 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.zoo.dev/_autosummary/kittycad.api.payments.list_payment_methods_for_user.html" } }, { "op": "add", - "path": "/paths/~1community~1sso/get/x-python", + "path": "/paths/~1org~1payment/post/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.meta import community_sso\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_community_sso():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = community_sso.sync(\n client=client,\n sig=\"\",\n sso=\"\",\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.meta.community_sso.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import create_payment_information_for_org\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_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[Customer, Error]] = (\n create_payment_information_for_org.sync(\n client=client,\n body=BillingInfo(\n name=\"\",\n phone=\"\",\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Customer = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.create_payment_information_for_org.html" } }, { "op": "add", - "path": "/paths/~1unit~1conversion~1pressure~1{input_unit}~1{output_unit}/get/x-python", + "path": "/paths/~1org~1payment/put/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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitPressureConversion = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.unit.get_pressure_unit_conversion.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import update_payment_information_for_org\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_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[Customer, Error]] = (\n update_payment_information_for_org.sync(\n client=client,\n body=BillingInfo(\n name=\"\",\n phone=\"\",\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Customer = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.update_payment_information_for_org.html" } }, { "op": "add", - "path": "/paths/~1org~1payment~1methods~1{id}/delete/x-python", + "path": "/paths/~1org~1payment/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import delete_payment_method_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_delete_payment_method_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = delete_payment_method_for_org.sync(\n client=client,\n id=\"\",\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.delete_payment_method_for_org.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import get_payment_information_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Customer, Error\nfrom kittycad.types import Response\n\n\ndef example_get_payment_information_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[Customer, Error]] = (\n get_payment_information_for_org.sync(\n client=client,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Customer = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.get_payment_information_for_org.html" } }, { "op": "add", - "path": "/paths/~1users-extended/get/x-python", + "path": "/paths/~1org~1payment/delete/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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ExtendedUserResultsPage = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.list_users_extended.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import delete_payment_information_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_delete_payment_information_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = delete_payment_information_for_org.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.delete_payment_information_for_org.html" } }, { "op": "add", - "path": "/paths/~1user~1org/get/x-python", + "path": "/paths/~1org~1shortlinks/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import get_user_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UserOrgInfo\nfrom kittycad.types import Response\n\n\ndef example_get_user_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[UserOrgInfo, Error]] = get_user_org.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UserOrgInfo = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.get_user_org.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import get_org_shortlinks\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ShortlinkResultsPage\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_get_org_shortlinks():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ShortlinkResultsPage, Error]] = (\n get_org_shortlinks.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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ShortlinkResultsPage = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.get_org_shortlinks.html" } }, { "op": "add", - "path": "/paths/~1apps~1github~1webhook/post/x-python", + "path": "/paths/~1store~1coupon/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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.apps.apps_github_webhook.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.store import create_store_coupon\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import DiscountCode, Error\nfrom kittycad.models.store_coupon_params import StoreCouponParams\nfrom kittycad.types import Response\n\n\ndef example_create_store_coupon():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[DiscountCode, Error]] = create_store_coupon.sync(\n client=client,\n body=StoreCouponParams(\n percent_off=10,\n ),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: DiscountCode = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.store.create_store_coupon.html" } }, { "op": "add", - "path": "/paths/~1auth~1saml~1provider~1{provider_id}~1login/post/x-python", + "path": "/paths/~1events/post/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.hidden import post_auth_saml\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.uuid import Uuid\nfrom kittycad.types import Response\n\n\ndef example_post_auth_saml():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = post_auth_saml.sync(\n client=client,\n provider_id=Uuid(\"\"),\n body=bytes(\"some bytes\", \"utf-8\"),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.hidden.post_auth_saml.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.meta import create_event\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.event import Event, OptionModelingAppEvent\nfrom kittycad.models.modeling_app_event_type import ModelingAppEventType\nfrom kittycad.types import Response\n\n\ndef example_create_event():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = create_event.sync(\n client=client,\n body=Event(\n OptionModelingAppEvent(\n created_at=datetime.datetime.now(),\n event_type=ModelingAppEventType.SUCCESSFUL_COMPILE_BEFORE_CLOSE,\n project_name=\"\",\n source_id=\"\",\n user_id=\"\",\n )\n ),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.meta.create_event.html" } }, { "op": "add", - "path": "/paths/~1auth~1saml~1provider~1{provider_id}~1login/get/x-python", + "path": "/paths/~1orgs~1{id}~1payment~1balance/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.hidden import get_auth_saml\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.uuid import Uuid\nfrom kittycad.types import Response\n\n\ndef example_get_auth_saml():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = get_auth_saml.sync(\n client=client,\n provider_id=Uuid(\"\"),\n callback_url=None, # Optional[str]\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.hidden.get_auth_saml.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import get_payment_balance_for_any_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import CustomerBalance, Error\nfrom kittycad.models.uuid import Uuid\nfrom kittycad.types import Response\n\n\ndef example_get_payment_balance_for_any_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[CustomerBalance, Error]] = (\n get_payment_balance_for_any_org.sync(\n client=client,\n include_total_due=False,\n id=Uuid(\"\"),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: CustomerBalance = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.get_payment_balance_for_any_org.html" } }, { "op": "add", - "path": "/paths/~1ping/get/x-python", + "path": "/paths/~1orgs~1{id}~1payment~1balance/put/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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Pong = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.meta.ping.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import update_payment_balance_for_any_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import CustomerBalance, Error\nfrom kittycad.models.update_payment_balance import UpdatePaymentBalance\nfrom kittycad.models.uuid import Uuid\nfrom kittycad.types import Response\n\n\ndef example_update_payment_balance_for_any_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[CustomerBalance, Error]] = (\n update_payment_balance_for_any_org.sync(\n client=client,\n id=Uuid(\"\"),\n include_total_due=False,\n body=UpdatePaymentBalance(),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: CustomerBalance = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.update_payment_balance_for_any_org.html" } }, { "op": "add", - "path": "/paths/~1org~1payment/post/x-python", + "path": "/paths/~1user~1shortlinks~1{key}/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import create_payment_information_for_org\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_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[Customer, Error]] = (\n create_payment_information_for_org.sync(\n client=client,\n body=BillingInfo(\n name=\"\",\n phone=\"\",\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Customer = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.create_payment_information_for_org.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.hidden import redirect_user_shortlink\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_redirect_user_shortlink():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = redirect_user_shortlink.sync(\n client=client,\n key=\"\",\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.hidden.redirect_user_shortlink.html" } }, { "op": "add", - "path": "/paths/~1org~1payment/delete/x-python", + "path": "/paths/~1user~1shortlinks~1{key}/delete/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import delete_payment_information_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_delete_payment_information_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = delete_payment_information_for_org.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.delete_payment_information_for_org.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import delete_user_shortlink\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_delete_user_shortlink():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = delete_user_shortlink.sync(\n client=client,\n key=\"\",\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.delete_user_shortlink.html" } }, { "op": "add", - "path": "/paths/~1org~1payment/put/x-python", + "path": "/paths/~1user~1shortlinks~1{key}/put/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import update_payment_information_for_org\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_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[Customer, Error]] = (\n update_payment_information_for_org.sync(\n client=client,\n body=BillingInfo(\n name=\"\",\n phone=\"\",\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Customer = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.update_payment_information_for_org.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import update_user_shortlink\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.update_shortlink_request import UpdateShortlinkRequest\nfrom kittycad.types import Response\n\n\ndef example_update_user_shortlink():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = update_user_shortlink.sync(\n client=client,\n key=\"\",\n body=UpdateShortlinkRequest(\n restrict_to_org=False,\n ),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.update_user_shortlink.html" } }, { "op": "add", - "path": "/paths/~1org~1payment/get/x-python", + "path": "/paths/~1file~1mass/post/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import get_payment_information_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Customer, Error\nfrom kittycad.types import Response\n\n\ndef example_get_payment_information_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[Customer, Error]] = (\n get_payment_information_for_org.sync(\n client=client,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Customer = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.get_payment_information_for_org.html" + "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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: FileMass = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.file.create_file_mass.html" } }, { "op": "add", - "path": "/paths/~1unit~1conversion~1current~1{input_unit}~1{output_unit}/get/x-python", + "path": "/paths/~1debug~1uploads/post/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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitCurrentConversion = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.unit.get_current_unit_conversion.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.meta import create_debug_uploads\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_create_debug_uploads():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[List[str], Error]] = create_debug_uploads.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: List[str] = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.meta.create_debug_uploads.html" } }, { "op": "add", - "path": "/paths/~1user~1shortlinks/post/x-python", + "path": "/paths/~1ws~1ml~1copilot/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import create_user_shortlink\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import CreateShortlinkResponse, Error\nfrom kittycad.models.create_shortlink_request import CreateShortlinkRequest\nfrom kittycad.types import Response\n\n\ndef example_create_user_shortlink():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[CreateShortlinkResponse, Error]] = (\n create_user_shortlink.sync(\n client=client,\n body=CreateShortlinkRequest(\n restrict_to_org=False,\n url=\"\",\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: CreateShortlinkResponse = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.create_user_shortlink.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ml import ml_copilot_ws\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, MlCopilotClientMessage, MlCopilotServerMessage\nfrom kittycad.models.ml_copilot_client_message import OptionUser\nfrom kittycad.models.source_position import SourcePosition\nfrom kittycad.models.source_range import SourceRange\nfrom kittycad.models.source_range_prompt import SourceRangePrompt\nfrom kittycad.types import Response\n\n\ndef example_ml_copilot_ws():\n # Create our client.\n client = ClientFromEnv()\n\n # Connect to the websocket.\n with ml_copilot_ws.WebSocket(\n client=client,\n ) as websocket:\n\n # Send a message.\n websocket.send(\n MlCopilotClientMessage(\n OptionUser(\n content=\"\",\n current_files={\"\": b\"\"},\n source_ranges=[\n SourceRangePrompt(\n prompt=\"\",\n range=SourceRange(\n end=SourcePosition(\n column=10,\n line=10,\n ),\n start=SourcePosition(\n column=10,\n line=10,\n ),\n ),\n )\n ],\n )\n )\n )\n\n # Get a message.\n message = websocket.recv()\n print(message)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.ml.ml_copilot_ws.html" } }, { "op": "add", - "path": "/paths/~1user~1shortlinks/get/x-python", + "path": "/paths/~1user/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import get_user_shortlinks\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ShortlinkResultsPage\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_get_user_shortlinks():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ShortlinkResultsPage, Error]] = (\n get_user_shortlinks.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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ShortlinkResultsPage = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.get_user_shortlinks.html" + "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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: User = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.get_user_self.html" } }, { "op": "add", - "path": "/paths/~1org~1members/post/x-python", + "path": "/paths/~1user/delete/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import create_org_member\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, OrgMember\nfrom kittycad.models.add_org_member import AddOrgMember\nfrom kittycad.models.user_org_role import UserOrgRole\nfrom kittycad.types import Response\n\n\ndef example_create_org_member():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[OrgMember, Error]] = create_org_member.sync(\n client=client,\n body=AddOrgMember(\n email=\"\",\n role=UserOrgRole.ADMIN,\n ),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: OrgMember = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.create_org_member.html" + "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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.delete_user_self.html" } }, { "op": "add", - "path": "/paths/~1org~1members/get/x-python", + "path": "/paths/~1user/put/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import list_org_members\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, OrgMemberResultsPage\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.models.user_org_role import UserOrgRole\nfrom kittycad.types import Response\n\n\ndef example_list_org_members():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[OrgMemberResultsPage, Error]] = list_org_members.sync(\n client=client,\n sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING,\n role=UserOrgRole.ADMIN,\n limit=None, # Optional[int]\n page_token=None, # Optional[str]\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: OrgMemberResultsPage = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.list_org_members.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 image=\"\",\n last_name=\"\",\n phone=\"\",\n ),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: User = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.update_user_self.html" } }, { "op": "add", - "path": "/paths/~1user~1extended/get/x-python", + "path": "/paths/~1api-call-metrics/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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ExtendedUser = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.get_user_self_extended.html" + "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[Union[List[ApiCallQueryGroup], Error]] = (\n get_api_call_metrics.sync(\n client=client,\n group_by=ApiCallQueryGroupBy.EMAIL,\n )\n )\n\n if isinstance(result, Error) or result is 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.zoo.dev/_autosummary/kittycad.api.api_calls.get_api_call_metrics.html" } }, { "op": "add", - "path": "/paths/~1pricing~1subscriptions/get/x-python", + "path": "/paths/~1user~1api-tokens/get/x-python", "value": { - "example": "from kittycad.api.meta import get_pricing_subscriptions\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.types import Response\n\n\ndef example_get_pricing_subscriptions():\n # Create our client.\n client = ClientFromEnv()\n\n get_pricing_subscriptions.sync(\n client=client,\n )\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.meta.get_pricing_subscriptions.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.api_tokens import list_api_tokens_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import ApiTokenResultsPage, Error\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_list_api_tokens_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ApiTokenResultsPage, Error]] = (\n list_api_tokens_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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiTokenResultsPage = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.api_tokens.list_api_tokens_for_user.html" } }, { "op": "add", - "path": "/paths/~1ml~1text-to-cad~1multi-file~1iteration/post/x-python", + "path": "/paths/~1user~1api-tokens/post/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ml import create_text_to_cad_multi_file_iteration\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, TextToCadMultiFileIteration\nfrom kittycad.models.source_position import SourcePosition\nfrom kittycad.models.source_range import SourceRange\nfrom kittycad.models.source_range_prompt import SourceRangePrompt\nfrom kittycad.models.text_to_cad_multi_file_iteration_body import (\n TextToCadMultiFileIterationBody,\n)\nfrom kittycad.types import Response\n\n\ndef example_create_text_to_cad_multi_file_iteration():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[TextToCadMultiFileIteration, Error]] = (\n create_text_to_cad_multi_file_iteration.sync(\n client=client,\n body=TextToCadMultiFileIterationBody(\n source_ranges=[\n SourceRangePrompt(\n prompt=\"\",\n range=SourceRange(\n end=SourcePosition(\n column=10,\n line=10,\n ),\n start=SourcePosition(\n column=10,\n line=10,\n ),\n ),\n )\n ],\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: TextToCadMultiFileIteration = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.ml.create_text_to_cad_multi_file_iteration.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.api_tokens import create_api_token_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import ApiToken, Error\nfrom kittycad.types import Response\n\n\ndef example_create_api_token_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ApiToken, Error]] = create_api_token_for_user.sync(\n client=client,\n label=None, # Optional[str]\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiToken = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.api_tokens.create_api_token_for_user.html" } }, { "op": "add", - "path": "/paths/~1unit~1conversion~1mass~1{input_unit}~1{output_unit}/get/x-python", + "path": "/paths/~1org~1payment~1balance/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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitMassConversion = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.unit.get_mass_unit_conversion.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import get_payment_balance_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import CustomerBalance, Error\nfrom kittycad.types import Response\n\n\ndef example_get_payment_balance_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[CustomerBalance, Error]] = (\n get_payment_balance_for_org.sync(\n client=client,\n include_total_due=False,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: CustomerBalance = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.get_payment_balance_for_org.html" } }, { "op": "add", - "path": "/paths/~1internal~1discord~1api-token~1{discord_id}/get/x-python", + "path": "/paths/~1user~1payment~1invoices/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[Union[ApiToken, Error]] = (\n internal_get_api_token_for_discord_user.sync(\n client=client,\n discord_id=\"\",\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiToken = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.meta.internal_get_api_token_for_discord_user.html" + "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 is 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.zoo.dev/_autosummary/kittycad.api.payments.list_invoices_for_user.html" } }, { "op": "add", - "path": "/paths/~1/get/x-python", + "path": "/paths/~1users-extended~1{id}/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.zoo.dev/_autosummary/kittycad.api.meta.get_schema.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.models.user_identifier import UserIdentifier\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=UserIdentifier(\"\"),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ExtendedUser = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.get_user_extended.html" } }, { "op": "add", - "path": "/paths/~1user~1crm/patch/x-python", + "path": "/paths/~1auth~1saml~1org~1{org_id}~1login/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import patch_user_crm\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.crm_data import CrmData\nfrom kittycad.types import Response\n\n\ndef example_patch_user_crm():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = patch_user_crm.sync(\n client=client,\n body=CrmData(),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.patch_user_crm.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.hidden import get_auth_saml_by_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.uuid import Uuid\nfrom kittycad.types import Response\n\n\ndef example_get_auth_saml_by_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = get_auth_saml_by_org.sync(\n client=client,\n org_id=Uuid(\"\"),\n callback_url=None, # Optional[str]\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.hidden.get_auth_saml_by_org.html" } }, { "op": "add", - "path": "/paths/~1users~1{id}~1api-calls/get/x-python", + "path": "/paths/~1org~1payment~1tax/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.models.user_identifier import UserIdentifier\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[Union[ApiCallWithPriceResultsPage, Error]] = (\n list_api_calls_for_user.sync(\n client=client,\n id=UserIdentifier(\"\"),\n sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING,\n limit=None, # Optional[int]\n page_token=None, # Optional[str]\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiCallWithPriceResultsPage = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_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 validate_customer_tax_information_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_validate_customer_tax_information_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = validate_customer_tax_information_for_org.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.validate_customer_tax_information_for_org.html" } }, { "op": "add", - "path": "/paths/~1org~1api-calls~1{id}/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.api_calls import get_api_call_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import ApiCallWithPrice, Error\nfrom kittycad.types import Response\n\n\ndef example_get_api_call_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ApiCallWithPrice, Error]] = get_api_call_for_org.sync(\n client=client,\n id=\"\",\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiCallWithPrice = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.api_calls.get_api_call_for_org.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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiCallWithPrice = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.api_calls.get_api_call.html" } }, { "op": "add", - "path": "/paths/~1auth~1email~1callback/get/x-python", + "path": "/paths/~1ml-prompts/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.hidden import auth_email_callback\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_auth_email_callback():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = auth_email_callback.sync(\n client=client,\n email=\"\",\n token=\"\",\n callback_url=None, # Optional[str]\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.hidden.auth_email_callback.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ml import list_ml_prompts\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, MlPromptResultsPage\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_list_ml_prompts():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[MlPromptResultsPage, Error]] = list_ml_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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: MlPromptResultsPage = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.ml.list_ml_prompts.html" } }, { "op": "add", - "path": "/paths/~1ml-prompts~1{id}/get/x-python", + "path": "/paths/~1auth~1api-key/post/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ml import get_ml_prompt\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, MlPrompt\nfrom kittycad.types import Response\n\n\ndef example_get_ml_prompt():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[MlPrompt, Error]] = get_ml_prompt.sync(\n client=client,\n id=\"\",\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: MlPrompt = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.ml.get_ml_prompt.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.hidden import auth_api_key\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import AuthApiKeyResponse, Error\nfrom kittycad.types import Response\n\n\ndef example_auth_api_key():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[AuthApiKeyResponse, Error]] = auth_api_key.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: AuthApiKeyResponse = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.hidden.auth_api_key.html" } }, { "op": "add", - "path": "/paths/~1user~1text-to-cad~1{id}/post/x-python", + "path": "/paths/~1ml~1conversations/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ml import create_text_to_cad_model_feedback\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.ml_feedback import MlFeedback\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=MlFeedback.THUMBS_UP,\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.ml.create_text_to_cad_model_feedback.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ml import list_conversations_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import ConversationResultsPage, Error\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_list_conversations_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ConversationResultsPage, Error]] = (\n list_conversations_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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ConversationResultsPage = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.ml.list_conversations_for_user.html" } }, { "op": "add", - "path": "/paths/~1user~1text-to-cad~1{id}/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.ml 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[Union[TextToCad, Error]] = (\n get_text_to_cad_model_for_user.sync(\n client=client,\n id=\"\",\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: TextToCad = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.ml.get_text_to_cad_model_for_user.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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitForceConversion = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.unit.get_force_unit_conversion.html" } }, { "op": "add", - "path": "/paths/~1website~1subscribe/put/x-python", + "path": "/paths/~1async~1operations/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import put_public_subscribe\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.subscribe import Subscribe\nfrom kittycad.types import Response\n\n\ndef example_put_public_subscribe():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = put_public_subscribe.sync(\n client=client,\n body=Subscribe(\n email=\"\",\n ),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.put_public_subscribe.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.api_calls import list_async_operations\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import AsyncApiCallResultsPage, Error\nfrom kittycad.models.api_call_status import ApiCallStatus\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_list_async_operations():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[AsyncApiCallResultsPage, Error]] = (\n list_async_operations.sync(\n client=client,\n sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING,\n status=ApiCallStatus.QUEUED,\n limit=None, # Optional[int]\n page_token=None, # Optional[str]\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: AsyncApiCallResultsPage = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.api_calls.list_async_operations.html" } }, { "op": "add", - "path": "/paths/~1org~1members~1{user_id}/delete/x-python", + "path": "/paths/~1user~1session~1{token}/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import delete_org_member\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.uuid import Uuid\nfrom kittycad.types import Response\n\n\ndef example_delete_org_member():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = delete_org_member.sync(\n client=client,\n user_id=Uuid(\"\"),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.delete_org_member.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import get_session_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, Session\nfrom kittycad.models.session_uuid import SessionUuid\nfrom kittycad.types import Response\n\n\ndef example_get_session_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[Session, Error]] = get_session_for_user.sync(\n client=client,\n token=SessionUuid(\"\"),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Session = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.get_session_for_user.html" } }, { "op": "add", - "path": "/paths/~1org~1members~1{user_id}/get/x-python", + "path": "/paths/~1ws~1executor~1term/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import get_org_member\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, OrgMember\nfrom kittycad.models.uuid import Uuid\nfrom kittycad.types import Response\n\n\ndef example_get_org_member():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[OrgMember, Error]] = get_org_member.sync(\n client=client,\n user_id=Uuid(\"\"),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: OrgMember = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.get_org_member.html" + "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\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.zoo.dev/_autosummary/kittycad.api.executor.create_executor_term.html" } }, { "op": "add", - "path": "/paths/~1org~1members~1{user_id}/put/x-python", + "path": "/paths/~1users~1{id}~1payment~1subscriptions/put/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import update_org_member\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, OrgMember\nfrom kittycad.models.update_member_to_org_body import UpdateMemberToOrgBody\nfrom kittycad.models.user_org_role import UserOrgRole\nfrom kittycad.models.uuid import Uuid\nfrom kittycad.types import Response\n\n\ndef example_update_org_member():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[OrgMember, Error]] = update_org_member.sync(\n client=client,\n user_id=Uuid(\"\"),\n body=UpdateMemberToOrgBody(\n role=UserOrgRole.ADMIN,\n ),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: OrgMember = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.update_org_member.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import update_subscription_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ZooProductSubscriptions\nfrom kittycad.models.modeling_app_individual_subscription_tier import (\n ModelingAppIndividualSubscriptionTier,\n)\nfrom kittycad.models.user_identifier import UserIdentifier\nfrom kittycad.models.zoo_product_subscriptions_user_request import (\n ZooProductSubscriptionsUserRequest,\n)\nfrom kittycad.types import Response\n\n\ndef example_update_subscription_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ZooProductSubscriptions, Error]] = (\n update_subscription_for_user.sync(\n client=client,\n id=UserIdentifier(\"\"),\n body=ZooProductSubscriptionsUserRequest(\n modeling_app=ModelingAppIndividualSubscriptionTier.FREE,\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ZooProductSubscriptions = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.update_subscription_for_user.html" } }, { "op": "add", - "path": "/paths/~1auth~1saml~1org~1{org_id}~1login/get/x-python", + "path": "/paths/~1orgs/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.hidden import get_auth_saml_by_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.uuid import Uuid\nfrom kittycad.types import Response\n\n\ndef example_get_auth_saml_by_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = get_auth_saml_by_org.sync(\n client=client,\n org_id=Uuid(\"\"),\n callback_url=None, # Optional[str]\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.hidden.get_auth_saml_by_org.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import list_orgs\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, OrgResultsPage\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_list_orgs():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[OrgResultsPage, Error]] = list_orgs.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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: OrgResultsPage = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.list_orgs.html" } }, { "op": "add", - "path": "/paths/~1unit~1conversion~1angle~1{input_unit}~1{output_unit}/get/x-python", + "path": "/paths/~1org~1service-accounts~1{token}/get/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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitAngleConversion = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.unit.get_angle_unit_conversion.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.service_accounts import get_service_account_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ServiceAccount\nfrom kittycad.models.service_account_uuid import ServiceAccountUuid\nfrom kittycad.types import Response\n\n\ndef example_get_service_account_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ServiceAccount, Error]] = (\n get_service_account_for_org.sync(\n client=client,\n token=ServiceAccountUuid(\"\"),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ServiceAccount = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.service_accounts.get_service_account_for_org.html" } }, { "op": "add", - "path": "/paths/~1debug~1uploads/post/x-python", + "path": "/paths/~1org~1service-accounts~1{token}/delete/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.meta import create_debug_uploads\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_create_debug_uploads():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[List[str], Error]] = create_debug_uploads.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: List[str] = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.meta.create_debug_uploads.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.service_accounts import delete_service_account_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.service_account_uuid import ServiceAccountUuid\nfrom kittycad.types import Response\n\n\ndef example_delete_service_account_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = delete_service_account_for_org.sync(\n client=client,\n token=ServiceAccountUuid(\"\"),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.service_accounts.delete_service_account_for_org.html" } }, { "op": "add", - "path": "/paths/~1user~1privacy/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.users import get_user_privacy_settings\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_get_user_privacy_settings():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[PrivacySettings, Error]] = (\n get_user_privacy_settings.sync(\n client=client,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: PrivacySettings = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.get_user_privacy_settings.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.models.user_identifier import UserIdentifier\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=UserIdentifier(\"\"),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: User = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.get_user.html" } }, { "op": "add", - "path": "/paths/~1user~1privacy/put/x-python", + "path": "/paths/~1users~1{id}~1api-calls/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import update_user_privacy_settings\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.privacy_settings import PrivacySettings\nfrom kittycad.types import Response\n\n\ndef example_update_user_privacy_settings():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[PrivacySettings, Error]] = (\n update_user_privacy_settings.sync(\n client=client,\n body=PrivacySettings(\n can_train_on_data=False,\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: PrivacySettings = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.update_user_privacy_settings.html" + "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.models.user_identifier import UserIdentifier\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[Union[ApiCallWithPriceResultsPage, Error]] = (\n list_api_calls_for_user.sync(\n client=client,\n id=UserIdentifier(\"\"),\n sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING,\n limit=None, # Optional[int]\n page_token=None, # Optional[str]\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiCallWithPriceResultsPage = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.api_calls.list_api_calls_for_user.html" } }, { "op": "add", - "path": "/paths/~1unit~1conversion~1torque~1{input_unit}~1{output_unit}/get/x-python", + "path": "/paths/~1org~1privacy/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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitTorqueConversion = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.unit.get_torque_unit_conversion.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import get_org_privacy_settings\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_get_org_privacy_settings():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[PrivacySettings, Error]] = (\n get_org_privacy_settings.sync(\n client=client,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: PrivacySettings = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.get_org_privacy_settings.html" } }, { "op": "add", - "path": "/paths/~1async~1operations/get/x-python", + "path": "/paths/~1org~1privacy/put/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.api_calls import list_async_operations\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import AsyncApiCallResultsPage, Error\nfrom kittycad.models.api_call_status import ApiCallStatus\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_list_async_operations():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[AsyncApiCallResultsPage, Error]] = (\n list_async_operations.sync(\n client=client,\n sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING,\n status=ApiCallStatus.QUEUED,\n limit=None, # Optional[int]\n page_token=None, # Optional[str]\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: AsyncApiCallResultsPage = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.api_calls.list_async_operations.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import update_org_privacy_settings\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.privacy_settings import PrivacySettings\nfrom kittycad.types import Response\n\n\ndef example_update_org_privacy_settings():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[PrivacySettings, Error]] = (\n update_org_privacy_settings.sync(\n client=client,\n body=PrivacySettings(\n can_train_on_data=False,\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: PrivacySettings = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.update_org_privacy_settings.html" } }, { "op": "add", - "path": "/paths/~1user~1payment~1tax/get/x-python", + "path": "/paths/~1ws~1modeling~1commands/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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.validate_customer_tax_information_for_user.html" + "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.post_effect_type import PostEffectType\nfrom kittycad.models.web_socket_request import OptionDebug\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 post_effect=PostEffectType.PHOSPHOR,\n show_grid=False,\n unlocked_framerate=False,\n video_res_height=10,\n video_res_width=10,\n webrtc=False,\n api_call_id=None, # Optional[str]\n pool=None, # Optional[str]\n replay=None, # Optional[str]\n ) as websocket:\n\n # Send a message.\n websocket.send(WebSocketRequest(OptionDebug()))\n\n # Get a message.\n message = websocket.recv()\n print(message)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.modeling.modeling_commands_ws.html" } }, { "op": "add", - "path": "/paths/~1orgs~1{id}/get/x-python", + "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.orgs import get_any_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, Org\nfrom kittycad.models.uuid import Uuid\nfrom kittycad.types import Response\n\n\ndef example_get_any_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[Org, Error]] = get_any_org.sync(\n client=client,\n id=Uuid(\"\"),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Org = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.get_any_org.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ml 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 kcl=None, # Optional[bool]\n body=TextToCadCreateBody(\n prompt=\"\",\n ),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: TextToCad = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.ml.create_text_to_cad.html" } }, { "op": "add", - "path": "/paths/~1org~1payment~1tax/get/x-python", + "path": "/paths/~1org~1payment~1subscriptions/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import validate_customer_tax_information_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_validate_customer_tax_information_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = validate_customer_tax_information_for_org.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.validate_customer_tax_information_for_org.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import get_org_subscription\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ZooProductSubscriptions\nfrom kittycad.types import Response\n\n\ndef example_get_org_subscription():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ZooProductSubscriptions, Error]] = (\n get_org_subscription.sync(\n client=client,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ZooProductSubscriptions = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.get_org_subscription.html" } }, { "op": "add", - "path": "/paths/~1unit~1conversion~1force~1{input_unit}~1{output_unit}/get/x-python", + "path": "/paths/~1org~1payment~1subscriptions/post/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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitForceConversion = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.unit.get_force_unit_conversion.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import create_org_subscription\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ZooProductSubscriptions\nfrom kittycad.models.modeling_app_organization_subscription_tier import (\n ModelingAppOrganizationSubscriptionTier,\n)\nfrom kittycad.models.zoo_product_subscriptions_org_request import (\n ZooProductSubscriptionsOrgRequest,\n)\nfrom kittycad.types import Response\n\n\ndef example_create_org_subscription():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ZooProductSubscriptions, Error]] = (\n create_org_subscription.sync(\n client=client,\n body=ZooProductSubscriptionsOrgRequest(\n modeling_app=ModelingAppOrganizationSubscriptionTier.TEAM,\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ZooProductSubscriptions = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.create_org_subscription.html" } }, { "op": "add", - "path": "/paths/~1api-calls/get/x-python", + "path": "/paths/~1org~1payment~1subscriptions/put/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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiCallWithPriceResultsPage = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.api_calls.list_api_calls.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import update_org_subscription\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ZooProductSubscriptions\nfrom kittycad.models.modeling_app_organization_subscription_tier import (\n ModelingAppOrganizationSubscriptionTier,\n)\nfrom kittycad.models.zoo_product_subscriptions_org_request import (\n ZooProductSubscriptionsOrgRequest,\n)\nfrom kittycad.types import Response\n\n\ndef example_update_org_subscription():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ZooProductSubscriptions, Error]] = (\n update_org_subscription.sync(\n client=client,\n body=ZooProductSubscriptionsOrgRequest(\n modeling_app=ModelingAppOrganizationSubscriptionTier.TEAM,\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ZooProductSubscriptions = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.update_org_subscription.html" } }, { "op": "add", - "path": "/paths/~1org~1api-calls/get/x-python", + "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.api_calls import org_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_org_list_api_calls():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ApiCallWithPriceResultsPage, Error]] = (\n org_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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiCallWithPriceResultsPage = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.api_calls.org_list_api_calls.html" + "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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitPowerConversion = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.unit.get_power_unit_conversion.html" + } + }, + { + "op": "add", + "path": "/paths/~1website~1form/put/x-python", + "value": { + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import put_public_form\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.inquiry_form import InquiryForm\nfrom kittycad.models.inquiry_type import InquiryType\nfrom kittycad.types import Response\n\n\ndef example_put_public_form():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = put_public_form.sync(\n client=client,\n body=InquiryForm(\n email=\"\",\n first_name=\"\",\n inquiry_type=InquiryType.GENERAL_INQUIRY,\n last_name=\"\",\n message=\"\",\n ),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.put_public_form.html" } }, { "op": "add", - "path": "/paths/~1apps~1github~1consent/get/x-python", + "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.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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: AppClientInfo = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.apps.apps_github_consent.html" + "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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitMassConversion = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.unit.get_mass_unit_conversion.html" } }, { "op": "add", - "path": "/paths/~1auth~1email/post/x-python", + "path": "/paths/~1org~1payment~1intent/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, VerificationTokenResponse\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[VerificationTokenResponse, Error]] = auth_email.sync(\n client=client,\n body=EmailAuthenticationForm(\n email=\"\",\n ),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: VerificationTokenResponse = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.hidden.auth_email.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import create_payment_intent_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, PaymentIntent\nfrom kittycad.types import Response\n\n\ndef example_create_payment_intent_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[PaymentIntent, Error]] = (\n create_payment_intent_for_org.sync(\n client=client,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: PaymentIntent = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.create_payment_intent_for_org.html" } }, { "op": "add", - "path": "/paths/~1user~1payment~1methods/get/x-python", + "path": "/paths/~1user~1payment~1tax/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[Union[List[PaymentMethod], Error]] = (\n list_payment_methods_for_user.sync(\n client=client,\n )\n )\n\n if isinstance(result, Error) or result is 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.zoo.dev/_autosummary/kittycad.api.payments.list_payment_methods_for_user.html" + "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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.validate_customer_tax_information_for_user.html" } }, { @@ -473,466 +489,466 @@ }, { "op": "add", - "path": "/paths/~1user~1session~1{token}/get/x-python", + "path": "/paths/~1user~1api-calls~1{id}/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import get_session_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, Session\nfrom kittycad.models.session_uuid import SessionUuid\nfrom kittycad.types import Response\n\n\ndef example_get_session_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[Session, Error]] = get_session_for_user.sync(\n client=client,\n token=SessionUuid(\"\"),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Session = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.get_session_for_user.html" + "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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiCallWithPrice = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.api_calls.get_api_call_for_user.html" } }, { "op": "add", - "path": "/paths/~1unit~1conversion~1temperature~1{input_unit}~1{output_unit}/get/x-python", + "path": "/paths/~1org~1api-calls~1{id}/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.unit import get_temperature_unit_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UnitTemperatureConversion\nfrom kittycad.models.unit_temperature import UnitTemperature\nfrom kittycad.types import Response\n\n\ndef example_get_temperature_unit_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[UnitTemperatureConversion, Error]] = (\n get_temperature_unit_conversion.sync(\n client=client,\n input_unit=UnitTemperature.CELSIUS,\n output_unit=UnitTemperature.CELSIUS,\n value=3.14,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitTemperatureConversion = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.unit.get_temperature_unit_conversion.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.api_calls import get_api_call_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import ApiCallWithPrice, Error\nfrom kittycad.types import Response\n\n\ndef example_get_api_call_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ApiCallWithPrice, Error]] = get_api_call_for_org.sync(\n client=client,\n id=\"\",\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiCallWithPrice = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.api_calls.get_api_call_for_org.html" } }, { "op": "add", - "path": "/paths/~1orgs~1{id}~1enterprise~1pricing/put/x-python", + "path": "/paths/~1user~1crm/patch/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import update_enterprise_pricing_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ZooProductSubscriptions\nfrom kittycad.models.enterprise_subscription_tier_price import (\n EnterpriseSubscriptionTierPrice,\n OptionFlat,\n)\nfrom kittycad.models.plan_interval import PlanInterval\nfrom kittycad.models.uuid import Uuid\nfrom kittycad.types import Response\n\n\ndef example_update_enterprise_pricing_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ZooProductSubscriptions, Error]] = (\n update_enterprise_pricing_for_org.sync(\n client=client,\n id=Uuid(\"\"),\n body=EnterpriseSubscriptionTierPrice(\n OptionFlat(\n interval=PlanInterval.DAY,\n price=3.14,\n )\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ZooProductSubscriptions = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.update_enterprise_pricing_for_org.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import patch_user_crm\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.crm_data import CrmData\nfrom kittycad.types import Response\n\n\ndef example_patch_user_crm():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = patch_user_crm.sync(\n client=client,\n body=CrmData(),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.patch_user_crm.html" } }, { "op": "add", - "path": "/paths/~1file~1mass/post/x-python", + "path": "/paths/~1user~1payment~1subscriptions/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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: FileMass = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.file.create_file_mass.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import get_user_subscription\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ZooProductSubscriptions\nfrom kittycad.types import Response\n\n\ndef example_get_user_subscription():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ZooProductSubscriptions, Error]] = (\n get_user_subscription.sync(\n client=client,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ZooProductSubscriptions = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.get_user_subscription.html" } }, { "op": "add", - "path": "/paths/~1user~1oauth2~1providers/get/x-python", + "path": "/paths/~1user~1payment~1subscriptions/post/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import get_oauth2_providers_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import AccountProvider, Error\nfrom kittycad.types import Response\n\n\ndef example_get_oauth2_providers_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[List[AccountProvider], Error]] = (\n get_oauth2_providers_for_user.sync(\n client=client,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: List[AccountProvider] = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.get_oauth2_providers_for_user.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import create_user_subscription\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ZooProductSubscriptions\nfrom kittycad.models.modeling_app_individual_subscription_tier import (\n ModelingAppIndividualSubscriptionTier,\n)\nfrom kittycad.models.zoo_product_subscriptions_user_request import (\n ZooProductSubscriptionsUserRequest,\n)\nfrom kittycad.types import Response\n\n\ndef example_create_user_subscription():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ZooProductSubscriptions, Error]] = (\n create_user_subscription.sync(\n client=client,\n body=ZooProductSubscriptionsUserRequest(\n modeling_app=ModelingAppIndividualSubscriptionTier.FREE,\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ZooProductSubscriptions = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.create_user_subscription.html" } }, { "op": "add", - "path": "/paths/~1ml~1text-to-cad~1iteration/post/x-python", + "path": "/paths/~1user~1payment~1subscriptions/put/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ml import create_text_to_cad_iteration\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, TextToCadIteration\nfrom kittycad.models.source_position import SourcePosition\nfrom kittycad.models.source_range import SourceRange\nfrom kittycad.models.source_range_prompt import SourceRangePrompt\nfrom kittycad.models.text_to_cad_iteration_body import TextToCadIterationBody\nfrom kittycad.types import Response\n\n\ndef example_create_text_to_cad_iteration():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[TextToCadIteration, Error]] = (\n create_text_to_cad_iteration.sync(\n client=client,\n body=TextToCadIterationBody(\n original_source_code=\"\",\n source_ranges=[\n SourceRangePrompt(\n prompt=\"\",\n range=SourceRange(\n end=SourcePosition(\n column=10,\n line=10,\n ),\n start=SourcePosition(\n column=10,\n line=10,\n ),\n ),\n )\n ],\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: TextToCadIteration = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.ml.create_text_to_cad_iteration.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import update_user_subscription\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ZooProductSubscriptions\nfrom kittycad.models.modeling_app_individual_subscription_tier import (\n ModelingAppIndividualSubscriptionTier,\n)\nfrom kittycad.models.zoo_product_subscriptions_user_request import (\n ZooProductSubscriptionsUserRequest,\n)\nfrom kittycad.types import Response\n\n\ndef example_update_user_subscription():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ZooProductSubscriptions, Error]] = (\n update_user_subscription.sync(\n client=client,\n body=ZooProductSubscriptionsUserRequest(\n modeling_app=ModelingAppIndividualSubscriptionTier.FREE,\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ZooProductSubscriptions = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.update_user_subscription.html" } }, { "op": "add", - "path": "/paths/~1org~1service-accounts/post/x-python", + "path": "/paths/~1apps~1github~1webhook/post/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.service_accounts import create_service_account_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ServiceAccount\nfrom kittycad.types import Response\n\n\ndef example_create_service_account_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ServiceAccount, Error]] = (\n create_service_account_for_org.sync(\n client=client,\n label=None, # Optional[str]\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ServiceAccount = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.service_accounts.create_service_account_for_org.html" + "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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.apps.apps_github_webhook.html" } }, { "op": "add", - "path": "/paths/~1org~1service-accounts/get/x-python", + "path": "/paths/~1file~1volume/post/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.service_accounts import list_service_accounts_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ServiceAccountResultsPage\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_list_service_accounts_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ServiceAccountResultsPage, Error]] = (\n list_service_accounts_for_org.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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ServiceAccountResultsPage = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.service_accounts.list_service_accounts_for_org.html" + "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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: FileVolume = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.file.create_file_volume.html" } }, { "op": "add", - "path": "/paths/~1store~1coupon/post/x-python", + "path": "/paths/~1auth~1email/post/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.store import create_store_coupon\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import DiscountCode, Error\nfrom kittycad.models.store_coupon_params import StoreCouponParams\nfrom kittycad.types import Response\n\n\ndef example_create_store_coupon():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[DiscountCode, Error]] = create_store_coupon.sync(\n client=client,\n body=StoreCouponParams(\n percent_off=10,\n ),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: DiscountCode = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.store.create_store_coupon.html" + "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, VerificationTokenResponse\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[VerificationTokenResponse, Error]] = auth_email.sync(\n client=client,\n body=EmailAuthenticationForm(\n email=\"\",\n ),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: VerificationTokenResponse = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.hidden.auth_email.html" } }, { "op": "add", - "path": "/paths/~1ws~1executor~1term/get/x-python", + "path": "/paths/~1user~1api-calls/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\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.zoo.dev/_autosummary/kittycad.api.executor.create_executor_term.html" + "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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiCallWithPriceResultsPage = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.api_calls.user_list_api_calls.html" } }, { "op": "add", - "path": "/paths/~1org~1service-accounts~1{token}/delete/x-python", + "path": "/paths/~1user~1form/put/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.service_accounts import delete_service_account_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.service_account_uuid import ServiceAccountUuid\nfrom kittycad.types import Response\n\n\ndef example_delete_service_account_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = delete_service_account_for_org.sync(\n client=client,\n token=ServiceAccountUuid(\"\"),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.service_accounts.delete_service_account_for_org.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import put_user_form_self\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.inquiry_form import InquiryForm\nfrom kittycad.models.inquiry_type import InquiryType\nfrom kittycad.types import Response\n\n\ndef example_put_user_form_self():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = put_user_form_self.sync(\n client=client,\n body=InquiryForm(\n email=\"\",\n first_name=\"\",\n inquiry_type=InquiryType.GENERAL_INQUIRY,\n last_name=\"\",\n message=\"\",\n ),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.put_user_form_self.html" } }, { "op": "add", - "path": "/paths/~1org~1service-accounts~1{token}/get/x-python", + "path": "/paths/~1auth~1saml~1provider~1{provider_id}~1login/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.service_accounts import get_service_account_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ServiceAccount\nfrom kittycad.models.service_account_uuid import ServiceAccountUuid\nfrom kittycad.types import Response\n\n\ndef example_get_service_account_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ServiceAccount, Error]] = (\n get_service_account_for_org.sync(\n client=client,\n token=ServiceAccountUuid(\"\"),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ServiceAccount = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.service_accounts.get_service_account_for_org.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.hidden import get_auth_saml\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.uuid import Uuid\nfrom kittycad.types import Response\n\n\ndef example_get_auth_saml():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = get_auth_saml.sync(\n client=client,\n provider_id=Uuid(\"\"),\n callback_url=None, # Optional[str]\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.hidden.get_auth_saml.html" } }, { "op": "add", - "path": "/paths/~1user~1api-tokens~1{token}/delete/x-python", + "path": "/paths/~1auth~1saml~1provider~1{provider_id}~1login/post/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.api_tokens import delete_api_token_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.api_token_uuid import ApiTokenUuid\nfrom kittycad.types import Response\n\n\ndef example_delete_api_token_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = delete_api_token_for_user.sync(\n client=client,\n token=ApiTokenUuid(\"\"),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.api_tokens.delete_api_token_for_user.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.hidden import post_auth_saml\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.uuid import Uuid\nfrom kittycad.types import Response\n\n\ndef example_post_auth_saml():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = post_auth_saml.sync(\n client=client,\n provider_id=Uuid(\"\"),\n body=bytes(\"some bytes\", \"utf-8\"),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.hidden.post_auth_saml.html" } }, { "op": "add", - "path": "/paths/~1user~1api-tokens~1{token}/get/x-python", + "path": "/paths/~1orgs~1{id}~1enterprise~1pricing/put/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.api_tokens import get_api_token_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import ApiToken, Error\nfrom kittycad.models.api_token_uuid import ApiTokenUuid\nfrom kittycad.types import Response\n\n\ndef example_get_api_token_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ApiToken, Error]] = get_api_token_for_user.sync(\n client=client,\n token=ApiTokenUuid(\"\"),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiToken = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.api_tokens.get_api_token_for_user.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import update_enterprise_pricing_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ZooProductSubscriptions\nfrom kittycad.models.enterprise_subscription_tier_price import (\n EnterpriseSubscriptionTierPrice,\n OptionFlat,\n)\nfrom kittycad.models.plan_interval import PlanInterval\nfrom kittycad.models.uuid import Uuid\nfrom kittycad.types import Response\n\n\ndef example_update_enterprise_pricing_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ZooProductSubscriptions, Error]] = (\n update_enterprise_pricing_for_org.sync(\n client=client,\n id=Uuid(\"\"),\n body=EnterpriseSubscriptionTierPrice(\n OptionFlat(\n interval=PlanInterval.DAY,\n price=3.14,\n )\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ZooProductSubscriptions = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.update_enterprise_pricing_for_org.html" } }, { "op": "add", - "path": "/paths/~1org~1privacy/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.orgs import get_org_privacy_settings\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_get_org_privacy_settings():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[PrivacySettings, Error]] = (\n get_org_privacy_settings.sync(\n client=client,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: PrivacySettings = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.get_org_privacy_settings.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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: CodeOutput = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.executor.create_file_execution.html" } }, { "op": "add", - "path": "/paths/~1org~1privacy/put/x-python", + "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.orgs import update_org_privacy_settings\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.privacy_settings import PrivacySettings\nfrom kittycad.types import Response\n\n\ndef example_update_org_privacy_settings():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[PrivacySettings, Error]] = (\n update_org_privacy_settings.sync(\n client=client,\n body=PrivacySettings(\n can_train_on_data=False,\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: PrivacySettings = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.update_org_privacy_settings.html" + "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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: FileConversion = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.file.create_file_conversion.html" } }, { "op": "add", - "path": "/paths/~1org~1payment~1methods/get/x-python", + "path": "/paths/~1user~1org/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import list_payment_methods_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, PaymentMethod\nfrom kittycad.types import Response\n\n\ndef example_list_payment_methods_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[List[PaymentMethod], Error]] = (\n list_payment_methods_for_org.sync(\n client=client,\n )\n )\n\n if isinstance(result, Error) or result is 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.zoo.dev/_autosummary/kittycad.api.payments.list_payment_methods_for_org.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import get_user_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UserOrgInfo\nfrom kittycad.types import Response\n\n\ndef example_get_user_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[UserOrgInfo, Error]] = get_user_org.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UserOrgInfo = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.get_user_org.html" } }, { "op": "add", - "path": "/paths/~1api-calls~1{id}/get/x-python", + "path": "/paths/~1file~1conversion/post/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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiCallWithPrice = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.api_calls.get_api_call.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.file import create_file_conversion_options\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, FileConversion\nfrom kittycad.models.axis import Axis\nfrom kittycad.models.axis_direction_pair import AxisDirectionPair\nfrom kittycad.models.conversion_params import ConversionParams\nfrom kittycad.models.direction import Direction\nfrom kittycad.models.fbx_storage import FbxStorage\nfrom kittycad.models.input_format3d import InputFormat3d, OptionPly\nfrom kittycad.models.output_format3d import OptionFbx, OutputFormat3d\nfrom kittycad.models.system import System\nfrom kittycad.models.unit_length import UnitLength\nfrom kittycad.types import Response\n\n\ndef example_create_file_conversion_options():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[FileConversion, Error]] = (\n create_file_conversion_options.sync(\n client=client,\n body=ConversionParams(\n output_format=OutputFormat3d(\n OptionFbx(\n storage=FbxStorage.ASCII,\n )\n ),\n src_format=InputFormat3d(\n OptionPly(\n coords=System(\n forward=AxisDirectionPair(\n axis=Axis.Y,\n direction=Direction.POSITIVE,\n ),\n up=AxisDirectionPair(\n axis=Axis.Y,\n direction=Direction.POSITIVE,\n ),\n ),\n units=UnitLength.CM,\n )\n ),\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: FileConversion = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.file.create_file_conversion_options.html" } }, { "op": "add", - "path": "/paths/~1file~1surface-area/post/x-python", + "path": "/paths/~1pricing~1subscriptions/get/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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: FileSurfaceArea = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.file.create_file_surface_area.html" + "example": "from kittycad.api.meta import get_pricing_subscriptions\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.types import Response\n\n\ndef example_get_pricing_subscriptions():\n # Create our client.\n client = ClientFromEnv()\n\n get_pricing_subscriptions.sync(\n client=client,\n )\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.meta.get_pricing_subscriptions.html" } }, { "op": "add", - "path": "/paths/~1logout/post/x-python", + "path": "/paths/~1file~1surface-area/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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.hidden.logout.html" + "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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: FileSurfaceArea = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.file.create_file_surface_area.html" } }, { "op": "add", - "path": "/paths/~1orgs/get/x-python", + "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.orgs import list_orgs\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, OrgResultsPage\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_list_orgs():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[OrgResultsPage, Error]] = list_orgs.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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: OrgResultsPage = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.list_orgs.html" + "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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitTorqueConversion = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.unit.get_torque_unit_conversion.html" } }, { "op": "add", - "path": "/paths/~1org~1payment~1intent/post/x-python", + "path": "/paths/~1org~1payment~1methods/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import create_payment_intent_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, PaymentIntent\nfrom kittycad.types import Response\n\n\ndef example_create_payment_intent_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[PaymentIntent, Error]] = (\n create_payment_intent_for_org.sync(\n client=client,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: PaymentIntent = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.create_payment_intent_for_org.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import list_payment_methods_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, PaymentMethod\nfrom kittycad.types import Response\n\n\ndef example_list_payment_methods_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[List[PaymentMethod], Error]] = (\n list_payment_methods_for_org.sync(\n client=client,\n )\n )\n\n if isinstance(result, Error) or result is 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.zoo.dev/_autosummary/kittycad.api.payments.list_payment_methods_for_org.html" } }, { "op": "add", - "path": "/paths/~1unit~1conversion~1volume~1{input_unit}~1{output_unit}/get/x-python", + "path": "/paths/~1ml~1text-to-cad~1iteration/post/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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitVolumeConversion = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.unit.get_volume_unit_conversion.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ml import create_text_to_cad_iteration\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, TextToCadIteration\nfrom kittycad.models.source_position import SourcePosition\nfrom kittycad.models.source_range import SourceRange\nfrom kittycad.models.source_range_prompt import SourceRangePrompt\nfrom kittycad.models.text_to_cad_iteration_body import TextToCadIterationBody\nfrom kittycad.types import Response\n\n\ndef example_create_text_to_cad_iteration():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[TextToCadIteration, Error]] = (\n create_text_to_cad_iteration.sync(\n client=client,\n body=TextToCadIterationBody(\n original_source_code=\"\",\n source_ranges=[\n SourceRangePrompt(\n prompt=\"\",\n range=SourceRange(\n end=SourcePosition(\n column=10,\n line=10,\n ),\n start=SourcePosition(\n column=10,\n line=10,\n ),\n ),\n )\n ],\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: TextToCadIteration = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.ml.create_text_to_cad_iteration.html" } }, { "op": "add", - "path": "/paths/~1org~1payment~1balance/get/x-python", + "path": "/paths/~1unit~1conversion~1temperature~1{input_unit}~1{output_unit}/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import get_payment_balance_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import CustomerBalance, Error\nfrom kittycad.types import Response\n\n\ndef example_get_payment_balance_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[CustomerBalance, Error]] = (\n get_payment_balance_for_org.sync(\n client=client,\n include_total_due=False,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: CustomerBalance = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.get_payment_balance_for_org.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.unit import get_temperature_unit_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UnitTemperatureConversion\nfrom kittycad.models.unit_temperature import UnitTemperature\nfrom kittycad.types import Response\n\n\ndef example_get_temperature_unit_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[UnitTemperatureConversion, Error]] = (\n get_temperature_unit_conversion.sync(\n client=client,\n input_unit=UnitTemperature.CELSIUS,\n output_unit=UnitTemperature.CELSIUS,\n value=3.14,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitTemperatureConversion = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.unit.get_temperature_unit_conversion.html" } }, { "op": "add", - "path": "/paths/~1user~1payment~1subscriptions/post/x-python", + "path": "/paths/~1user~1oauth2~1providers/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import create_user_subscription\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ZooProductSubscriptions\nfrom kittycad.models.modeling_app_individual_subscription_tier import (\n ModelingAppIndividualSubscriptionTier,\n)\nfrom kittycad.models.zoo_product_subscriptions_user_request import (\n ZooProductSubscriptionsUserRequest,\n)\nfrom kittycad.types import Response\n\n\ndef example_create_user_subscription():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ZooProductSubscriptions, Error]] = (\n create_user_subscription.sync(\n client=client,\n body=ZooProductSubscriptionsUserRequest(\n modeling_app=ModelingAppIndividualSubscriptionTier.FREE,\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ZooProductSubscriptions = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.create_user_subscription.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import get_oauth2_providers_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import AccountProvider, Error\nfrom kittycad.types import Response\n\n\ndef example_get_oauth2_providers_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[List[AccountProvider], Error]] = (\n get_oauth2_providers_for_user.sync(\n client=client,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: List[AccountProvider] = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.get_oauth2_providers_for_user.html" } }, { "op": "add", - "path": "/paths/~1user~1payment~1subscriptions/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.payments import get_user_subscription\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ZooProductSubscriptions\nfrom kittycad.types import Response\n\n\ndef example_get_user_subscription():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ZooProductSubscriptions, Error]] = (\n get_user_subscription.sync(\n client=client,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ZooProductSubscriptions = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.get_user_subscription.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ml import get_text_to_cad_model_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, TextToCadResponse\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[Union[TextToCadResponse, Error]] = (\n get_text_to_cad_model_for_user.sync(\n client=client,\n id=\"\",\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: TextToCadResponse = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.ml.get_text_to_cad_model_for_user.html" } }, { "op": "add", - "path": "/paths/~1user~1payment~1subscriptions/put/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.payments import update_user_subscription\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ZooProductSubscriptions\nfrom kittycad.models.modeling_app_individual_subscription_tier import (\n ModelingAppIndividualSubscriptionTier,\n)\nfrom kittycad.models.zoo_product_subscriptions_user_request import (\n ZooProductSubscriptionsUserRequest,\n)\nfrom kittycad.types import Response\n\n\ndef example_update_user_subscription():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ZooProductSubscriptions, Error]] = (\n update_user_subscription.sync(\n client=client,\n body=ZooProductSubscriptionsUserRequest(\n modeling_app=ModelingAppIndividualSubscriptionTier.FREE,\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ZooProductSubscriptions = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.update_user_subscription.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ml import create_text_to_cad_model_feedback\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.ml_feedback import MlFeedback\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=MlFeedback.THUMBS_UP,\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.ml.create_text_to_cad_model_feedback.html" } }, { "op": "add", - "path": "/paths/~1org~1payment~1invoices/get/x-python", + "path": "/paths/~1file~1density/post/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import list_invoices_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, Invoice\nfrom kittycad.types import Response\n\n\ndef example_list_invoices_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[List[Invoice], Error]] = list_invoices_for_org.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result is 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.zoo.dev/_autosummary/kittycad.api.payments.list_invoices_for_org.html" + "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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: FileDensity = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.file.create_file_density.html" } }, { "op": "add", - "path": "/paths/~1users-extended~1{id}/get/x-python", + "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.users import get_user_extended\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ExtendedUser\nfrom kittycad.models.user_identifier import UserIdentifier\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=UserIdentifier(\"\"),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ExtendedUser = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.get_user_extended.html" + "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[Union[ApiToken, Error]] = (\n internal_get_api_token_for_discord_user.sync(\n client=client,\n discord_id=\"\",\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiToken = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.meta.internal_get_api_token_for_discord_user.html" } }, { "op": "add", - "path": "/paths/~1events/post/x-python", + "path": "/paths/~1orgs~1{id}/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.meta import create_event\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.event import Event, OptionModelingAppEvent\nfrom kittycad.models.modeling_app_event_type import ModelingAppEventType\nfrom kittycad.types import Response\n\n\ndef example_create_event():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = create_event.sync(\n client=client,\n body=Event(\n OptionModelingAppEvent(\n created_at=datetime.datetime.now(),\n event_type=ModelingAppEventType.SUCCESSFUL_COMPILE_BEFORE_CLOSE,\n project_name=\"\",\n source_id=\"\",\n user_id=\"\",\n )\n ),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.meta.create_event.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import get_any_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, Org\nfrom kittycad.models.uuid import Uuid\nfrom kittycad.types import Response\n\n\ndef example_get_any_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[Org, Error]] = get_any_org.sync(\n client=client,\n id=Uuid(\"\"),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Org = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.get_any_org.html" } }, { "op": "add", - "path": "/paths/~1async~1operations~1{id}/get/x-python", + "path": "/paths/~1users/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.api_calls import get_async_operation\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import (\n Error,\n FileCenterOfMass,\n FileConversion,\n FileDensity,\n FileMass,\n FileSurfaceArea,\n FileVolume,\n TextToCad,\n TextToCadIteration,\n TextToCadMultiFileIteration,\n)\nfrom kittycad.types import Response\n\n\ndef example_get_async_operation():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[\n FileConversion,\n FileCenterOfMass,\n FileMass,\n FileVolume,\n FileDensity,\n FileSurfaceArea,\n TextToCad,\n TextToCadIteration,\n TextToCadMultiFileIteration,\n Error,\n ]\n ] = get_async_operation.sync(\n client=client,\n id=\"\",\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Union[\n FileConversion,\n FileCenterOfMass,\n FileMass,\n FileVolume,\n FileDensity,\n FileSurfaceArea,\n TextToCad,\n TextToCadIteration,\n TextToCadMultiFileIteration,\n ] = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.api_calls.get_async_operation.html" + "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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UserResultsPage = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.list_users.html" } }, { "op": "add", - "path": "/paths/~1user~1shortlinks~1{key}/delete/x-python", + "path": "/paths/~1ws~1ml~1reasoning~1{id}/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import delete_user_shortlink\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_delete_user_shortlink():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = delete_user_shortlink.sync(\n client=client,\n key=\"\",\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.delete_user_shortlink.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ml import ml_reasoning_ws\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, MlCopilotClientMessage, MlCopilotServerMessage\nfrom kittycad.models.ml_copilot_client_message import OptionHeaders\nfrom kittycad.types import Response\n\n\ndef example_ml_reasoning_ws():\n # Create our client.\n client = ClientFromEnv()\n\n # Connect to the websocket.\n with ml_reasoning_ws.WebSocket(\n client=client,\n id=\"\",\n ) as websocket:\n\n # Send a message.\n websocket.send(\n MlCopilotClientMessage(\n OptionHeaders(\n headers={\"\": \"\"},\n )\n )\n )\n\n # Get a message.\n message = websocket.recv()\n print(message)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.ml.ml_reasoning_ws.html" } }, { "op": "add", - "path": "/paths/~1user~1shortlinks~1{key}/get/x-python", + "path": "/paths/~1user~1payment/post/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.hidden import redirect_user_shortlink\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_redirect_user_shortlink():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = redirect_user_shortlink.sync(\n client=client,\n key=\"\",\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.hidden.redirect_user_shortlink.html" + "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[Union[Customer, Error]] = (\n create_payment_information_for_user.sync(\n client=client,\n body=BillingInfo(\n name=\"\",\n phone=\"\",\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Customer = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.create_payment_information_for_user.html" } }, { "op": "add", - "path": "/paths/~1user~1shortlinks~1{key}/put/x-python", + "path": "/paths/~1user~1payment/put/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import update_user_shortlink\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.update_shortlink_request import UpdateShortlinkRequest\nfrom kittycad.types import Response\n\n\ndef example_update_user_shortlink():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = update_user_shortlink.sync(\n client=client,\n key=\"\",\n body=UpdateShortlinkRequest(\n restrict_to_org=False,\n ),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.update_user_shortlink.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[Union[Customer, Error]] = (\n update_payment_information_for_user.sync(\n client=client,\n body=BillingInfo(\n name=\"\",\n phone=\"\",\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Customer = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.update_payment_information_for_user.html" } }, { "op": "add", - "path": "/paths/~1users/get/x-python", + "path": "/paths/~1user~1payment/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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UserResultsPage = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.list_users.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[Union[Customer, Error]] = (\n get_payment_information_for_user.sync(\n client=client,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Customer = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.get_payment_information_for_user.html" } }, { "op": "add", - "path": "/paths/~1unit~1conversion~1power~1{input_unit}~1{output_unit}/get/x-python", + "path": "/paths/~1user~1payment/delete/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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitPowerConversion = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.unit.get_power_unit_conversion.html" + "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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.delete_payment_information_for_user.html" } }, { "op": "add", - "path": "/paths/~1auth~1api-key/post/x-python", + "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.hidden import auth_api_key\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import AuthApiKeyResponse, Error\nfrom kittycad.types import Response\n\n\ndef example_auth_api_key():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[AuthApiKeyResponse, Error]] = auth_api_key.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: AuthApiKeyResponse = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.hidden.auth_api_key.html" + "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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitVolumeConversion = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.unit.get_volume_unit_conversion.html" } }, { "op": "add", - "path": "/paths/~1users~1{id}~1payment~1balance/get/x-python", + "path": "/paths/~1user~1payment~1intent/post/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import get_payment_balance_for_any_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import CustomerBalance, Error\nfrom kittycad.models.user_identifier import UserIdentifier\nfrom kittycad.types import Response\n\n\ndef example_get_payment_balance_for_any_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[CustomerBalance, Error]] = (\n get_payment_balance_for_any_user.sync(\n client=client,\n id=UserIdentifier(\"\"),\n include_total_due=False,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: CustomerBalance = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.get_payment_balance_for_any_user.html" + "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[Union[PaymentIntent, Error]] = (\n create_payment_intent_for_user.sync(\n client=client,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: PaymentIntent = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.create_payment_intent_for_user.html" } }, { "op": "add", - "path": "/paths/~1users~1{id}~1payment~1balance/put/x-python", + "path": "/paths/~1ml~1kcl~1completions/post/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import update_payment_balance_for_any_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import CustomerBalance, Error\nfrom kittycad.models.update_payment_balance import UpdatePaymentBalance\nfrom kittycad.models.user_identifier import UserIdentifier\nfrom kittycad.types import Response\n\n\ndef example_update_payment_balance_for_any_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[CustomerBalance, Error]] = (\n update_payment_balance_for_any_user.sync(\n client=client,\n id=UserIdentifier(\"\"),\n include_total_due=False,\n body=UpdatePaymentBalance(),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: CustomerBalance = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.update_payment_balance_for_any_user.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ml import create_kcl_code_completions\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, KclCodeCompletionResponse\nfrom kittycad.models.kcl_code_completion_params import KclCodeCompletionParams\nfrom kittycad.models.kcl_code_completion_request import KclCodeCompletionRequest\nfrom kittycad.types import Response\n\n\ndef example_create_kcl_code_completions():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[KclCodeCompletionResponse, Error]] = (\n create_kcl_code_completions.sync(\n client=client,\n body=KclCodeCompletionRequest(\n extra=KclCodeCompletionParams(\n language=\"\",\n trim_by_indentation=False,\n ),\n prompt=\"\",\n stop=[\"\"],\n stream=False,\n suffix=\"\",\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: KclCodeCompletionResponse = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.ml.create_kcl_code_completions.html" } }, { "op": "add", - "path": "/paths/~1user~1payment/post/x-python", + "path": "/paths/~1users~1{id}~1payment~1balance/get/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[Union[Customer, Error]] = (\n create_payment_information_for_user.sync(\n client=client,\n body=BillingInfo(\n name=\"\",\n phone=\"\",\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Customer = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.create_payment_information_for_user.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import get_payment_balance_for_any_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import CustomerBalance, Error\nfrom kittycad.models.user_identifier import UserIdentifier\nfrom kittycad.types import Response\n\n\ndef example_get_payment_balance_for_any_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[CustomerBalance, Error]] = (\n get_payment_balance_for_any_user.sync(\n client=client,\n id=UserIdentifier(\"\"),\n include_total_due=False,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: CustomerBalance = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.get_payment_balance_for_any_user.html" } }, { "op": "add", - "path": "/paths/~1user~1payment/delete/x-python", + "path": "/paths/~1users~1{id}~1payment~1balance/put/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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.delete_payment_information_for_user.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import update_payment_balance_for_any_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import CustomerBalance, Error\nfrom kittycad.models.update_payment_balance import UpdatePaymentBalance\nfrom kittycad.models.user_identifier import UserIdentifier\nfrom kittycad.types import Response\n\n\ndef example_update_payment_balance_for_any_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[CustomerBalance, Error]] = (\n update_payment_balance_for_any_user.sync(\n client=client,\n id=UserIdentifier(\"\"),\n include_total_due=False,\n body=UpdatePaymentBalance(),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: CustomerBalance = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.update_payment_balance_for_any_user.html" } }, { "op": "add", - "path": "/paths/~1user~1payment/put/x-python", + "path": "/paths/~1async~1operations~1{id}/get/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[Union[Customer, Error]] = (\n update_payment_information_for_user.sync(\n client=client,\n body=BillingInfo(\n name=\"\",\n phone=\"\",\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Customer = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.update_payment_information_for_user.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.api_calls import get_async_operation\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import (\n Error,\n FileCenterOfMass,\n FileConversion,\n FileDensity,\n FileMass,\n FileSurfaceArea,\n FileVolume,\n TextToCad,\n TextToCadIteration,\n TextToCadMultiFileIteration,\n)\nfrom kittycad.types import Response\n\n\ndef example_get_async_operation():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[\n Union[\n FileConversion,\n FileCenterOfMass,\n FileMass,\n FileVolume,\n FileDensity,\n FileSurfaceArea,\n TextToCad,\n TextToCadIteration,\n TextToCadMultiFileIteration,\n Error,\n ]\n ] = get_async_operation.sync(\n client=client,\n id=\"\",\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Union[\n FileConversion,\n FileCenterOfMass,\n FileMass,\n FileVolume,\n FileDensity,\n FileSurfaceArea,\n TextToCad,\n TextToCadIteration,\n TextToCadMultiFileIteration,\n ] = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.api_calls.get_async_operation.html" } }, { "op": "add", - "path": "/paths/~1user~1payment/get/x-python", + "path": "/paths/~1org~1payment~1invoices/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[Union[Customer, Error]] = (\n get_payment_information_for_user.sync(\n client=client,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Customer = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.get_payment_information_for_user.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import list_invoices_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, Invoice\nfrom kittycad.types import Response\n\n\ndef example_list_invoices_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[List[Invoice], Error]] = list_invoices_for_org.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result is 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.zoo.dev/_autosummary/kittycad.api.payments.list_invoices_for_org.html" } }, { "op": "add", - "path": "/paths/~1orgs~1{id}~1payment~1balance/get/x-python", + "path": "/paths/~1org~1api-calls/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import get_payment_balance_for_any_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import CustomerBalance, Error\nfrom kittycad.models.uuid import Uuid\nfrom kittycad.types import Response\n\n\ndef example_get_payment_balance_for_any_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[CustomerBalance, Error]] = (\n get_payment_balance_for_any_org.sync(\n client=client,\n include_total_due=False,\n id=Uuid(\"\"),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: CustomerBalance = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.get_payment_balance_for_any_org.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.api_calls import org_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_org_list_api_calls():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ApiCallWithPriceResultsPage, Error]] = (\n org_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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiCallWithPriceResultsPage = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.api_calls.org_list_api_calls.html" } }, { "op": "add", - "path": "/paths/~1orgs~1{id}~1payment~1balance/put/x-python", + "path": "/paths/~1org~1payment~1methods~1{id}/delete/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import update_payment_balance_for_any_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import CustomerBalance, Error\nfrom kittycad.models.update_payment_balance import UpdatePaymentBalance\nfrom kittycad.models.uuid import Uuid\nfrom kittycad.types import Response\n\n\ndef example_update_payment_balance_for_any_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[CustomerBalance, Error]] = (\n update_payment_balance_for_any_org.sync(\n client=client,\n id=Uuid(\"\"),\n include_total_due=False,\n body=UpdatePaymentBalance(),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: CustomerBalance = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.update_payment_balance_for_any_org.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import delete_payment_method_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_delete_payment_method_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = delete_payment_method_for_org.sync(\n client=client,\n id=\"\",\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.delete_payment_method_for_org.html" } }, { "op": "add", - "path": "/paths/~1user~1payment~1intent/post/x-python", + "path": "/paths/~1auth~1email~1callback/get/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[Union[PaymentIntent, Error]] = (\n create_payment_intent_for_user.sync(\n client=client,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: PaymentIntent = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.create_payment_intent_for_user.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.hidden import auth_email_callback\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_auth_email_callback():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = auth_email_callback.sync(\n client=client,\n email=\"\",\n token=\"\",\n callback_url=None, # Optional[str]\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.hidden.auth_email_callback.html" } }, { "op": "add", - "path": "/paths/~1org~1shortlinks/get/x-python", + "path": "/paths/~1user~1payment~1methods~1{id}/delete/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import get_org_shortlinks\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ShortlinkResultsPage\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_get_org_shortlinks():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ShortlinkResultsPage, Error]] = (\n get_org_shortlinks.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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ShortlinkResultsPage = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.get_org_shortlinks.html" + "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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.delete_payment_method_for_user.html" } }, { "op": "add", - "path": "/paths/~1unit~1conversion~1energy~1{input_unit}~1{output_unit}/get/x-python", + "path": "/paths/~1apps~1github~1consent/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.unit import get_energy_unit_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UnitEnergyConversion\nfrom kittycad.models.unit_energy import UnitEnergy\nfrom kittycad.types import Response\n\n\ndef example_get_energy_unit_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[UnitEnergyConversion, Error]] = (\n get_energy_unit_conversion.sync(\n client=client,\n input_unit=UnitEnergy.BTU,\n output_unit=UnitEnergy.BTU,\n value=3.14,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitEnergyConversion = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.unit.get_energy_unit_conversion.html" + "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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: AppClientInfo = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.apps.apps_github_consent.html" } }, { "op": "add", - "path": "/paths/~1apps~1github~1callback/get/x-python", + "path": "/paths/~1user~1text-to-cad/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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.apps.apps_github_callback.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ml import list_text_to_cad_models_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, TextToCadResponseResultsPage\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.models.uuid import Uuid\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[Union[TextToCadResponseResultsPage, Error]] = (\n list_text_to_cad_models_for_user.sync(\n client=client,\n sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING,\n conversation_id=Uuid(\"\"),\n limit=None, # Optional[int]\n page_token=None, # Optional[str]\n no_models=None, # Optional[bool]\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: TextToCadResponseResultsPage = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.ml.list_text_to_cad_models_for_user.html" } }, { "op": "add", - "path": "/paths/~1file~1execute~1{lang}/post/x-python", + "path": "/paths/~1user~1payment~1balance/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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: CodeOutput = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.executor.create_file_execution.html" + "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[Union[CustomerBalance, Error]] = (\n get_payment_balance_for_user.sync(\n client=client,\n include_total_due=False,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: CustomerBalance = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.get_payment_balance_for_user.html" } }, { "op": "add", - "path": "/paths/~1ai~1text-to-cad~1{output_format}/post/x-python", + "path": "/paths/~1community~1sso/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ml 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 kcl=None, # Optional[bool]\n body=TextToCadCreateBody(\n prompt=\"\",\n ),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: TextToCad = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.ml.create_text_to_cad.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.meta import community_sso\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_community_sso():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = community_sso.sync(\n client=client,\n sig=\"\",\n sso=\"\",\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.meta.community_sso.html" } }, { "op": "add", - "path": "/paths/~1file~1center-of-mass/post/x-python", + "path": "/paths/~1user~1api-tokens~1{token}/get/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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: FileCenterOfMass = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.file.create_file_center_of_mass.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.api_tokens import get_api_token_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import ApiToken, Error\nfrom kittycad.models.api_token_uuid import ApiTokenUuid\nfrom kittycad.types import Response\n\n\ndef example_get_api_token_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ApiToken, Error]] = get_api_token_for_user.sync(\n client=client,\n token=ApiTokenUuid(\"\"),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiToken = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.api_tokens.get_api_token_for_user.html" } }, { "op": "add", - "path": "/paths/~1user~1payment~1methods~1{id}/delete/x-python", + "path": "/paths/~1user~1api-tokens~1{token}/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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.delete_payment_method_for_user.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.api_tokens import delete_api_token_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.api_token_uuid import ApiTokenUuid\nfrom kittycad.types import Response\n\n\ndef example_delete_api_token_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = delete_api_token_for_user.sync(\n client=client,\n token=ApiTokenUuid(\"\"),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.api_tokens.delete_api_token_for_user.html" } }, { "op": "add", - "path": "/paths/~1unit~1conversion~1frequency~1{input_unit}~1{output_unit}/get/x-python", + "path": "/paths/~1user~1shortlinks/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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitFrequencyConversion = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.unit.get_frequency_unit_conversion.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import get_user_shortlinks\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ShortlinkResultsPage\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_get_user_shortlinks():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ShortlinkResultsPage, Error]] = (\n get_user_shortlinks.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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ShortlinkResultsPage = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.get_user_shortlinks.html" } }, { "op": "add", - "path": "/paths/~1org/post/x-python", + "path": "/paths/~1user~1shortlinks/post/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import create_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, Org\nfrom kittycad.models.org_details import OrgDetails\nfrom kittycad.types import Response\n\n\ndef example_create_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[Org, Error]] = create_org.sync(\n client=client,\n body=OrgDetails(\n billing_email=\"\",\n name=\"\",\n phone=\"\",\n ),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Org = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.create_org.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import create_user_shortlink\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import CreateShortlinkResponse, Error\nfrom kittycad.models.create_shortlink_request import CreateShortlinkRequest\nfrom kittycad.types import Response\n\n\ndef example_create_user_shortlink():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[CreateShortlinkResponse, Error]] = (\n create_user_shortlink.sync(\n client=client,\n body=CreateShortlinkRequest(\n restrict_to_org=False,\n url=\"\",\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: CreateShortlinkResponse = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.create_user_shortlink.html" } }, { "op": "add", - "path": "/paths/~1org/delete/x-python", + "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.orgs import delete_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_delete_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = delete_org.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.delete_org.html" + "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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitCurrentConversion = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.unit.get_current_unit_conversion.html" } }, { "op": "add", - "path": "/paths/~1org/put/x-python", + "path": "/paths/~1file~1center-of-mass/post/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import update_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, Org\nfrom kittycad.models.org_details import OrgDetails\nfrom kittycad.types import Response\n\n\ndef example_update_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[Org, Error]] = update_org.sync(\n client=client,\n body=OrgDetails(\n billing_email=\"\",\n name=\"\",\n phone=\"\",\n ),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Org = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.update_org.html" + "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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: FileCenterOfMass = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.file.create_file_center_of_mass.html" } }, { "op": "add", - "path": "/paths/~1org/get/x-python", + "path": "/paths/~1apps~1github~1callback/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import get_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, Org\nfrom kittycad.types import Response\n\n\ndef example_get_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[Org, Error]] = get_org.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Org = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.get_org.html" + "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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.apps.apps_github_callback.html" } }, { @@ -953,194 +969,202 @@ }, { "op": "add", - "path": "/paths/~1users~1{id}/get/x-python", + "path": "/paths/~1org~1service-accounts/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.models.user_identifier import UserIdentifier\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=UserIdentifier(\"\"),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: User = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.get_user.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.service_accounts import list_service_accounts_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ServiceAccountResultsPage\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.types import Response\n\n\ndef example_list_service_accounts_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ServiceAccountResultsPage, Error]] = (\n list_service_accounts_for_org.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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ServiceAccountResultsPage = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.service_accounts.list_service_accounts_for_org.html" } }, { "op": "add", - "path": "/paths/~1users~1{id}~1payment~1subscriptions/put/x-python", + "path": "/paths/~1org~1service-accounts/post/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import update_subscription_for_user\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ZooProductSubscriptions\nfrom kittycad.models.modeling_app_individual_subscription_tier import (\n ModelingAppIndividualSubscriptionTier,\n)\nfrom kittycad.models.user_identifier import UserIdentifier\nfrom kittycad.models.zoo_product_subscriptions_user_request import (\n ZooProductSubscriptionsUserRequest,\n)\nfrom kittycad.types import Response\n\n\ndef example_update_subscription_for_user():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ZooProductSubscriptions, Error]] = (\n update_subscription_for_user.sync(\n client=client,\n id=UserIdentifier(\"\"),\n body=ZooProductSubscriptionsUserRequest(\n modeling_app=ModelingAppIndividualSubscriptionTier.FREE,\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ZooProductSubscriptions = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.update_subscription_for_user.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.service_accounts import create_service_account_for_org\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ServiceAccount\nfrom kittycad.types import Response\n\n\ndef example_create_service_account_for_org():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ServiceAccount, Error]] = (\n create_service_account_for_org.sync(\n client=client,\n label=None, # Optional[str]\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ServiceAccount = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.service_accounts.create_service_account_for_org.html" } }, { "op": "add", - "path": "/paths/~1file~1conversion~1{src_format}~1{output_format}/post/x-python", + "path": "/paths/~1/get/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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: FileConversion = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.file.create_file_conversion.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.zoo.dev/_autosummary/kittycad.api.meta.get_schema.html" } }, { "op": "add", - "path": "/paths/~1ml~1kcl~1completions/post/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.ml import create_kcl_code_completions\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, KclCodeCompletionResponse\nfrom kittycad.models.kcl_code_completion_params import KclCodeCompletionParams\nfrom kittycad.models.kcl_code_completion_request import KclCodeCompletionRequest\nfrom kittycad.types import Response\n\n\ndef example_create_kcl_code_completions():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[KclCodeCompletionResponse, Error]] = (\n create_kcl_code_completions.sync(\n client=client,\n body=KclCodeCompletionRequest(\n extra=KclCodeCompletionParams(\n language=\"\",\n trim_by_indentation=False,\n ),\n prompt=\"\",\n stop=[\"\"],\n stream=False,\n suffix=\"\",\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: KclCodeCompletionResponse = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.ml.create_kcl_code_completions.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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitFrequencyConversion = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.unit.get_frequency_unit_conversion.html" } }, { "op": "add", - "path": "/paths/~1user~1payment~1invoices/get/x-python", + "path": "/paths/~1org~1saml~1idp/post/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 is 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.zoo.dev/_autosummary/kittycad.api.payments.list_invoices_for_user.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import create_org_saml_idp\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, SamlIdentityProvider\nfrom kittycad.models.idp_metadata_source import IdpMetadataSource, OptionUrl\nfrom kittycad.models.saml_identity_provider_create import (\n SamlIdentityProviderCreate,\n)\nfrom kittycad.types import Response\n\n\ndef example_create_org_saml_idp():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[SamlIdentityProvider, Error]] = (\n create_org_saml_idp.sync(\n client=client,\n body=SamlIdentityProviderCreate(\n idp_entity_id=\"\",\n idp_metadata_source=IdpMetadataSource(\n OptionUrl(\n url=\"\",\n )\n ),\n technical_contact_email=\"\",\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: SamlIdentityProvider = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.create_org_saml_idp.html" } }, { "op": "add", - "path": "/paths/~1user/delete/x-python", + "path": "/paths/~1org~1saml~1idp/put/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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.delete_user_self.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import update_org_saml_idp\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, SamlIdentityProvider\nfrom kittycad.models.base64data import Base64Data\nfrom kittycad.models.idp_metadata_source import (\n IdpMetadataSource,\n OptionBase64EncodedXml,\n)\nfrom kittycad.models.saml_identity_provider_create import (\n SamlIdentityProviderCreate,\n)\nfrom kittycad.types import Response\n\n\ndef example_update_org_saml_idp():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[SamlIdentityProvider, Error]] = (\n update_org_saml_idp.sync(\n client=client,\n body=SamlIdentityProviderCreate(\n idp_entity_id=\"\",\n idp_metadata_source=IdpMetadataSource(\n OptionBase64EncodedXml(\n data=Base64Data(b\"\"),\n )\n ),\n technical_contact_email=\"\",\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: SamlIdentityProvider = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.update_org_saml_idp.html" } }, { "op": "add", - "path": "/paths/~1user/get/x-python", + "path": "/paths/~1org~1saml~1idp/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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: User = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.get_user_self.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import get_org_saml_idp\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, SamlIdentityProvider\nfrom kittycad.types import Response\n\n\ndef example_get_org_saml_idp():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[SamlIdentityProvider, Error]] = get_org_saml_idp.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: SamlIdentityProvider = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.get_org_saml_idp.html" } }, { "op": "add", - "path": "/paths/~1user/put/x-python", + "path": "/paths/~1org~1saml~1idp/delete/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 image=\"\",\n last_name=\"\",\n phone=\"\",\n ),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: User = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.update_user_self.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import delete_org_saml_idp\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_delete_org_saml_idp():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = delete_org_saml_idp.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.delete_org_saml_idp.html" } }, { "op": "add", - "path": "/paths/~1file~1volume/post/x-python", + "path": "/paths/~1org~1members/get/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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: FileVolume = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.file.create_file_volume.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import list_org_members\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, OrgMemberResultsPage\nfrom kittycad.models.created_at_sort_mode import CreatedAtSortMode\nfrom kittycad.models.user_org_role import UserOrgRole\nfrom kittycad.types import Response\n\n\ndef example_list_org_members():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[OrgMemberResultsPage, Error]] = list_org_members.sync(\n client=client,\n sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING,\n role=UserOrgRole.ADMIN,\n limit=None, # Optional[int]\n page_token=None, # Optional[str]\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: OrgMemberResultsPage = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.list_org_members.html" } }, { "op": "add", - "path": "/paths/~1user~1api-calls~1{id}/get/x-python", + "path": "/paths/~1org~1members/post/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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiCallWithPrice = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.api_calls.get_api_call_for_user.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import create_org_member\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, OrgMember\nfrom kittycad.models.add_org_member import AddOrgMember\nfrom kittycad.models.user_org_role import UserOrgRole\nfrom kittycad.types import Response\n\n\ndef example_create_org_member():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[OrgMember, Error]] = create_org_member.sync(\n client=client,\n body=AddOrgMember(\n email=\"\",\n role=UserOrgRole.ADMIN,\n ),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: OrgMember = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.create_org_member.html" } }, { "op": "add", - "path": "/paths/~1user~1form/put/x-python", + "path": "/paths/~1org~1members~1{user_id}/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import put_user_form_self\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.inquiry_form import InquiryForm\nfrom kittycad.models.inquiry_type import InquiryType\nfrom kittycad.types import Response\n\n\ndef example_put_user_form_self():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = put_user_form_self.sync(\n client=client,\n body=InquiryForm(\n email=\"\",\n first_name=\"\",\n inquiry_type=InquiryType.GENERAL_INQUIRY,\n last_name=\"\",\n message=\"\",\n ),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.put_user_form_self.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import get_org_member\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, OrgMember\nfrom kittycad.models.uuid import Uuid\nfrom kittycad.types import Response\n\n\ndef example_get_org_member():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[OrgMember, Error]] = get_org_member.sync(\n client=client,\n user_id=Uuid(\"\"),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: OrgMember = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.get_org_member.html" } }, { "op": "add", - "path": "/paths/~1org~1payment~1subscriptions/post/x-python", + "path": "/paths/~1org~1members~1{user_id}/delete/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import create_org_subscription\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ZooProductSubscriptions\nfrom kittycad.models.modeling_app_organization_subscription_tier import (\n ModelingAppOrganizationSubscriptionTier,\n)\nfrom kittycad.models.zoo_product_subscriptions_org_request import (\n ZooProductSubscriptionsOrgRequest,\n)\nfrom kittycad.types import Response\n\n\ndef example_create_org_subscription():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ZooProductSubscriptions, Error]] = (\n create_org_subscription.sync(\n client=client,\n body=ZooProductSubscriptionsOrgRequest(\n modeling_app=ModelingAppOrganizationSubscriptionTier.TEAM,\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ZooProductSubscriptions = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.create_org_subscription.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import delete_org_member\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.uuid import Uuid\nfrom kittycad.types import Response\n\n\ndef example_delete_org_member():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = delete_org_member.sync(\n client=client,\n user_id=Uuid(\"\"),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.delete_org_member.html" } }, { "op": "add", - "path": "/paths/~1org~1payment~1subscriptions/get/x-python", + "path": "/paths/~1org~1members~1{user_id}/put/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import get_org_subscription\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ZooProductSubscriptions\nfrom kittycad.types import Response\n\n\ndef example_get_org_subscription():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ZooProductSubscriptions, Error]] = (\n get_org_subscription.sync(\n client=client,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ZooProductSubscriptions = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.get_org_subscription.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import update_org_member\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, OrgMember\nfrom kittycad.models.update_member_to_org_body import UpdateMemberToOrgBody\nfrom kittycad.models.user_org_role import UserOrgRole\nfrom kittycad.models.uuid import Uuid\nfrom kittycad.types import Response\n\n\ndef example_update_org_member():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[OrgMember, Error]] = update_org_member.sync(\n client=client,\n user_id=Uuid(\"\"),\n body=UpdateMemberToOrgBody(\n role=UserOrgRole.ADMIN,\n ),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: OrgMember = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.update_org_member.html" } }, { "op": "add", - "path": "/paths/~1org~1payment~1subscriptions/put/x-python", + "path": "/paths/~1website~1subscribe/put/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.payments import update_org_subscription\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, ZooProductSubscriptions\nfrom kittycad.models.modeling_app_organization_subscription_tier import (\n ModelingAppOrganizationSubscriptionTier,\n)\nfrom kittycad.models.zoo_product_subscriptions_org_request import (\n ZooProductSubscriptionsOrgRequest,\n)\nfrom kittycad.types import Response\n\n\ndef example_update_org_subscription():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[ZooProductSubscriptions, Error]] = (\n update_org_subscription.sync(\n client=client,\n body=ZooProductSubscriptionsOrgRequest(\n modeling_app=ModelingAppOrganizationSubscriptionTier.TEAM,\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ZooProductSubscriptions = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.update_org_subscription.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import put_public_subscribe\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.subscribe import Subscribe\nfrom kittycad.types import Response\n\n\ndef example_put_public_subscribe():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = put_public_subscribe.sync(\n client=client,\n body=Subscribe(\n email=\"\",\n ),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.put_public_subscribe.html" } }, { "op": "add", - "path": "/paths/~1file~1density/post/x-python", + "path": "/paths/~1user~1extended/get/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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: FileDensity = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.file.create_file_density.html" + "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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ExtendedUser = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.get_user_self_extended.html" } }, { "op": "add", - "path": "/paths/~1user~1text-to-cad/get/x-python", + "path": "/paths/~1ml-prompts~1{id}/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ml 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[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 no_models=None, # Optional[bool]\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: TextToCadResultsPage = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.ml.list_text_to_cad_models_for_user.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ml import get_ml_prompt\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, MlPrompt\nfrom kittycad.types import Response\n\n\ndef example_get_ml_prompt():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[MlPrompt, Error]] = get_ml_prompt.sync(\n client=client,\n id=\"\",\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: MlPrompt = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.ml.get_ml_prompt.html" } }, { "op": "add", - "path": "/paths/~1user~1payment~1balance/get/x-python", + "path": "/paths/~1api-calls/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[Union[CustomerBalance, Error]] = (\n get_payment_balance_for_user.sync(\n client=client,\n include_total_due=False,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: CustomerBalance = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.payments.get_payment_balance_for_user.html" + "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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ApiCallWithPriceResultsPage = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.api_calls.list_api_calls.html" } }, { "op": "add", - "path": "/paths/~1file~1conversion/post/x-python", + "path": "/paths/~1logout/post/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.file import create_file_conversion_options\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, FileConversion\nfrom kittycad.models.axis import Axis\nfrom kittycad.models.axis_direction_pair import AxisDirectionPair\nfrom kittycad.models.conversion_params import ConversionParams\nfrom kittycad.models.direction import Direction\nfrom kittycad.models.input_format3d import InputFormat3d, OptionSldprt\nfrom kittycad.models.output_format3d import OptionStl, OutputFormat3d\nfrom kittycad.models.selection import OptionMeshByIndex, Selection\nfrom kittycad.models.stl_storage import StlStorage\nfrom kittycad.models.system import System\nfrom kittycad.models.unit_length import UnitLength\nfrom kittycad.types import Response\n\n\ndef example_create_file_conversion_options():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[FileConversion, Error]] = (\n create_file_conversion_options.sync(\n client=client,\n body=ConversionParams(\n output_format=OutputFormat3d(\n OptionStl(\n coords=System(\n forward=AxisDirectionPair(\n axis=Axis.Y,\n direction=Direction.POSITIVE,\n ),\n up=AxisDirectionPair(\n axis=Axis.Y,\n direction=Direction.POSITIVE,\n ),\n ),\n selection=Selection(\n OptionMeshByIndex(\n index=10,\n )\n ),\n storage=StlStorage.ASCII,\n units=UnitLength.CM,\n )\n ),\n src_format=InputFormat3d(\n OptionSldprt(\n split_closed_faces=False,\n )\n ),\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: FileConversion = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.file.create_file_conversion_options.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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.hidden.logout.html" } }, { "op": "add", - "path": "/paths/~1org~1saml~1idp/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.orgs import create_org_saml_idp\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, SamlIdentityProvider\nfrom kittycad.models.idp_metadata_source import IdpMetadataSource, OptionUrl\nfrom kittycad.models.saml_identity_provider_create import (\n SamlIdentityProviderCreate,\n)\nfrom kittycad.types import Response\n\n\ndef example_create_org_saml_idp():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[SamlIdentityProvider, Error]] = (\n create_org_saml_idp.sync(\n client=client,\n body=SamlIdentityProviderCreate(\n idp_entity_id=\"\",\n idp_metadata_source=IdpMetadataSource(\n OptionUrl(\n url=\"\",\n )\n ),\n technical_contact_email=\"\",\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: SamlIdentityProvider = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.create_org_saml_idp.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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitAngleConversion = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.unit.get_angle_unit_conversion.html" } }, { "op": "add", - "path": "/paths/~1org~1saml~1idp/delete/x-python", + "path": "/paths/~1ping/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import delete_org_saml_idp\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_delete_org_saml_idp():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = delete_org_saml_idp.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.delete_org_saml_idp.html" + "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 is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Pong = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.meta.ping.html" } }, { "op": "add", - "path": "/paths/~1org~1saml~1idp/put/x-python", + "path": "/paths/~1ml~1text-to-cad~1multi-file~1iteration/post/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import update_org_saml_idp\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, SamlIdentityProvider\nfrom kittycad.models.base64data import Base64Data\nfrom kittycad.models.idp_metadata_source import (\n IdpMetadataSource,\n OptionBase64EncodedXml,\n)\nfrom kittycad.models.saml_identity_provider_create import (\n SamlIdentityProviderCreate,\n)\nfrom kittycad.types import Response\n\n\ndef example_update_org_saml_idp():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[SamlIdentityProvider, Error]] = (\n update_org_saml_idp.sync(\n client=client,\n body=SamlIdentityProviderCreate(\n idp_entity_id=\"\",\n idp_metadata_source=IdpMetadataSource(\n OptionBase64EncodedXml(\n data=Base64Data(b\"\"),\n )\n ),\n technical_contact_email=\"\",\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: SamlIdentityProvider = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.update_org_saml_idp.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.ml import create_text_to_cad_multi_file_iteration\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, TextToCadMultiFileIteration\nfrom kittycad.models.source_position import SourcePosition\nfrom kittycad.models.source_range import SourceRange\nfrom kittycad.models.source_range_prompt import SourceRangePrompt\nfrom kittycad.models.text_to_cad_multi_file_iteration_body import (\n TextToCadMultiFileIterationBody,\n)\nfrom kittycad.types import Response\n\n\ndef example_create_text_to_cad_multi_file_iteration():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[TextToCadMultiFileIteration, Error]] = (\n create_text_to_cad_multi_file_iteration.sync(\n client=client,\n body=TextToCadMultiFileIterationBody(\n source_ranges=[\n SourceRangePrompt(\n prompt=\"\",\n range=SourceRange(\n end=SourcePosition(\n column=10,\n line=10,\n ),\n start=SourcePosition(\n column=10,\n line=10,\n ),\n ),\n )\n ],\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: TextToCadMultiFileIteration = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.ml.create_text_to_cad_multi_file_iteration.html" } }, { "op": "add", - "path": "/paths/~1org~1saml~1idp/get/x-python", + "path": "/paths/~1unit~1conversion~1energy~1{input_unit}~1{output_unit}/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.orgs import get_org_saml_idp\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, SamlIdentityProvider\nfrom kittycad.types import Response\n\n\ndef example_get_org_saml_idp():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[SamlIdentityProvider, Error]] = get_org_saml_idp.sync(\n client=client,\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: SamlIdentityProvider = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.orgs.get_org_saml_idp.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.unit import get_energy_unit_conversion\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error, UnitEnergyConversion\nfrom kittycad.models.unit_energy import UnitEnergy\nfrom kittycad.types import Response\n\n\ndef example_get_energy_unit_conversion():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[UnitEnergyConversion, Error]] = (\n get_energy_unit_conversion.sync(\n client=client,\n input_unit=UnitEnergy.BTU,\n output_unit=UnitEnergy.BTU,\n value=3.14,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: UnitEnergyConversion = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.unit.get_energy_unit_conversion.html" } }, { "op": "add", - "path": "/paths/~1website~1form/put/x-python", + "path": "/paths/~1user~1privacy/get/x-python", "value": { - "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import put_public_form\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.inquiry_form import InquiryForm\nfrom kittycad.models.inquiry_type import InquiryType\nfrom kittycad.types import Response\n\n\ndef example_put_public_form():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Error] = put_public_form.sync(\n client=client,\n body=InquiryForm(\n email=\"\",\n first_name=\"\",\n inquiry_type=InquiryType.GENERAL_INQUIRY,\n last_name=\"\",\n message=\"\",\n ),\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: Error = result\n print(body)\n", - "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.put_public_form.html" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import get_user_privacy_settings\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.types import Response\n\n\ndef example_get_user_privacy_settings():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[PrivacySettings, Error]] = (\n get_user_privacy_settings.sync(\n client=client,\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: PrivacySettings = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.get_user_privacy_settings.html" } }, { "op": "add", - "path": "/info/x-python", + "path": "/paths/~1user~1privacy/put/x-python", "value": { - "client": "# Create a client with your token.\nfrom kittycad.client import Client\n\nclient = Client(token=\"$TOKEN\")\n\n# - OR -\n\n# Create a new client with your token parsed from the environment variable:\n# `KITTYCAD_API_TOKEN` or `ZOO_API_TOKEN`.\n# Optionally, you can pass in `ZOO_HOST` to specify the host. But this only\n# needs to be done if you are using a different host than the default,\n# which implies you are running your own instance of the API.\nfrom kittycad.client import ClientFromEnv\n\nclient = ClientFromEnv()\n\n# NOTE: The python library additionally implements asyncio, however all the code samples we\n# show below use the sync functions for ease of use and understanding.\n# Check out the library docs at:\n# https://python.api.docs.zoo.dev/_autosummary/kittycad.api.html#module-kittycad.api\n# for more details.", - "install": "pip install kittycad" + "example": "from typing import Any, List, Optional, Tuple, Union\n\nfrom kittycad.api.users import update_user_privacy_settings\nfrom kittycad.client import ClientFromEnv\nfrom kittycad.models import Error\nfrom kittycad.models.privacy_settings import PrivacySettings\nfrom kittycad.types import Response\n\n\ndef example_update_user_privacy_settings():\n # Create our client.\n client = ClientFromEnv()\n\n result: Optional[Union[PrivacySettings, Error]] = (\n update_user_privacy_settings.sync(\n client=client,\n body=PrivacySettings(\n can_train_on_data=False,\n ),\n )\n )\n\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: PrivacySettings = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.update_user_privacy_settings.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[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\n if isinstance(result, Error) or result is None:\n print(result)\n raise Exception(\"Error in response\")\n\n body: ExtendedUserResultsPage = result\n print(body)\n", + "libDocsLink": "https://python.api.docs.zoo.dev/_autosummary/kittycad.api.users.list_users_extended.html" } } ] \ No newline at end of file diff --git a/kittycad/api/ml/get_text_to_cad_model_for_user.py b/kittycad/api/ml/get_text_to_cad_model_for_user.py index 7bad01439..c60090037 100644 --- a/kittycad/api/ml/get_text_to_cad_model_for_user.py +++ b/kittycad/api/ml/get_text_to_cad_model_for_user.py @@ -4,7 +4,7 @@ from ...client import Client from ...models.error import Error -from ...models.text_to_cad import TextToCad +from ...models.text_to_cad_response import TextToCadResponse from ...types import Response @@ -29,9 +29,11 @@ def _get_kwargs( } -def _parse_response(*, response: httpx.Response) -> Optional[Union[TextToCad, Error]]: +def _parse_response( + *, response: httpx.Response +) -> Optional[Union[TextToCadResponse, Error]]: if response.status_code == 200: - response_200 = TextToCad(**response.json()) + response_200 = TextToCadResponse(**response.json()) return response_200 if response.status_code == 400: response_4XX = Error(**response.json()) @@ -44,7 +46,7 @@ def _parse_response(*, response: httpx.Response) -> Optional[Union[TextToCad, Er def _build_response( *, response: httpx.Response -) -> Response[Optional[Union[TextToCad, Error]]]: +) -> Response[Optional[Union[TextToCadResponse, Error]]]: return Response( status_code=response.status_code, content=response.content, @@ -57,7 +59,7 @@ def sync_detailed( id: str, *, client: Client, -) -> Response[Optional[Union[TextToCad, Error]]]: +) -> Response[Optional[Union[TextToCadResponse, Error]]]: kwargs = _get_kwargs( id=id, client=client, @@ -75,7 +77,7 @@ def sync( id: str, *, client: Client, -) -> Optional[Union[TextToCad, Error]]: +) -> Optional[Union[TextToCadResponse, Error]]: """This endpoint requires authentication by any Zoo user. The user must be the owner of the text-to-CAD model.""" # noqa: E501 return sync_detailed( @@ -88,7 +90,7 @@ async def asyncio_detailed( id: str, *, client: Client, -) -> Response[Optional[Union[TextToCad, Error]]]: +) -> Response[Optional[Union[TextToCadResponse, Error]]]: kwargs = _get_kwargs( id=id, client=client, @@ -104,7 +106,7 @@ async def asyncio( id: str, *, client: Client, -) -> Optional[Union[TextToCad, Error]]: +) -> Optional[Union[TextToCadResponse, Error]]: """This endpoint requires authentication by any Zoo user. The user must be the owner of the text-to-CAD model.""" # noqa: E501 return ( diff --git a/kittycad/api/ml/list_conversations_for_user.py b/kittycad/api/ml/list_conversations_for_user.py new file mode 100644 index 000000000..35455c736 --- /dev/null +++ b/kittycad/api/ml/list_conversations_for_user.py @@ -0,0 +1,157 @@ +from typing import Any, Dict, Optional, Union + +import httpx + +from ...client import Client +from ...models.conversation_results_page import ConversationResultsPage +from ...models.created_at_sort_mode import CreatedAtSortMode +from ...models.error import Error +from ...types import Response + + +def _get_kwargs( + sort_by: CreatedAtSortMode, + *, + client: Client, + limit: Optional[int] = None, + page_token: Optional[str] = None, +) -> Dict[str, Any]: + url = "{}/ml/conversations".format( + client.base_url, + ) # noqa: E501 + + if limit is not None: + if "?" in url: + url = url + "&limit=" + str(limit) + else: + url = url + "?limit=" + str(limit) + + if page_token is not None: + if "?" in url: + url = url + "&page_token=" + str(page_token) + else: + url = url + "?page_token=" + str(page_token) + + if sort_by is not None: + if "?" in url: + url = url + "&sort_by=" + str(sort_by) + else: + url = url + "?sort_by=" + str(sort_by) + + headers: Dict[str, Any] = client.get_headers() + cookies: Dict[str, Any] = client.get_cookies() + + return { + "url": url, + "headers": headers, + "cookies": cookies, + "timeout": client.get_timeout(), + } + + +def _parse_response( + *, response: httpx.Response +) -> Optional[Union[ConversationResultsPage, Error]]: + if response.status_code == 200: + response_200 = ConversationResultsPage(**response.json()) + return response_200 + if response.status_code == 400: + response_4XX = Error(**response.json()) + return response_4XX + if response.status_code == 500: + response_5XX = Error(**response.json()) + return response_5XX + return Error(**response.json()) + + +def _build_response( + *, response: httpx.Response +) -> Response[Optional[Union[ConversationResultsPage, Error]]]: + return Response( + status_code=response.status_code, + content=response.content, + headers=response.headers, + parsed=_parse_response(response=response), + ) + + +def sync_detailed( + sort_by: CreatedAtSortMode, + *, + client: Client, + limit: Optional[int] = None, + page_token: Optional[str] = None, +) -> Response[Optional[Union[ConversationResultsPage, Error]]]: + kwargs = _get_kwargs( + limit=limit, + page_token=page_token, + sort_by=sort_by, + client=client, + ) + + response = httpx.get( + verify=client.verify_ssl, + **kwargs, + ) + + return _build_response(response=response) + + +def sync( + sort_by: CreatedAtSortMode, + *, + client: Client, + limit: Optional[int] = None, + page_token: Optional[str] = None, +) -> Optional[Union[ConversationResultsPage, Error]]: + """This endpoint requires authentication by any Zoo user. It returns the conversations for the authenticated user. + + The conversations are returned in order of creation, with the most recently created conversations first.""" # noqa: E501 + + return sync_detailed( + limit=limit, + page_token=page_token, + sort_by=sort_by, + client=client, + ).parsed + + +async def asyncio_detailed( + sort_by: CreatedAtSortMode, + *, + client: Client, + limit: Optional[int] = None, + page_token: Optional[str] = None, +) -> Response[Optional[Union[ConversationResultsPage, Error]]]: + kwargs = _get_kwargs( + limit=limit, + page_token=page_token, + sort_by=sort_by, + client=client, + ) + + async with httpx.AsyncClient(verify=client.verify_ssl) as _client: + response = await _client.get(**kwargs) + + return _build_response(response=response) + + +async def asyncio( + sort_by: CreatedAtSortMode, + *, + client: Client, + limit: Optional[int] = None, + page_token: Optional[str] = None, +) -> Optional[Union[ConversationResultsPage, Error]]: + """This endpoint requires authentication by any Zoo user. It returns the conversations for the authenticated user. + + The conversations are returned in order of creation, with the most recently created conversations first.""" # noqa: E501 + + return ( + await asyncio_detailed( + limit=limit, + page_token=page_token, + sort_by=sort_by, + client=client, + ) + ).parsed diff --git a/kittycad/api/ml/list_text_to_cad_models_for_user.py b/kittycad/api/ml/list_text_to_cad_models_for_user.py index 25a1c3a81..57c249e4d 100644 --- a/kittycad/api/ml/list_text_to_cad_models_for_user.py +++ b/kittycad/api/ml/list_text_to_cad_models_for_user.py @@ -5,12 +5,14 @@ from ...client import Client from ...models.created_at_sort_mode import CreatedAtSortMode from ...models.error import Error -from ...models.text_to_cad_results_page import TextToCadResultsPage +from ...models.text_to_cad_response_results_page import TextToCadResponseResultsPage +from ...models.uuid import Uuid from ...types import Response def _get_kwargs( sort_by: CreatedAtSortMode, + conversation_id: Uuid, *, client: Client, limit: Optional[int] = None, @@ -39,6 +41,12 @@ def _get_kwargs( else: url = url + "?sort_by=" + str(sort_by) + if conversation_id is not None: + if "?" in url: + url = url + "&conversation_id=" + str(conversation_id) + else: + url = url + "?conversation_id=" + str(conversation_id) + if no_models is not None: if "?" in url: url = url + "&no_models=" + str(no_models) @@ -58,9 +66,9 @@ def _get_kwargs( def _parse_response( *, response: httpx.Response -) -> Optional[Union[TextToCadResultsPage, Error]]: +) -> Optional[Union[TextToCadResponseResultsPage, Error]]: if response.status_code == 200: - response_200 = TextToCadResultsPage(**response.json()) + response_200 = TextToCadResponseResultsPage(**response.json()) return response_200 if response.status_code == 400: response_4XX = Error(**response.json()) @@ -73,7 +81,7 @@ def _parse_response( def _build_response( *, response: httpx.Response -) -> Response[Optional[Union[TextToCadResultsPage, Error]]]: +) -> Response[Optional[Union[TextToCadResponseResultsPage, Error]]]: return Response( status_code=response.status_code, content=response.content, @@ -84,16 +92,18 @@ def _build_response( def sync_detailed( sort_by: CreatedAtSortMode, + conversation_id: Uuid, *, client: Client, limit: Optional[int] = None, page_token: Optional[str] = None, no_models: Optional[bool] = None, -) -> Response[Optional[Union[TextToCadResultsPage, Error]]]: +) -> Response[Optional[Union[TextToCadResponseResultsPage, Error]]]: kwargs = _get_kwargs( limit=limit, page_token=page_token, sort_by=sort_by, + conversation_id=conversation_id, no_models=no_models, client=client, ) @@ -108,12 +118,13 @@ def sync_detailed( def sync( sort_by: CreatedAtSortMode, + conversation_id: Uuid, *, client: Client, limit: Optional[int] = None, page_token: Optional[str] = None, no_models: Optional[bool] = None, -) -> Optional[Union[TextToCadResultsPage, Error]]: +) -> Optional[Union[TextToCadResponseResultsPage, Error]]: """This will always return the STEP file contents as well as the format the user originally requested. This endpoint requires authentication by any Zoo user. It returns the text-to-CAD models for the authenticated user. @@ -124,6 +135,7 @@ def sync( limit=limit, page_token=page_token, sort_by=sort_by, + conversation_id=conversation_id, no_models=no_models, client=client, ).parsed @@ -131,16 +143,18 @@ def sync( async def asyncio_detailed( sort_by: CreatedAtSortMode, + conversation_id: Uuid, *, client: Client, limit: Optional[int] = None, page_token: Optional[str] = None, no_models: Optional[bool] = None, -) -> Response[Optional[Union[TextToCadResultsPage, Error]]]: +) -> Response[Optional[Union[TextToCadResponseResultsPage, Error]]]: kwargs = _get_kwargs( limit=limit, page_token=page_token, sort_by=sort_by, + conversation_id=conversation_id, no_models=no_models, client=client, ) @@ -153,12 +167,13 @@ async def asyncio_detailed( async def asyncio( sort_by: CreatedAtSortMode, + conversation_id: Uuid, *, client: Client, limit: Optional[int] = None, page_token: Optional[str] = None, no_models: Optional[bool] = None, -) -> Optional[Union[TextToCadResultsPage, Error]]: +) -> Optional[Union[TextToCadResponseResultsPage, Error]]: """This will always return the STEP file contents as well as the format the user originally requested. This endpoint requires authentication by any Zoo user. It returns the text-to-CAD models for the authenticated user. @@ -170,6 +185,7 @@ async def asyncio( limit=limit, page_token=page_token, sort_by=sort_by, + conversation_id=conversation_id, no_models=no_models, client=client, ) diff --git a/kittycad/api/ml/ml_copilot_ws.py b/kittycad/api/ml/ml_copilot_ws.py new file mode 100644 index 000000000..ec82df8bb --- /dev/null +++ b/kittycad/api/ml/ml_copilot_ws.py @@ -0,0 +1,118 @@ +import json +from typing import Any, Dict, Iterator + +import bson +from websockets.asyncio.client import ( + ClientConnection as ClientConnectionAsync, + connect as ws_connect_async, +) +from websockets.sync.client import ( + ClientConnection as ClientConnectionSync, + connect as ws_connect, +) + +from ...client import Client +from ...models.ml_copilot_client_message import MlCopilotClientMessage +from ...models.ml_copilot_server_message import MlCopilotServerMessage + + +def _get_kwargs( + *, + client: Client, +) -> Dict[str, Any]: + url = "{}/ws/ml/copilot".format(client.base_url) # noqa: E501 + + headers: Dict[str, Any] = client.get_headers() + cookies: Dict[str, Any] = client.get_cookies() + + return { + "url": url, + "headers": headers, + "cookies": cookies, + "timeout": client.get_timeout(), + } + + +def sync( + *, + client: Client, +) -> ClientConnectionSync: + kwargs = _get_kwargs( + client=client, + ) + + return ws_connect( + kwargs["url"].replace("http", "ws"), + additional_headers=kwargs["headers"], + close_timeout=120, + max_size=None, + ) # type: ignore + + +async def asyncio( + *, + client: Client, +) -> ClientConnectionAsync: + kwargs = _get_kwargs( + client=client, + ) + + return await ws_connect_async( + kwargs["url"].replace("http", "ws"), + extra_headers=kwargs["headers"], + close_timeout=120, + max_size=None, + ) + + +class WebSocket: + """A websocket connection to the API endpoint.""" + + ws: ClientConnectionSync + + def __init__( + self, + client: Client, + ): + self.ws = sync( + client=client, + ) + + def __enter__( + self, + ): + return self + + def __exit__(self, exc_type, exc_value, traceback): + self.close() + + def __iter__(self) -> Iterator[MlCopilotServerMessage]: + """ + Iterate on incoming messages. + + The iterator calls :meth:`recv` and yields messages in an infinite loop. + + It exits when the connection is closed normally. It raises a + :exc:`~websockets.exceptions.ConnectionClosedError` exception after a + protocol error or a network failure. + + """ + for message in self.ws: + yield MlCopilotServerMessage(**json.loads(message)) + + def send(self, data: MlCopilotClientMessage): + """Send data to the websocket.""" + self.ws.send(json.dumps(data.model_dump())) + + def send_binary(self, data: MlCopilotClientMessage): + """Send data as bson to the websocket.""" + self.ws.send(bson.encode(data.model_dump())) # type: ignore + + def recv(self) -> MlCopilotServerMessage: + """Receive data from the websocket.""" + message = self.ws.recv(timeout=60) + return MlCopilotServerMessage(**json.loads(message)) + + def close(self): + """Close the websocket.""" + self.ws.close() diff --git a/kittycad/api/ml/ml_reasoning_ws.py b/kittycad/api/ml/ml_reasoning_ws.py new file mode 100644 index 000000000..37705f862 --- /dev/null +++ b/kittycad/api/ml/ml_reasoning_ws.py @@ -0,0 +1,125 @@ +import json +from typing import Any, Dict, Iterator + +import bson +from websockets.asyncio.client import ( + ClientConnection as ClientConnectionAsync, + connect as ws_connect_async, +) +from websockets.sync.client import ( + ClientConnection as ClientConnectionSync, + connect as ws_connect, +) + +from ...client import Client +from ...models.ml_copilot_client_message import MlCopilotClientMessage +from ...models.ml_copilot_server_message import MlCopilotServerMessage + + +def _get_kwargs( + id: str, + *, + client: Client, +) -> Dict[str, Any]: + url = "{}/ws/ml/reasoning/{id}".format(client.base_url, id=id) # noqa: E501 + + headers: Dict[str, Any] = client.get_headers() + cookies: Dict[str, Any] = client.get_cookies() + + return { + "url": url, + "headers": headers, + "cookies": cookies, + "timeout": client.get_timeout(), + } + + +def sync( + id: str, + *, + client: Client, +) -> ClientConnectionSync: + kwargs = _get_kwargs( + id=id, + client=client, + ) + + return ws_connect( + kwargs["url"].replace("http", "ws"), + additional_headers=kwargs["headers"], + close_timeout=120, + max_size=None, + ) # type: ignore + + +async def asyncio( + id: str, + *, + client: Client, +) -> ClientConnectionAsync: + kwargs = _get_kwargs( + id=id, + client=client, + ) + + return await ws_connect_async( + kwargs["url"].replace("http", "ws"), + extra_headers=kwargs["headers"], + close_timeout=120, + max_size=None, + ) + + +class WebSocket: + """A websocket connection to the API endpoint.""" + + ws: ClientConnectionSync + + def __init__( + self, + id: str, + client: Client, + ): + self.ws = sync( + id, + client=client, + ) + + def __enter__( + self, + ): + return self + + def __exit__(self, exc_type, exc_value, traceback): + self.close() + + def __iter__(self) -> Iterator[MlCopilotServerMessage]: + """ + Iterate on incoming messages. + + The iterator calls :meth:`recv` and yields messages in an infinite loop. + + It exits when the connection is closed normally. It raises a + :exc:`~websockets.exceptions.ConnectionClosedError` exception after a + protocol error or a network failure. + + """ + for message in self.ws: + yield MlCopilotServerMessage(**json.loads(message)) + + def send(self, data: MlCopilotClientMessage): + """Send data to the websocket.""" + self.ws.send(json.dumps(data.model_dump())) + + def send_binary(self, data: MlCopilotClientMessage): + """Send data as bson to the websocket.""" + self.ws.send(bson.encode(data.model_dump())) # type: ignore + + def recv(self) -> MlCopilotServerMessage: + """Receive data from the websocket.""" + message = self.ws.recv(timeout=60) + return MlCopilotServerMessage(**json.loads(message)) + + def close(self): + """Close the websocket.""" + self.ws.close() diff --git a/kittycad/client_test.py b/kittycad/client_test.py index dbeaad33c..b57da9327 100644 --- a/kittycad/client_test.py +++ b/kittycad/client_test.py @@ -44,6 +44,9 @@ System, TextToCad, TextToCadCreateBody, + TextToCadIteration, + TextToCadMultiFileIteration, + TextToCadResponse, UnitDensity, UnitLength, UnitMass, @@ -594,7 +597,7 @@ def test_text_to_cad(): print(result) raise Exception("Error in response") - body: TextToCad = result + body: Union[TextToCad, TextToCadIteration, TextToCadMultiFileIteration] = result # Poll the api until the status is completed. # Timeout after some seconds. @@ -602,7 +605,7 @@ def test_text_to_cad(): while ( body.status == ApiCallStatus.IN_PROGRESS or body.status == ApiCallStatus.QUEUED ) and time.time() - start_time < 120: - result_status: Optional[Union[TextToCad, Error]] = ( + result_status: Optional[Union[TextToCadResponse, Error]] = ( get_text_to_cad_model_for_user.sync( client=client, id=body.id, @@ -613,6 +616,6 @@ def test_text_to_cad(): print(result_status) raise Exception("Error in response") - body = result_status + body = result_status.root assert body.status == ApiCallStatus.COMPLETED diff --git a/kittycad/examples_test.py b/kittycad/examples_test.py index 9c87298a7..452d0b5b6 100644 --- a/kittycad/examples_test.py +++ b/kittycad/examples_test.py @@ -65,8 +65,11 @@ create_text_to_cad_multi_file_iteration, get_ml_prompt, get_text_to_cad_model_for_user, + list_conversations_for_user, list_ml_prompts, list_text_to_cad_models_for_user, + ml_copilot_ws, + ml_reasoning_ws, ) from kittycad.api.modeling import modeling_commands_ws from kittycad.api.orgs import ( @@ -180,6 +183,7 @@ AsyncApiCallResultsPage, AuthApiKeyResponse, CodeOutput, + ConversationResultsPage, CreateShortlinkResponse, Customer, CustomerBalance, @@ -197,6 +201,7 @@ IpAddrInfo, KclCodeCompletionResponse, KclModel, + MlCopilotClientMessage, MlPrompt, MlPromptResultsPage, Org, @@ -214,7 +219,8 @@ TextToCad, TextToCadIteration, TextToCadMultiFileIteration, - TextToCadResultsPage, + TextToCadResponse, + TextToCadResponseResultsPage, UnitAngleConversion, UnitAreaConversion, UnitCurrentConversion, @@ -243,7 +249,6 @@ from kittycad.models.axis_direction_pair import AxisDirectionPair from kittycad.models.base64data import Base64Data from kittycad.models.billing_info import BillingInfo -from kittycad.models.client_metrics import ClientMetrics from kittycad.models.code_language import CodeLanguage from kittycad.models.code_option import CodeOption from kittycad.models.conversion_params import ConversionParams @@ -257,6 +262,7 @@ OptionFlat, ) from kittycad.models.event import Event, OptionModelingAppEvent +from kittycad.models.fbx_storage import FbxStorage from kittycad.models.file_export_format import FileExportFormat from kittycad.models.file_import_format import FileImportFormat from kittycad.models.idp_metadata_source import ( @@ -264,11 +270,12 @@ OptionBase64EncodedXml, OptionUrl, ) -from kittycad.models.input_format3d import InputFormat3d, OptionSldprt +from kittycad.models.input_format3d import InputFormat3d, OptionPly from kittycad.models.inquiry_form import InquiryForm from kittycad.models.inquiry_type import InquiryType from kittycad.models.kcl_code_completion_params import KclCodeCompletionParams from kittycad.models.kcl_code_completion_request import KclCodeCompletionRequest +from kittycad.models.ml_copilot_client_message import OptionHeaders, OptionUser from kittycad.models.ml_feedback import MlFeedback from kittycad.models.modeling_app_event_type import ModelingAppEventType from kittycad.models.modeling_app_individual_subscription_tier import ( @@ -278,18 +285,16 @@ ModelingAppOrganizationSubscriptionTier, ) from kittycad.models.org_details import OrgDetails -from kittycad.models.output_format3d import OptionStl, OutputFormat3d +from kittycad.models.output_format3d import OptionFbx, OutputFormat3d from kittycad.models.plan_interval import PlanInterval from kittycad.models.post_effect_type import PostEffectType from kittycad.models.privacy_settings import PrivacySettings from kittycad.models.saml_identity_provider_create import SamlIdentityProviderCreate -from kittycad.models.selection import OptionMeshByIndex, Selection from kittycad.models.service_account_uuid import ServiceAccountUuid from kittycad.models.session_uuid import SessionUuid from kittycad.models.source_position import SourcePosition from kittycad.models.source_range import SourceRange from kittycad.models.source_range_prompt import SourceRangePrompt -from kittycad.models.stl_storage import StlStorage from kittycad.models.store_coupon_params import StoreCouponParams from kittycad.models.subscribe import Subscribe from kittycad.models.system import System @@ -319,7 +324,7 @@ from kittycad.models.user_identifier import UserIdentifier from kittycad.models.user_org_role import UserOrgRole from kittycad.models.uuid import Uuid -from kittycad.models.web_socket_request import OptionMetricsResponse +from kittycad.models.web_socket_request import OptionDebug from kittycad.models.zoo_product_subscriptions_org_request import ( ZooProductSubscriptionsOrgRequest, ) @@ -1439,7 +1444,12 @@ def test_create_file_conversion_options(): client=client, body=ConversionParams( output_format=OutputFormat3d( - OptionStl( + OptionFbx( + storage=FbxStorage.ASCII, + ) + ), + src_format=InputFormat3d( + OptionPly( coords=System( forward=AxisDirectionPair( axis=Axis.Y, @@ -1450,20 +1460,9 @@ def test_create_file_conversion_options(): direction=Direction.POSITIVE, ), ), - selection=Selection( - OptionMeshByIndex( - index=10, - ) - ), - storage=StlStorage.ASCII, units=UnitLength.CM, ) ), - src_format=InputFormat3d( - OptionSldprt( - split_closed_faces=False, - ) - ), ), ) ) @@ -1481,7 +1480,12 @@ def test_create_file_conversion_options(): client=client, body=ConversionParams( output_format=OutputFormat3d( - OptionStl( + OptionFbx( + storage=FbxStorage.ASCII, + ) + ), + src_format=InputFormat3d( + OptionPly( coords=System( forward=AxisDirectionPair( axis=Axis.Y, @@ -1492,20 +1496,9 @@ def test_create_file_conversion_options(): direction=Direction.POSITIVE, ), ), - selection=Selection( - OptionMeshByIndex( - index=10, - ) - ), - storage=StlStorage.ASCII, units=UnitLength.CM, ) ), - src_format=InputFormat3d( - OptionSldprt( - split_closed_faces=False, - ) - ), ), ) ) @@ -1524,7 +1517,12 @@ async def test_create_file_conversion_options_async(): client=client, body=ConversionParams( output_format=OutputFormat3d( - OptionStl( + OptionFbx( + storage=FbxStorage.ASCII, + ) + ), + src_format=InputFormat3d( + OptionPly( coords=System( forward=AxisDirectionPair( axis=Axis.Y, @@ -1535,20 +1533,9 @@ async def test_create_file_conversion_options_async(): direction=Direction.POSITIVE, ), ), - selection=Selection( - OptionMeshByIndex( - index=10, - ) - ), - storage=StlStorage.ASCII, units=UnitLength.CM, ) ), - src_format=InputFormat3d( - OptionSldprt( - split_closed_faces=False, - ) - ), ), ) @@ -1559,7 +1546,12 @@ async def test_create_file_conversion_options_async(): client=client, body=ConversionParams( output_format=OutputFormat3d( - OptionStl( + OptionFbx( + storage=FbxStorage.ASCII, + ) + ), + src_format=InputFormat3d( + OptionPly( coords=System( forward=AxisDirectionPair( axis=Axis.Y, @@ -1570,20 +1562,9 @@ async def test_create_file_conversion_options_async(): direction=Direction.POSITIVE, ), ), - selection=Selection( - OptionMeshByIndex( - index=10, - ) - ), - storage=StlStorage.ASCII, units=UnitLength.CM, ) ), - src_format=InputFormat3d( - OptionSldprt( - split_closed_faces=False, - ) - ), ), ) @@ -2128,6 +2109,65 @@ async def test_get_ml_prompt_async(): ) +@pytest.mark.skip +def test_list_conversations_for_user(): + # Create our client. + client = ClientFromEnv() + + result: Optional[Union[ConversationResultsPage, Error]] = ( + list_conversations_for_user.sync( + client=client, + sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING, + limit=None, # Optional[int] + page_token=None, # Optional[str] + ) + ) + + if isinstance(result, Error) or result is None: + print(result) + raise Exception("Error in response") + + body: ConversationResultsPage = result + print(body) + + # OR if you need more info (e.g. status_code) + response: Response[Optional[Union[ConversationResultsPage, Error]]] = ( + list_conversations_for_user.sync_detailed( + client=client, + sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING, + limit=None, # Optional[int] + page_token=None, # Optional[str] + ) + ) + + +# OR run async +@pytest.mark.asyncio +@pytest.mark.skip +async def test_list_conversations_for_user_async(): + # Create our client. + client = ClientFromEnv() + + result: Optional[ + Union[ConversationResultsPage, Error] + ] = await list_conversations_for_user.asyncio( + client=client, + sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING, + limit=None, # Optional[int] + page_token=None, # Optional[str] + ) + + # OR run async with more info + response: Response[ + Optional[Union[ConversationResultsPage, Error]] + ] = await list_conversations_for_user.asyncio_detailed( + client=client, + sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING, + limit=None, # Optional[int] + page_token=None, # Optional[str] + ) + + @pytest.mark.skip def test_create_proprietary_to_kcl(): # Create our client. @@ -7271,10 +7311,11 @@ def test_list_text_to_cad_models_for_user(): # Create our client. client = ClientFromEnv() - result: Optional[Union[TextToCadResultsPage, Error]] = ( + result: Optional[Union[TextToCadResponseResultsPage, Error]] = ( list_text_to_cad_models_for_user.sync( client=client, sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING, + conversation_id=Uuid(""), limit=None, # Optional[int] page_token=None, # Optional[str] no_models=None, # Optional[bool] @@ -7285,14 +7326,15 @@ def test_list_text_to_cad_models_for_user(): print(result) raise Exception("Error in response") - body: TextToCadResultsPage = result + body: TextToCadResponseResultsPage = result print(body) # OR if you need more info (e.g. status_code) - response: Response[Optional[Union[TextToCadResultsPage, Error]]] = ( + response: Response[Optional[Union[TextToCadResponseResultsPage, Error]]] = ( list_text_to_cad_models_for_user.sync_detailed( client=client, sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING, + conversation_id=Uuid(""), limit=None, # Optional[int] page_token=None, # Optional[str] no_models=None, # Optional[bool] @@ -7308,10 +7350,11 @@ async def test_list_text_to_cad_models_for_user_async(): client = ClientFromEnv() result: Optional[ - Union[TextToCadResultsPage, Error] + Union[TextToCadResponseResultsPage, Error] ] = await list_text_to_cad_models_for_user.asyncio( client=client, sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING, + conversation_id=Uuid(""), limit=None, # Optional[int] page_token=None, # Optional[str] no_models=None, # Optional[bool] @@ -7319,10 +7362,11 @@ async def test_list_text_to_cad_models_for_user_async(): # OR run async with more info response: Response[ - Optional[Union[TextToCadResultsPage, Error]] + Optional[Union[TextToCadResponseResultsPage, Error]] ] = await list_text_to_cad_models_for_user.asyncio_detailed( client=client, sort_by=CreatedAtSortMode.CREATED_AT_ASCENDING, + conversation_id=Uuid(""), limit=None, # Optional[int] page_token=None, # Optional[str] no_models=None, # Optional[bool] @@ -7334,20 +7378,22 @@ def test_get_text_to_cad_model_for_user(): # Create our client. client = ClientFromEnv() - result: Optional[Union[TextToCad, Error]] = get_text_to_cad_model_for_user.sync( - client=client, - id="", + result: Optional[Union[TextToCadResponse, Error]] = ( + get_text_to_cad_model_for_user.sync( + client=client, + id="", + ) ) if isinstance(result, Error) or result is None: print(result) raise Exception("Error in response") - body: TextToCad = result + body: TextToCadResponse = result print(body) # OR if you need more info (e.g. status_code) - response: Response[Optional[Union[TextToCad, Error]]] = ( + response: Response[Optional[Union[TextToCadResponse, Error]]] = ( get_text_to_cad_model_for_user.sync_detailed( client=client, id="", @@ -7363,7 +7409,7 @@ async def test_get_text_to_cad_model_for_user_async(): client = ClientFromEnv() result: Optional[ - Union[TextToCad, Error] + Union[TextToCadResponse, Error] ] = await get_text_to_cad_model_for_user.asyncio( client=client, id="", @@ -7371,7 +7417,7 @@ async def test_get_text_to_cad_model_for_user_async(): # OR run async with more info response: Response[ - Optional[Union[TextToCad, Error]] + Optional[Union[TextToCadResponse, Error]] ] = await get_text_to_cad_model_for_user.asyncio_detailed( client=client, id="", @@ -8026,6 +8072,110 @@ async def test_create_executor_term_async(): print(message) +@pytest.mark.skip +def test_ml_copilot_ws(): + # Create our client. + client = ClientFromEnv() + + # Connect to the websocket. + with ml_copilot_ws.WebSocket( + client=client, + ) as websocket: + # Send a message. + websocket.send( + MlCopilotClientMessage( + OptionUser( + content="", + current_files={"": b""}, + source_ranges=[ + SourceRangePrompt( + prompt="", + range=SourceRange( + end=SourcePosition( + column=10, + line=10, + ), + start=SourcePosition( + column=10, + line=10, + ), + ), + ) + ], + ) + ) + ) + + # Get a message. + message = websocket.recv() + print(message) + + +# OR run async +@pytest.mark.asyncio +@pytest.mark.skip +async def test_ml_copilot_ws_async(): + # Create our client. + client = ClientFromEnv() + + # Connect to the websocket. + websocket = await ml_copilot_ws.asyncio( + client=client, + ) + + # Send a message. + await websocket.send("{}") + + # Get the messages. + async for message in websocket: + print(message) + + +@pytest.mark.skip +def test_ml_reasoning_ws(): + # Create our client. + client = ClientFromEnv() + + # Connect to the websocket. + with ml_reasoning_ws.WebSocket( + client=client, + id="", + ) as websocket: + # Send a message. + websocket.send( + MlCopilotClientMessage( + OptionHeaders( + headers={"": ""}, + ) + ) + ) + + # Get a message. + message = websocket.recv() + print(message) + + +# OR run async +@pytest.mark.asyncio +@pytest.mark.skip +async def test_ml_reasoning_ws_async(): + # Create our client. + client = ClientFromEnv() + + # Connect to the websocket. + websocket = await ml_reasoning_ws.asyncio( + client=client, + id="", + ) + + # Send a message. + await websocket.send("{}") + + # Get the messages. + async for message in websocket: + print(message) + + @pytest.mark.skip def test_modeling_commands_ws(): # Create our client. @@ -8046,13 +8196,7 @@ def test_modeling_commands_ws(): replay=None, # Optional[str] ) as websocket: # Send a message. - websocket.send( - WebSocketRequest( - OptionMetricsResponse( - metrics=ClientMetrics(), - ) - ) - ) + websocket.send(WebSocketRequest(OptionDebug())) # Get a message. message = websocket.recv() diff --git a/kittycad/models/__init__.py b/kittycad/models/__init__.py index 223a3dc81..e7cde4831 100644 --- a/kittycad/models/__init__.py +++ b/kittycad/models/__init__.py @@ -55,6 +55,8 @@ from .color import Color from .complementary_edges import ComplementaryEdges from .component_transform import ComponentTransform +from .conversation import Conversation +from .conversation_results_page import ConversationResultsPage from .conversion_params import ConversionParams from .country_code import CountryCode from .coupon import Coupon @@ -186,11 +188,15 @@ from .make_plane import MakePlane from .mass import Mass from .method import Method +from .ml_copilot_client_message import MlCopilotClientMessage +from .ml_copilot_server_message import MlCopilotServerMessage +from .ml_copilot_system_command import MlCopilotSystemCommand from .ml_feedback import MlFeedback from .ml_prompt import MlPrompt from .ml_prompt_metadata import MlPromptMetadata from .ml_prompt_results_page import MlPromptResultsPage from .ml_prompt_type import MlPromptType +from .ml_tool_result import MlToolResult from .modeling_app_event_type import ModelingAppEventType from .modeling_app_individual_subscription_tier import ( ModelingAppIndividualSubscriptionTier, @@ -257,6 +263,7 @@ from .project_entity_to_plane import ProjectEntityToPlane from .project_points_to_plane import ProjectPointsToPlane from .raw_file import RawFile +from .reasoning_message import ReasoningMessage from .reconfigure_stream import ReconfigureStream from .relative_to import RelativeTo from .remove_scene_objects import RemoveSceneObjects @@ -334,7 +341,8 @@ from .text_to_cad_model import TextToCadModel from .text_to_cad_multi_file_iteration import TextToCadMultiFileIteration from .text_to_cad_multi_file_iteration_body import TextToCadMultiFileIterationBody -from .text_to_cad_results_page import TextToCadResultsPage +from .text_to_cad_response import TextToCadResponse +from .text_to_cad_response_results_page import TextToCadResponseResultsPage from .token_revoke_request_form import TokenRevokeRequestForm from .transform import Transform from .transform_by_for_point3d import TransformByForPoint3d diff --git a/kittycad/models/conversation.py b/kittycad/models/conversation.py new file mode 100644 index 000000000..5dd5a929c --- /dev/null +++ b/kittycad/models/conversation.py @@ -0,0 +1,21 @@ +import datetime + +from pydantic import BaseModel, ConfigDict + +from ..models.uuid import Uuid + + +class Conversation(BaseModel): + """A conversation composed of many ML prompts.""" + + created_at: datetime.datetime + + first_prompt: str + + id: Uuid + + updated_at: datetime.datetime + + user_id: Uuid + + model_config = ConfigDict(protected_namespaces=()) diff --git a/kittycad/models/text_to_cad_results_page.py b/kittycad/models/conversation_results_page.py similarity index 63% rename from kittycad/models/text_to_cad_results_page.py rename to kittycad/models/conversation_results_page.py index 975e4b7e7..7987c189c 100644 --- a/kittycad/models/text_to_cad_results_page.py +++ b/kittycad/models/conversation_results_page.py @@ -2,13 +2,13 @@ from pydantic import BaseModel, ConfigDict -from ..models.text_to_cad import TextToCad +from ..models.conversation import Conversation -class TextToCadResultsPage(BaseModel): +class ConversationResultsPage(BaseModel): """A single page of results""" - items: List[TextToCad] + items: List[Conversation] next_page: Optional[str] = None diff --git a/kittycad/models/ml_copilot_client_message.py b/kittycad/models/ml_copilot_client_message.py new file mode 100644 index 000000000..0751caa37 --- /dev/null +++ b/kittycad/models/ml_copilot_client_message.py @@ -0,0 +1,55 @@ +from typing import Dict, List, Literal, Optional, Union + +from pydantic import BaseModel, ConfigDict, Field, RootModel +from typing_extensions import Annotated + +from ..models.ml_copilot_system_command import MlCopilotSystemCommand +from ..models.source_range_prompt import SourceRangePrompt + + +class OptionHeaders(BaseModel): + """Authentication header request.""" + + headers: Dict[str, str] + + type: Literal["headers"] = "headers" + + model_config = ConfigDict(protected_namespaces=()) + + +class OptionUser(BaseModel): + """The user message, which contains the content of the user's input.""" + + content: str + + current_files: Optional[Dict[str, bytes]] = None + + project_name: Optional[str] = None + + source_ranges: Optional[List[SourceRangePrompt]] = None + + type: Literal["user"] = "user" + + model_config = ConfigDict(protected_namespaces=()) + + +class OptionSystem(BaseModel): + """The system message, which can be used to set the context or instructions for the AI.""" + + command: MlCopilotSystemCommand + + type: Literal["system"] = "system" + + model_config = ConfigDict(protected_namespaces=()) + + +MlCopilotClientMessage = RootModel[ + Annotated[ + Union[ + OptionHeaders, + OptionUser, + OptionSystem, + ], + Field(discriminator="type"), + ] +] diff --git a/kittycad/models/ml_copilot_server_message.py b/kittycad/models/ml_copilot_server_message.py new file mode 100644 index 000000000..3e35fddc9 --- /dev/null +++ b/kittycad/models/ml_copilot_server_message.py @@ -0,0 +1,115 @@ +from typing import Any, Dict, Optional, Union + +from pydantic import BaseModel, ConfigDict, RootModel + +from ..models.ml_tool_result import MlToolResult +from .reasoning_message import ReasoningMessage + + +class Delta(BaseModel): + """""" + + delta: str + + model_config = ConfigDict(protected_namespaces=()) + + +class ToolOutput(BaseModel): + """""" + + result: MlToolResult + + model_config = ConfigDict(protected_namespaces=()) + + +class Error(BaseModel): + """""" + + detail: str + + model_config = ConfigDict(protected_namespaces=()) + + +class Info(BaseModel): + """""" + + text: str + + model_config = ConfigDict(protected_namespaces=()) + + +reasoning = ReasoningMessage + + +class EndOfStream(BaseModel): + """""" + + whole_response: Optional[str] = None + + model_config = ConfigDict(protected_namespaces=()) + + +class MlCopilotServerMessage0(BaseModel): + """Delta of the response, e.g. a chunk of text/tokens.""" + + delta: Dict[str, Any] + + model_config = ConfigDict(protected_namespaces=()) + + +class MlCopilotServerMessage1(BaseModel): + """Completed tool call result.""" + + tool_output: Dict[str, Any] + + model_config = ConfigDict(protected_namespaces=()) + + +class MlCopilotServerMessage2(BaseModel): + """Error sent by server.""" + + error: Dict[str, Any] + + model_config = ConfigDict(protected_namespaces=()) + + +class MlCopilotServerMessage3(BaseModel): + """Log / banner text.""" + + info: Dict[str, Any] + + model_config = ConfigDict(protected_namespaces=()) + + +class MlCopilotServerMessage4(BaseModel): + """Assistant reasoning / chain-of-thought (if you expose it).""" + + reasoning: ReasoningMessage + + model_config = ConfigDict(protected_namespaces=()) + + +class MlCopilotServerMessage5(BaseModel): + """Marks the end of a streamed answer.""" + + end_of_stream: Dict[str, Any] + + model_config = ConfigDict(protected_namespaces=()) + + +MlCopilotServerMessage = RootModel[ + Union[ + Delta, + ToolOutput, + Error, + Info, + ReasoningMessage, + EndOfStream, + MlCopilotServerMessage0, + MlCopilotServerMessage1, + MlCopilotServerMessage2, + MlCopilotServerMessage3, + MlCopilotServerMessage4, + MlCopilotServerMessage5, + ] +] diff --git a/kittycad/models/ml_copilot_system_command.py b/kittycad/models/ml_copilot_system_command.py new file mode 100644 index 000000000..2366deed8 --- /dev/null +++ b/kittycad/models/ml_copilot_system_command.py @@ -0,0 +1,13 @@ +from enum import Enum + + +class MlCopilotSystemCommand(str, Enum): + """The type of system command that can be sent to the ML Copilot.""" # noqa: E501 + + """# Reset the conversation state, by creating a new state. """ # noqa: E501 + NEW = "new" + """# Disconnect the client, which can be used to end the session. """ # noqa: E501 + BYE = "bye" + + def __str__(self) -> str: + return str(self.value) diff --git a/kittycad/models/ml_tool_result.py b/kittycad/models/ml_tool_result.py new file mode 100644 index 000000000..3c27313da --- /dev/null +++ b/kittycad/models/ml_tool_result.py @@ -0,0 +1,58 @@ +from typing import Dict, Literal, Optional, Union + +from pydantic import BaseModel, ConfigDict, Field, RootModel +from typing_extensions import Annotated + + +class OptionTextToCad(BaseModel): + """Response from the `TextToCad` tool.""" + + error: Optional[str] = None + + outputs: Optional[Dict[str, str]] = None + + project_name: Optional[str] = None + + status_code: int + + type: Literal["text_to_cad"] = "text_to_cad" + + model_config = ConfigDict(protected_namespaces=()) + + +class OptionEditKclCode(BaseModel): + """Response from the `EditKclCode` tool.""" + + error: Optional[str] = None + + outputs: Optional[Dict[str, str]] = None + + project_name: Optional[str] = None + + status_code: int + + type: Literal["edit_kcl_code"] = "edit_kcl_code" + + model_config = ConfigDict(protected_namespaces=()) + + +class OptionMechanicalKnowledgeBase(BaseModel): + """Mechanical knowledge base response.""" + + response: str + + type: Literal["mechanical_knowledge_base"] = "mechanical_knowledge_base" + + model_config = ConfigDict(protected_namespaces=()) + + +MlToolResult = RootModel[ + Annotated[ + Union[ + OptionTextToCad, + OptionEditKclCode, + OptionMechanicalKnowledgeBase, + ], + Field(discriminator="type"), + ] +] diff --git a/kittycad/models/path_segment.py b/kittycad/models/path_segment.py index 2205c6c1a..4d2b150c2 100644 --- a/kittycad/models/path_segment.py +++ b/kittycad/models/path_segment.py @@ -116,7 +116,7 @@ class OptionEllipse(BaseModel): end_angle: Angle - major_radius: LengthUnit + major_axis: Point2d minor_radius: LengthUnit diff --git a/kittycad/models/reasoning_message.py b/kittycad/models/reasoning_message.py new file mode 100644 index 000000000..ef74cc3ca --- /dev/null +++ b/kittycad/models/reasoning_message.py @@ -0,0 +1,23 @@ +from typing import Literal, Union + +from pydantic import BaseModel, ConfigDict, Field, RootModel +from typing_extensions import Annotated + + +class TextData(BaseModel): + """The content of the reasoning.""" + + model_config = ConfigDict(protected_namespaces=()) + + +class OptionText(BaseModel): + """Plain text reasoning.""" + + content: TextData + + type: Literal["text"] = "text" + + model_config = ConfigDict(protected_namespaces=()) + + +ReasoningMessage = RootModel[Annotated[Union[OptionText,], Field(discriminator="type")]] diff --git a/kittycad/models/text_to_cad_response.py b/kittycad/models/text_to_cad_response.py new file mode 100644 index 000000000..7aeaa45fa --- /dev/null +++ b/kittycad/models/text_to_cad_response.py @@ -0,0 +1,15 @@ +from typing import Union + +from pydantic import RootModel + +from .text_to_cad import TextToCad +from .text_to_cad_iteration import TextToCadIteration +from .text_to_cad_multi_file_iteration import TextToCadMultiFileIteration + +TextToCadResponse = RootModel[ + Union[ + TextToCad, + TextToCadIteration, + TextToCadMultiFileIteration, + ] +] diff --git a/kittycad/models/text_to_cad_response_results_page.py b/kittycad/models/text_to_cad_response_results_page.py new file mode 100644 index 000000000..71b26cc5b --- /dev/null +++ b/kittycad/models/text_to_cad_response_results_page.py @@ -0,0 +1,15 @@ +from typing import List, Optional + +from pydantic import BaseModel, ConfigDict + +from ..models.text_to_cad_response import TextToCadResponse + + +class TextToCadResponseResultsPage(BaseModel): + """A single page of results""" + + items: List[TextToCadResponse] + + next_page: Optional[str] = None + + model_config = ConfigDict(protected_namespaces=()) diff --git a/poetry.lock b/poetry.lock index 3594ece27..d2dd1878b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.4 and should not be changed by hand. [[package]] name = "alabaster" @@ -36,25 +36,23 @@ reference = "pypi-public" [[package]] name = "anyio" -version = "4.6.2.post1" -description = "High level compatibility layer for multiple asynchronous event loop implementations" +version = "4.10.0" +description = "High-level concurrency and networking framework on top of asyncio or Trio" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"}, - {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"}, + {file = "anyio-4.10.0-py3-none-any.whl", hash = "sha256:60e474ac86736bbfd6f210f7a61218939c318f43f9972497381f1c5e930ed3d1"}, + {file = "anyio-4.10.0.tar.gz", hash = "sha256:3f3fae35c96039744587aa5b8371e7e8e603c0702999535961dd336026973ba6"}, ] [package.dependencies] exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} idna = ">=2.8" sniffio = ">=1.1" -typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} +typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} [package.extras] -doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21.0b1) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\""] trio = ["trio (>=0.26.1)"] [package.source] @@ -64,18 +62,18 @@ reference = "pypi-public" [[package]] name = "astroid" -version = "3.3.5" +version = "3.3.11" description = "An abstract syntax tree for Python with inference support." optional = false python-versions = ">=3.9.0" groups = ["dev"] files = [ - {file = "astroid-3.3.5-py3-none-any.whl", hash = "sha256:a9d1c946ada25098d790e079ba2a1b112157278f3fb7e718ae6a9252f5835dc8"}, - {file = "astroid-3.3.5.tar.gz", hash = "sha256:5cfc40ae9f68311075d27ef68a4841bdc5cc7f6cf86671b49f00607d30188e2d"}, + {file = "astroid-3.3.11-py3-none-any.whl", hash = "sha256:54c760ae8322ece1abd213057c4b5bba7c49818853fc901ef09719a60dbf9dec"}, + {file = "astroid-3.3.11.tar.gz", hash = "sha256:1e5a5011af2920c7c67a53f65d536d65bfa7116feeaf2354d8b94f29573bb0ce"}, ] [package.dependencies] -typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} +typing-extensions = {version = ">=4", markers = "python_version < \"3.11\""} [package.source] type = "legacy" @@ -135,18 +133,18 @@ reference = "pypi-public" [[package]] name = "babel" -version = "2.16.0" +version = "2.17.0" description = "Internationalization utilities" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b"}, - {file = "babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316"}, + {file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"}, + {file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"}, ] [package.extras] -dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] +dev = ["backports.zoneinfo ; python_version < \"3.9\"", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata ; sys_platform == \"win32\""] [package.source] type = "legacy" @@ -249,14 +247,14 @@ reference = "pypi-public" [[package]] name = "certifi" -version = "2024.8.30" +version = "2025.8.3" description = "Python package for providing Mozilla's CA Bundle." optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" groups = ["main", "dev"] files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, + {file = "certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5"}, + {file = "certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407"}, ] [package.source] @@ -283,117 +281,91 @@ reference = "pypi-public" [[package]] name = "charset-normalizer" -version = "3.4.0" +version = "3.4.3" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false -python-versions = ">=3.7.0" -groups = ["dev"] -files = [ - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"}, - {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"}, - {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"}, +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "charset_normalizer-3.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fb7f67a1bfa6e40b438170ebdc8158b78dc465a5a67b6dde178a46987b244a72"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc9370a2da1ac13f0153780040f465839e6cccb4a1e44810124b4e22483c93fe"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:07a0eae9e2787b586e129fdcbe1af6997f8d0e5abaa0bc98c0e20e124d67e601"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:74d77e25adda8581ffc1c720f1c81ca082921329452eba58b16233ab1842141c"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d0e909868420b7049dafd3a31d45125b31143eec59235311fc4c57ea26a4acd2"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c6f162aabe9a91a309510d74eeb6507fab5fff92337a15acbe77753d88d9dcf0"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4ca4c094de7771a98d7fbd67d9e5dbf1eb73efa4f744a730437d8a3a5cf994f0"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:02425242e96bcf29a49711b0ca9f37e451da7c70562bc10e8ed992a5a7a25cc0"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:78deba4d8f9590fe4dae384aeff04082510a709957e968753ff3c48399f6f92a"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-win32.whl", hash = "sha256:d79c198e27580c8e958906f803e63cddb77653731be08851c7df0b1a14a8fc0f"}, + {file = "charset_normalizer-3.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:c6e490913a46fa054e03699c70019ab869e990270597018cef1d8562132c2669"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b256ee2e749283ef3ddcff51a675ff43798d92d746d1a6e4631bf8c707d22d0b"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:13faeacfe61784e2559e690fc53fa4c5ae97c6fcedb8eb6fb8d0a15b475d2c64"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:00237675befef519d9af72169d8604a067d92755e84fe76492fef5441db05b91"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:585f3b2a80fbd26b048a0be90c5aae8f06605d3c92615911c3a2b03a8a3b796f"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e78314bdc32fa80696f72fa16dc61168fda4d6a0c014e0380f9d02f0e5d8a07"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:96b2b3d1a83ad55310de8c7b4a2d04d9277d5591f40761274856635acc5fcb30"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:939578d9d8fd4299220161fdd76e86c6a251987476f5243e8864a7844476ba14"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fd10de089bcdcd1be95a2f73dbe6254798ec1bda9f450d5828c96f93e2536b9c"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1e8ac75d72fa3775e0b7cb7e4629cec13b7514d928d15ef8ea06bca03ef01cae"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-win32.whl", hash = "sha256:6cf8fd4c04756b6b60146d98cd8a77d0cdae0e1ca20329da2ac85eed779b6849"}, + {file = "charset_normalizer-3.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:31a9a6f775f9bcd865d88ee350f0ffb0e25936a7f930ca98995c05abf1faf21c"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-win32.whl", hash = "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37"}, + {file = "charset_normalizer-3.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-win32.whl", hash = "sha256:6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce"}, + {file = "charset_normalizer-3.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-win32.whl", hash = "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce"}, + {file = "charset_normalizer-3.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0f2be7e0cf7754b9a30eb01f4295cc3d4358a479843b31f328afd210e2c7598c"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c60e092517a73c632ec38e290eba714e9627abe9d301c8c8a12ec32c314a2a4b"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:252098c8c7a873e17dd696ed98bbe91dbacd571da4b87df3736768efa7a792e4"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3653fad4fe3ed447a596ae8638b437f827234f01a8cd801842e43f3d0a6b281b"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8999f965f922ae054125286faf9f11bc6932184b93011d138925a1773830bbe9"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d95bfb53c211b57198bb91c46dd5a2d8018b3af446583aab40074bf7988401cb"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:5b413b0b1bfd94dbf4023ad6945889f374cd24e3f62de58d6bb102c4d9ae534a"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:b5e3b2d152e74e100a9e9573837aba24aab611d39428ded46f4e4022ea7d1942"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a2d08ac246bb48479170408d6c19f6385fa743e7157d716e144cad849b2dd94b"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-win32.whl", hash = "sha256:ec557499516fc90fd374bf2e32349a2887a876fbf162c160e3c01b6849eaf557"}, + {file = "charset_normalizer-3.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:5d8d01eac18c423815ed4f4a2ec3b439d654e55ee4ad610e153cf02faf67ea40"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:70bfc5f2c318afece2f5838ea5e4c3febada0be750fcf4775641052bbba14d05"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:23b6b24d74478dc833444cbd927c338349d6ae852ba53a0d02a2de1fce45b96e"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:34a7f768e3f985abdb42841e20e17b330ad3aaf4bb7e7aeeb73db2e70f077b99"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:fb731e5deb0c7ef82d698b0f4c5bb724633ee2a489401594c5c88b02e6cb15f7"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:257f26fed7d7ff59921b78244f3cd93ed2af1800ff048c33f624c87475819dd7"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1ef99f0456d3d46a50945c98de1774da86f8e992ab5c77865ea8b8195341fc19"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:2c322db9c8c89009a990ef07c3bcc9f011a3269bc06782f916cd3d9eed7c9312"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:511729f456829ef86ac41ca78c63a5cb55240ed23b4b737faca0eb1abb1c41bc"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:88ab34806dea0671532d3f82d82b85e8fc23d7b2dd12fa837978dad9bb392a34"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-win32.whl", hash = "sha256:16a8770207946ac75703458e2c743631c79c59c5890c80011d536248f8eaa432"}, + {file = "charset_normalizer-3.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:d22dbedd33326a4a5190dd4fe9e9e693ef12160c77382d9e87919bce54f3d4ca"}, + {file = "charset_normalizer-3.4.3-py3-none-any.whl", hash = "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a"}, + {file = "charset_normalizer-3.4.3.tar.gz", hash = "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14"}, ] [package.source] @@ -403,14 +375,36 @@ reference = "pypi-public" [[package]] name = "click" -version = "8.1.7" +version = "8.1.8" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" groups = ["dev"] +markers = "python_version < \"3.12\"" +files = [ + {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, + {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[package.source] +type = "legacy" +url = "https://pypi.org/simple" +reference = "pypi-public" + +[[package]] +name = "click" +version = "8.2.1" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.10" +groups = ["dev"] +markers = "python_version >= \"3.12\"" files = [ - {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, - {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, + {file = "click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b"}, + {file = "click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202"}, ] [package.dependencies] @@ -441,74 +435,100 @@ reference = "pypi-public" [[package]] name = "coverage" -version = "7.6.8" +version = "7.10.3" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "coverage-7.6.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b39e6011cd06822eb964d038d5dff5da5d98652b81f5ecd439277b32361a3a50"}, - {file = "coverage-7.6.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:63c19702db10ad79151a059d2d6336fe0c470f2e18d0d4d1a57f7f9713875dcf"}, - {file = "coverage-7.6.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3985b9be361d8fb6b2d1adc9924d01dec575a1d7453a14cccd73225cb79243ee"}, - {file = "coverage-7.6.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:644ec81edec0f4ad17d51c838a7d01e42811054543b76d4ba2c5d6af741ce2a6"}, - {file = "coverage-7.6.8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f188a2402f8359cf0c4b1fe89eea40dc13b52e7b4fd4812450da9fcd210181d"}, - {file = "coverage-7.6.8-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e19122296822deafce89a0c5e8685704c067ae65d45e79718c92df7b3ec3d331"}, - {file = "coverage-7.6.8-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:13618bed0c38acc418896005732e565b317aa9e98d855a0e9f211a7ffc2d6638"}, - {file = "coverage-7.6.8-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:193e3bffca48ad74b8c764fb4492dd875038a2f9925530cb094db92bb5e47bed"}, - {file = "coverage-7.6.8-cp310-cp310-win32.whl", hash = "sha256:3988665ee376abce49613701336544041f2117de7b7fbfe91b93d8ff8b151c8e"}, - {file = "coverage-7.6.8-cp310-cp310-win_amd64.whl", hash = "sha256:f56f49b2553d7dd85fd86e029515a221e5c1f8cb3d9c38b470bc38bde7b8445a"}, - {file = "coverage-7.6.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:86cffe9c6dfcfe22e28027069725c7f57f4b868a3f86e81d1c62462764dc46d4"}, - {file = "coverage-7.6.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d82ab6816c3277dc962cfcdc85b1efa0e5f50fb2c449432deaf2398a2928ab94"}, - {file = "coverage-7.6.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13690e923a3932e4fad4c0ebfb9cb5988e03d9dcb4c5150b5fcbf58fd8bddfc4"}, - {file = "coverage-7.6.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4be32da0c3827ac9132bb488d331cb32e8d9638dd41a0557c5569d57cf22c9c1"}, - {file = "coverage-7.6.8-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44e6c85bbdc809383b509d732b06419fb4544dca29ebe18480379633623baafb"}, - {file = "coverage-7.6.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:768939f7c4353c0fac2f7c37897e10b1414b571fd85dd9fc49e6a87e37a2e0d8"}, - {file = "coverage-7.6.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e44961e36cb13c495806d4cac67640ac2866cb99044e210895b506c26ee63d3a"}, - {file = "coverage-7.6.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3ea8bb1ab9558374c0ab591783808511d135a833c3ca64a18ec927f20c4030f0"}, - {file = "coverage-7.6.8-cp311-cp311-win32.whl", hash = "sha256:629a1ba2115dce8bf75a5cce9f2486ae483cb89c0145795603d6554bdc83e801"}, - {file = "coverage-7.6.8-cp311-cp311-win_amd64.whl", hash = "sha256:fb9fc32399dca861584d96eccd6c980b69bbcd7c228d06fb74fe53e007aa8ef9"}, - {file = "coverage-7.6.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e683e6ecc587643f8cde8f5da6768e9d165cd31edf39ee90ed7034f9ca0eefee"}, - {file = "coverage-7.6.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1defe91d41ce1bd44b40fabf071e6a01a5aa14de4a31b986aa9dfd1b3e3e414a"}, - {file = "coverage-7.6.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7ad66e8e50225ebf4236368cc43c37f59d5e6728f15f6e258c8639fa0dd8e6d"}, - {file = "coverage-7.6.8-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3fe47da3e4fda5f1abb5709c156eca207eacf8007304ce3019eb001e7a7204cb"}, - {file = "coverage-7.6.8-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:202a2d645c5a46b84992f55b0a3affe4f0ba6b4c611abec32ee88358db4bb649"}, - {file = "coverage-7.6.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4674f0daa1823c295845b6a740d98a840d7a1c11df00d1fd62614545c1583787"}, - {file = "coverage-7.6.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:74610105ebd6f33d7c10f8907afed696e79c59e3043c5f20eaa3a46fddf33b4c"}, - {file = "coverage-7.6.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37cda8712145917105e07aab96388ae76e787270ec04bcb9d5cc786d7cbb8443"}, - {file = "coverage-7.6.8-cp312-cp312-win32.whl", hash = "sha256:9e89d5c8509fbd6c03d0dd1972925b22f50db0792ce06324ba069f10787429ad"}, - {file = "coverage-7.6.8-cp312-cp312-win_amd64.whl", hash = "sha256:379c111d3558272a2cae3d8e57e6b6e6f4fe652905692d54bad5ea0ca37c5ad4"}, - {file = "coverage-7.6.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0b0c69f4f724c64dfbfe79f5dfb503b42fe6127b8d479b2677f2b227478db2eb"}, - {file = "coverage-7.6.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c15b32a7aca8038ed7644f854bf17b663bc38e1671b5d6f43f9a2b2bd0c46f63"}, - {file = "coverage-7.6.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63068a11171e4276f6ece913bde059e77c713b48c3a848814a6537f35afb8365"}, - {file = "coverage-7.6.8-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f4548c5ead23ad13fb7a2c8ea541357474ec13c2b736feb02e19a3085fac002"}, - {file = "coverage-7.6.8-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b4b4299dd0d2c67caaaf286d58aef5e75b125b95615dda4542561a5a566a1e3"}, - {file = "coverage-7.6.8-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c9ebfb2507751f7196995142f057d1324afdab56db1d9743aab7f50289abd022"}, - {file = "coverage-7.6.8-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:c1b4474beee02ede1eef86c25ad4600a424fe36cff01a6103cb4533c6bf0169e"}, - {file = "coverage-7.6.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d9fd2547e6decdbf985d579cf3fc78e4c1d662b9b0ff7cc7862baaab71c9cc5b"}, - {file = "coverage-7.6.8-cp313-cp313-win32.whl", hash = "sha256:8aae5aea53cbfe024919715eca696b1a3201886ce83790537d1c3668459c7146"}, - {file = "coverage-7.6.8-cp313-cp313-win_amd64.whl", hash = "sha256:ae270e79f7e169ccfe23284ff5ea2d52a6f401dc01b337efb54b3783e2ce3f28"}, - {file = "coverage-7.6.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:de38add67a0af869b0d79c525d3e4588ac1ffa92f39116dbe0ed9753f26eba7d"}, - {file = "coverage-7.6.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b07c25d52b1c16ce5de088046cd2432b30f9ad5e224ff17c8f496d9cb7d1d451"}, - {file = "coverage-7.6.8-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62a66ff235e4c2e37ed3b6104d8b478d767ff73838d1222132a7a026aa548764"}, - {file = "coverage-7.6.8-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09b9f848b28081e7b975a3626e9081574a7b9196cde26604540582da60235fdf"}, - {file = "coverage-7.6.8-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:093896e530c38c8e9c996901858ac63f3d4171268db2c9c8b373a228f459bbc5"}, - {file = "coverage-7.6.8-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9a7b8ac36fd688c8361cbc7bf1cb5866977ece6e0b17c34aa0df58bda4fa18a4"}, - {file = "coverage-7.6.8-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:38c51297b35b3ed91670e1e4efb702b790002e3245a28c76e627478aa3c10d83"}, - {file = "coverage-7.6.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2e4e0f60cb4bd7396108823548e82fdab72d4d8a65e58e2c19bbbc2f1e2bfa4b"}, - {file = "coverage-7.6.8-cp313-cp313t-win32.whl", hash = "sha256:6535d996f6537ecb298b4e287a855f37deaf64ff007162ec0afb9ab8ba3b8b71"}, - {file = "coverage-7.6.8-cp313-cp313t-win_amd64.whl", hash = "sha256:c79c0685f142ca53256722a384540832420dff4ab15fec1863d7e5bc8691bdcc"}, - {file = "coverage-7.6.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3ac47fa29d8d41059ea3df65bd3ade92f97ee4910ed638e87075b8e8ce69599e"}, - {file = "coverage-7.6.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:24eda3a24a38157eee639ca9afe45eefa8d2420d49468819ac5f88b10de84f4c"}, - {file = "coverage-7.6.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4c81ed2820b9023a9a90717020315e63b17b18c274a332e3b6437d7ff70abe0"}, - {file = "coverage-7.6.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd55f8fc8fa494958772a2a7302b0354ab16e0b9272b3c3d83cdb5bec5bd1779"}, - {file = "coverage-7.6.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f39e2f3530ed1626c66e7493be7a8423b023ca852aacdc91fb30162c350d2a92"}, - {file = "coverage-7.6.8-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:716a78a342679cd1177bc8c2fe957e0ab91405bd43a17094324845200b2fddf4"}, - {file = "coverage-7.6.8-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:177f01eeaa3aee4a5ffb0d1439c5952b53d5010f86e9d2667963e632e30082cc"}, - {file = "coverage-7.6.8-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:912e95017ff51dc3d7b6e2be158dedc889d9a5cc3382445589ce554f1a34c0ea"}, - {file = "coverage-7.6.8-cp39-cp39-win32.whl", hash = "sha256:4db3ed6a907b555e57cc2e6f14dc3a4c2458cdad8919e40b5357ab9b6db6c43e"}, - {file = "coverage-7.6.8-cp39-cp39-win_amd64.whl", hash = "sha256:428ac484592f780e8cd7b6b14eb568f7c85460c92e2a37cb0c0e5186e1a0d076"}, - {file = "coverage-7.6.8-pp39.pp310-none-any.whl", hash = "sha256:5c52a036535d12590c32c49209e79cabaad9f9ad8aa4cbd875b68c4d67a9cbce"}, - {file = "coverage-7.6.8.tar.gz", hash = "sha256:8b2b8503edb06822c86d82fa64a4a5cb0760bb8f31f26e138ec743f422f37cfc"}, + {file = "coverage-7.10.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:53808194afdf948c462215e9403cca27a81cf150d2f9b386aee4dab614ae2ffe"}, + {file = "coverage-7.10.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f4d1b837d1abf72187a61645dbf799e0d7705aa9232924946e1f57eb09a3bf00"}, + {file = "coverage-7.10.3-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:2a90dd4505d3cc68b847ab10c5ee81822a968b5191664e8a0801778fa60459fa"}, + {file = "coverage-7.10.3-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:d52989685ff5bf909c430e6d7f6550937bc6d6f3e6ecb303c97a86100efd4596"}, + {file = "coverage-7.10.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bdb558a1d97345bde3a9f4d3e8d11c9e5611f748646e9bb61d7d612a796671b5"}, + {file = "coverage-7.10.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c9e6331a8f09cb1fc8bda032752af03c366870b48cce908875ba2620d20d0ad4"}, + {file = "coverage-7.10.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:992f48bf35b720e174e7fae916d943599f1a66501a2710d06c5f8104e0756ee1"}, + {file = "coverage-7.10.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c5595fc4ad6a39312c786ec3326d7322d0cf10e3ac6a6df70809910026d67cfb"}, + {file = "coverage-7.10.3-cp310-cp310-win32.whl", hash = "sha256:9e92fa1f2bd5a57df9d00cf9ce1eb4ef6fccca4ceabec1c984837de55329db34"}, + {file = "coverage-7.10.3-cp310-cp310-win_amd64.whl", hash = "sha256:b96524d6e4a3ce6a75c56bb15dbd08023b0ae2289c254e15b9fbdddf0c577416"}, + {file = "coverage-7.10.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f2ff2e2afdf0d51b9b8301e542d9c21a8d084fd23d4c8ea2b3a1b3c96f5f7397"}, + {file = "coverage-7.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:18ecc5d1b9a8c570f6c9b808fa9a2b16836b3dd5414a6d467ae942208b095f85"}, + {file = "coverage-7.10.3-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:1af4461b25fe92889590d438905e1fc79a95680ec2a1ff69a591bb3fdb6c7157"}, + {file = "coverage-7.10.3-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:3966bc9a76b09a40dc6063c8b10375e827ea5dfcaffae402dd65953bef4cba54"}, + {file = "coverage-7.10.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:205a95b87ef4eb303b7bc5118b47b6b6604a644bcbdb33c336a41cfc0a08c06a"}, + {file = "coverage-7.10.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b3801b79fb2ad61e3c7e2554bab754fc5f105626056980a2b9cf3aef4f13f84"}, + {file = "coverage-7.10.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b0dc69c60224cda33d384572da945759756e3f06b9cdac27f302f53961e63160"}, + {file = "coverage-7.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a83d4f134bab2c7ff758e6bb1541dd72b54ba295ced6a63d93efc2e20cb9b124"}, + {file = "coverage-7.10.3-cp311-cp311-win32.whl", hash = "sha256:54e409dd64e5302b2a8fdf44ec1c26f47abd1f45a2dcf67bd161873ee05a59b8"}, + {file = "coverage-7.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:30c601610a9b23807c5e9e2e442054b795953ab85d525c3de1b1b27cebeb2117"}, + {file = "coverage-7.10.3-cp311-cp311-win_arm64.whl", hash = "sha256:dabe662312a97958e932dee056f2659051d822552c0b866823e8ba1c2fe64770"}, + {file = "coverage-7.10.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:449c1e2d3a84d18bd204258a897a87bc57380072eb2aded6a5b5226046207b42"}, + {file = "coverage-7.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1d4f9ce50b9261ad196dc2b2e9f1fbbee21651b54c3097a25ad783679fd18294"}, + {file = "coverage-7.10.3-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:4dd4564207b160d0d45c36a10bc0a3d12563028e8b48cd6459ea322302a156d7"}, + {file = "coverage-7.10.3-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:5ca3c9530ee072b7cb6a6ea7b640bcdff0ad3b334ae9687e521e59f79b1d0437"}, + {file = "coverage-7.10.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b6df359e59fa243c9925ae6507e27f29c46698359f45e568fd51b9315dbbe587"}, + {file = "coverage-7.10.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a181e4c2c896c2ff64c6312db3bda38e9ade2e1aa67f86a5628ae85873786cea"}, + {file = "coverage-7.10.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a374d4e923814e8b72b205ef6b3d3a647bb50e66f3558582eda074c976923613"}, + {file = "coverage-7.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:daeefff05993e5e8c6e7499a8508e7bd94502b6b9a9159c84fd1fe6bce3151cb"}, + {file = "coverage-7.10.3-cp312-cp312-win32.whl", hash = "sha256:187ecdcac21f9636d570e419773df7bd2fda2e7fa040f812e7f95d0bddf5f79a"}, + {file = "coverage-7.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:4a50ad2524ee7e4c2a95e60d2b0b83283bdfc745fe82359d567e4f15d3823eb5"}, + {file = "coverage-7.10.3-cp312-cp312-win_arm64.whl", hash = "sha256:c112f04e075d3495fa3ed2200f71317da99608cbb2e9345bdb6de8819fc30571"}, + {file = "coverage-7.10.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b99e87304ffe0eb97c5308447328a584258951853807afdc58b16143a530518a"}, + {file = "coverage-7.10.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4af09c7574d09afbc1ea7da9dcea23665c01f3bc1b1feb061dac135f98ffc53a"}, + {file = "coverage-7.10.3-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:488e9b50dc5d2aa9521053cfa706209e5acf5289e81edc28291a24f4e4488f46"}, + {file = "coverage-7.10.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:913ceddb4289cbba3a310704a424e3fb7aac2bc0c3a23ea473193cb290cf17d4"}, + {file = "coverage-7.10.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b1f91cbc78c7112ab84ed2a8defbccd90f888fcae40a97ddd6466b0bec6ae8a"}, + {file = "coverage-7.10.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b0bac054d45af7cd938834b43a9878b36ea92781bcb009eab040a5b09e9927e3"}, + {file = "coverage-7.10.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:fe72cbdd12d9e0f4aca873fa6d755e103888a7f9085e4a62d282d9d5b9f7928c"}, + {file = "coverage-7.10.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c1e2e927ab3eadd7c244023927d646e4c15c65bb2ac7ae3c3e9537c013700d21"}, + {file = "coverage-7.10.3-cp313-cp313-win32.whl", hash = "sha256:24d0c13de473b04920ddd6e5da3c08831b1170b8f3b17461d7429b61cad59ae0"}, + {file = "coverage-7.10.3-cp313-cp313-win_amd64.whl", hash = "sha256:3564aae76bce4b96e2345cf53b4c87e938c4985424a9be6a66ee902626edec4c"}, + {file = "coverage-7.10.3-cp313-cp313-win_arm64.whl", hash = "sha256:f35580f19f297455f44afcd773c9c7a058e52eb6eb170aa31222e635f2e38b87"}, + {file = "coverage-7.10.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:07009152f497a0464ffdf2634586787aea0e69ddd023eafb23fc38267db94b84"}, + {file = "coverage-7.10.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:8dd2ba5f0c7e7e8cc418be2f0c14c4d9e3f08b8fb8e4c0f83c2fe87d03eb655e"}, + {file = "coverage-7.10.3-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:1ae22b97003c74186e034a93e4f946c75fad8c0ce8d92fbbc168b5e15ee2841f"}, + {file = "coverage-7.10.3-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:eb329f1046888a36b1dc35504d3029e1dd5afe2196d94315d18c45ee380f67d5"}, + {file = "coverage-7.10.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce01048199a91f07f96ca3074b0c14021f4fe7ffd29a3e6a188ac60a5c3a4af8"}, + {file = "coverage-7.10.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:08b989a06eb9dfacf96d42b7fb4c9a22bafa370d245dc22fa839f2168c6f9fa1"}, + {file = "coverage-7.10.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:669fe0d4e69c575c52148511029b722ba8d26e8a3129840c2ce0522e1452b256"}, + {file = "coverage-7.10.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:3262d19092771c83f3413831d9904b1ccc5f98da5de4ffa4ad67f5b20c7aaf7b"}, + {file = "coverage-7.10.3-cp313-cp313t-win32.whl", hash = "sha256:cc0ee4b2ccd42cab7ee6be46d8a67d230cb33a0a7cd47a58b587a7063b6c6b0e"}, + {file = "coverage-7.10.3-cp313-cp313t-win_amd64.whl", hash = "sha256:03db599f213341e2960430984e04cf35fb179724e052a3ee627a068653cf4a7c"}, + {file = "coverage-7.10.3-cp313-cp313t-win_arm64.whl", hash = "sha256:46eae7893ba65f53c71284585a262f083ef71594f05ec5c85baf79c402369098"}, + {file = "coverage-7.10.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:bce8b8180912914032785850d8f3aacb25ec1810f5f54afc4a8b114e7a9b55de"}, + {file = "coverage-7.10.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:07790b4b37d56608536f7c1079bd1aa511567ac2966d33d5cec9cf520c50a7c8"}, + {file = "coverage-7.10.3-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:e79367ef2cd9166acedcbf136a458dfe9a4a2dd4d1ee95738fb2ee581c56f667"}, + {file = "coverage-7.10.3-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:419d2a0f769f26cb1d05e9ccbc5eab4cb5d70231604d47150867c07822acbdf4"}, + {file = "coverage-7.10.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee221cf244757cdc2ac882e3062ab414b8464ad9c884c21e878517ea64b3fa26"}, + {file = "coverage-7.10.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c2079d8cdd6f7373d628e14b3357f24d1db02c9dc22e6a007418ca7a2be0435a"}, + {file = "coverage-7.10.3-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:bd8df1f83c0703fa3ca781b02d36f9ec67ad9cb725b18d486405924f5e4270bd"}, + {file = "coverage-7.10.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6b4e25e0fa335c8aa26e42a52053f3786a61cc7622b4d54ae2dad994aa754fec"}, + {file = "coverage-7.10.3-cp314-cp314-win32.whl", hash = "sha256:d7c3d02c2866deb217dce664c71787f4b25420ea3eaf87056f44fb364a3528f5"}, + {file = "coverage-7.10.3-cp314-cp314-win_amd64.whl", hash = "sha256:9c8916d44d9e0fe6cdb2227dc6b0edd8bc6c8ef13438bbbf69af7482d9bb9833"}, + {file = "coverage-7.10.3-cp314-cp314-win_arm64.whl", hash = "sha256:1007d6a2b3cf197c57105cc1ba390d9ff7f0bee215ced4dea530181e49c65ab4"}, + {file = "coverage-7.10.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:ebc8791d346410d096818788877d675ca55c91db87d60e8f477bd41c6970ffc6"}, + {file = "coverage-7.10.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1f4e4d8e75f6fd3c6940ebeed29e3d9d632e1f18f6fb65d33086d99d4d073241"}, + {file = "coverage-7.10.3-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:24581ed69f132b6225a31b0228ae4885731cddc966f8a33fe5987288bdbbbd5e"}, + {file = "coverage-7.10.3-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ec151569ddfccbf71bac8c422dce15e176167385a00cd86e887f9a80035ce8a5"}, + {file = "coverage-7.10.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2ae8e7c56290b908ee817200c0b65929b8050bc28530b131fe7c6dfee3e7d86b"}, + {file = "coverage-7.10.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5fb742309766d7e48e9eb4dc34bc95a424707bc6140c0e7d9726e794f11b92a0"}, + {file = "coverage-7.10.3-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:c65e2a5b32fbe1e499f1036efa6eb9cb4ea2bf6f7168d0e7a5852f3024f471b1"}, + {file = "coverage-7.10.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d48d2cb07d50f12f4f18d2bb75d9d19e3506c26d96fffabf56d22936e5ed8f7c"}, + {file = "coverage-7.10.3-cp314-cp314t-win32.whl", hash = "sha256:dec0d9bc15ee305e09fe2cd1911d3f0371262d3cfdae05d79515d8cb712b4869"}, + {file = "coverage-7.10.3-cp314-cp314t-win_amd64.whl", hash = "sha256:424ea93a323aa0f7f01174308ea78bde885c3089ec1bef7143a6d93c3e24ef64"}, + {file = "coverage-7.10.3-cp314-cp314t-win_arm64.whl", hash = "sha256:f5983c132a62d93d71c9ef896a0b9bf6e6828d8d2ea32611f58684fba60bba35"}, + {file = "coverage-7.10.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:da749daa7e141985487e1ff90a68315b0845930ed53dc397f4ae8f8bab25b551"}, + {file = "coverage-7.10.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f3126fb6a47d287f461d9b1aa5d1a8c97034d1dffb4f452f2cf211289dae74ef"}, + {file = "coverage-7.10.3-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3da794db13cc27ca40e1ec8127945b97fab78ba548040047d54e7bfa6d442dca"}, + {file = "coverage-7.10.3-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:4e27bebbd184ef8d1c1e092b74a2b7109dcbe2618dce6e96b1776d53b14b3fe8"}, + {file = "coverage-7.10.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8fd4ee2580b9fefbd301b4f8f85b62ac90d1e848bea54f89a5748cf132782118"}, + {file = "coverage-7.10.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:6999920bdd73259ce11cabfc1307484f071ecc6abdb2ca58d98facbcefc70f16"}, + {file = "coverage-7.10.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:c3623f929db885fab100cb88220a5b193321ed37e03af719efdbaf5d10b6e227"}, + {file = "coverage-7.10.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:25b902c5e15dea056485d782e420bb84621cc08ee75d5131ecb3dbef8bd1365f"}, + {file = "coverage-7.10.3-cp39-cp39-win32.whl", hash = "sha256:f930a4d92b004b643183451fe9c8fe398ccf866ed37d172ebaccfd443a097f61"}, + {file = "coverage-7.10.3-cp39-cp39-win_amd64.whl", hash = "sha256:08e638a93c8acba13c7842953f92a33d52d73e410329acd472280d2a21a6c0e1"}, + {file = "coverage-7.10.3-py3-none-any.whl", hash = "sha256:416a8d74dc0adfd33944ba2f405897bab87b7e9e84a391e09d241956bd953ce1"}, + {file = "coverage-7.10.3.tar.gz", hash = "sha256:812ba9250532e4a823b070b0420a36499859542335af3dca8f47fc6aa1a05619"}, ] [package.dependencies] @@ -524,14 +544,41 @@ reference = "pypi-public" [[package]] name = "dataclasses-json" -version = "0.6.7" +version = "0.5.9" +description = "Easily serialize dataclasses to and from JSON" +optional = false +python-versions = ">=3.6" +groups = ["dev"] +markers = "python_version >= \"3.12\"" +files = [ + {file = "dataclasses-json-0.5.9.tar.gz", hash = "sha256:e9ac87b73edc0141aafbce02b44e93553c3123ad574958f0fe52a534b6707e8e"}, + {file = "dataclasses_json-0.5.9-py3-none-any.whl", hash = "sha256:1280542631df1c375b7bc92e5b86d39e06c44760d7e3571a537b3b8acabf2f0c"}, +] + +[package.dependencies] +marshmallow = ">=3.3.0,<4.0.0" +marshmallow-enum = ">=1.5.1,<2.0.0" +typing-inspect = ">=0.4.0" + +[package.extras] +dev = ["flake8", "hypothesis", "ipython", "mypy (>=0.710)", "portray", "pytest (>=7.2.0)", "setuptools", "simplejson", "twine", "types-dataclasses ; python_version == \"3.6\"", "wheel"] + +[package.source] +type = "legacy" +url = "https://pypi.org/simple" +reference = "pypi-public" + +[[package]] +name = "dataclasses-json" +version = "0.5.14" description = "Easily serialize dataclasses to and from JSON." optional = false -python-versions = ">=3.7,<4.0" +python-versions = ">=3.7,<3.13" groups = ["dev"] +markers = "python_version < \"3.12\"" files = [ - {file = "dataclasses_json-0.6.7-py3-none-any.whl", hash = "sha256:0dbf33f26c8d5305befd61b39d2b3414e8a407bedc2834dea9b8d642666fb40a"}, - {file = "dataclasses_json-0.6.7.tar.gz", hash = "sha256:b6b3e528266ea45b9535223bc53ca645f5208833c29229e847b3f26a1cc55fc0"}, + {file = "dataclasses_json-0.5.14-py3-none-any.whl", hash = "sha256:5ec6fed642adb1dbdb4182badb01e0861badfd8fda82e3b67f44b2d1e9d10d21"}, + {file = "dataclasses_json-0.5.14.tar.gz", hash = "sha256:d82896a94c992ffaf689cd1fafc180164e2abdd415b8f94a7f78586af5886236"}, ] [package.dependencies] @@ -588,17 +635,20 @@ reference = "pypi-public" [[package]] name = "exceptiongroup" -version = "1.2.2" +version = "1.3.0" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" groups = ["main", "dev"] markers = "python_version < \"3.11\"" files = [ - {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, - {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, + {file = "exceptiongroup-1.3.0-py3-none-any.whl", hash = "sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10"}, + {file = "exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88"}, ] +[package.dependencies] +typing-extensions = {version = ">=4.6.0", markers = "python_version < \"3.13\""} + [package.extras] test = ["pytest (>=6)"] @@ -630,14 +680,14 @@ reference = "pypi-public" [[package]] name = "h11" -version = "0.14.0" +version = "0.16.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" groups = ["main"] files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, + {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, + {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, ] [package.source] @@ -647,22 +697,26 @@ reference = "pypi-public" [[package]] name = "http-server-base" -version = "2.0.8" +version = "2.0.10" description = "Library for simple HTTP server & REST HTTP server base based on Tornado. Includes: Logging requests and responses with Request Id; Configuration loading; Methods for requests proxying" optional = false python-versions = ">=3.6.0" groups = ["dev"] files = [ - {file = "http-server-base-2.0.8.tar.gz", hash = "sha256:771964bc9f7ad24e1528f75aa93c5389104107bcd79a31bf71e4438cf20bad36"}, - {file = "http_server_base-2.0.8-py3-none-any.whl", hash = "sha256:6a5990421618c5c5359b9918df12581ea6d90c7227bdb4f3b22c348c6628cb3c"}, + {file = "http-server-base-2.0.10.tar.gz", hash = "sha256:e07ecf47d7943694d9c80142758505369cf817550f312448f561c727cb95ff7f"}, + {file = "http_server_base-2.0.10-py3-none-any.whl", hash = "sha256:d3466e0f00272c7abf04bc38e818e7668dbf3095da68c70b96ede09a57f21fac"}, ] [package.dependencies] camel-case-switcher = ">=2.0" -dataclasses-json = ">=0.5.2" -parse = ">=1.18.0" -tornado = ">=6.0.4" -typing-inspect = ">=0.6.0" +dataclasses-json = ">=0.5.6,<0.6.0" +parse = ">=1.19.0,<1.20.0" +tornado = ">=6.1,<7.0" +typing-inspect = ">=0.7.1,<0.8.0" + +[package.extras] +all = ["lxml", "unittest-xml-reporting"] +test = ["lxml", "unittest-xml-reporting"] [package.source] type = "legacy" @@ -671,19 +725,19 @@ reference = "pypi-public" [[package]] name = "httpcore" -version = "1.0.7" +version = "1.0.9" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" groups = ["main"] files = [ - {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"}, - {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"}, + {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"}, + {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"}, ] [package.dependencies] certifi = "*" -h11 = ">=0.13,<0.15" +h11 = ">=0.16" [package.extras] asyncio = ["anyio (>=4.0,<5.0)"] @@ -765,15 +819,15 @@ reference = "pypi-public" [[package]] name = "importlib-metadata" -version = "8.5.0" +version = "8.7.0" description = "Read metadata from Python packages" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] -markers = "python_version < \"3.10\"" +markers = "python_version == \"3.9\"" files = [ - {file = "importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b"}, - {file = "importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7"}, + {file = "importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd"}, + {file = "importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000"}, ] [package.dependencies] @@ -785,7 +839,7 @@ cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] enabler = ["pytest-enabler (>=2.2)"] perf = ["ipython"] -test = ["flufl.flake8", "importlib-resources (>=1.3) ; python_version < \"3.9\"", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] +test = ["flufl.flake8", "importlib_resources (>=1.3) ; python_version < \"3.9\"", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] type = ["pytest-mypy"] [package.source] @@ -795,14 +849,14 @@ reference = "pypi-public" [[package]] name = "iniconfig" -version = "2.0.0" +version = "2.1.0" description = "brain-dead simple config-ini parsing" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, + {file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"}, + {file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"}, ] [package.source] @@ -893,14 +947,14 @@ reference = "pypi-public" [[package]] name = "jsonschema" -version = "4.23.0" +version = "4.25.0" description = "An implementation of JSON Schema validation for Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566"}, - {file = "jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4"}, + {file = "jsonschema-4.25.0-py3-none-any.whl", hash = "sha256:24c2e8da302de79c8b9382fee3e76b355e44d2a4364bb207159ce10b517bd716"}, + {file = "jsonschema-4.25.0.tar.gz", hash = "sha256:e63acf5c11762c0e6672ffb61482bdf57f0876684d8d249c0fe2d730d48bc55f"}, ] [package.dependencies] @@ -911,7 +965,7 @@ rpds-py = ">=0.7.1" [package.extras] format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] -format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=24.6.0)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "rfc3987-syntax (>=1.1.0)", "uri-template", "webcolors (>=24.6.0)"] [package.source] type = "legacy" @@ -920,20 +974,20 @@ reference = "pypi-public" [[package]] name = "jsonschema-path" -version = "0.3.3" +version = "0.3.4" description = "JSONSchema Spec with object-oriented paths" optional = false python-versions = ">=3.8.0,<4.0.0" groups = ["dev"] files = [ - {file = "jsonschema_path-0.3.3-py3-none-any.whl", hash = "sha256:203aff257f8038cd3c67be614fe6b2001043408cb1b4e36576bc4921e09d83c4"}, - {file = "jsonschema_path-0.3.3.tar.gz", hash = "sha256:f02e5481a4288ec062f8e68c808569e427d905bedfecb7f2e4c69ef77957c382"}, + {file = "jsonschema_path-0.3.4-py3-none-any.whl", hash = "sha256:f502191fdc2b22050f9a81c9237be9d27145b9001c55842bece5e94e382e52f8"}, + {file = "jsonschema_path-0.3.4.tar.gz", hash = "sha256:8365356039f16cc65fddffafda5f58766e34bebab7d6d105616ab52bc4297001"}, ] [package.dependencies] pathable = ">=0.4.1,<0.5.0" PyYAML = ">=5.1" -referencing = ">=0.28.0,<0.36.0" +referencing = "<0.37.0" requests = ">=2.31.0,<3.0.0" [package.source] @@ -943,14 +997,14 @@ reference = "pypi-public" [[package]] name = "jsonschema-specifications" -version = "2023.12.1" +version = "2025.4.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"}, - {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"}, + {file = "jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af"}, + {file = "jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608"}, ] [package.dependencies] @@ -963,49 +1017,26 @@ reference = "pypi-public" [[package]] name = "lazy-object-proxy" -version = "1.10.0" +version = "1.11.0" description = "A fast and thorough lazy object proxy." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-win32.whl", hash = "sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-win32.whl", hash = "sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-win32.whl", hash = "sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-win32.whl", hash = "sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-win32.whl", hash = "sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"}, - {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"}, + {file = "lazy_object_proxy-1.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:132bc8a34f2f2d662a851acfd1b93df769992ed1b81e2b1fda7db3e73b0d5a18"}, + {file = "lazy_object_proxy-1.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:01261a3afd8621a1accb5682df2593dc7ec7d21d38f411011a5712dcd418fbed"}, + {file = "lazy_object_proxy-1.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:090935756cc041e191f22f4f9c7fd4fe9a454717067adf5b1bbd2ce3046b556e"}, + {file = "lazy_object_proxy-1.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:76ec715017f06410f57df442c1a8d66e6b5f7035077785b129817f5ae58810a4"}, + {file = "lazy_object_proxy-1.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9a9f39098e93a63618a79eef2889ae3cf0605f676cd4797fdfd49fcd7ddc318b"}, + {file = "lazy_object_proxy-1.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:ee13f67f4fcd044ef27bfccb1c93d39c100046fec1fad6e9a1fcdfd17492aeb3"}, + {file = "lazy_object_proxy-1.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:fd4c84eafd8dd15ea16f7d580758bc5c2ce1f752faec877bb2b1f9f827c329cd"}, + {file = "lazy_object_proxy-1.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:d2503427bda552d3aefcac92f81d9e7ca631e680a2268cbe62cd6a58de6409b7"}, + {file = "lazy_object_proxy-1.11.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0613116156801ab3fccb9e2b05ed83b08ea08c2517fdc6c6bc0d4697a1a376e3"}, + {file = "lazy_object_proxy-1.11.0-cp313-cp313t-win_amd64.whl", hash = "sha256:bb03c507d96b65f617a6337dedd604399d35face2cdf01526b913fb50c4cb6e8"}, + {file = "lazy_object_proxy-1.11.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28c174db37946f94b97a97b579932ff88f07b8d73a46b6b93322b9ac06794a3b"}, + {file = "lazy_object_proxy-1.11.0-cp39-cp39-win_amd64.whl", hash = "sha256:d662f0669e27704495ff1f647070eb8816931231c44e583f4d0701b7adf6272f"}, + {file = "lazy_object_proxy-1.11.0-py3-none-any.whl", hash = "sha256:a56a5093d433341ff7da0e89f9b486031ccd222ec8e52ec84d0ec1cdc819674b"}, + {file = "lazy_object_proxy-1.11.0.tar.gz", hash = "sha256:18874411864c9fbbbaa47f9fc1dd7aea754c86cfde21278ef427639d1dd78e9c"}, ] [package.source] @@ -1110,14 +1141,14 @@ reference = "pypi-public" [[package]] name = "marshmallow" -version = "3.23.1" +version = "3.26.1" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "marshmallow-3.23.1-py3-none-any.whl", hash = "sha256:fece2eb2c941180ea1b7fcbd4a83c51bfdd50093fdd3ad2585ee5e1df2508491"}, - {file = "marshmallow-3.23.1.tar.gz", hash = "sha256:3a8dfda6edd8dcdbf216c0ede1d1e78d230a6dc9c5a088f58c4083b974a0d468"}, + {file = "marshmallow-3.26.1-py3-none-any.whl", hash = "sha256:3350409f20a70a7e4e11a27661187b77cdcaeb20abca41c1454fe33636bea09c"}, + {file = "marshmallow-3.26.1.tar.gz", hash = "sha256:e6d8affb6cb61d39d26402096dc0aee12d5a26d490a121f118d2e81dc0719dc6"}, ] [package.dependencies] @@ -1125,7 +1156,7 @@ packaging = ">=17.0" [package.extras] dev = ["marshmallow[tests]", "pre-commit (>=3.5,<5.0)", "tox"] -docs = ["alabaster (==1.0.0)", "autodocsumm (==0.2.14)", "sphinx (==8.1.3)", "sphinx-issues (==5.0.0)", "sphinx-version-warning (==1.1.2)"] +docs = ["autodocsumm (==0.2.14)", "furo (==2024.8.6)", "sphinx (==8.1.3)", "sphinx-copybutton (==0.5.2)", "sphinx-issues (==5.0.0)", "sphinxext-opengraph (==0.9.1)"] tests = ["pytest", "simplejson"] [package.source] @@ -1133,16 +1164,37 @@ type = "legacy" url = "https://pypi.org/simple" reference = "pypi-public" +[[package]] +name = "marshmallow-enum" +version = "1.5.1" +description = "Enum field for Marshmallow" +optional = false +python-versions = "*" +groups = ["dev"] +markers = "python_version >= \"3.12\"" +files = [ + {file = "marshmallow-enum-1.5.1.tar.gz", hash = "sha256:38e697e11f45a8e64b4a1e664000897c659b60aa57bfa18d44e226a9920b6e58"}, + {file = "marshmallow_enum-1.5.1-py2.py3-none-any.whl", hash = "sha256:57161ab3dbfde4f57adeb12090f39592e992b9c86d206d02f6bd03ebec60f072"}, +] + +[package.dependencies] +marshmallow = ">=2.0.0" + +[package.source] +type = "legacy" +url = "https://pypi.org/simple" +reference = "pypi-public" + [[package]] name = "more-itertools" -version = "10.5.0" +version = "10.7.0" description = "More routines for operating on iterables, beyond itertools" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "more-itertools-10.5.0.tar.gz", hash = "sha256:5482bfef7849c25dc3c6dd53a6173ae4795da2a41a80faea6700d9f5846c5da6"}, - {file = "more_itertools-10.5.0-py3-none-any.whl", hash = "sha256:037b0d3203ce90cca8ab1defbbdac29d5f993fc20131f3664dc8d6acfa872aef"}, + {file = "more_itertools-10.7.0-py3-none-any.whl", hash = "sha256:d43980384673cb07d2f7d2d918c616b30c659c089ee23953f601d6609c67510e"}, + {file = "more_itertools-10.7.0.tar.gz", hash = "sha256:9fddd5403be01a94b204faadcff459ec3568cf110265d3c54323e1e866ad29d3"}, ] [package.source] @@ -1218,14 +1270,14 @@ reference = "pypi-public" [[package]] name = "mypy-extensions" -version = "1.0.0" +version = "1.1.0" description = "Type system extensions for programs checked with the mypy type checker." optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, - {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, + {file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"}, + {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, ] [package.source] @@ -1260,19 +1312,19 @@ reference = "pypi-public" [[package]] name = "openapi-schema-validator" -version = "0.6.2" +version = "0.6.3" description = "OpenAPI schema validation for Python" optional = false python-versions = ">=3.8.0,<4.0.0" groups = ["dev"] files = [ - {file = "openapi_schema_validator-0.6.2-py3-none-any.whl", hash = "sha256:c4887c1347c669eb7cded9090f4438b710845cd0f90d1fb9e1b3303fb37339f8"}, - {file = "openapi_schema_validator-0.6.2.tar.gz", hash = "sha256:11a95c9c9017912964e3e5f2545a5b11c3814880681fcacfb73b1759bb4f2804"}, + {file = "openapi_schema_validator-0.6.3-py3-none-any.whl", hash = "sha256:f3b9870f4e556b5a62a1c39da72a6b4b16f3ad9c73dc80084b1b11e74ba148a3"}, + {file = "openapi_schema_validator-0.6.3.tar.gz", hash = "sha256:f37bace4fc2a5d96692f4f8b31dc0f8d7400fd04f3a937798eaf880d425de6ee"}, ] [package.dependencies] jsonschema = ">=4.19.1,<5.0.0" -jsonschema-specifications = ">=2023.5.2,<2024.0.0" +jsonschema-specifications = ">=2023.5.2" rfc3339-validator = "*" [package.source] @@ -1305,14 +1357,14 @@ reference = "pypi-public" [[package]] name = "packaging" -version = "24.2" +version = "25.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, - {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, + {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, + {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, ] [package.source] @@ -1322,14 +1374,14 @@ reference = "pypi-public" [[package]] name = "parse" -version = "1.20.2" +version = "1.19.1" description = "parse() is the opposite of format()" optional = false python-versions = "*" groups = ["dev"] files = [ - {file = "parse-1.20.2-py2.py3-none-any.whl", hash = "sha256:967095588cb802add9177d0c0b6133b5ba33b1ea9007ca800e526f42a85af558"}, - {file = "parse-1.20.2.tar.gz", hash = "sha256:b41d604d16503c79d81af5165155c0b20f6c8d6c559efa66b4b695c3e5a0a0ce"}, + {file = "parse-1.19.1-py2.py3-none-any.whl", hash = "sha256:371ed3800dc63983832159cc9373156613947707bc448b5215473a219dbd4362"}, + {file = "parse-1.19.1.tar.gz", hash = "sha256:cc3a47236ff05da377617ddefa867b7ba983819c664e1afe46249e5b469be464"}, ] [package.source] @@ -1339,14 +1391,14 @@ reference = "pypi-public" [[package]] name = "pathable" -version = "0.4.3" +version = "0.4.4" description = "Object-oriented paths" optional = false python-versions = ">=3.7.0,<4.0.0" groups = ["dev"] files = [ - {file = "pathable-0.4.3-py3-none-any.whl", hash = "sha256:cdd7b1f9d7d5c8b8d3315dbf5a86b2596053ae845f056f57d97c0eefff84da14"}, - {file = "pathable-0.4.3.tar.gz", hash = "sha256:5c869d315be50776cc8a993f3af43e0c60dc01506b399643f919034ebf4cdcab"}, + {file = "pathable-0.4.4-py3-none-any.whl", hash = "sha256:5ae9e94793b6ef5a4cbe0a7ce9dbbefc1eec38df253763fd0aeeacf2762dbbc2"}, + {file = "pathable-0.4.4.tar.gz", hash = "sha256:6905a3cd17804edfac7875b5f6c9142a218c7caef78693c2dbbbfbac186d88b2"}, ] [package.source] @@ -1373,20 +1425,20 @@ reference = "pypi-public" [[package]] name = "platformdirs" -version = "4.3.6" +version = "4.3.8" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, - {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, + {file = "platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4"}, + {file = "platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc"}, ] [package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.11.2)"] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.4)", "pytest-cov (>=6)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.14.1)"] [package.source] type = "legacy" @@ -1395,19 +1447,19 @@ reference = "pypi-public" [[package]] name = "pluggy" -version = "1.5.0" +version = "1.6.0" description = "plugin and hook calling mechanisms for python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, + {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"}, + {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"}, ] [package.extras] dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] +testing = ["coverage", "pytest", "pytest-benchmark"] [package.source] type = "legacy" @@ -1640,14 +1692,14 @@ reference = "pypi-public" [[package]] name = "pygments" -version = "2.18.0" +version = "2.19.2" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, - {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, + {file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b"}, + {file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"}, ] [package.extras] @@ -1660,69 +1712,69 @@ reference = "pypi-public" [[package]] name = "pymongo" -version = "4.13.2" +version = "4.14.0" description = "PyMongo - the Official MongoDB Python driver" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "pymongo-4.13.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:01065eb1838e3621a30045ab14d1a60ee62e01f65b7cf154e69c5c722ef14d2f"}, - {file = "pymongo-4.13.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9ab0325d436075f5f1901cde95afae811141d162bc42d9a5befb647fda585ae6"}, - {file = "pymongo-4.13.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdd8041902963c84dc4e27034fa045ac55fabcb2a4ba5b68b880678557573e70"}, - {file = "pymongo-4.13.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b00ab04630aa4af97294e9abdbe0506242396269619c26f5761fd7b2524ef501"}, - {file = "pymongo-4.13.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16440d0da30ba804c6c01ea730405fdbbb476eae760588ea09e6e7d28afc06de"}, - {file = "pymongo-4.13.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad9a2d1357aed5d6750deb315f62cb6f5b3c4c03ffb650da559cb09cb29e6fe8"}, - {file = "pymongo-4.13.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c793223aef21a8c415c840af1ca36c55a05d6fa3297378da35de3fb6661c0174"}, - {file = "pymongo-4.13.2-cp310-cp310-win32.whl", hash = "sha256:8ef6ae029a3390565a0510c872624514dde350007275ecd8126b09175aa02cca"}, - {file = "pymongo-4.13.2-cp310-cp310-win_amd64.whl", hash = "sha256:66f168f8c5b1e2e3d518507cf9f200f0c86ac79e2b2be9e7b6c8fd1e2f7d7824"}, - {file = "pymongo-4.13.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7af8c56d0a7fcaf966d5292e951f308fb1f8bac080257349e14742725fd7990d"}, - {file = "pymongo-4.13.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ad24f5864706f052b05069a6bc59ff875026e28709548131448fe1e40fc5d80f"}, - {file = "pymongo-4.13.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a10069454195d1d2dda98d681b1dbac9a425f4b0fe744aed5230c734021c1cb9"}, - {file = "pymongo-4.13.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3e20862b81e3863bcd72334e3577a3107604553b614a8d25ee1bb2caaea4eb90"}, - {file = "pymongo-4.13.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6b4d5794ca408317c985d7acfb346a60f96f85a7c221d512ff0ecb3cce9d6110"}, - {file = "pymongo-4.13.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c8e0420fb4901006ae7893e76108c2a36a343b4f8922466d51c45e9e2ceb717"}, - {file = "pymongo-4.13.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:239b5f83b83008471d54095e145d4c010f534af99e87cc8877fc6827736451a0"}, - {file = "pymongo-4.13.2-cp311-cp311-win32.whl", hash = "sha256:6bceb524110c32319eb7119422e400dbcafc5b21bcc430d2049a894f69b604e5"}, - {file = "pymongo-4.13.2-cp311-cp311-win_amd64.whl", hash = "sha256:ab87484c97ae837b0a7bbdaa978fa932fbb6acada3f42c3b2bee99121a594715"}, - {file = "pymongo-4.13.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ec89516622dfc8b0fdff499612c0bd235aa45eeb176c9e311bcc0af44bf952b6"}, - {file = "pymongo-4.13.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f30eab4d4326df54fee54f31f93e532dc2918962f733ee8e115b33e6fe151d92"}, - {file = "pymongo-4.13.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cce9428d12ba396ea245fc4c51f20228cead01119fcc959e1c80791ea45f820"}, - {file = "pymongo-4.13.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac9241b727a69c39117c12ac1e52d817ea472260dadc66262c3fdca0bab0709b"}, - {file = "pymongo-4.13.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3efc4c515b371a9fa1d198b6e03340985bfe1a55ae2d2b599a714934e7bc61ab"}, - {file = "pymongo-4.13.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f57a664aa74610eb7a52fa93f2cf794a1491f4f76098343485dd7da5b3bcff06"}, - {file = "pymongo-4.13.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3dcb0b8cdd499636017a53f63ef64cf9b6bd3fd9355796c5a1d228e4be4a4c94"}, - {file = "pymongo-4.13.2-cp312-cp312-win32.whl", hash = "sha256:bf43ae07804d7762b509f68e5ec73450bb8824e960b03b861143ce588b41f467"}, - {file = "pymongo-4.13.2-cp312-cp312-win_amd64.whl", hash = "sha256:812a473d584bcb02ab819d379cd5e752995026a2bb0d7713e78462b6650d3f3a"}, - {file = "pymongo-4.13.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d6044ca0eb74d97f7d3415264de86a50a401b7b0b136d30705f022f9163c3124"}, - {file = "pymongo-4.13.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:dd326bcb92d28d28a3e7ef0121602bad78691b6d4d1f44b018a4616122f1ba8b"}, - {file = "pymongo-4.13.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfb0c21bdd58e58625c9cd8de13e859630c29c9537944ec0a14574fdf88c2ac4"}, - {file = "pymongo-4.13.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9c7d345d57f17b1361008aea78a37e8c139631a46aeb185dd2749850883c7ba"}, - {file = "pymongo-4.13.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8860445a8da1b1545406fab189dc20319aff5ce28e65442b2b4a8f4228a88478"}, - {file = "pymongo-4.13.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01c184b612f67d5a4c8f864ae7c40b6cc33c0e9bb05e39d08666f8831d120504"}, - {file = "pymongo-4.13.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ea8c62d5f3c6529407c12471385d9a05f9fb890ce68d64976340c85cd661b"}, - {file = "pymongo-4.13.2-cp313-cp313-win32.whl", hash = "sha256:d13556e91c4a8cb07393b8c8be81e66a11ebc8335a40fa4af02f4d8d3b40c8a1"}, - {file = "pymongo-4.13.2-cp313-cp313-win_amd64.whl", hash = "sha256:cfc69d7bc4d4d5872fd1e6de25e6a16e2372c7d5556b75c3b8e2204dce73e3fb"}, - {file = "pymongo-4.13.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a457d2ac34c05e9e8a6bb724115b093300bf270f0655fb897df8d8604b2e3700"}, - {file = "pymongo-4.13.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:02f131a6e61559613b1171b53fbe21fed64e71b0cb4858c47fc9bc7c8e0e501c"}, - {file = "pymongo-4.13.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c942d1c6334e894271489080404b1a2e3b8bd5de399f2a0c14a77d966be5bc9"}, - {file = "pymongo-4.13.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:850168d115680ab66a0931a6aa9dd98ed6aa5e9c3b9a6c12128049b9a5721bc5"}, - {file = "pymongo-4.13.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af7dfff90647ee77c53410f7fe8ca4fe343f8b768f40d2d0f71a5602f7b5a541"}, - {file = "pymongo-4.13.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8057f9bc9c94a8fd54ee4f5e5106e445a8f406aff2df74746f21c8791ee2403"}, - {file = "pymongo-4.13.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:51040e1ba78d6671f8c65b29e2864483451e789ce93b1536de9cc4456ede87fa"}, - {file = "pymongo-4.13.2-cp313-cp313t-win32.whl", hash = "sha256:7ab86b98a18c8689514a9f8d0ec7d9ad23a949369b31c9a06ce4a45dcbffcc5e"}, - {file = "pymongo-4.13.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c38168263ed94a250fc5cf9c6d33adea8ab11c9178994da1c3481c2a49d235f8"}, - {file = "pymongo-4.13.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a89739a86da31adcef41f6c3ae62b38a8bad156bba71fe5898871746c5af83"}, - {file = "pymongo-4.13.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:de529aebd1ddae2de778d926b3e8e2e42a9b37b5c668396aad8f28af75e606f9"}, - {file = "pymongo-4.13.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34cc7d4cd7586c1c4f7af2b97447404046c2d8e7ed4c7214ed0e21dbeb17d57d"}, - {file = "pymongo-4.13.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:884cb88a9d4c4c9810056b9c71817bd9714bbe58c461f32b65be60c56759823b"}, - {file = "pymongo-4.13.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:389cb6415ec341c73f81fbf54970ccd0cd5d3fa7c238dcdb072db051d24e2cb4"}, - {file = "pymongo-4.13.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49f9968ea7e6a86d4c9bd31d2095f0419efc498ea5e6067e75ade1f9e64aea3d"}, - {file = "pymongo-4.13.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae07315bb106719c678477e61077cd28505bb7d3fd0a2341e75a9510118cb785"}, - {file = "pymongo-4.13.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4dc60b3f5e1448fd011c729ad5d8735f603b0a08a8773ec8e34a876ccc7de45f"}, - {file = "pymongo-4.13.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:75462d6ce34fb2dd98f8ac3732a7a1a1fbb2e293c4f6e615766731d044ad730e"}, - {file = "pymongo-4.13.2-cp39-cp39-win32.whl", hash = "sha256:b7e04c45f6a7d5a13fe064f42130d29b0730cb83dd387a623563ff3b9bd2f4d1"}, - {file = "pymongo-4.13.2-cp39-cp39-win_amd64.whl", hash = "sha256:0603145c9be5e195ae61ba7a93eb283abafdbd87f6f30e6c2dfc242940fe280c"}, - {file = "pymongo-4.13.2.tar.gz", hash = "sha256:0f64c6469c2362962e6ce97258ae1391abba1566a953a492562d2924b44815c2"}, + {file = "pymongo-4.14.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8f63035da92f923d966fb07017969b5c42d0450412ceb6c3f837a02b72a5a69d"}, + {file = "pymongo-4.14.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7e6b1f34db93856b083760fe2848562c0b39433fc1a0827155ea02fee5733c64"}, + {file = "pymongo-4.14.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5af18f9239e672c2b9713a8e5f0267e927c9dcc3960dce9599712f304fd377f"}, + {file = "pymongo-4.14.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ced2a58339aeb2e0f4e347778a5b5130acca0384c0146135e1afe7bf2b9a2701"}, + {file = "pymongo-4.14.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23d48bf539f581603a7425e4eeaea279bdb89caa0462aab29e163c11c5d02a9c"}, + {file = "pymongo-4.14.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4220f42630b260c2594589202efaa4916f3799e87c9fdc479fb6ed62457c74fe"}, + {file = "pymongo-4.14.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f7e34bd3fe6e5034e22d47d685391ae0f2f2b22d150e9a36a6b77f0c0234e21d"}, + {file = "pymongo-4.14.0-cp310-cp310-win32.whl", hash = "sha256:f4712911b6dc07aaa00aaa87749b63370ca5900714a2b4b19ba1385163e90295"}, + {file = "pymongo-4.14.0-cp310-cp310-win_amd64.whl", hash = "sha256:74fb430c98c5a7f871bfa40f77c8158af8bde256215296d7cfe1ec9c5a417718"}, + {file = "pymongo-4.14.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:88f9c415c59450c0ac4133aa4745459101619ca7997dc468209bf395563667d2"}, + {file = "pymongo-4.14.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6513474970fdf3afd9dc9de9065a31a1efc8288ca9068510e5e973fa80200c8f"}, + {file = "pymongo-4.14.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d60c0e9b13603317062f316906fb5be4000f5b5fe288eb6e9df4ef8695863cd8"}, + {file = "pymongo-4.14.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a203cb757f75804c43aec48f23cb138e890a24219716ce9958041dace39ba470"}, + {file = "pymongo-4.14.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4bdf65bf8167a92b70de44d28ed9df1c2dec83fe2a82e26c01fc89da8ca6bc34"}, + {file = "pymongo-4.14.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c1f79fdd99db135dbc1678477793764c156c11623d0d9dbe4c57767d081b79b8"}, + {file = "pymongo-4.14.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:05152a2ca55805c37f77ac473e51915f44bba9a6b32fed875fa9df61d81681ca"}, + {file = "pymongo-4.14.0-cp311-cp311-win32.whl", hash = "sha256:aa25505e36e32bef3fa135578461f24735e9d4b7b62e6aa21eb8f2d163cef86d"}, + {file = "pymongo-4.14.0-cp311-cp311-win_amd64.whl", hash = "sha256:c57aef3b48e8c7818689604ff24e54524e164056ec56ee5ea48384264360bf59"}, + {file = "pymongo-4.14.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:864f005459ef9b19c60cb96ca755124e0291d211000859f33c62a166f55eba27"}, + {file = "pymongo-4.14.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:69956f971a6f8dafc62e5c83ac21ebf15d5757e13758284f12218ad7fbd3c0fe"}, + {file = "pymongo-4.14.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91200f47453a1cb97136629e28f4091a109756ec37067b622f90c4b626b4af8d"}, + {file = "pymongo-4.14.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c32f5e23e9dd31e20800d993f3695b6627664dc7da30ac1669f9716833b33175"}, + {file = "pymongo-4.14.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4407c1ab7514e08d4af0f58cf9d7eddc86e45e458fe46f99a72a5d18dbc71dc"}, + {file = "pymongo-4.14.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ec6666e599ee10cc5cde0cc6a8519373384a14af3a310ede1bf177105f38fb0"}, + {file = "pymongo-4.14.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a809a982a843bb561c7030059d54ea7f1dcc967cc72a45f1435695e2a2a515a5"}, + {file = "pymongo-4.14.0-cp312-cp312-win32.whl", hash = "sha256:3866d031fcbe81d7677c078026e650aeef8915560ba758a28051debce38f6b77"}, + {file = "pymongo-4.14.0-cp312-cp312-win_amd64.whl", hash = "sha256:91b8de871a40225bbe4f92d6dc3f20c26bf838e49d3563592131401af0d665a6"}, + {file = "pymongo-4.14.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:54576faf8e6fefe17886a201f9df61bdf728ccac9a7a0847095a0e8480cd6ec1"}, + {file = "pymongo-4.14.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c64ef5e58adedecb853a680eb5d1aea50770197f212e202d6eb50c801797b576"}, + {file = "pymongo-4.14.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f1c0cdddf9783065bf55d3fe025843c0974a828bafc9bb5514ae28dd2828a40"}, + {file = "pymongo-4.14.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22805d4fa587b526ac3129ee634a8761abbeb76883045718438f5b8e72f91ce6"}, + {file = "pymongo-4.14.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c3e6e669cf36b27694de2730f5d5b31ef492ffe99446563192c4e8ee84ca859"}, + {file = "pymongo-4.14.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9763a2477d5388df65ab6f591cf0cb7fd34f4a66f873c31e63288fd79887742c"}, + {file = "pymongo-4.14.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88d6f5aceab3528b8760942a57635599925f7fd743691f9d759a02124207dfd0"}, + {file = "pymongo-4.14.0-cp313-cp313-win32.whl", hash = "sha256:e283feafde118cbbb03adc036b882be042b0a2eca121ec5d6bbec3e12980e8fa"}, + {file = "pymongo-4.14.0-cp313-cp313-win_amd64.whl", hash = "sha256:a29b62d421a512833e99d4781b64e695cfe23b4c4a9159ea83e56fc2660f2480"}, + {file = "pymongo-4.14.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:67225d5fb1be2a34c6f73cde9d81a8041a095a94ed2433e2cf9e2f1657443def"}, + {file = "pymongo-4.14.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:bbf0dbe8554978c1271bdc82366852245a03ab124a1387b6f3531f64adac3c39"}, + {file = "pymongo-4.14.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7f61561cbc7426ffc2d37b46e65ab5323fc366644f70c8e2240ed5452e2c402"}, + {file = "pymongo-4.14.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:502cd551679753fb7838221c3bbb963da4b4aa0576848192afb1f78128ff729a"}, + {file = "pymongo-4.14.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba6b59afef2b47c4859bf36115fa577330601b93e39d04f39fcc6103e801286"}, + {file = "pymongo-4.14.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c0fa103f978c15f7c2f0d7b2e010c24c327432a0310503bc0ec93c5f9be9e81"}, + {file = "pymongo-4.14.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5fe93676afe37794f01b8df5cf16528dce4d7d174cdf51ea1586c234eb5263c2"}, + {file = "pymongo-4.14.0-cp313-cp313t-win32.whl", hash = "sha256:1462fc2bb39527f01eea5378172b66c45d62e22fa4be957afe2ec747c4d2ff51"}, + {file = "pymongo-4.14.0-cp313-cp313t-win_amd64.whl", hash = "sha256:e506af9b25aac77cc5c5ea4a72f81764e4f5ea90ca799aac43d665ab269f291d"}, + {file = "pymongo-4.14.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:66c70cea48a6d8eba16f7435033fe3f948335132f807a85e9d861f908ea43fe7"}, + {file = "pymongo-4.14.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f8874b1ac78b204a3df69351b3c594971be91dba80f7a9189b95097595601223"}, + {file = "pymongo-4.14.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34e1a670892b0435456bbc068e244c71ae3dc0994f7abdf5a0b06db73e32dd86"}, + {file = "pymongo-4.14.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e08f4dcd8f23f7ea2c9ae1bb5a043d9b77dfbf03fc489b7e1de91422b0c4772a"}, + {file = "pymongo-4.14.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1914e06a443db7e32ddb992050983910bd6861e690200005d7eb1418ad2dc4be"}, + {file = "pymongo-4.14.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71a6915825716edc65239b5658b7de6a09af5d30517706122df66579ddba9349"}, + {file = "pymongo-4.14.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fa071c00fd5556b79c0d94d95b2b778d70ff4ea701aeecb63dd5353d7e025f7"}, + {file = "pymongo-4.14.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f51b4885ed197a874272f1bff99d15d0c1f35c665d86b9a2a6572a10246af974"}, + {file = "pymongo-4.14.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7698c8cf749988b7fd259ea65a5fcd409ebde1c6bc1bf75ab7fadbfbd154a3a4"}, + {file = "pymongo-4.14.0-cp39-cp39-win32.whl", hash = "sha256:85d8d145e06916db46b1e25f39b5361fdf62d58e127b1b1652a0df4ea8081b2f"}, + {file = "pymongo-4.14.0-cp39-cp39-win_amd64.whl", hash = "sha256:ee0e677b2139c5b560b63d745a5f26d2e985f624848132deb366c6d3322836bb"}, + {file = "pymongo-4.14.0.tar.gz", hash = "sha256:15674e3fddce78cf134fc4e55f90abf1608a48430130cd35efdf3802fd47a1d1"}, ] [package.dependencies] @@ -1730,7 +1782,7 @@ dnspython = ">=1.16.0,<3.0.0" [package.extras] aws = ["pymongo-auth-aws (>=1.1.0,<2.0.0)"] -docs = ["furo (==2024.8.6)", "readthedocs-sphinx-search (>=0.3,<1.0)", "sphinx (>=5.3,<9)", "sphinx-autobuild (>=2020.9.1)", "sphinx-rtd-theme (>=2,<4)", "sphinxcontrib-shellcheck (>=1,<2)"] +docs = ["furo (==2025.7.19)", "readthedocs-sphinx-search (>=0.3,<1.0)", "sphinx (>=5.3,<9)", "sphinx-autobuild (>=2020.9.1)", "sphinx-rtd-theme (>=2,<4)", "sphinxcontrib-shellcheck (>=1,<2)"] encryption = ["certifi ; os_name == \"nt\" or sys_platform == \"darwin\"", "pymongo-auth-aws (>=1.1.0,<2.0.0)", "pymongocrypt (>=1.13.0,<2.0.0)"] gssapi = ["pykerberos ; os_name != \"nt\"", "winkerberos (>=0.5.0) ; os_name == \"nt\""] ocsp = ["certifi ; os_name == \"nt\" or sys_platform == \"darwin\"", "cryptography (>=2.5)", "pyopenssl (>=17.2.0)", "requests (<3.0.0)", "service-identity (>=18.1.0)"] @@ -1873,19 +1925,20 @@ reference = "pypi-public" [[package]] name = "referencing" -version = "0.35.1" +version = "0.36.2" description = "JSON Referencing + Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"}, - {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"}, + {file = "referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0"}, + {file = "referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa"}, ] [package.dependencies] attrs = ">=22.2.0" rpds-py = ">=0.7.0" +typing-extensions = {version = ">=4.4.0", markers = "python_version < \"3.13\""} [package.source] type = "legacy" @@ -1894,106 +1947,99 @@ reference = "pypi-public" [[package]] name = "regex" -version = "2024.11.6" +version = "2025.7.34" description = "Alternative regular expression module, to replace re." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91"}, - {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0"}, - {file = "regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e"}, - {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde"}, - {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e"}, - {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2"}, - {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf"}, - {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c"}, - {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86"}, - {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67"}, - {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d"}, - {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2"}, - {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008"}, - {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62"}, - {file = "regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e"}, - {file = "regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519"}, - {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638"}, - {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7"}, - {file = "regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20"}, - {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114"}, - {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3"}, - {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f"}, - {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0"}, - {file = "regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55"}, - {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89"}, - {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d"}, - {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34"}, - {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d"}, - {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45"}, - {file = "regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9"}, - {file = "regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60"}, - {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a"}, - {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9"}, - {file = "regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2"}, - {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4"}, - {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577"}, - {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3"}, - {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e"}, - {file = "regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe"}, - {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e"}, - {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29"}, - {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39"}, - {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51"}, - {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad"}, - {file = "regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54"}, - {file = "regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b"}, - {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84"}, - {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4"}, - {file = "regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0"}, - {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0"}, - {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7"}, - {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7"}, - {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c"}, - {file = "regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3"}, - {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07"}, - {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e"}, - {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6"}, - {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4"}, - {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d"}, - {file = "regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff"}, - {file = "regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a"}, - {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3a51ccc315653ba012774efca4f23d1d2a8a8f278a6072e29c7147eee7da446b"}, - {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ad182d02e40de7459b73155deb8996bbd8e96852267879396fb274e8700190e3"}, - {file = "regex-2024.11.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ba9b72e5643641b7d41fa1f6d5abda2c9a263ae835b917348fc3c928182ad467"}, - {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40291b1b89ca6ad8d3f2b82782cc33807f1406cf68c8d440861da6304d8ffbbd"}, - {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cdf58d0e516ee426a48f7b2c03a332a4114420716d55769ff7108c37a09951bf"}, - {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a36fdf2af13c2b14738f6e973aba563623cb77d753bbbd8d414d18bfaa3105dd"}, - {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1cee317bfc014c2419a76bcc87f071405e3966da434e03e13beb45f8aced1a6"}, - {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50153825ee016b91549962f970d6a4442fa106832e14c918acd1c8e479916c4f"}, - {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea1bfda2f7162605f6e8178223576856b3d791109f15ea99a9f95c16a7636fb5"}, - {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:df951c5f4a1b1910f1a99ff42c473ff60f8225baa1cdd3539fe2819d9543e9df"}, - {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:072623554418a9911446278f16ecb398fb3b540147a7828c06e2011fa531e773"}, - {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f654882311409afb1d780b940234208a252322c24a93b442ca714d119e68086c"}, - {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:89d75e7293d2b3e674db7d4d9b1bee7f8f3d1609428e293771d1a962617150cc"}, - {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:f65557897fc977a44ab205ea871b690adaef6b9da6afda4790a2484b04293a5f"}, - {file = "regex-2024.11.6-cp38-cp38-win32.whl", hash = "sha256:6f44ec28b1f858c98d3036ad5d7d0bfc568bdd7a74f9c24e25f41ef1ebfd81a4"}, - {file = "regex-2024.11.6-cp38-cp38-win_amd64.whl", hash = "sha256:bb8f74f2f10dbf13a0be8de623ba4f9491faf58c24064f32b65679b021ed0001"}, - {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5704e174f8ccab2026bd2f1ab6c510345ae8eac818b613d7d73e785f1310f839"}, - {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:220902c3c5cc6af55d4fe19ead504de80eb91f786dc102fbd74894b1551f095e"}, - {file = "regex-2024.11.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7e351589da0850c125f1600a4c4ba3c722efefe16b297de54300f08d734fbf"}, - {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5056b185ca113c88e18223183aa1a50e66507769c9640a6ff75859619d73957b"}, - {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e34b51b650b23ed3354b5a07aab37034d9f923db2a40519139af34f485f77d0"}, - {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5670bce7b200273eee1840ef307bfa07cda90b38ae56e9a6ebcc9f50da9c469b"}, - {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08986dce1339bc932923e7d1232ce9881499a0e02925f7402fb7c982515419ef"}, - {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93c0b12d3d3bc25af4ebbf38f9ee780a487e8bf6954c115b9f015822d3bb8e48"}, - {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:764e71f22ab3b305e7f4c21f1a97e1526a25ebdd22513e251cf376760213da13"}, - {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f056bf21105c2515c32372bbc057f43eb02aae2fda61052e2f7622c801f0b4e2"}, - {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:69ab78f848845569401469da20df3e081e6b5a11cb086de3eed1d48f5ed57c95"}, - {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:86fddba590aad9208e2fa8b43b4c098bb0ec74f15718bb6a704e3c63e2cef3e9"}, - {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:684d7a212682996d21ca12ef3c17353c021fe9de6049e19ac8481ec35574a70f"}, - {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a03e02f48cd1abbd9f3b7e3586d97c8f7a9721c436f51a5245b3b9483044480b"}, - {file = "regex-2024.11.6-cp39-cp39-win32.whl", hash = "sha256:41758407fc32d5c3c5de163888068cfee69cb4c2be844e7ac517a52770f9af57"}, - {file = "regex-2024.11.6-cp39-cp39-win_amd64.whl", hash = "sha256:b2837718570f95dd41675328e111345f9b7095d821bac435aac173ac80b19983"}, - {file = "regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519"}, + {file = "regex-2025.7.34-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d856164d25e2b3b07b779bfed813eb4b6b6ce73c2fd818d46f47c1eb5cd79bd6"}, + {file = "regex-2025.7.34-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2d15a9da5fad793e35fb7be74eec450d968e05d2e294f3e0e77ab03fa7234a83"}, + {file = "regex-2025.7.34-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:95b4639c77d414efa93c8de14ce3f7965a94d007e068a94f9d4997bb9bd9c81f"}, + {file = "regex-2025.7.34-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d7de1ceed5a5f84f342ba4a9f4ae589524adf9744b2ee61b5da884b5b659834"}, + {file = "regex-2025.7.34-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:02e5860a250cd350c4933cf376c3bc9cb28948e2c96a8bc042aee7b985cfa26f"}, + {file = "regex-2025.7.34-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0a5966220b9a1a88691282b7e4350e9599cf65780ca60d914a798cb791aa1177"}, + {file = "regex-2025.7.34-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:48fb045bbd4aab2418dc1ba2088a5e32de4bfe64e1457b948bb328a8dc2f1c2e"}, + {file = "regex-2025.7.34-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:20ff8433fa45e131f7316594efe24d4679c5449c0ca69d91c2f9d21846fdf064"}, + {file = "regex-2025.7.34-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c436fd1e95c04c19039668cfb548450a37c13f051e8659f40aed426e36b3765f"}, + {file = "regex-2025.7.34-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:0b85241d3cfb9f8a13cefdfbd58a2843f208f2ed2c88181bf84e22e0c7fc066d"}, + {file = "regex-2025.7.34-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:075641c94126b064c65ab86e7e71fc3d63e7ff1bea1fb794f0773c97cdad3a03"}, + {file = "regex-2025.7.34-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:70645cad3407d103d1dbcb4841839d2946f7d36cf38acbd40120fee1682151e5"}, + {file = "regex-2025.7.34-cp310-cp310-win32.whl", hash = "sha256:3b836eb4a95526b263c2a3359308600bd95ce7848ebd3c29af0c37c4f9627cd3"}, + {file = "regex-2025.7.34-cp310-cp310-win_amd64.whl", hash = "sha256:cbfaa401d77334613cf434f723c7e8ba585df162be76474bccc53ae4e5520b3a"}, + {file = "regex-2025.7.34-cp310-cp310-win_arm64.whl", hash = "sha256:bca11d3c38a47c621769433c47f364b44e8043e0de8e482c5968b20ab90a3986"}, + {file = "regex-2025.7.34-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:da304313761b8500b8e175eb2040c4394a875837d5635f6256d6fa0377ad32c8"}, + {file = "regex-2025.7.34-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:35e43ebf5b18cd751ea81455b19acfdec402e82fe0dc6143edfae4c5c4b3909a"}, + {file = "regex-2025.7.34-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:96bbae4c616726f4661fe7bcad5952e10d25d3c51ddc388189d8864fbc1b3c68"}, + {file = "regex-2025.7.34-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9feab78a1ffa4f2b1e27b1bcdaad36f48c2fed4870264ce32f52a393db093c78"}, + {file = "regex-2025.7.34-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f14b36e6d4d07f1a5060f28ef3b3561c5d95eb0651741474ce4c0a4c56ba8719"}, + {file = "regex-2025.7.34-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:85c3a958ef8b3d5079c763477e1f09e89d13ad22198a37e9d7b26b4b17438b33"}, + {file = "regex-2025.7.34-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:37555e4ae0b93358fa7c2d240a4291d4a4227cc7c607d8f85596cdb08ec0a083"}, + {file = "regex-2025.7.34-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ee38926f31f1aa61b0232a3a11b83461f7807661c062df9eb88769d86e6195c3"}, + {file = "regex-2025.7.34-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a664291c31cae9c4a30589bd8bc2ebb56ef880c9c6264cb7643633831e606a4d"}, + {file = "regex-2025.7.34-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:f3e5c1e0925e77ec46ddc736b756a6da50d4df4ee3f69536ffb2373460e2dafd"}, + {file = "regex-2025.7.34-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d428fc7731dcbb4e2ffe43aeb8f90775ad155e7db4347a639768bc6cd2df881a"}, + {file = "regex-2025.7.34-cp311-cp311-win32.whl", hash = "sha256:e154a7ee7fa18333ad90b20e16ef84daaeac61877c8ef942ec8dfa50dc38b7a1"}, + {file = "regex-2025.7.34-cp311-cp311-win_amd64.whl", hash = "sha256:24257953d5c1d6d3c129ab03414c07fc1a47833c9165d49b954190b2b7f21a1a"}, + {file = "regex-2025.7.34-cp311-cp311-win_arm64.whl", hash = "sha256:3157aa512b9e606586900888cd469a444f9b898ecb7f8931996cb715f77477f0"}, + {file = "regex-2025.7.34-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:7f7211a746aced993bef487de69307a38c5ddd79257d7be83f7b202cb59ddb50"}, + {file = "regex-2025.7.34-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fb31080f2bd0681484b275461b202b5ad182f52c9ec606052020fe13eb13a72f"}, + {file = "regex-2025.7.34-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0200a5150c4cf61e407038f4b4d5cdad13e86345dac29ff9dab3d75d905cf130"}, + {file = "regex-2025.7.34-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:739a74970e736df0773788377969c9fea3876c2fc13d0563f98e5503e5185f46"}, + {file = "regex-2025.7.34-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4fef81b2f7ea6a2029161ed6dea9ae13834c28eb5a95b8771828194a026621e4"}, + {file = "regex-2025.7.34-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ea74cf81fe61a7e9d77989050d0089a927ab758c29dac4e8e1b6c06fccf3ebf0"}, + {file = "regex-2025.7.34-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e4636a7f3b65a5f340ed9ddf53585c42e3ff37101d383ed321bfe5660481744b"}, + {file = "regex-2025.7.34-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6cef962d7834437fe8d3da6f9bfc6f93f20f218266dcefec0560ed7765f5fe01"}, + {file = "regex-2025.7.34-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:cbe1698e5b80298dbce8df4d8d1182279fbdaf1044e864cbc9d53c20e4a2be77"}, + {file = "regex-2025.7.34-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:32b9f9bcf0f605eb094b08e8da72e44badabb63dde6b83bd530580b488d1c6da"}, + {file = "regex-2025.7.34-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:524c868ba527eab4e8744a9287809579f54ae8c62fbf07d62aacd89f6026b282"}, + {file = "regex-2025.7.34-cp312-cp312-win32.whl", hash = "sha256:d600e58ee6d036081c89696d2bdd55d507498a7180df2e19945c6642fac59588"}, + {file = "regex-2025.7.34-cp312-cp312-win_amd64.whl", hash = "sha256:9a9ab52a466a9b4b91564437b36417b76033e8778e5af8f36be835d8cb370d62"}, + {file = "regex-2025.7.34-cp312-cp312-win_arm64.whl", hash = "sha256:c83aec91af9c6fbf7c743274fd952272403ad9a9db05fe9bfc9df8d12b45f176"}, + {file = "regex-2025.7.34-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:c3c9740a77aeef3f5e3aaab92403946a8d34437db930a0280e7e81ddcada61f5"}, + {file = "regex-2025.7.34-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:69ed3bc611540f2ea70a4080f853741ec698be556b1df404599f8724690edbcd"}, + {file = "regex-2025.7.34-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d03c6f9dcd562c56527c42b8530aad93193e0b3254a588be1f2ed378cdfdea1b"}, + {file = "regex-2025.7.34-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6164b1d99dee1dfad33f301f174d8139d4368a9fb50bf0a3603b2eaf579963ad"}, + {file = "regex-2025.7.34-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1e4f4f62599b8142362f164ce776f19d79bdd21273e86920a7b604a4275b4f59"}, + {file = "regex-2025.7.34-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:72a26dcc6a59c057b292f39d41465d8233a10fd69121fa24f8f43ec6294e5415"}, + {file = "regex-2025.7.34-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d5273fddf7a3e602695c92716c420c377599ed3c853ea669c1fe26218867002f"}, + {file = "regex-2025.7.34-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c1844be23cd40135b3a5a4dd298e1e0c0cb36757364dd6cdc6025770363e06c1"}, + {file = "regex-2025.7.34-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:dde35e2afbbe2272f8abee3b9fe6772d9b5a07d82607b5788e8508974059925c"}, + {file = "regex-2025.7.34-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:f3f6e8e7af516a7549412ce57613e859c3be27d55341a894aacaa11703a4c31a"}, + {file = "regex-2025.7.34-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:469142fb94a869beb25b5f18ea87646d21def10fbacb0bcb749224f3509476f0"}, + {file = "regex-2025.7.34-cp313-cp313-win32.whl", hash = "sha256:da7507d083ee33ccea1310447410c27ca11fb9ef18c95899ca57ff60a7e4d8f1"}, + {file = "regex-2025.7.34-cp313-cp313-win_amd64.whl", hash = "sha256:9d644de5520441e5f7e2db63aec2748948cc39ed4d7a87fd5db578ea4043d997"}, + {file = "regex-2025.7.34-cp313-cp313-win_arm64.whl", hash = "sha256:7bf1c5503a9f2cbd2f52d7e260acb3131b07b6273c470abb78568174fe6bde3f"}, + {file = "regex-2025.7.34-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:8283afe7042d8270cecf27cca558873168e771183d4d593e3c5fe5f12402212a"}, + {file = "regex-2025.7.34-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:6c053f9647e3421dd2f5dff8172eb7b4eec129df9d1d2f7133a4386319b47435"}, + {file = "regex-2025.7.34-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a16dd56bbcb7d10e62861c3cd000290ddff28ea142ffb5eb3470f183628011ac"}, + {file = "regex-2025.7.34-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:69c593ff5a24c0d5c1112b0df9b09eae42b33c014bdca7022d6523b210b69f72"}, + {file = "regex-2025.7.34-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:98d0ce170fcde1a03b5df19c5650db22ab58af375aaa6ff07978a85c9f250f0e"}, + {file = "regex-2025.7.34-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d72765a4bff8c43711d5b0f5b452991a9947853dfa471972169b3cc0ba1d0751"}, + {file = "regex-2025.7.34-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4494f8fd95a77eb434039ad8460e64d57baa0434f1395b7da44015bef650d0e4"}, + {file = "regex-2025.7.34-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:4f42b522259c66e918a0121a12429b2abcf696c6f967fa37bdc7b72e61469f98"}, + {file = "regex-2025.7.34-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:aaef1f056d96a0a5d53ad47d019d5b4c66fe4be2da87016e0d43b7242599ffc7"}, + {file = "regex-2025.7.34-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:656433e5b7dccc9bc0da6312da8eb897b81f5e560321ec413500e5367fcd5d47"}, + {file = "regex-2025.7.34-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e91eb2c62c39705e17b4d42d4b86c4e86c884c0d15d9c5a47d0835f8387add8e"}, + {file = "regex-2025.7.34-cp314-cp314-win32.whl", hash = "sha256:f978ddfb6216028c8f1d6b0f7ef779949498b64117fc35a939022f67f810bdcb"}, + {file = "regex-2025.7.34-cp314-cp314-win_amd64.whl", hash = "sha256:4b7dc33b9b48fb37ead12ffc7bdb846ac72f99a80373c4da48f64b373a7abeae"}, + {file = "regex-2025.7.34-cp314-cp314-win_arm64.whl", hash = "sha256:4b8c4d39f451e64809912c82392933d80fe2e4a87eeef8859fcc5380d0173c64"}, + {file = "regex-2025.7.34-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:fd5edc3f453de727af267c7909d083e19f6426fc9dd149e332b6034f2a5611e6"}, + {file = "regex-2025.7.34-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fa1cdfb8db96ef20137de5587954c812821966c3e8b48ffc871e22d7ec0a4938"}, + {file = "regex-2025.7.34-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:89c9504fc96268e8e74b0283e548f53a80c421182a2007e3365805b74ceef936"}, + {file = "regex-2025.7.34-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:33be70d75fa05a904ee0dc43b650844e067d14c849df7e82ad673541cd465b5f"}, + {file = "regex-2025.7.34-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:57d25b6732ea93eeb1d090e8399b6235ca84a651b52d52d272ed37d3d2efa0f1"}, + {file = "regex-2025.7.34-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:baf2fe122a3db1c0b9f161aa44463d8f7e33eeeda47bb0309923deb743a18276"}, + {file = "regex-2025.7.34-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1a764a83128af9c1a54be81485b34dca488cbcacefe1e1d543ef11fbace191e1"}, + {file = "regex-2025.7.34-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c7f663ccc4093877f55b51477522abd7299a14c5bb7626c5238599db6a0cb95d"}, + {file = "regex-2025.7.34-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4913f52fbc7a744aaebf53acd8d3dc1b519e46ba481d4d7596de3c862e011ada"}, + {file = "regex-2025.7.34-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:efac4db9e044d47fd3b6b0d40b6708f4dfa2d8131a5ac1d604064147c0f552fd"}, + {file = "regex-2025.7.34-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:7373afae7cfb716e3b8e15d0184510d518f9d21471f2d62918dbece85f2c588f"}, + {file = "regex-2025.7.34-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:9960d162f3fecf6af252534a1ae337e9c2e20d74469fed782903b24e2cc9d3d7"}, + {file = "regex-2025.7.34-cp39-cp39-win32.whl", hash = "sha256:95d538b10eb4621350a54bf14600cc80b514211d91a019dc74b8e23d2159ace5"}, + {file = "regex-2025.7.34-cp39-cp39-win_amd64.whl", hash = "sha256:f7f3071b5faa605b0ea51ec4bb3ea7257277446b053f4fd3ad02b1dcb4e64353"}, + {file = "regex-2025.7.34-cp39-cp39-win_arm64.whl", hash = "sha256:716a47515ba1d03f8e8a61c5013041c8c90f2e21f055203498105d7571b44531"}, + {file = "regex-2025.7.34.tar.gz", hash = "sha256:9ead9765217afd04a86822dfcd4ed2747dfe426e887da413b15ff0ac2457e21a"}, ] [package.source] @@ -2003,19 +2049,19 @@ reference = "pypi-public" [[package]] name = "requests" -version = "2.32.3" +version = "2.32.4" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, + {file = "requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c"}, + {file = "requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422"}, ] [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" +charset_normalizer = ">=2,<4" idna = ">=2.5,<4" urllib3 = ">=1.21.1,<3" @@ -2050,102 +2096,167 @@ reference = "pypi-public" [[package]] name = "rpds-py" -version = "0.21.0" +version = "0.27.0" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "rpds_py-0.21.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a017f813f24b9df929674d0332a374d40d7f0162b326562daae8066b502d0590"}, - {file = "rpds_py-0.21.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:20cc1ed0bcc86d8e1a7e968cce15be45178fd16e2ff656a243145e0b439bd250"}, - {file = "rpds_py-0.21.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad116dda078d0bc4886cb7840e19811562acdc7a8e296ea6ec37e70326c1b41c"}, - {file = "rpds_py-0.21.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:808f1ac7cf3b44f81c9475475ceb221f982ef548e44e024ad5f9e7060649540e"}, - {file = "rpds_py-0.21.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de552f4a1916e520f2703ec474d2b4d3f86d41f353e7680b597512ffe7eac5d0"}, - {file = "rpds_py-0.21.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:efec946f331349dfc4ae9d0e034c263ddde19414fe5128580f512619abed05f1"}, - {file = "rpds_py-0.21.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b80b4690bbff51a034bfde9c9f6bf9357f0a8c61f548942b80f7b66356508bf5"}, - {file = "rpds_py-0.21.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:085ed25baac88953d4283e5b5bd094b155075bb40d07c29c4f073e10623f9f2e"}, - {file = "rpds_py-0.21.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:daa8efac2a1273eed2354397a51216ae1e198ecbce9036fba4e7610b308b6153"}, - {file = "rpds_py-0.21.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:95a5bad1ac8a5c77b4e658671642e4af3707f095d2b78a1fdd08af0dfb647624"}, - {file = "rpds_py-0.21.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3e53861b29a13d5b70116ea4230b5f0f3547b2c222c5daa090eb7c9c82d7f664"}, - {file = "rpds_py-0.21.0-cp310-none-win32.whl", hash = "sha256:ea3a6ac4d74820c98fcc9da4a57847ad2cc36475a8bd9683f32ab6d47a2bd682"}, - {file = "rpds_py-0.21.0-cp310-none-win_amd64.whl", hash = "sha256:b8f107395f2f1d151181880b69a2869c69e87ec079c49c0016ab96860b6acbe5"}, - {file = "rpds_py-0.21.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5555db3e618a77034954b9dc547eae94166391a98eb867905ec8fcbce1308d95"}, - {file = "rpds_py-0.21.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:97ef67d9bbc3e15584c2f3c74bcf064af36336c10d2e21a2131e123ce0f924c9"}, - {file = "rpds_py-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ab2c2a26d2f69cdf833174f4d9d86118edc781ad9a8fa13970b527bf8236027"}, - {file = "rpds_py-0.21.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4e8921a259f54bfbc755c5bbd60c82bb2339ae0324163f32868f63f0ebb873d9"}, - {file = "rpds_py-0.21.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a7ff941004d74d55a47f916afc38494bd1cfd4b53c482b77c03147c91ac0ac3"}, - {file = "rpds_py-0.21.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5145282a7cd2ac16ea0dc46b82167754d5e103a05614b724457cffe614f25bd8"}, - {file = "rpds_py-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de609a6f1b682f70bb7163da745ee815d8f230d97276db049ab447767466a09d"}, - {file = "rpds_py-0.21.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40c91c6e34cf016fa8e6b59d75e3dbe354830777fcfd74c58b279dceb7975b75"}, - {file = "rpds_py-0.21.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d2132377f9deef0c4db89e65e8bb28644ff75a18df5293e132a8d67748397b9f"}, - {file = "rpds_py-0.21.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0a9e0759e7be10109645a9fddaaad0619d58c9bf30a3f248a2ea57a7c417173a"}, - {file = "rpds_py-0.21.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9e20da3957bdf7824afdd4b6eeb29510e83e026473e04952dca565170cd1ecc8"}, - {file = "rpds_py-0.21.0-cp311-none-win32.whl", hash = "sha256:f71009b0d5e94c0e86533c0b27ed7cacc1239cb51c178fd239c3cfefefb0400a"}, - {file = "rpds_py-0.21.0-cp311-none-win_amd64.whl", hash = "sha256:e168afe6bf6ab7ab46c8c375606298784ecbe3ba31c0980b7dcbb9631dcba97e"}, - {file = "rpds_py-0.21.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:30b912c965b2aa76ba5168fd610087bad7fcde47f0a8367ee8f1876086ee6d1d"}, - {file = "rpds_py-0.21.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ca9989d5d9b1b300bc18e1801c67b9f6d2c66b8fd9621b36072ed1df2c977f72"}, - {file = "rpds_py-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f54e7106f0001244a5f4cf810ba8d3f9c542e2730821b16e969d6887b664266"}, - {file = "rpds_py-0.21.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fed5dfefdf384d6fe975cc026886aece4f292feaf69d0eeb716cfd3c5a4dd8be"}, - {file = "rpds_py-0.21.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:590ef88db231c9c1eece44dcfefd7515d8bf0d986d64d0caf06a81998a9e8cab"}, - {file = "rpds_py-0.21.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f983e4c2f603c95dde63df633eec42955508eefd8d0f0e6d236d31a044c882d7"}, - {file = "rpds_py-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b229ce052ddf1a01c67d68166c19cb004fb3612424921b81c46e7ea7ccf7c3bf"}, - {file = "rpds_py-0.21.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ebf64e281a06c904a7636781d2e973d1f0926a5b8b480ac658dc0f556e7779f4"}, - {file = "rpds_py-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:998a8080c4495e4f72132f3d66ff91f5997d799e86cec6ee05342f8f3cda7dca"}, - {file = "rpds_py-0.21.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:98486337f7b4f3c324ab402e83453e25bb844f44418c066623db88e4c56b7c7b"}, - {file = "rpds_py-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a78d8b634c9df7f8d175451cfeac3810a702ccb85f98ec95797fa98b942cea11"}, - {file = "rpds_py-0.21.0-cp312-none-win32.whl", hash = "sha256:a58ce66847711c4aa2ecfcfaff04cb0327f907fead8945ffc47d9407f41ff952"}, - {file = "rpds_py-0.21.0-cp312-none-win_amd64.whl", hash = "sha256:e860f065cc4ea6f256d6f411aba4b1251255366e48e972f8a347cf88077b24fd"}, - {file = "rpds_py-0.21.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:ee4eafd77cc98d355a0d02f263efc0d3ae3ce4a7c24740010a8b4012bbb24937"}, - {file = "rpds_py-0.21.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:688c93b77e468d72579351a84b95f976bd7b3e84aa6686be6497045ba84be560"}, - {file = "rpds_py-0.21.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c38dbf31c57032667dd5a2f0568ccde66e868e8f78d5a0d27dcc56d70f3fcd3b"}, - {file = "rpds_py-0.21.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2d6129137f43f7fa02d41542ffff4871d4aefa724a5fe38e2c31a4e0fd343fb0"}, - {file = "rpds_py-0.21.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:520ed8b99b0bf86a176271f6fe23024323862ac674b1ce5b02a72bfeff3fff44"}, - {file = "rpds_py-0.21.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aaeb25ccfb9b9014a10eaf70904ebf3f79faaa8e60e99e19eef9f478651b9b74"}, - {file = "rpds_py-0.21.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af04ac89c738e0f0f1b913918024c3eab6e3ace989518ea838807177d38a2e94"}, - {file = "rpds_py-0.21.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b9b76e2afd585803c53c5b29e992ecd183f68285b62fe2668383a18e74abe7a3"}, - {file = "rpds_py-0.21.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5afb5efde74c54724e1a01118c6e5c15e54e642c42a1ba588ab1f03544ac8c7a"}, - {file = "rpds_py-0.21.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:52c041802a6efa625ea18027a0723676a778869481d16803481ef6cc02ea8cb3"}, - {file = "rpds_py-0.21.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ee1e4fc267b437bb89990b2f2abf6c25765b89b72dd4a11e21934df449e0c976"}, - {file = "rpds_py-0.21.0-cp313-none-win32.whl", hash = "sha256:0c025820b78817db6a76413fff6866790786c38f95ea3f3d3c93dbb73b632202"}, - {file = "rpds_py-0.21.0-cp313-none-win_amd64.whl", hash = "sha256:320c808df533695326610a1b6a0a6e98f033e49de55d7dc36a13c8a30cfa756e"}, - {file = "rpds_py-0.21.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:2c51d99c30091f72a3c5d126fad26236c3f75716b8b5e5cf8effb18889ced928"}, - {file = "rpds_py-0.21.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cbd7504a10b0955ea287114f003b7ad62330c9e65ba012c6223dba646f6ffd05"}, - {file = "rpds_py-0.21.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6dcc4949be728ede49e6244eabd04064336012b37f5c2200e8ec8eb2988b209c"}, - {file = "rpds_py-0.21.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f414da5c51bf350e4b7960644617c130140423882305f7574b6cf65a3081cecb"}, - {file = "rpds_py-0.21.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9afe42102b40007f588666bc7de82451e10c6788f6f70984629db193849dced1"}, - {file = "rpds_py-0.21.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b929c2bb6e29ab31f12a1117c39f7e6d6450419ab7464a4ea9b0b417174f044"}, - {file = "rpds_py-0.21.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8404b3717da03cbf773a1d275d01fec84ea007754ed380f63dfc24fb76ce4592"}, - {file = "rpds_py-0.21.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e12bb09678f38b7597b8346983d2323a6482dcd59e423d9448108c1be37cac9d"}, - {file = "rpds_py-0.21.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:58a0e345be4b18e6b8501d3b0aa540dad90caeed814c515e5206bb2ec26736fd"}, - {file = "rpds_py-0.21.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:c3761f62fcfccf0864cc4665b6e7c3f0c626f0380b41b8bd1ce322103fa3ef87"}, - {file = "rpds_py-0.21.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c2b2f71c6ad6c2e4fc9ed9401080badd1469fa9889657ec3abea42a3d6b2e1ed"}, - {file = "rpds_py-0.21.0-cp39-none-win32.whl", hash = "sha256:b21747f79f360e790525e6f6438c7569ddbfb1b3197b9e65043f25c3c9b489d8"}, - {file = "rpds_py-0.21.0-cp39-none-win_amd64.whl", hash = "sha256:0626238a43152918f9e72ede9a3b6ccc9e299adc8ade0d67c5e142d564c9a83d"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6b4ef7725386dc0762857097f6b7266a6cdd62bfd209664da6712cb26acef035"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:6bc0e697d4d79ab1aacbf20ee5f0df80359ecf55db33ff41481cf3e24f206919"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da52d62a96e61c1c444f3998c434e8b263c384f6d68aca8274d2e08d1906325c"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:98e4fe5db40db87ce1c65031463a760ec7906ab230ad2249b4572c2fc3ef1f9f"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:30bdc973f10d28e0337f71d202ff29345320f8bc49a31c90e6c257e1ccef4333"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:faa5e8496c530f9c71f2b4e1c49758b06e5f4055e17144906245c99fa6d45356"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32eb88c30b6a4f0605508023b7141d043a79b14acb3b969aa0b4f99b25bc7d4a"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a89a8ce9e4e75aeb7fa5d8ad0f3fecdee813802592f4f46a15754dcb2fd6b061"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:241e6c125568493f553c3d0fdbb38c74babf54b45cef86439d4cd97ff8feb34d"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:3b766a9f57663396e4f34f5140b3595b233a7b146e94777b97a8413a1da1be18"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:af4a644bf890f56e41e74be7d34e9511e4954894d544ec6b8efe1e21a1a8da6c"}, - {file = "rpds_py-0.21.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3e30a69a706e8ea20444b98a49f386c17b26f860aa9245329bab0851ed100677"}, - {file = "rpds_py-0.21.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:031819f906bb146561af051c7cef4ba2003d28cff07efacef59da973ff7969ba"}, - {file = "rpds_py-0.21.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b876f2bc27ab5954e2fd88890c071bd0ed18b9c50f6ec3de3c50a5ece612f7a6"}, - {file = "rpds_py-0.21.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc5695c321e518d9f03b7ea6abb5ea3af4567766f9852ad1560f501b17588c7b"}, - {file = "rpds_py-0.21.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b4de1da871b5c0fd5537b26a6fc6814c3cc05cabe0c941db6e9044ffbb12f04a"}, - {file = "rpds_py-0.21.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:878f6fea96621fda5303a2867887686d7a198d9e0f8a40be100a63f5d60c88c9"}, - {file = "rpds_py-0.21.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8eeec67590e94189f434c6d11c426892e396ae59e4801d17a93ac96b8c02a6c"}, - {file = "rpds_py-0.21.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ff2eba7f6c0cb523d7e9cff0903f2fe1feff8f0b2ceb6bd71c0e20a4dcee271"}, - {file = "rpds_py-0.21.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a429b99337062877d7875e4ff1a51fe788424d522bd64a8c0a20ef3021fdb6ed"}, - {file = "rpds_py-0.21.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:d167e4dbbdac48bd58893c7e446684ad5d425b407f9336e04ab52e8b9194e2ed"}, - {file = "rpds_py-0.21.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:4eb2de8a147ffe0626bfdc275fc6563aa7bf4b6db59cf0d44f0ccd6ca625a24e"}, - {file = "rpds_py-0.21.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e78868e98f34f34a88e23ee9ccaeeec460e4eaf6db16d51d7a9b883e5e785a5e"}, - {file = "rpds_py-0.21.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:4991ca61656e3160cdaca4851151fd3f4a92e9eba5c7a530ab030d6aee96ec89"}, - {file = "rpds_py-0.21.0.tar.gz", hash = "sha256:ed6378c9d66d0de903763e7706383d60c33829581f0adff47b6535f1802fa6db"}, + {file = "rpds_py-0.27.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:130c1ffa5039a333f5926b09e346ab335f0d4ec393b030a18549a7c7e7c2cea4"}, + {file = "rpds_py-0.27.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a4cf32a26fa744101b67bfd28c55d992cd19438aff611a46cac7f066afca8fd4"}, + {file = "rpds_py-0.27.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64a0fe3f334a40b989812de70160de6b0ec7e3c9e4a04c0bbc48d97c5d3600ae"}, + {file = "rpds_py-0.27.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a0ff7ee28583ab30a52f371b40f54e7138c52ca67f8ca17ccb7ccf0b383cb5f"}, + {file = "rpds_py-0.27.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:15ea4d2e182345dd1b4286593601d766411b43f868924afe297570658c31a62b"}, + {file = "rpds_py-0.27.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:36184b44bf60a480863e51021c26aca3dfe8dd2f5eeabb33622b132b9d8b8b54"}, + {file = "rpds_py-0.27.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b78430703cfcf5f5e86eb74027a1ed03a93509273d7c705babb547f03e60016"}, + {file = "rpds_py-0.27.0-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:dbd749cff1defbde270ca346b69b3baf5f1297213ef322254bf2a28537f0b046"}, + {file = "rpds_py-0.27.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6bde37765564cd22a676dd8101b657839a1854cfaa9c382c5abf6ff7accfd4ae"}, + {file = "rpds_py-0.27.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1d66f45b9399036e890fb9c04e9f70c33857fd8f58ac8db9f3278cfa835440c3"}, + {file = "rpds_py-0.27.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d85d784c619370d9329bbd670f41ff5f2ae62ea4519761b679d0f57f0f0ee267"}, + {file = "rpds_py-0.27.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5df559e9e7644d9042f626f2c3997b555f347d7a855a15f170b253f6c5bfe358"}, + {file = "rpds_py-0.27.0-cp310-cp310-win32.whl", hash = "sha256:b8a4131698b6992b2a56015f51646711ec5d893a0b314a4b985477868e240c87"}, + {file = "rpds_py-0.27.0-cp310-cp310-win_amd64.whl", hash = "sha256:cbc619e84a5e3ab2d452de831c88bdcad824414e9c2d28cd101f94dbdf26329c"}, + {file = "rpds_py-0.27.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:dbc2ab5d10544eb485baa76c63c501303b716a5c405ff2469a1d8ceffaabf622"}, + {file = "rpds_py-0.27.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7ec85994f96a58cf7ed288caa344b7fe31fd1d503bdf13d7331ead5f70ab60d5"}, + {file = "rpds_py-0.27.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:190d7285cd3bb6d31d37a0534d7359c1ee191eb194c511c301f32a4afa5a1dd4"}, + {file = "rpds_py-0.27.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c10d92fb6d7fd827e44055fcd932ad93dac6a11e832d51534d77b97d1d85400f"}, + {file = "rpds_py-0.27.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd2c1d27ebfe6a015cfa2005b7fe8c52d5019f7bbdd801bc6f7499aab9ae739e"}, + {file = "rpds_py-0.27.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4790c9d5dd565ddb3e9f656092f57268951398cef52e364c405ed3112dc7c7c1"}, + {file = "rpds_py-0.27.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4300e15e7d03660f04be84a125d1bdd0e6b2f674bc0723bc0fd0122f1a4585dc"}, + {file = "rpds_py-0.27.0-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:59195dc244fc183209cf8a93406889cadde47dfd2f0a6b137783aa9c56d67c85"}, + {file = "rpds_py-0.27.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fae4a01ef8c4cb2bbe92ef2063149596907dc4a881a8d26743b3f6b304713171"}, + {file = "rpds_py-0.27.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e3dc8d4ede2dbae6c0fc2b6c958bf51ce9fd7e9b40c0f5b8835c3fde44f5807d"}, + {file = "rpds_py-0.27.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:c3782fb753aa825b4ccabc04292e07897e2fd941448eabf666856c5530277626"}, + {file = "rpds_py-0.27.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:887ab1f12b0d227e9260558a4a2320024b20102207ada65c43e1ffc4546df72e"}, + {file = "rpds_py-0.27.0-cp311-cp311-win32.whl", hash = "sha256:5d6790ff400254137b81b8053b34417e2c46921e302d655181d55ea46df58cf7"}, + {file = "rpds_py-0.27.0-cp311-cp311-win_amd64.whl", hash = "sha256:e24d8031a2c62f34853756d9208eeafa6b940a1efcbfe36e8f57d99d52bb7261"}, + {file = "rpds_py-0.27.0-cp311-cp311-win_arm64.whl", hash = "sha256:08680820d23df1df0a0260f714d12966bc6c42d02e8055a91d61e03f0c47dda0"}, + {file = "rpds_py-0.27.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:19c990fdf5acecbf0623e906ae2e09ce1c58947197f9bced6bbd7482662231c4"}, + {file = "rpds_py-0.27.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6c27a7054b5224710fcfb1a626ec3ff4f28bcb89b899148c72873b18210e446b"}, + {file = "rpds_py-0.27.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09965b314091829b378b60607022048953e25f0b396c2b70e7c4c81bcecf932e"}, + {file = "rpds_py-0.27.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:14f028eb47f59e9169bfdf9f7ceafd29dd64902141840633683d0bad5b04ff34"}, + {file = "rpds_py-0.27.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6168af0be75bba990a39f9431cdfae5f0ad501f4af32ae62e8856307200517b8"}, + {file = "rpds_py-0.27.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ab47fe727c13c09d0e6f508e3a49e545008e23bf762a245b020391b621f5b726"}, + {file = "rpds_py-0.27.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fa01b3d5e3b7d97efab65bd3d88f164e289ec323a8c033c5c38e53ee25c007e"}, + {file = "rpds_py-0.27.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:6c135708e987f46053e0a1246a206f53717f9fadfba27174a9769ad4befba5c3"}, + {file = "rpds_py-0.27.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc327f4497b7087d06204235199daf208fd01c82d80465dc5efa4ec9df1c5b4e"}, + {file = "rpds_py-0.27.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7e57906e38583a2cba67046a09c2637e23297618dc1f3caddbc493f2be97c93f"}, + {file = "rpds_py-0.27.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f4f69d7a4300fbf91efb1fb4916421bd57804c01ab938ab50ac9c4aa2212f03"}, + {file = "rpds_py-0.27.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b4c4fbbcff474e1e5f38be1bf04511c03d492d42eec0babda5d03af3b5589374"}, + {file = "rpds_py-0.27.0-cp312-cp312-win32.whl", hash = "sha256:27bac29bbbf39601b2aab474daf99dbc8e7176ca3389237a23944b17f8913d97"}, + {file = "rpds_py-0.27.0-cp312-cp312-win_amd64.whl", hash = "sha256:8a06aa1197ec0281eb1d7daf6073e199eb832fe591ffa329b88bae28f25f5fe5"}, + {file = "rpds_py-0.27.0-cp312-cp312-win_arm64.whl", hash = "sha256:e14aab02258cb776a108107bd15f5b5e4a1bbaa61ef33b36693dfab6f89d54f9"}, + {file = "rpds_py-0.27.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:443d239d02d9ae55b74015234f2cd8eb09e59fbba30bf60baeb3123ad4c6d5ff"}, + {file = "rpds_py-0.27.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b8a7acf04fda1f30f1007f3cc96d29d8cf0a53e626e4e1655fdf4eabc082d367"}, + {file = "rpds_py-0.27.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d0f92b78cfc3b74a42239fdd8c1266f4715b573204c234d2f9fc3fc7a24f185"}, + {file = "rpds_py-0.27.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ce4ed8e0c7dbc5b19352b9c2c6131dd23b95fa8698b5cdd076307a33626b72dc"}, + {file = "rpds_py-0.27.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fde355b02934cc6b07200cc3b27ab0c15870a757d1a72fd401aa92e2ea3c6bfe"}, + {file = "rpds_py-0.27.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:13bbc4846ae4c993f07c93feb21a24d8ec637573d567a924b1001e81c8ae80f9"}, + {file = "rpds_py-0.27.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be0744661afbc4099fef7f4e604e7f1ea1be1dd7284f357924af12a705cc7d5c"}, + {file = "rpds_py-0.27.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:069e0384a54f427bd65d7fda83b68a90606a3835901aaff42185fcd94f5a9295"}, + {file = "rpds_py-0.27.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4bc262ace5a1a7dc3e2eac2fa97b8257ae795389f688b5adf22c5db1e2431c43"}, + {file = "rpds_py-0.27.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2fe6e18e5c8581f0361b35ae575043c7029d0a92cb3429e6e596c2cdde251432"}, + {file = "rpds_py-0.27.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d93ebdb82363d2e7bec64eecdc3632b59e84bd270d74fe5be1659f7787052f9b"}, + {file = "rpds_py-0.27.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0954e3a92e1d62e83a54ea7b3fdc9efa5d61acef8488a8a3d31fdafbfb00460d"}, + {file = "rpds_py-0.27.0-cp313-cp313-win32.whl", hash = "sha256:2cff9bdd6c7b906cc562a505c04a57d92e82d37200027e8d362518df427f96cd"}, + {file = "rpds_py-0.27.0-cp313-cp313-win_amd64.whl", hash = "sha256:dc79d192fb76fc0c84f2c58672c17bbbc383fd26c3cdc29daae16ce3d927e8b2"}, + {file = "rpds_py-0.27.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b3a5c8089eed498a3af23ce87a80805ff98f6ef8f7bdb70bd1b7dae5105f6ac"}, + {file = "rpds_py-0.27.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:90fb790138c1a89a2e58c9282fe1089638401f2f3b8dddd758499041bc6e0774"}, + {file = "rpds_py-0.27.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:010c4843a3b92b54373e3d2291a7447d6c3fc29f591772cc2ea0e9f5c1da434b"}, + {file = "rpds_py-0.27.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9ce7a9e967afc0a2af7caa0d15a3e9c1054815f73d6a8cb9225b61921b419bd"}, + {file = "rpds_py-0.27.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aa0bf113d15e8abdfee92aa4db86761b709a09954083afcb5bf0f952d6065fdb"}, + {file = "rpds_py-0.27.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb91d252b35004a84670dfeafadb042528b19842a0080d8b53e5ec1128e8f433"}, + {file = "rpds_py-0.27.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:db8a6313dbac934193fc17fe7610f70cd8181c542a91382531bef5ed785e5615"}, + {file = "rpds_py-0.27.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce96ab0bdfcef1b8c371ada2100767ace6804ea35aacce0aef3aeb4f3f499ca8"}, + {file = "rpds_py-0.27.0-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:7451ede3560086abe1aa27dcdcf55cd15c96b56f543fb12e5826eee6f721f858"}, + {file = "rpds_py-0.27.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:32196b5a99821476537b3f7732432d64d93a58d680a52c5e12a190ee0135d8b5"}, + {file = "rpds_py-0.27.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a029be818059870664157194e46ce0e995082ac49926f1423c1f058534d2aaa9"}, + {file = "rpds_py-0.27.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3841f66c1ffdc6cebce8aed64e36db71466f1dc23c0d9a5592e2a782a3042c79"}, + {file = "rpds_py-0.27.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:42894616da0fc0dcb2ec08a77896c3f56e9cb2f4b66acd76fc8992c3557ceb1c"}, + {file = "rpds_py-0.27.0-cp313-cp313t-win32.whl", hash = "sha256:b1fef1f13c842a39a03409e30ca0bf87b39a1e2a305a9924deadb75a43105d23"}, + {file = "rpds_py-0.27.0-cp313-cp313t-win_amd64.whl", hash = "sha256:183f5e221ba3e283cd36fdfbe311d95cd87699a083330b4f792543987167eff1"}, + {file = "rpds_py-0.27.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:f3cd110e02c5bf17d8fb562f6c9df5c20e73029d587cf8602a2da6c5ef1e32cb"}, + {file = "rpds_py-0.27.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8d0e09cf4863c74106b5265c2c310f36146e2b445ff7b3018a56799f28f39f6f"}, + {file = "rpds_py-0.27.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64f689ab822f9b5eb6dfc69893b4b9366db1d2420f7db1f6a2adf2a9ca15ad64"}, + {file = "rpds_py-0.27.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e36c80c49853b3ffda7aa1831bf175c13356b210c73128c861f3aa93c3cc4015"}, + {file = "rpds_py-0.27.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6de6a7f622860af0146cb9ee148682ff4d0cea0b8fd3ad51ce4d40efb2f061d0"}, + {file = "rpds_py-0.27.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4045e2fc4b37ec4b48e8907a5819bdd3380708c139d7cc358f03a3653abedb89"}, + {file = "rpds_py-0.27.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9da162b718b12c4219eeeeb68a5b7552fbc7aadedf2efee440f88b9c0e54b45d"}, + {file = "rpds_py-0.27.0-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:0665be515767dc727ffa5f74bd2ef60b0ff85dad6bb8f50d91eaa6b5fb226f51"}, + {file = "rpds_py-0.27.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:203f581accef67300a942e49a37d74c12ceeef4514874c7cede21b012613ca2c"}, + {file = "rpds_py-0.27.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7873b65686a6471c0037139aa000d23fe94628e0daaa27b6e40607c90e3f5ec4"}, + {file = "rpds_py-0.27.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:249ab91ceaa6b41abc5f19513cb95b45c6f956f6b89f1fe3d99c81255a849f9e"}, + {file = "rpds_py-0.27.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d2f184336bc1d6abfaaa1262ed42739c3789b1e3a65a29916a615307d22ffd2e"}, + {file = "rpds_py-0.27.0-cp314-cp314-win32.whl", hash = "sha256:d3c622c39f04d5751408f5b801ecb527e6e0a471b367f420a877f7a660d583f6"}, + {file = "rpds_py-0.27.0-cp314-cp314-win_amd64.whl", hash = "sha256:cf824aceaeffff029ccfba0da637d432ca71ab21f13e7f6f5179cd88ebc77a8a"}, + {file = "rpds_py-0.27.0-cp314-cp314-win_arm64.whl", hash = "sha256:86aca1616922b40d8ac1b3073a1ead4255a2f13405e5700c01f7c8d29a03972d"}, + {file = "rpds_py-0.27.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:341d8acb6724c0c17bdf714319c393bb27f6d23d39bc74f94221b3e59fc31828"}, + {file = "rpds_py-0.27.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6b96b0b784fe5fd03beffff2b1533dc0d85e92bab8d1b2c24ef3a5dc8fac5669"}, + {file = "rpds_py-0.27.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c431bfb91478d7cbe368d0a699978050d3b112d7f1d440a41e90faa325557fd"}, + {file = "rpds_py-0.27.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:20e222a44ae9f507d0f2678ee3dd0c45ec1e930f6875d99b8459631c24058aec"}, + {file = "rpds_py-0.27.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:184f0d7b342967f6cda94a07d0e1fae177d11d0b8f17d73e06e36ac02889f303"}, + {file = "rpds_py-0.27.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a00c91104c173c9043bc46f7b30ee5e6d2f6b1149f11f545580f5d6fdff42c0b"}, + {file = "rpds_py-0.27.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7a37dd208f0d658e0487522078b1ed68cd6bce20ef4b5a915d2809b9094b410"}, + {file = "rpds_py-0.27.0-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:92f3b3ec3e6008a1fe00b7c0946a170f161ac00645cde35e3c9a68c2475e8156"}, + {file = "rpds_py-0.27.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a1b3db5fae5cbce2131b7420a3f83553d4d89514c03d67804ced36161fe8b6b2"}, + {file = "rpds_py-0.27.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5355527adaa713ab693cbce7c1e0ec71682f599f61b128cf19d07e5c13c9b1f1"}, + {file = "rpds_py-0.27.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:fcc01c57ce6e70b728af02b2401c5bc853a9e14eb07deda30624374f0aebfe42"}, + {file = "rpds_py-0.27.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:3001013dae10f806380ba739d40dee11db1ecb91684febb8406a87c2ded23dae"}, + {file = "rpds_py-0.27.0-cp314-cp314t-win32.whl", hash = "sha256:0f401c369186a5743694dd9fc08cba66cf70908757552e1f714bfc5219c655b5"}, + {file = "rpds_py-0.27.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8a1dca5507fa1337f75dcd5070218b20bc68cf8844271c923c1b79dfcbc20391"}, + {file = "rpds_py-0.27.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:e0d7151a1bd5d0a203a5008fc4ae51a159a610cb82ab0a9b2c4d80241745582e"}, + {file = "rpds_py-0.27.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:42ccc57ff99166a55a59d8c7d14f1a357b7749f9ed3584df74053fd098243451"}, + {file = "rpds_py-0.27.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e377e4cf8795cdbdff75b8f0223d7b6c68ff4fef36799d88ccf3a995a91c0112"}, + {file = "rpds_py-0.27.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:79af163a4b40bbd8cfd7ca86ec8b54b81121d3b213b4435ea27d6568bcba3e9d"}, + {file = "rpds_py-0.27.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2eff8ee57c5996b0d2a07c3601fb4ce5fbc37547344a26945dd9e5cbd1ed27a"}, + {file = "rpds_py-0.27.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7cf9bc4508efb18d8dff6934b602324eb9f8c6644749627ce001d6f38a490889"}, + {file = "rpds_py-0.27.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05284439ebe7d9f5f5a668d4d8a0a1d851d16f7d47c78e1fab968c8ad30cab04"}, + {file = "rpds_py-0.27.0-cp39-cp39-manylinux_2_31_riscv64.whl", hash = "sha256:1321bce595ad70e80f97f998db37356b2e22cf98094eba6fe91782e626da2f71"}, + {file = "rpds_py-0.27.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:737005088449ddd3b3df5a95476ee1c2c5c669f5c30eed909548a92939c0e12d"}, + {file = "rpds_py-0.27.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:9b2a4e17bfd68536c3b801800941c95a1d4a06e3cada11c146093ba939d9638d"}, + {file = "rpds_py-0.27.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:dc6b0d5a1ea0318ef2def2b6a55dccf1dcaf77d605672347271ed7b829860765"}, + {file = "rpds_py-0.27.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:4c3f8a0d4802df34fcdbeb3dfe3a4d8c9a530baea8fafdf80816fcaac5379d83"}, + {file = "rpds_py-0.27.0-cp39-cp39-win32.whl", hash = "sha256:699c346abc73993962cac7bb4f02f58e438840fa5458a048d3a178a7a670ba86"}, + {file = "rpds_py-0.27.0-cp39-cp39-win_amd64.whl", hash = "sha256:be806e2961cd390a89d6c3ce8c2ae34271cfcd05660f716257838bb560f1c3b6"}, + {file = "rpds_py-0.27.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:46f48482c1a4748ab2773f75fffbdd1951eb59794e32788834b945da857c47a8"}, + {file = "rpds_py-0.27.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:419dd9c98bcc9fb0242be89e0c6e922df333b975d4268faa90d58499fd9c9ebe"}, + {file = "rpds_py-0.27.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d42a0ef2bdf6bc81e1cc2d49d12460f63c6ae1423c4f4851b828e454ccf6f1"}, + {file = "rpds_py-0.27.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2e39169ac6aae06dd79c07c8a69d9da867cef6a6d7883a0186b46bb46ccfb0c3"}, + {file = "rpds_py-0.27.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:935afcdea4751b0ac918047a2df3f720212892347767aea28f5b3bf7be4f27c0"}, + {file = "rpds_py-0.27.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8de567dec6d451649a781633d36f5c7501711adee329d76c095be2178855b042"}, + {file = "rpds_py-0.27.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:555ed147cbe8c8f76e72a4c6cd3b7b761cbf9987891b9448808148204aed74a5"}, + {file = "rpds_py-0.27.0-pp310-pypy310_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:d2cc2b34f9e1d31ce255174da82902ad75bd7c0d88a33df54a77a22f2ef421ee"}, + {file = "rpds_py-0.27.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cb0702c12983be3b2fab98ead349ac63a98216d28dda6f518f52da5498a27a1b"}, + {file = "rpds_py-0.27.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:ba783541be46f27c8faea5a6645e193943c17ea2f0ffe593639d906a327a9bcc"}, + {file = "rpds_py-0.27.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:2406d034635d1497c596c40c85f86ecf2bf9611c1df73d14078af8444fe48031"}, + {file = "rpds_py-0.27.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:dea0808153f1fbbad772669d906cddd92100277533a03845de6893cadeffc8be"}, + {file = "rpds_py-0.27.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d2a81bdcfde4245468f7030a75a37d50400ac2455c3a4819d9d550c937f90ab5"}, + {file = "rpds_py-0.27.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e6491658dd2569f05860bad645569145c8626ac231877b0fb2d5f9bcb7054089"}, + {file = "rpds_py-0.27.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:bec77545d188f8bdd29d42bccb9191682a46fb2e655e3d1fb446d47c55ac3b8d"}, + {file = "rpds_py-0.27.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25a4aebf8ca02bbb90a9b3e7a463bbf3bee02ab1c446840ca07b1695a68ce424"}, + {file = "rpds_py-0.27.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:44524b96481a4c9b8e6c46d6afe43fa1fb485c261e359fbe32b63ff60e3884d8"}, + {file = "rpds_py-0.27.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:45d04a73c54b6a5fd2bab91a4b5bc8b426949586e61340e212a8484919183859"}, + {file = "rpds_py-0.27.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:343cf24de9ed6c728abefc5d5c851d5de06497caa7ac37e5e65dd572921ed1b5"}, + {file = "rpds_py-0.27.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7aed8118ae20515974650d08eb724150dc2e20c2814bcc307089569995e88a14"}, + {file = "rpds_py-0.27.0-pp311-pypy311_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:af9d4fd79ee1cc8e7caf693ee02737daabfc0fcf2773ca0a4735b356c8ad6f7c"}, + {file = "rpds_py-0.27.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f0396e894bd1e66c74ecbc08b4f6a03dc331140942c4b1d345dd131b68574a60"}, + {file = "rpds_py-0.27.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:59714ab0a5af25d723d8e9816638faf7f4254234decb7d212715c1aa71eee7be"}, + {file = "rpds_py-0.27.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:88051c3b7d5325409f433c5a40328fcb0685fc04e5db49ff936e910901d10114"}, + {file = "rpds_py-0.27.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:181bc29e59e5e5e6e9d63b143ff4d5191224d355e246b5a48c88ce6b35c4e466"}, + {file = "rpds_py-0.27.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9ad08547995a57e74fea6abaf5940d399447935faebbd2612b3b0ca6f987946b"}, + {file = "rpds_py-0.27.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:61490d57e82e23b45c66f96184237994bfafa914433b8cd1a9bb57fecfced59d"}, + {file = "rpds_py-0.27.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7cf5e726b6fa977e428a61880fb108a62f28b6d0c7ef675b117eaff7076df49"}, + {file = "rpds_py-0.27.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dc662bc9375a6a394b62dfd331874c434819f10ee3902123200dbcf116963f89"}, + {file = "rpds_py-0.27.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:299a245537e697f28a7511d01038c310ac74e8ea213c0019e1fc65f52c0dcb23"}, + {file = "rpds_py-0.27.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:be3964f7312ea05ed283b20f87cb533fdc555b2e428cc7be64612c0b2124f08c"}, + {file = "rpds_py-0.27.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33ba649a6e55ae3808e4c39e01580dc9a9b0d5b02e77b66bb86ef117922b1264"}, + {file = "rpds_py-0.27.0-pp39-pypy39_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:81f81bbd7cdb4bdc418c09a73809abeda8f263a6bf8f9c7f93ed98b5597af39d"}, + {file = "rpds_py-0.27.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:11e8e28c0ba0373d052818b600474cfee2fafa6c9f36c8587d217b13ee28ca7d"}, + {file = "rpds_py-0.27.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:e3acb9c16530362aeaef4e84d57db357002dc5cbfac9a23414c3e73c08301ab2"}, + {file = "rpds_py-0.27.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:2e307cb5f66c59ede95c00e93cd84190a5b7f3533d7953690b2036780622ba81"}, + {file = "rpds_py-0.27.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:f09c9d4c26fa79c1bad927efb05aca2391350b8e61c38cbc0d7d3c814e463124"}, + {file = "rpds_py-0.27.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:af22763a0a1eff106426a6e1f13c4582e0d0ad89c1493ab6c058236174cd6c6a"}, + {file = "rpds_py-0.27.0.tar.gz", hash = "sha256:8b23cf252f180cda89220b378d917180f29d313cd6a07b2431c0d3b776aae86f"}, ] [package.source] @@ -2155,18 +2266,18 @@ reference = "pypi-public" [[package]] name = "ruamel-yaml" -version = "0.18.6" +version = "0.18.14" description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "ruamel.yaml-0.18.6-py3-none-any.whl", hash = "sha256:57b53ba33def16c4f3d807c0ccbc00f8a6081827e81ba2491691b76882d0c636"}, - {file = "ruamel.yaml-0.18.6.tar.gz", hash = "sha256:8b27e6a217e786c6fbe5634d8f3f11bc63e0f80f6a5890f28863d9c45aac311b"}, + {file = "ruamel.yaml-0.18.14-py3-none-any.whl", hash = "sha256:710ff198bb53da66718c7db27eec4fbcc9aa6ca7204e4c1df2f282b6fe5eb6b2"}, + {file = "ruamel.yaml-0.18.14.tar.gz", hash = "sha256:7227b76aaec364df15936730efbf7d72b30c0b79b1d578bbb8e3dcb2d81f52b7"}, ] [package.dependencies] -"ruamel.yaml.clib" = {version = ">=0.2.7", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.13\""} +"ruamel.yaml.clib" = {version = ">=0.2.7", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.14\""} [package.extras] docs = ["mercurial (>5.7)", "ryd"] @@ -2184,7 +2295,7 @@ description = "C version of reader, parser and emitter for ruamel.yaml derived f optional = false python-versions = ">=3.9" groups = ["dev"] -markers = "platform_python_implementation == \"CPython\" and python_version < \"3.13\"" +markers = "platform_python_implementation == \"CPython\" and python_version < \"3.14\"" files = [ {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:11f891336688faf5156a36293a9c362bdc7c88f03a8a027c2c1d8e0bcde998e5"}, {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:a606ef75a60ecf3d924613892cc603b154178ee25abb3055db5062da811fd969"}, @@ -2241,30 +2352,30 @@ reference = "pypi-public" [[package]] name = "ruff" -version = "0.12.7" +version = "0.12.8" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "ruff-0.12.7-py3-none-linux_armv6l.whl", hash = "sha256:76e4f31529899b8c434c3c1dede98c4483b89590e15fb49f2d46183801565303"}, - {file = "ruff-0.12.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:789b7a03e72507c54fb3ba6209e4bb36517b90f1a3569ea17084e3fd295500fb"}, - {file = "ruff-0.12.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:2e1c2a3b8626339bb6369116e7030a4cf194ea48f49b64bb505732a7fce4f4e3"}, - {file = "ruff-0.12.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32dec41817623d388e645612ec70d5757a6d9c035f3744a52c7b195a57e03860"}, - {file = "ruff-0.12.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:47ef751f722053a5df5fa48d412dbb54d41ab9b17875c6840a58ec63ff0c247c"}, - {file = "ruff-0.12.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a828a5fc25a3efd3e1ff7b241fd392686c9386f20e5ac90aa9234a5faa12c423"}, - {file = "ruff-0.12.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:5726f59b171111fa6a69d82aef48f00b56598b03a22f0f4170664ff4d8298efb"}, - {file = "ruff-0.12.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:74e6f5c04c4dd4aba223f4fe6e7104f79e0eebf7d307e4f9b18c18362124bccd"}, - {file = "ruff-0.12.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d0bfe4e77fba61bf2ccadf8cf005d6133e3ce08793bbe870dd1c734f2699a3e"}, - {file = "ruff-0.12.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06bfb01e1623bf7f59ea749a841da56f8f653d641bfd046edee32ede7ff6c606"}, - {file = "ruff-0.12.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e41df94a957d50083fd09b916d6e89e497246698c3f3d5c681c8b3e7b9bb4ac8"}, - {file = "ruff-0.12.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:4000623300563c709458d0ce170c3d0d788c23a058912f28bbadc6f905d67afa"}, - {file = "ruff-0.12.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:69ffe0e5f9b2cf2b8e289a3f8945b402a1b19eff24ec389f45f23c42a3dd6fb5"}, - {file = "ruff-0.12.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:a07a5c8ffa2611a52732bdc67bf88e243abd84fe2d7f6daef3826b59abbfeda4"}, - {file = "ruff-0.12.7-py3-none-win32.whl", hash = "sha256:c928f1b2ec59fb77dfdf70e0419408898b63998789cc98197e15f560b9e77f77"}, - {file = "ruff-0.12.7-py3-none-win_amd64.whl", hash = "sha256:9c18f3d707ee9edf89da76131956aba1270c6348bfee8f6c647de841eac7194f"}, - {file = "ruff-0.12.7-py3-none-win_arm64.whl", hash = "sha256:dfce05101dbd11833a0776716d5d1578641b7fddb537fe7fa956ab85d1769b69"}, - {file = "ruff-0.12.7.tar.gz", hash = "sha256:1fc3193f238bc2d7968772c82831a4ff69252f673be371fb49663f0068b7ec71"}, + {file = "ruff-0.12.8-py3-none-linux_armv6l.whl", hash = "sha256:63cb5a5e933fc913e5823a0dfdc3c99add73f52d139d6cd5cc8639d0e0465513"}, + {file = "ruff-0.12.8-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:9a9bbe28f9f551accf84a24c366c1aa8774d6748438b47174f8e8565ab9dedbc"}, + {file = "ruff-0.12.8-py3-none-macosx_11_0_arm64.whl", hash = "sha256:2fae54e752a3150f7ee0e09bce2e133caf10ce9d971510a9b925392dc98d2fec"}, + {file = "ruff-0.12.8-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c0acbcf01206df963d9331b5838fb31f3b44fa979ee7fa368b9b9057d89f4a53"}, + {file = "ruff-0.12.8-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ae3e7504666ad4c62f9ac8eedb52a93f9ebdeb34742b8b71cd3cccd24912719f"}, + {file = "ruff-0.12.8-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb82efb5d35d07497813a1c5647867390a7d83304562607f3579602fa3d7d46f"}, + {file = "ruff-0.12.8-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:dbea798fc0065ad0b84a2947b0aff4233f0cb30f226f00a2c5850ca4393de609"}, + {file = "ruff-0.12.8-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:49ebcaccc2bdad86fd51b7864e3d808aad404aab8df33d469b6e65584656263a"}, + {file = "ruff-0.12.8-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ac9c570634b98c71c88cb17badd90f13fc076a472ba6ef1d113d8ed3df109fb"}, + {file = "ruff-0.12.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:560e0cd641e45591a3e42cb50ef61ce07162b9c233786663fdce2d8557d99818"}, + {file = "ruff-0.12.8-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:71c83121512e7743fba5a8848c261dcc454cafb3ef2934a43f1b7a4eb5a447ea"}, + {file = "ruff-0.12.8-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:de4429ef2ba091ecddedd300f4c3f24bca875d3d8b23340728c3cb0da81072c3"}, + {file = "ruff-0.12.8-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a2cab5f60d5b65b50fba39a8950c8746df1627d54ba1197f970763917184b161"}, + {file = "ruff-0.12.8-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:45c32487e14f60b88aad6be9fd5da5093dbefb0e3e1224131cb1d441d7cb7d46"}, + {file = "ruff-0.12.8-py3-none-win32.whl", hash = "sha256:daf3475060a617fd5bc80638aeaf2f5937f10af3ec44464e280a9d2218e720d3"}, + {file = "ruff-0.12.8-py3-none-win_amd64.whl", hash = "sha256:7209531f1a1fcfbe8e46bcd7ab30e2f43604d8ba1c49029bb420b103d0b5f76e"}, + {file = "ruff-0.12.8-py3-none-win_arm64.whl", hash = "sha256:c90e1a334683ce41b0e7a04f41790c429bf5073b62c1ae701c9dc5b3d14f0749"}, + {file = "ruff-0.12.8.tar.gz", hash = "sha256:4cb3a45525176e1009b2b64126acf5f9444ea59066262791febf55e40493a033"}, ] [package.source] @@ -2274,14 +2385,14 @@ reference = "pypi-public" [[package]] name = "six" -version = "1.16.0" +version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" groups = ["main", "dev"] files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, ] [package.source] @@ -2308,14 +2419,14 @@ reference = "pypi-public" [[package]] name = "snowballstemmer" -version = "2.2.0" -description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." +version = "3.0.1" +description = "This package provides 32 stemmers for 30 languages generated from Snowball algorithms." optional = false -python-versions = "*" +python-versions = "!=3.0.*, !=3.1.*, !=3.2.*" groups = ["dev"] files = [ - {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, - {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, + {file = "snowballstemmer-3.0.1-py3-none-any.whl", hash = "sha256:6cd7b3897da8d6c9ffb968a6781fa6532dce9c3618a4b127d920dab764a19064"}, + {file = "snowballstemmer-3.0.1.tar.gz", hash = "sha256:6d5eeeec8e9f84d4d56b847692bacf79bc2c8e90c7f80ca4444ff8b6f2e52895"}, ] [package.source] @@ -2623,6 +2734,7 @@ description = "Sphinx spelling extension" optional = false python-versions = ">=3.7" groups = ["dev"] +markers = "python_version < \"3.12\"" files = [ {file = "sphinxcontrib-spelling-8.0.0.tar.gz", hash = "sha256:199d0a16902ad80c387c2966dc9eb10f565b1fb15ccce17210402db7c2443e5c"}, {file = "sphinxcontrib_spelling-8.0.0-py3-none-any.whl", hash = "sha256:b27e0a16aef00bcfc888a6490dc3f16651f901dc475446c6882834278c8dc7b3"}, @@ -2640,6 +2752,32 @@ type = "legacy" url = "https://pypi.org/simple" reference = "pypi-public" +[[package]] +name = "sphinxcontrib-spelling" +version = "8.0.1" +description = "Sphinx spelling extension" +optional = false +python-versions = ">=3.10" +groups = ["dev"] +markers = "python_version >= \"3.12\"" +files = [ + {file = "sphinxcontrib_spelling-8.0.1-py3-none-any.whl", hash = "sha256:21704857c1b5e26e06bb07d15927df41c9d7ecfc1843169ecd22cb59f24069ac"}, + {file = "sphinxcontrib_spelling-8.0.1.tar.gz", hash = "sha256:f0447b6413c78b613b916c7891e36be85a105d1919c99784c53dfea2d8f8040f"}, +] + +[package.dependencies] +PyEnchant = ">=3.1.1" +requests = ">=2.32.3" +Sphinx = ">=3.0.0" + +[package.extras] +test = ["coverage (>=4.0,!=4.4)", "pytest", "pytest-cov"] + +[package.source] +type = "legacy" +url = "https://pypi.org/simple" +reference = "pypi-public" + [[package]] name = "sphinxext-opengraph" version = "0.10.0" @@ -2666,15 +2804,15 @@ reference = "pypi-public" [[package]] name = "stdlib-list" -version = "0.11.0" -description = "A list of Python Standard Libraries (2.7 through 3.12)." +version = "0.11.1" +description = "A list of Python Standard Libraries (2.7 through 3.13)." optional = false python-versions = ">=3.9" groups = ["dev"] -markers = "python_version < \"3.10\"" +markers = "python_version == \"3.9\"" files = [ - {file = "stdlib_list-0.11.0-py3-none-any.whl", hash = "sha256:8bf8decfffaaf273d4cfeb5bd852b910a00dec1037dcf163576803622bccf597"}, - {file = "stdlib_list-0.11.0.tar.gz", hash = "sha256:b74a7b643a77a12637e907f3f62f0ab9f67300bce4014f6b2d3c8b4c8fd63c66"}, + {file = "stdlib_list-0.11.1-py3-none-any.whl", hash = "sha256:9029ea5e3dfde8cd4294cfd4d1797be56a67fc4693c606181730148c3fd1da29"}, + {file = "stdlib_list-0.11.1.tar.gz", hash = "sha256:95ebd1d73da9333bba03ccc097f5bac05e3aa03e6822a0c0290f87e1047f1857"}, ] [package.extras] @@ -2772,23 +2910,24 @@ reference = "pypi-public" [[package]] name = "tornado" -version = "6.4.2" +version = "6.5.2" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." optional = false -python-versions = ">= 3.8" +python-versions = ">= 3.9" groups = ["dev"] files = [ - {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e828cce1123e9e44ae2a50a9de3055497ab1d0aeb440c5ac23064d9e44880da1"}, - {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:072ce12ada169c5b00b7d92a99ba089447ccc993ea2143c9ede887e0937aa803"}, - {file = "tornado-6.4.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a017d239bd1bb0919f72af256a970624241f070496635784d9bf0db640d3fec"}, - {file = "tornado-6.4.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c36e62ce8f63409301537222faffcef7dfc5284f27eec227389f2ad11b09d946"}, - {file = "tornado-6.4.2-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca9eb02196e789c9cb5c3c7c0f04fb447dc2adffd95265b2c7223a8a615ccbf"}, - {file = "tornado-6.4.2-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:304463bd0772442ff4d0f5149c6f1c2135a1fae045adf070821c6cdc76980634"}, - {file = "tornado-6.4.2-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:c82c46813ba483a385ab2a99caeaedf92585a1f90defb5693351fa7e4ea0bf73"}, - {file = "tornado-6.4.2-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:932d195ca9015956fa502c6b56af9eb06106140d844a335590c1ec7f5277d10c"}, - {file = "tornado-6.4.2-cp38-abi3-win32.whl", hash = "sha256:2876cef82e6c5978fde1e0d5b1f919d756968d5b4282418f3146b79b58556482"}, - {file = "tornado-6.4.2-cp38-abi3-win_amd64.whl", hash = "sha256:908b71bf3ff37d81073356a5fadcc660eb10c1476ee6e2725588626ce7e5ca38"}, - {file = "tornado-6.4.2.tar.gz", hash = "sha256:92bad5b4746e9879fd7bf1eb21dce4e3fc5128d71601f80005afa39237ad620b"}, + {file = "tornado-6.5.2-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:2436822940d37cde62771cff8774f4f00b3c8024fe482e16ca8387b8a2724db6"}, + {file = "tornado-6.5.2-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:583a52c7aa94ee046854ba81d9ebb6c81ec0fd30386d96f7640c96dad45a03ef"}, + {file = "tornado-6.5.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0fe179f28d597deab2842b86ed4060deec7388f1fd9c1b4a41adf8af058907e"}, + {file = "tornado-6.5.2-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b186e85d1e3536d69583d2298423744740986018e393d0321df7340e71898882"}, + {file = "tornado-6.5.2-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e792706668c87709709c18b353da1f7662317b563ff69f00bab83595940c7108"}, + {file = "tornado-6.5.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:06ceb1300fd70cb20e43b1ad8aaee0266e69e7ced38fa910ad2e03285009ce7c"}, + {file = "tornado-6.5.2-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:74db443e0f5251be86cbf37929f84d8c20c27a355dd452a5cfa2aada0d001ec4"}, + {file = "tornado-6.5.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b5e735ab2889d7ed33b32a459cac490eda71a1ba6857b0118de476ab6c366c04"}, + {file = "tornado-6.5.2-cp39-abi3-win32.whl", hash = "sha256:c6f29e94d9b37a95013bb669616352ddb82e3bfe8326fccee50583caebc8a5f0"}, + {file = "tornado-6.5.2-cp39-abi3-win_amd64.whl", hash = "sha256:e56a5af51cc30dd2cae649429af65ca2f6571da29504a07995175df14c18f35f"}, + {file = "tornado-6.5.2-cp39-abi3-win_arm64.whl", hash = "sha256:d6c33dc3672e3a1f3618eb63b7ef4683a7688e7b9e6e8f0d9aa5726360a004af"}, + {file = "tornado-6.5.2.tar.gz", hash = "sha256:ab53c8f9a0fa351e2c0741284e06c7a45da86afb544133201c5cc8578eb076a0"}, ] [package.source] @@ -2798,14 +2937,14 @@ reference = "pypi-public" [[package]] name = "types-python-dateutil" -version = "2.9.0.20250708" +version = "2.9.0.20250809" description = "Typing stubs for python-dateutil" optional = false python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "types_python_dateutil-2.9.0.20250708-py3-none-any.whl", hash = "sha256:4d6d0cc1cc4d24a2dc3816024e502564094497b713f7befda4d5bc7a8e3fd21f"}, - {file = "types_python_dateutil-2.9.0.20250708.tar.gz", hash = "sha256:ccdbd75dab2d6c9696c350579f34cffe2c281e4c5f27a585b2a2438dd1d5c8ab"}, + {file = "types_python_dateutil-2.9.0.20250809-py3-none-any.whl", hash = "sha256:768890cac4f2d7fd9e0feb6f3217fce2abbfdfc0cadd38d11fba325a815e4b9f"}, + {file = "types_python_dateutil-2.9.0.20250809.tar.gz", hash = "sha256:69cbf8d15ef7a75c3801d65d63466e46ac25a0baa678d89d0a137fc31a608cc1"}, ] [package.source] @@ -2832,14 +2971,14 @@ reference = "pypi-public" [[package]] name = "typing-extensions" -version = "4.12.2" -description = "Backported and Experimental Type Hints for Python 3.8+" +version = "4.14.1" +description = "Backported and Experimental Type Hints for Python 3.9+" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["main", "dev"] files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, + {file = "typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76"}, + {file = "typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36"}, ] [package.source] @@ -2849,14 +2988,15 @@ reference = "pypi-public" [[package]] name = "typing-inspect" -version = "0.9.0" +version = "0.7.1" description = "Runtime inspection utilities for typing module." optional = false python-versions = "*" groups = ["dev"] files = [ - {file = "typing_inspect-0.9.0-py3-none-any.whl", hash = "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f"}, - {file = "typing_inspect-0.9.0.tar.gz", hash = "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78"}, + {file = "typing_inspect-0.7.1-py2-none-any.whl", hash = "sha256:b1f56c0783ef0f25fb064a01be6e5407e54cf4a4bf4f3ba3fe51e0bd6dcea9e5"}, + {file = "typing_inspect-0.7.1-py3-none-any.whl", hash = "sha256:3cd7d4563e997719a710a3bfe7ffb544c6b72069b6812a02e9b414a8fa3aaa6b"}, + {file = "typing_inspect-0.7.1.tar.gz", hash = "sha256:047d4097d9b17f46531bf6f014356111a1b6fb821a24fe7ac909853ca2a782aa"}, ] [package.dependencies] @@ -2870,14 +3010,14 @@ reference = "pypi-public" [[package]] name = "typing-inspection" -version = "0.4.0" +version = "0.4.1" description = "Runtime typing introspection tools" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "typing_inspection-0.4.0-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f"}, - {file = "typing_inspection-0.4.0.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122"}, + {file = "typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51"}, + {file = "typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28"}, ] [package.dependencies] @@ -2890,14 +3030,14 @@ reference = "pypi-public" [[package]] name = "urllib3" -version = "2.2.3" +version = "2.5.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, - {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, + {file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc"}, + {file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760"}, ] [package.extras] @@ -2997,15 +3137,15 @@ reference = "pypi-public" [[package]] name = "zipp" -version = "3.21.0" +version = "3.23.0" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.9" groups = ["dev"] -markers = "python_version < \"3.10\"" +markers = "python_version == \"3.9\"" files = [ - {file = "zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931"}, - {file = "zipp-3.21.0.tar.gz", hash = "sha256:2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4"}, + {file = "zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e"}, + {file = "zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166"}, ] [package.extras] @@ -3013,7 +3153,7 @@ check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \" cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] enabler = ["pytest-enabler (>=2.2)"] -test = ["big-O", "importlib-resources ; python_version < \"3.9\"", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more_itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] type = ["pytest-mypy"] [package.source] diff --git a/spec.json b/spec.json index 32f668915..ad19cecc0 100644 --- a/spec.json +++ b/spec.json @@ -53,6 +53,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -129,6 +145,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -237,6 +269,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -324,6 +372,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -407,6 +471,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -519,6 +599,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -613,6 +709,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -700,6 +812,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -772,6 +900,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -862,6 +1006,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -931,6 +1091,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -1040,6 +1216,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -1133,6 +1325,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -1211,6 +1419,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -1287,6 +1511,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -1367,6 +1607,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -1443,6 +1699,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -1544,6 +1816,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -1636,6 +1924,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -1728,6 +2032,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -1818,6 +2138,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -1898,6 +2234,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -1989,6 +2341,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -2072,6 +2440,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -2153,6 +2537,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -2236,6 +2636,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -2305,6 +2721,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -2406,6 +2838,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -2482,6 +2930,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -2564,6 +3028,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -2640,6 +3120,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -2742,6 +3238,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -2838,6 +3350,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -2957,6 +3485,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -3033,6 +3577,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -3135,6 +3695,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -3222,6 +3798,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -3341,6 +3933,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -3417,6 +4025,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -3518,6 +4142,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -3594,6 +4234,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -3695,6 +4351,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -3771,6 +4443,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -3854,6 +4542,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -3932,6 +4636,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -4001,6 +4721,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -4102,6 +4838,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -4196,6 +4948,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -4230,6 +4998,132 @@ } } }, + "/ml/conversations": { + "get": { + "tags": [ + "ml" + ], + "summary": "List conversations", + "description": "This endpoint requires authentication by any Zoo user. It returns the conversations for the authenticated user.\n\nThe conversations are returned in order of creation, with the most recently created conversations first.", + "operationId": "list_conversations_for_user", + "parameters": [ + { + "in": "query", + "name": "limit", + "description": "Maximum number of items returned by a single call", + "schema": { + "nullable": true, + "type": "integer", + "format": "uint32", + "minimum": 1 + } + }, + { + "in": "query", + "name": "page_token", + "description": "Token returned by previous call to retrieve the subsequent page", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "in": "query", + "name": "sort_by", + "schema": { + "$ref": "#/components/schemas/CreatedAtSortMode" + } + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "Access-Control-Allow-Credentials": { + "description": "Access-Control-Allow-Credentials header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Headers": { + "description": "Access-Control-Allow-Headers header. This is a comma-separated list of headers.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Methods": { + "description": "Access-Control-Allow-Methods header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Origin": { + "description": "Access-Control-Allow-Origin header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Set-Cookie": { + "description": "Set-Cookie header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "X-Api-Call-Id": { + "description": "ID for this request. We return it so that users can report this to us and help us debug their problems.", + "style": "simple", + "required": true, + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConversationResultsPage" + } + } + } + }, + "4XX": { + "$ref": "#/components/responses/Error" + }, + "5XX": { + "$ref": "#/components/responses/Error" + } + }, + "x-dropshot-pagination": { + "required": [] + } + } + }, "/ml/convert/proprietary-to-kcl": { "post": { "tags": [ @@ -4296,6 +5190,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -4372,6 +5282,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -4453,6 +5379,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -4529,6 +5471,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -4610,6 +5568,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -4687,6 +5661,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -4769,6 +5759,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -4845,6 +5851,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -4945,6 +5967,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -5027,6 +6065,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -5096,6 +6150,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -5196,6 +6266,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -5288,6 +6374,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -5404,6 +6506,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -5495,6 +6613,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -5575,6 +6709,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -5666,6 +6816,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -5773,6 +6939,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -5844,6 +7026,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -5930,6 +7128,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -6016,6 +7230,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -6093,69 +7323,16 @@ "type": "string" } }, - "Set-Cookie": { - "description": "Set-Cookie header.", - "style": "simple", - "schema": { - "nullable": true, - "type": "string" - } - }, - "X-Api-Call-Id": { - "description": "ID for this request. We return it so that users can report this to us and help us debug their problems.", - "style": "simple", - "required": true, - "schema": { - "type": "string" - } - } - } - }, - "4XX": { - "$ref": "#/components/responses/Error" - }, - "5XX": { - "$ref": "#/components/responses/Error" - } - } - }, - "options": { - "tags": [ - "hidden" - ], - "summary": "OPTIONS endpoint.", - "description": "This is necessary for some preflight requests, specifically POST, PUT, and DELETE.", - "operationId": "options_org", - "responses": { - "204": { - "description": "resource updated", - "headers": { - "Access-Control-Allow-Credentials": { - "description": "Access-Control-Allow-Credentials header.", - "style": "simple", - "schema": { - "nullable": true, - "type": "string" - } - }, - "Access-Control-Allow-Headers": { - "description": "Access-Control-Allow-Headers header. This is a comma-separated list of headers.", + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", "style": "simple", "schema": { "nullable": true, "type": "string" } }, - "Access-Control-Allow-Methods": { - "description": "Access-Control-Allow-Methods header.", - "style": "simple", - "schema": { - "nullable": true, - "type": "string" - } - }, - "Access-Control-Allow-Origin": { - "description": "Access-Control-Allow-Origin header.", + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", "style": "simple", "schema": { "nullable": true, @@ -6187,48 +7364,17 @@ "$ref": "#/components/responses/Error" } } - } - }, - "/org/api-calls": { - "get": { + }, + "options": { "tags": [ - "api-calls" - ], - "summary": "List API calls for your org.", - "description": "This includes all API calls that were made by users in the org.\n\nThis endpoint requires authentication by an org admin. It returns the API calls for the authenticated user's org.\n\nThe API calls are returned in order of creation, with the most recently created API calls first.", - "operationId": "org_list_api_calls", - "parameters": [ - { - "in": "query", - "name": "limit", - "description": "Maximum number of items returned by a single call", - "schema": { - "nullable": true, - "type": "integer", - "format": "uint32", - "minimum": 1 - } - }, - { - "in": "query", - "name": "page_token", - "description": "Token returned by previous call to retrieve the subsequent page", - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "in": "query", - "name": "sort_by", - "schema": { - "$ref": "#/components/schemas/CreatedAtSortMode" - } - } + "hidden" ], + "summary": "OPTIONS endpoint.", + "description": "This is necessary for some preflight requests, specifically POST, PUT, and DELETE.", + "operationId": "options_org", "responses": { - "200": { - "description": "successful operation", + "204": { + "description": "resource updated", "headers": { "Access-Control-Allow-Credentials": { "description": "Access-Control-Allow-Credentials header.", @@ -6262,6 +7408,138 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Set-Cookie": { + "description": "Set-Cookie header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "X-Api-Call-Id": { + "description": "ID for this request. We return it so that users can report this to us and help us debug their problems.", + "style": "simple", + "required": true, + "schema": { + "type": "string" + } + } + } + }, + "4XX": { + "$ref": "#/components/responses/Error" + }, + "5XX": { + "$ref": "#/components/responses/Error" + } + } + } + }, + "/org/api-calls": { + "get": { + "tags": [ + "api-calls" + ], + "summary": "List API calls for your org.", + "description": "This includes all API calls that were made by users in the org.\n\nThis endpoint requires authentication by an org admin. It returns the API calls for the authenticated user's org.\n\nThe API calls are returned in order of creation, with the most recently created API calls first.", + "operationId": "org_list_api_calls", + "parameters": [ + { + "in": "query", + "name": "limit", + "description": "Maximum number of items returned by a single call", + "schema": { + "nullable": true, + "type": "integer", + "format": "uint32", + "minimum": 1 + } + }, + { + "in": "query", + "name": "page_token", + "description": "Token returned by previous call to retrieve the subsequent page", + "schema": { + "nullable": true, + "type": "string" + } + }, + { + "in": "query", + "name": "sort_by", + "schema": { + "$ref": "#/components/schemas/CreatedAtSortMode" + } + } + ], + "responses": { + "200": { + "description": "successful operation", + "headers": { + "Access-Control-Allow-Credentials": { + "description": "Access-Control-Allow-Credentials header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Headers": { + "description": "Access-Control-Allow-Headers header. This is a comma-separated list of headers.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Methods": { + "description": "Access-Control-Allow-Methods header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Origin": { + "description": "Access-Control-Allow-Origin header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -6355,6 +7633,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -6470,6 +7764,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -6559,6 +7869,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -6635,6 +7961,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -6717,97 +8059,129 @@ "type": "string" } }, - "Set-Cookie": { - "description": "Set-Cookie header.", - "style": "simple", - "schema": { - "nullable": true, - "type": "string" - } - }, - "X-Api-Call-Id": { - "description": "ID for this request. We return it so that users can report this to us and help us debug their problems.", - "style": "simple", - "required": true, - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrgMember" - } - } - } - }, - "4XX": { - "$ref": "#/components/responses/Error" - }, - "5XX": { - "$ref": "#/components/responses/Error" - } - } - }, - "put": { - "tags": [ - "orgs" - ], - "summary": "Update a member of your org.", - "description": "This endpoint requires authentication by an org admin. It updates the specified member of the authenticated user's org.", - "operationId": "update_org_member", - "parameters": [ - { - "in": "path", - "name": "user_id", - "description": "The user id of the org member.", - "required": true, - "schema": { - "$ref": "#/components/schemas/Uuid" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateMemberToOrgBody" - } - } - }, - "required": true - }, - "responses": { - "200": { - "description": "successful operation", - "headers": { - "Access-Control-Allow-Credentials": { - "description": "Access-Control-Allow-Credentials header.", - "style": "simple", - "schema": { - "nullable": true, - "type": "string" - } - }, - "Access-Control-Allow-Headers": { - "description": "Access-Control-Allow-Headers header. This is a comma-separated list of headers.", - "style": "simple", - "schema": { - "nullable": true, - "type": "string" - } - }, - "Access-Control-Allow-Methods": { - "description": "Access-Control-Allow-Methods header.", + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", "style": "simple", "schema": { "nullable": true, "type": "string" } }, - "Access-Control-Allow-Origin": { - "description": "Access-Control-Allow-Origin header.", + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Set-Cookie": { + "description": "Set-Cookie header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "X-Api-Call-Id": { + "description": "ID for this request. We return it so that users can report this to us and help us debug their problems.", + "style": "simple", + "required": true, + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrgMember" + } + } + } + }, + "4XX": { + "$ref": "#/components/responses/Error" + }, + "5XX": { + "$ref": "#/components/responses/Error" + } + } + }, + "put": { + "tags": [ + "orgs" + ], + "summary": "Update a member of your org.", + "description": "This endpoint requires authentication by an org admin. It updates the specified member of the authenticated user's org.", + "operationId": "update_org_member", + "parameters": [ + { + "in": "path", + "name": "user_id", + "description": "The user id of the org member.", + "required": true, + "schema": { + "$ref": "#/components/schemas/Uuid" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateMemberToOrgBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "successful operation", + "headers": { + "Access-Control-Allow-Credentials": { + "description": "Access-Control-Allow-Credentials header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Headers": { + "description": "Access-Control-Allow-Headers header. This is a comma-separated list of headers.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Methods": { + "description": "Access-Control-Allow-Methods header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Origin": { + "description": "Access-Control-Allow-Origin header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", "style": "simple", "schema": { "nullable": true, @@ -6901,6 +8275,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -6981,6 +8371,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -7052,6 +8458,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -7138,6 +8560,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -7224,6 +8662,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -7300,6 +8754,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -7369,6 +8839,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -7450,6 +8936,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -7529,6 +9031,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -7605,6 +9123,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -7676,6 +9210,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -7758,6 +9308,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -7852,6 +9418,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -7932,6 +9514,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -8003,6 +9601,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -8089,6 +9703,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -8175,6 +9805,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -8251,6 +9897,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -8323,6 +9985,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -8394,6 +10072,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -8480,6 +10174,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -8556,6 +10266,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -8627,6 +10353,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -8713,6 +10455,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -8799,6 +10557,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -8875,6 +10649,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -8944,6 +10734,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -9044,6 +10850,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -9134,6 +10956,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -9210,6 +11048,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -9292,6 +11146,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -9379,6 +11249,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -9459,6 +11345,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -9560,6 +11462,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -9671,6 +11589,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -9764,6 +11698,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -9864,6 +11814,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -9951,6 +11917,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -10042,6 +12024,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -10148,6 +12146,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -10235,6 +12249,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -10305,6 +12335,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -10384,6 +12430,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -10480,6 +12542,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -10556,6 +12634,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -10657,6 +12751,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -10765,6 +12875,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -10873,6 +12999,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -10981,6 +13123,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -11089,6 +13247,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -11197,6 +13371,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -11305,6 +13495,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -11413,6 +13619,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -11521,6 +13743,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -11629,6 +13867,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -11737,6 +13991,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -11845,6 +14115,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -11953,6 +14239,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -12031,6 +14333,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -12117,6 +14435,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -12193,6 +14527,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -12262,6 +14612,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -12362,6 +14728,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -12455,6 +14837,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -12562,6 +14960,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -12652,6 +15066,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -12728,6 +15158,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -12810,6 +15256,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -12897,6 +15359,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -12977,6 +15455,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -13048,6 +15542,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -13127,71 +15637,16 @@ "type": "string" } }, - "Set-Cookie": { - "description": "Set-Cookie header.", - "style": "simple", - "schema": { - "nullable": true, - "type": "string" - } - }, - "X-Api-Call-Id": { - "description": "ID for this request. We return it so that users can report this to us and help us debug their problems.", - "style": "simple", - "required": true, - "schema": { - "type": "string" - } - } - } - }, - "4XX": { - "$ref": "#/components/responses/Error" - }, - "5XX": { - "$ref": "#/components/responses/Error" - } - } - } - }, - "/user/extended": { - "get": { - "tags": [ - "users" - ], - "summary": "Get extended information about your user.", - "description": "Get the user information for the authenticated user.\n\nAlternatively, you can also use the `/users-extended/me` endpoint.", - "operationId": "get_user_self_extended", - "responses": { - "200": { - "description": "successful operation", - "headers": { - "Access-Control-Allow-Credentials": { - "description": "Access-Control-Allow-Credentials header.", - "style": "simple", - "schema": { - "nullable": true, - "type": "string" - } - }, - "Access-Control-Allow-Headers": { - "description": "Access-Control-Allow-Headers header. This is a comma-separated list of headers.", - "style": "simple", - "schema": { - "nullable": true, - "type": "string" - } - }, - "Access-Control-Allow-Methods": { - "description": "Access-Control-Allow-Methods header.", + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", "style": "simple", "schema": { "nullable": true, "type": "string" } }, - "Access-Control-Allow-Origin": { - "description": "Access-Control-Allow-Origin header.", + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", "style": "simple", "schema": { "nullable": true, @@ -13214,13 +15669,6 @@ "type": "string" } } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ExtendedUser" - } - } } }, "4XX": { @@ -13232,28 +15680,17 @@ } } }, - "/user/form": { - "put": { + "/user/extended": { + "get": { "tags": [ - "users", - "hidden" + "users" ], - "summary": "Create a new support/sales ticket from the website contact form. This endpoint is authenticated.", - "description": "It gets attached to the user's account.", - "operationId": "put_user_form_self", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/InquiryForm" - } - } - }, - "required": true - }, + "summary": "Get extended information about your user.", + "description": "Get the user information for the authenticated user.\n\nAlternatively, you can also use the `/users-extended/me` endpoint.", + "operationId": "get_user_self_extended", "responses": { - "204": { - "description": "successful operation, no content", + "200": { + "description": "successful operation", "headers": { "Access-Control-Allow-Credentials": { "description": "Access-Control-Allow-Credentials header.", @@ -13287,6 +15724,127 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Set-Cookie": { + "description": "Set-Cookie header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "X-Api-Call-Id": { + "description": "ID for this request. We return it so that users can report this to us and help us debug their problems.", + "style": "simple", + "required": true, + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtendedUser" + } + } + } + }, + "4XX": { + "$ref": "#/components/responses/Error" + }, + "5XX": { + "$ref": "#/components/responses/Error" + } + } + } + }, + "/user/form": { + "put": { + "tags": [ + "users", + "hidden" + ], + "summary": "Create a new support/sales ticket from the website contact form. This endpoint is authenticated.", + "description": "It gets attached to the user's account.", + "operationId": "put_user_form_self", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InquiryForm" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "successful operation, no content", + "headers": { + "Access-Control-Allow-Credentials": { + "description": "Access-Control-Allow-Credentials header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Headers": { + "description": "Access-Control-Allow-Headers header. This is a comma-separated list of headers.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Methods": { + "description": "Access-Control-Allow-Methods header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Origin": { + "description": "Access-Control-Allow-Origin header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -13356,6 +15914,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -13427,6 +16001,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -13510,6 +16100,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -13588,6 +16194,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -13674,6 +16296,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -13760,6 +16398,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -13836,6 +16490,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -13905,6 +16575,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -13986,6 +16672,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -14065,6 +16767,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -14141,6 +16859,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -14212,6 +16946,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -14294,6 +17044,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -14388,6 +17154,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -14468,6 +17250,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -14539,6 +17337,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -14625,6 +17439,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -14711,6 +17541,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -14787,6 +17633,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -14859,6 +17721,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -14930,6 +17808,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -15016,6 +17910,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -15092,6 +18002,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -15174,6 +18100,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -15282,6 +18224,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -15372,6 +18330,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -15448,6 +18422,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -15532,6 +18522,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -15623,6 +18629,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -15704,6 +18726,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -15784,6 +18822,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -15847,6 +18901,14 @@ "$ref": "#/components/schemas/CreatedAtSortMode" } }, + { + "in": "query", + "name": "conversation_id", + "description": "If specified, only return the prompts for the conversation id given.", + "schema": { + "$ref": "#/components/schemas/Uuid" + } + }, { "in": "query", "name": "no_models", @@ -15893,6 +18955,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -15913,7 +18991,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TextToCadResultsPage" + "$ref": "#/components/schemas/TextToCadResponseResultsPage" } } } @@ -15986,6 +19064,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -16006,7 +19100,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TextToCad" + "$ref": "#/components/schemas/TextToCadResponse" } } } @@ -16083,6 +19177,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -16164,6 +19274,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -16265,6 +19391,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -16376,93 +19518,16 @@ "type": "string" } }, - "Set-Cookie": { - "description": "Set-Cookie header.", + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", "style": "simple", "schema": { "nullable": true, "type": "string" } }, - "X-Api-Call-Id": { - "description": "ID for this request. We return it so that users can report this to us and help us debug their problems.", - "style": "simple", - "required": true, - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ExtendedUserResultsPage" - } - } - } - }, - "4XX": { - "$ref": "#/components/responses/Error" - }, - "5XX": { - "$ref": "#/components/responses/Error" - } - }, - "x-dropshot-pagination": { - "required": [] - } - } - }, - "/users-extended/{id}": { - "get": { - "tags": [ - "users", - "hidden" - ], - "summary": "Get extended information about a user.", - "description": "To get information about yourself, use `/users-extended/me` as the endpoint. By doing so you will get the user information for the authenticated user.\n\nAlternatively, to get information about the authenticated user, use `/user/extended` endpoint.", - "operationId": "get_user_extended", - "parameters": [ - { - "in": "path", - "name": "id", - "description": "The user's identifier (uuid or email).", - "required": true, - "schema": { - "$ref": "#/components/schemas/UserIdentifier" - } - } - ], - "responses": { - "200": { - "description": "successful operation", - "headers": { - "Access-Control-Allow-Credentials": { - "description": "Access-Control-Allow-Credentials header.", - "style": "simple", - "schema": { - "nullable": true, - "type": "string" - } - }, - "Access-Control-Allow-Headers": { - "description": "Access-Control-Allow-Headers header. This is a comma-separated list of headers.", - "style": "simple", - "schema": { - "nullable": true, - "type": "string" - } - }, - "Access-Control-Allow-Methods": { - "description": "Access-Control-Allow-Methods header.", - "style": "simple", - "schema": { - "nullable": true, - "type": "string" - } - }, - "Access-Control-Allow-Origin": { - "description": "Access-Control-Allow-Origin header.", + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", "style": "simple", "schema": { "nullable": true, @@ -16489,7 +19554,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ExtendedUser" + "$ref": "#/components/schemas/ExtendedUserResultsPage" } } } @@ -16500,18 +19565,21 @@ "5XX": { "$ref": "#/components/responses/Error" } + }, + "x-dropshot-pagination": { + "required": [] } } }, - "/users/{id}": { + "/users-extended/{id}": { "get": { "tags": [ "users", "hidden" ], - "summary": "Get a user.", - "description": "To get information about yourself, use `/users/me` as the endpoint. By doing so you will get the user information for the authenticated user.\n\nAlternatively, to get information about the authenticated user, use `/user` endpoint.", - "operationId": "get_user", + "summary": "Get extended information about a user.", + "description": "To get information about yourself, use `/users-extended/me` as the endpoint. By doing so you will get the user information for the authenticated user.\n\nAlternatively, to get information about the authenticated user, use `/user/extended` endpoint.", + "operationId": "get_user_extended", "parameters": [ { "in": "path", @@ -16559,117 +19627,16 @@ "type": "string" } }, - "Set-Cookie": { - "description": "Set-Cookie header.", + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", "style": "simple", "schema": { "nullable": true, "type": "string" } }, - "X-Api-Call-Id": { - "description": "ID for this request. We return it so that users can report this to us and help us debug their problems.", - "style": "simple", - "required": true, - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/User" - } - } - } - }, - "4XX": { - "$ref": "#/components/responses/Error" - }, - "5XX": { - "$ref": "#/components/responses/Error" - } - } - } - }, - "/users/{id}/api-calls": { - "get": { - "tags": [ - "api-calls", - "hidden" - ], - "summary": "List API calls for a user.", - "description": "This endpoint requires authentication by any Zoo user. It returns the API calls for the authenticated user if \"me\" is passed as the user id.\n\nAlternatively, you can use the `/user/api-calls` endpoint to get the API calls for your user.\n\nIf the authenticated user is a Zoo employee, then the API calls are returned for the user specified by the user id.\n\nThe API calls are returned in order of creation, with the most recently created API calls first.", - "operationId": "list_api_calls_for_user", - "parameters": [ - { - "in": "path", - "name": "id", - "description": "The user's identifier (uuid or email).", - "required": true, - "schema": { - "$ref": "#/components/schemas/UserIdentifier" - } - }, - { - "in": "query", - "name": "limit", - "description": "Maximum number of items returned by a single call", - "schema": { - "nullable": true, - "type": "integer", - "format": "uint32", - "minimum": 1 - } - }, - { - "in": "query", - "name": "page_token", - "description": "Token returned by previous call to retrieve the subsequent page", - "schema": { - "nullable": true, - "type": "string" - } - }, - { - "in": "query", - "name": "sort_by", - "schema": { - "$ref": "#/components/schemas/CreatedAtSortMode" - } - } - ], - "responses": { - "200": { - "description": "successful operation", - "headers": { - "Access-Control-Allow-Credentials": { - "description": "Access-Control-Allow-Credentials header.", - "style": "simple", - "schema": { - "nullable": true, - "type": "string" - } - }, - "Access-Control-Allow-Headers": { - "description": "Access-Control-Allow-Headers header. This is a comma-separated list of headers.", - "style": "simple", - "schema": { - "nullable": true, - "type": "string" - } - }, - "Access-Control-Allow-Methods": { - "description": "Access-Control-Allow-Methods header.", - "style": "simple", - "schema": { - "nullable": true, - "type": "string" - } - }, - "Access-Control-Allow-Origin": { - "description": "Access-Control-Allow-Origin header.", + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", "style": "simple", "schema": { "nullable": true, @@ -16696,7 +19663,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiCallWithPriceResultsPage" + "$ref": "#/components/schemas/ExtendedUser" } } } @@ -16707,21 +19674,18 @@ "5XX": { "$ref": "#/components/responses/Error" } - }, - "x-dropshot-pagination": { - "required": [] } } }, - "/users/{id}/payment/balance": { + "/users/{id}": { "get": { "tags": [ - "payments", + "users", "hidden" ], - "summary": "Get balance for an user.", - "description": "This endpoint requires authentication by a Zoo employee. It gets the balance information for the specified user.", - "operationId": "get_payment_balance_for_any_user", + "summary": "Get a user.", + "description": "To get information about yourself, use `/users/me` as the endpoint. By doing so you will get the user information for the authenticated user.\n\nAlternatively, to get information about the authenticated user, use `/user` endpoint.", + "operationId": "get_user", "parameters": [ { "in": "path", @@ -16731,14 +19695,6 @@ "schema": { "$ref": "#/components/schemas/UserIdentifier" } - }, - { - "in": "query", - "name": "include_total_due", - "description": "If you would like to return the total due for a user. This makes the API call take longer so it is off by default.", - "schema": { - "type": "boolean" - } } ], "responses": { @@ -16777,6 +19733,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -16797,7 +19769,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerBalance" + "$ref": "#/components/schemas/User" } } } @@ -16809,15 +19781,17 @@ "$ref": "#/components/responses/Error" } } - }, - "put": { + } + }, + "/users/{id}/api-calls": { + "get": { "tags": [ - "payments", + "api-calls", "hidden" ], - "summary": "Update balance for an user.", - "description": "This endpoint requires authentication by a Zoo employee. It updates the balance information for the specified user.", - "operationId": "update_payment_balance_for_any_user", + "summary": "List API calls for a user.", + "description": "This endpoint requires authentication by any Zoo user. It returns the API calls for the authenticated user if \"me\" is passed as the user id.\n\nAlternatively, you can use the `/user/api-calls` endpoint to get the API calls for your user.\n\nIf the authenticated user is a Zoo employee, then the API calls are returned for the user specified by the user id.\n\nThe API calls are returned in order of creation, with the most recently created API calls first.", + "operationId": "list_api_calls_for_user", "parameters": [ { "in": "path", @@ -16830,23 +19804,32 @@ }, { "in": "query", - "name": "include_total_due", - "description": "If you would like to return the total due for a user. This makes the API call take longer so it is off by default.", + "name": "limit", + "description": "Maximum number of items returned by a single call", "schema": { - "type": "boolean" + "nullable": true, + "type": "integer", + "format": "uint32", + "minimum": 1 } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdatePaymentBalance" - } + }, + { + "in": "query", + "name": "page_token", + "description": "Token returned by previous call to retrieve the subsequent page", + "schema": { + "nullable": true, + "type": "string" } }, - "required": true - }, + { + "in": "query", + "name": "sort_by", + "schema": { + "$ref": "#/components/schemas/CreatedAtSortMode" + } + } + ], "responses": { "200": { "description": "successful operation", @@ -16883,6 +19866,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -16903,7 +19902,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerBalance" + "$ref": "#/components/schemas/ApiCallWithPriceResultsPage" } } } @@ -16914,15 +19913,21 @@ "5XX": { "$ref": "#/components/responses/Error" } + }, + "x-dropshot-pagination": { + "required": [] } - }, - "options": { + } + }, + "/users/{id}/payment/balance": { + "get": { "tags": [ + "payments", "hidden" ], - "summary": "OPTIONS endpoint.", - "description": "This is necessary for some preflight requests, specifically POST, PUT, and DELETE.", - "operationId": "options_payment_balance_for_any_user", + "summary": "Get balance for an user.", + "description": "This endpoint requires authentication by a Zoo employee. It gets the balance information for the specified user.", + "operationId": "get_payment_balance_for_any_user", "parameters": [ { "in": "path", @@ -16932,11 +19937,19 @@ "schema": { "$ref": "#/components/schemas/UserIdentifier" } + }, + { + "in": "query", + "name": "include_total_due", + "description": "If you would like to return the total due for a user. This makes the API call take longer so it is off by default.", + "schema": { + "type": "boolean" + } } ], "responses": { - "204": { - "description": "successful operation, no content", + "200": { + "description": "successful operation", "headers": { "Access-Control-Allow-Credentials": { "description": "Access-Control-Allow-Credentials header.", @@ -16970,6 +19983,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -16986,6 +20015,13 @@ "type": "string" } } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomerBalance" + } + } } }, "4XX": { @@ -16995,17 +20031,15 @@ "$ref": "#/components/responses/Error" } } - } - }, - "/users/{id}/payment/subscriptions": { + }, "put": { "tags": [ - "users", + "payments", "hidden" ], - "summary": "Update a subscription for a user.", - "description": "You must be a Zoo admin to perform this request.", - "operationId": "update_subscription_for_user", + "summary": "Update balance for an user.", + "description": "This endpoint requires authentication by a Zoo employee. It updates the balance information for the specified user.", + "operationId": "update_payment_balance_for_any_user", "parameters": [ { "in": "path", @@ -17015,13 +20049,21 @@ "schema": { "$ref": "#/components/schemas/UserIdentifier" } + }, + { + "in": "query", + "name": "include_total_due", + "description": "If you would like to return the total due for a user. This makes the API call take longer so it is off by default.", + "schema": { + "type": "boolean" + } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ZooProductSubscriptionsUserRequest" + "$ref": "#/components/schemas/UpdatePaymentBalance" } } }, @@ -17063,6 +20105,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -17083,7 +20141,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ZooProductSubscriptions" + "$ref": "#/components/schemas/CustomerBalance" } } } @@ -17102,7 +20160,7 @@ ], "summary": "OPTIONS endpoint.", "description": "This is necessary for some preflight requests, specifically POST, PUT, and DELETE.", - "operationId": "options_update_subscription_for_user", + "operationId": "options_payment_balance_for_any_user", "parameters": [ { "in": "path", @@ -17150,6 +20208,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -17177,28 +20251,39 @@ } } }, - "/website/form": { + "/users/{id}/payment/subscriptions": { "put": { "tags": [ "users", "hidden" ], - "summary": "Creates a new support/sales ticket from the website contact form. This endpoint is for untrusted", - "description": "users and is not authenticated.", - "operationId": "put_public_form", + "summary": "Update a subscription for a user.", + "description": "You must be a Zoo admin to perform this request.", + "operationId": "update_subscription_for_user", + "parameters": [ + { + "in": "path", + "name": "id", + "description": "The user's identifier (uuid or email).", + "required": true, + "schema": { + "$ref": "#/components/schemas/UserIdentifier" + } + } + ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/InquiryForm" + "$ref": "#/components/schemas/ZooProductSubscriptionsUserRequest" } } }, "required": true }, "responses": { - "204": { - "description": "successful operation, no content", + "200": { + "description": "successful operation", "headers": { "Access-Control-Allow-Credentials": { "description": "Access-Control-Allow-Credentials header.", @@ -17232,6 +20317,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -17248,6 +20349,13 @@ "type": "string" } } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ZooProductSubscriptions" + } + } } }, "4XX": { @@ -17264,10 +20372,21 @@ ], "summary": "OPTIONS endpoint.", "description": "This is necessary for some preflight requests, specifically POST, PUT, and DELETE.", - "operationId": "options_put_public_form", + "operationId": "options_update_subscription_for_user", + "parameters": [ + { + "in": "path", + "name": "id", + "description": "The user's identifier (uuid or email).", + "required": true, + "schema": { + "$ref": "#/components/schemas/UserIdentifier" + } + } + ], "responses": { "204": { - "description": "resource updated", + "description": "successful operation, no content", "headers": { "Access-Control-Allow-Credentials": { "description": "Access-Control-Allow-Credentials header.", @@ -17301,6 +20420,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -17328,19 +20463,20 @@ } } }, - "/website/subscribe": { + "/website/form": { "put": { "tags": [ "users", "hidden" ], - "summary": "Subscribes a user to the newsletter.", - "operationId": "put_public_subscribe", + "summary": "Creates a new support/sales ticket from the website contact form. This endpoint is for untrusted", + "description": "users and is not authenticated.", + "operationId": "put_public_form", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Subscribe" + "$ref": "#/components/schemas/InquiryForm" } } }, @@ -17382,6 +20518,204 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Set-Cookie": { + "description": "Set-Cookie header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "X-Api-Call-Id": { + "description": "ID for this request. We return it so that users can report this to us and help us debug their problems.", + "style": "simple", + "required": true, + "schema": { + "type": "string" + } + } + } + }, + "4XX": { + "$ref": "#/components/responses/Error" + }, + "5XX": { + "$ref": "#/components/responses/Error" + } + } + }, + "options": { + "tags": [ + "hidden" + ], + "summary": "OPTIONS endpoint.", + "description": "This is necessary for some preflight requests, specifically POST, PUT, and DELETE.", + "operationId": "options_put_public_form", + "responses": { + "204": { + "description": "resource updated", + "headers": { + "Access-Control-Allow-Credentials": { + "description": "Access-Control-Allow-Credentials header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Headers": { + "description": "Access-Control-Allow-Headers header. This is a comma-separated list of headers.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Methods": { + "description": "Access-Control-Allow-Methods header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Origin": { + "description": "Access-Control-Allow-Origin header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Set-Cookie": { + "description": "Set-Cookie header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "X-Api-Call-Id": { + "description": "ID for this request. We return it so that users can report this to us and help us debug their problems.", + "style": "simple", + "required": true, + "schema": { + "type": "string" + } + } + } + }, + "4XX": { + "$ref": "#/components/responses/Error" + }, + "5XX": { + "$ref": "#/components/responses/Error" + } + } + } + }, + "/website/subscribe": { + "put": { + "tags": [ + "users", + "hidden" + ], + "summary": "Subscribes a user to the newsletter.", + "operationId": "put_public_subscribe", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Subscribe" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "successful operation, no content", + "headers": { + "Access-Control-Allow-Credentials": { + "description": "Access-Control-Allow-Credentials header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Headers": { + "description": "Access-Control-Allow-Headers header. This is a comma-separated list of headers.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Methods": { + "description": "Access-Control-Allow-Methods header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Access-Control-Allow-Origin": { + "description": "Access-Control-Allow-Origin header.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -17451,6 +20785,22 @@ "type": "string" } }, + "Content-Location": { + "description": "The Content-Location header for responses that are not the final destination. This is used to indicate where the resource can be found, when it is finished.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, + "Location": { + "description": "The location header for redirects and letting users know if there is a websocket they can listen to for status updates on their operation.", + "style": "simple", + "schema": { + "nullable": true, + "type": "string" + } + }, "Set-Cookie": { "description": "Set-Cookie header.", "style": "simple", @@ -17500,6 +20850,84 @@ "x-dropshot-websocket": {} } }, + "/ws/ml/copilot": { + "get": { + "tags": [ + "ml" + ], + "summary": "Open a websocket to prompt the ML copilot.", + "operationId": "ml_copilot_ws", + "requestBody": { + "description": "Websocket requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MlCopilotClientMessage" + } + } + }, + "required": true + }, + "responses": { + "default": { + "description": "Websocket responses", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MlCopilotServerMessage" + } + } + } + } + }, + "x-dropshot-websocket": {} + } + }, + "/ws/ml/reasoning/{id}": { + "get": { + "tags": [ + "ml" + ], + "summary": "Open a websocket to prompt the ML copilot.", + "operationId": "ml_reasoning_ws", + "parameters": [ + { + "in": "path", + "name": "id", + "description": "The ID of the async operation.", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "requestBody": { + "description": "Websocket requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MlCopilotClientMessage" + } + } + }, + "required": true + }, + "responses": { + "default": { + "description": "Websocket responses", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MlCopilotServerMessage" + } + } + } + } + }, + "x-dropshot-websocket": {} + } + }, "/ws/modeling/commands": { "get": { "tags": [ @@ -20365,6 +23793,72 @@ } } }, + "Conversation": { + "description": "A conversation composed of many ML prompts.", + "type": "object", + "properties": { + "created_at": { + "title": "DateTime", + "description": "The date and time the conversation was created.", + "type": "string", + "format": "date-time" + }, + "first_prompt": { + "description": "The prompt that started this conversation.", + "type": "string" + }, + "id": { + "description": "The unique identifier for the conversation.", + "allOf": [ + { + "$ref": "#/components/schemas/Uuid" + } + ] + }, + "updated_at": { + "title": "DateTime", + "description": "The date and time the conversation was last updated.", + "type": "string", + "format": "date-time" + }, + "user_id": { + "description": "The user ID of the user who created the conversation.", + "allOf": [ + { + "$ref": "#/components/schemas/Uuid" + } + ] + } + }, + "required": [ + "created_at", + "first_prompt", + "id", + "updated_at", + "user_id" + ] + }, + "ConversationResultsPage": { + "description": "A single page of results", + "type": "object", + "properties": { + "items": { + "description": "list of items on this page of results", + "type": "array", + "items": { + "$ref": "#/components/schemas/Conversation" + } + }, + "next_page": { + "nullable": true, + "description": "token used to fetch the next page of results (if any)", + "type": "string" + } + }, + "required": [ + "items" + ] + }, "ConversionParams": { "description": "Describes the file to convert (src) and what it should be converted into (output).", "type": "object", @@ -24117,6 +27611,251 @@ } ] }, + "MlCopilotClientMessage": { + "description": "The types of messages that can be sent by the client to the server.", + "oneOf": [ + { + "description": "Authentication header request.", + "type": "object", + "properties": { + "headers": { + "description": "The authentication header.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "type": { + "type": "string", + "enum": [ + "headers" + ] + } + }, + "required": [ + "headers", + "type" + ] + }, + { + "description": "The user message, which contains the content of the user's input.", + "type": "object", + "properties": { + "content": { + "description": "The content of the user's message.", + "type": "string" + }, + "current_files": { + "description": "The current files in the project, if any. This can be used to provide context for the AI. This should be sent in binary format, if the files are not text files, like an imported binary file.", + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0 + } + } + }, + "project_name": { + "nullable": true, + "description": "The project name, if any. This can be used to associate the message with a specific project.", + "type": "string" + }, + "source_ranges": { + "description": "The source ranges the user suggested to change. If empty, the content (prompt) will be used and is required.", + "type": "array", + "items": { + "$ref": "#/components/schemas/SourceRangePrompt" + } + }, + "type": { + "type": "string", + "enum": [ + "user" + ] + } + }, + "required": [ + "content", + "type" + ] + }, + { + "description": "The system message, which can be used to set the context or instructions for the AI.", + "type": "object", + "properties": { + "command": { + "description": "The content of the system message.", + "allOf": [ + { + "$ref": "#/components/schemas/MlCopilotSystemCommand" + } + ] + }, + "type": { + "type": "string", + "enum": [ + "system" + ] + } + }, + "required": [ + "command", + "type" + ] + } + ] + }, + "MlCopilotServerMessage": { + "description": "The types of messages that can be sent by the server to the client.", + "oneOf": [ + { + "description": "Delta of the response, e.g. a chunk of text/tokens.", + "type": "object", + "properties": { + "delta": { + "type": "object", + "properties": { + "delta": { + "description": "The delta text, which is a part of the response that is being streamed.", + "type": "string" + } + }, + "required": [ + "delta" + ] + } + }, + "required": [ + "delta" + ], + "additionalProperties": false + }, + { + "description": "Completed tool call result.", + "type": "object", + "properties": { + "tool_output": { + "type": "object", + "properties": { + "result": { + "description": "The result of the tool call.", + "allOf": [ + { + "$ref": "#/components/schemas/MlToolResult" + } + ] + } + }, + "required": [ + "result" + ] + } + }, + "required": [ + "tool_output" + ], + "additionalProperties": false + }, + { + "description": "Error sent by server.", + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "detail": { + "description": "The error message.", + "type": "string" + } + }, + "required": [ + "detail" + ] + } + }, + "required": [ + "error" + ], + "additionalProperties": false + }, + { + "description": "Log / banner text.", + "type": "object", + "properties": { + "info": { + "type": "object", + "properties": { + "text": { + "description": "The informational text.", + "type": "string" + } + }, + "required": [ + "text" + ] + } + }, + "required": [ + "info" + ], + "additionalProperties": false + }, + { + "description": "Assistant reasoning / chain-of-thought (if you expose it).", + "type": "object", + "properties": { + "reasoning": { + "$ref": "#/components/schemas/ReasoningMessage" + } + }, + "required": [ + "reasoning" + ], + "additionalProperties": false + }, + { + "description": "Marks the end of a streamed answer.", + "type": "object", + "properties": { + "end_of_stream": { + "type": "object", + "properties": { + "whole_response": { + "nullable": true, + "description": "The whole response text, which is the final output of the AI. This is only relevant if in copilot mode, where the AI is expected to return the whole response at once.", + "type": "string" + } + } + } + }, + "required": [ + "end_of_stream" + ], + "additionalProperties": false + } + ] + }, + "MlCopilotSystemCommand": { + "description": "The type of system command that can be sent to the ML Copilot.", + "oneOf": [ + { + "description": "Reset the conversation state, by creating a new state.", + "type": "string", + "enum": [ + "new" + ] + }, + { + "description": "Disconnect the client, which can be used to end the session.", + "type": "string", + "enum": [ + "bye" + ] + } + ] + }, "MlFeedback": { "description": "Human feedback on an ML response.", "oneOf": [ @@ -24356,6 +28095,109 @@ } ] }, + "MlToolResult": { + "description": "Responses from tools.", + "oneOf": [ + { + "description": "Response from the `TextToCad` tool.", + "type": "object", + "properties": { + "error": { + "nullable": true, + "description": "Any error that occurred during the tool execution.", + "type": "string" + }, + "outputs": { + "description": "The output files. Returns a map of the file name to the file contents. The file contents are not encoded since kcl files are not binary.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "project_name": { + "nullable": true, + "description": "The name of the project, if any.", + "type": "string" + }, + "status_code": { + "title": "int32", + "description": "The status code of the tool execution.", + "type": "integer", + "format": "int32" + }, + "type": { + "type": "string", + "enum": [ + "text_to_cad" + ] + } + }, + "required": [ + "status_code", + "type" + ] + }, + { + "description": "Response from the `EditKclCode` tool.", + "type": "object", + "properties": { + "error": { + "nullable": true, + "description": "Any error that occurred during the tool execution.", + "type": "string" + }, + "outputs": { + "description": "The output files. Returns a map of the file name to the file contents. The file contents are not encoded since kcl files are not binary.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "project_name": { + "nullable": true, + "description": "The name of the project, if any.", + "type": "string" + }, + "status_code": { + "title": "int32", + "description": "The status code of the tool execution.", + "type": "integer", + "format": "int32" + }, + "type": { + "type": "string", + "enum": [ + "edit_kcl_code" + ] + } + }, + "required": [ + "status_code", + "type" + ] + }, + { + "description": "Mechanical knowledge base response.", + "type": "object", + "properties": { + "response": { + "description": "The response from the mechanical knowledge base.", + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "mechanical_knowledge_base" + ] + } + }, + "required": [ + "response", + "type" + ] + } + ] + }, "ModelingAppEventType": { "description": "Type for modeling-app events", "oneOf": [ @@ -32709,16 +36551,16 @@ } ] }, - "major_radius": { - "description": "Major radius of the ellipse (along the x axis).", + "major_axis": { + "description": "Major axis of the ellipse.", "allOf": [ { - "$ref": "#/components/schemas/LengthUnit" + "$ref": "#/components/schemas/Point2d" } ] }, "minor_radius": { - "description": "Minor radius of the ellipse (along the y axis).", + "description": "Minor radius of the ellipse.", "allOf": [ { "$ref": "#/components/schemas/LengthUnit" @@ -32743,7 +36585,7 @@ "required": [ "center", "end_angle", - "major_radius", + "major_axis", "minor_radius", "start_angle", "type" @@ -33193,6 +37035,31 @@ "name" ] }, + "ReasoningMessage": { + "description": "A message containing reasoning information.", + "oneOf": [ + { + "description": "Plain text reasoning.", + "type": "object", + "properties": { + "content": { + "description": "The content of the reasoning.", + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "text" + ] + } + }, + "required": [ + "content", + "type" + ] + } + ] + }, "ReconfigureStream": { "description": "The response from the `ReconfigureStream` endpoint.", "type": "object" @@ -35008,7 +38875,36 @@ } } }, - "TextToCadResultsPage": { + "TextToCadResponse": { + "description": "Type that encompasses all Text-to-CAD response types, including iteration and multi-file iteration.", + "anyOf": [ + { + "description": "A response from a text to CAD prompt.", + "allOf": [ + { + "$ref": "#/components/schemas/TextToCad" + } + ] + }, + { + "description": "A response from a text to CAD iteration.", + "allOf": [ + { + "$ref": "#/components/schemas/TextToCadIteration" + } + ] + }, + { + "description": "A response from a text to CAD multi-file iteration.", + "allOf": [ + { + "$ref": "#/components/schemas/TextToCadMultiFileIteration" + } + ] + } + ] + }, + "TextToCadResponseResultsPage": { "description": "A single page of results", "type": "object", "properties": { @@ -35016,7 +38912,7 @@ "description": "list of items on this page of results", "type": "array", "items": { - "$ref": "#/components/schemas/TextToCad" + "$ref": "#/components/schemas/TextToCadResponse" } }, "next_page": {