diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 000000000..e69de29bb
diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml
index de178a6b0..9e2911f2a 100644
--- a/.github/workflows/build-test.yml
+++ b/.github/workflows/build-test.yml
@@ -5,10 +5,12 @@ on:
paths:
- '**.py'
- .github/workflows/build-test.yml
+ - 'pyproject.toml'
pull_request:
paths:
- '**.py'
- .github/workflows/build-test.yml
+ - 'pyproject.toml'
jobs:
build-test:
diff --git a/.github/workflows/generate-docs.yml b/.github/workflows/generate-docs.yml
index f175a9054..fc6b150e4 100644
--- a/.github/workflows/generate-docs.yml
+++ b/.github/workflows/generate-docs.yml
@@ -9,12 +9,6 @@ on:
- '**.rst'
- '**.py'
- .github/workflows/generate-docs.yml
- pull_request:
- paths:
- - docs/conf.py
- - '**.rst'
- - '**.py'
- - .github/workflows/generate-docs.yml
jobs:
generate-docs:
diff --git a/.github/workflows/update-spec-for-docs.yml b/.github/workflows/update-spec-for-docs.yml
new file mode 100644
index 000000000..11205d814
--- /dev/null
+++ b/.github/workflows/update-spec-for-docs.yml
@@ -0,0 +1,69 @@
+on:
+ push:
+ tags:
+ - v*
+ pull_request:
+ paths:
+ - .github/workflows/update-spec-for-docs.yml
+ workflow_dispatch:
+name: update spec for docs
+concurrency:
+ group: docs-${{ github.ref }}
+ cancel-in-progress: true
+jobs:
+ update-spec:
+ name: update-spec
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-go@v2
+ with:
+ go-version: '1.x'
+ - name: make generate
+ shell: bash
+ run: |
+ make generate
+ # Ensure no files changed.
+ - name: Ensure no files changed
+ shell: bash
+ run: |
+ if [[ `git status --porcelain` ]]; then
+ echo "Files changed, exiting";
+ exit 1;
+ else
+ # No changes
+ echo "No files changed, proceeding";
+ fi
+ # Checkout the docs repo since we will want to update the files there.
+ - uses: actions/checkout@v2
+ with:
+ repository: 'kittycad/docs'
+ path: 'docs'
+ token: ${{secrets.PAT_GITHUB}}
+ - name: move spec to docs
+ shell: bash
+ run: |
+ rm docs/spec.json || true
+ cp spec.json docs/spec.json
+ - name: commit the changes in the docs repo
+ shell: bash
+ run: |
+ export VERSION=$(cat VERSION.txt);
+ cd docs
+ git config --local user.email "github-actions[bot]@users.noreply.github.com"
+ git config --local user.name "github-actions[bot]"
+ git add .
+ git commit -am "YOYO NEW SPEC DOCS ${VERSION}!" || exit 0
+ git fetch origin
+ git rebase origin/main || exit 0
+ export NEW_BRANCH="update-spec-${VERSION}"
+ git checkout -b "$NEW_BRANCH"
+ git push -f origin "$NEW_BRANCH"
+ gh pr create --title "Update lang spec docs for ${VERSION}" \
+ --body "Updating the generated docs for go lang" \
+ --head "$NEW_BRANCH" \
+ --base main || true
+ env:
+ GITHUB_TOKEN: ${{secrets.PAT_GITHUB}}
+
+
diff --git a/Dockerfile b/Dockerfile
index f568a07a2..cbad6134a 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,7 +1,13 @@
FROM python:latest
RUN pip install \
- openapi-python-client
+ poetry
+
+WORKDIR /usr/src/
+
+COPY . /usr/src/
+
+RUN poetry install
# Set the default command to bash.
CMD ["bash"]
diff --git a/Makefile b/Makefile
index 1dc48f391..f239ef3bf 100644
--- a/Makefile
+++ b/Makefile
@@ -10,14 +10,21 @@ endif
VERSION := $(shell toml get $(CURDIR)/pyproject.toml tool.poetry.version | jq -r .)
.PHONY: generate
-generate: docker-image
+generate: docker-image ## Generate the api client.
docker run --rm -i $(DOCKER_FLAGS) \
--name python-generator \
- -v $(CURDIR):/usr/kittycad \
- --workdir /usr \
- $(DOCKER_IMAGE_NAME) openapi-python-client update \
- --url https://api.kittycad.io \
- --config /usr/kittycad/config.yml
+ -v $(CURDIR):/usr/src \
+ --workdir /usr/src \
+ $(DOCKER_IMAGE_NAME) sh -c 'poetry run python generate/generate.py && poetry run autopep8 --in-place --aggressive --aggressive kittycad/models/*.py && poetry run autopep8 --in-place --aggressive --aggressive kittycad/api/*.py && poetry run autopep8 --in-place --aggressive --aggressive kittycad/*.py && poetry run autopep8 --in-place --aggressive --aggressive generate/*.py'
+
+.PHONY: shell
+shell: docker-image ## Pop into a shell in the docker image.
+ docker run --rm -i $(DOCKER_FLAGS) \
+ --name python-generator-shell \
+ -v $(CURDIR):/usr/src \
+ --workdir /usr/src \
+ $(DOCKER_IMAGE_NAME) /bin/bash
+
.PHONY: docker-image
docker-image:
diff --git a/README.md b/README.md
index f06080239..27511fc21 100644
--- a/README.md
+++ b/README.md
@@ -2,9 +2,6 @@
The Python API client for KittyCAD.
-This is generated from
-[openapi-generators/openapi-python-client](https://github.com/openapi-generators/openapi-python-client).
-
- [PyPI](https://pypi.org/project/kittycad/)
- [Python docs](https://python.api.docs.kittycad.io/)
- [KittyCAD API Docs](https://docs.kittycad.io/?lang=python)
@@ -26,44 +23,3 @@ $ make generate
Please do not change the code directly since it is generated. PRs that change
the code directly will be automatically closed by a bot.
-
-## Usage
-First, create an authenticated client:
-
-```python
-from kittycad import AuthenticatedClient
-
-client = AuthenticatedClient(token="your_token")
-```
-
-If you want to use the environment variable `KITTYCAD_API_TOKEN` to do
-authentication and not pass one to the client, do the following:
-
-```python
-from kittycad import AuthenticatedClientFromEnv
-
-client = AuthenticatedClientFromEnv()
-```
-
-Now call your endpoint and use your models:
-
-```python
-from kittycad.models import AuthSession
-from kittycad.api.meta import meta_debug_session
-from kittycad.types import Response
-
-session: AuthSession = meta_debug_session.sync(client=client)
-# or if you need more info (e.g. status_code)
-response: Response[AuthSession] = meta_debug_session.sync_detailed(client=client)
-```
-
-Or do the same thing with an async version:
-
-```python
-from kittycad.models import AuthSession
-from kittycad.api.meta import meta_debug_session
-from kittycad.types import Response
-
-session: AuthSession = await meta_debug_session.asyncio(client=client)
-response: Response[AuthSession] = await meta_debug_session.asyncio_detailed(client=client)
-```
diff --git a/config.yml b/config.yml
deleted file mode 100644
index 53f8f63da..000000000
--- a/config.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-project_name_override: kittycad
-package_name_override: kittycad
diff --git a/docs/api/kittycad.AuthenticatedClient.rst b/docs/api/kittycad.ClientFromEnv.rst
similarity index 60%
rename from docs/api/kittycad.AuthenticatedClient.rst
rename to docs/api/kittycad.ClientFromEnv.rst
index 7e31ef30c..0a8a3026c 100644
--- a/docs/api/kittycad.AuthenticatedClient.rst
+++ b/docs/api/kittycad.ClientFromEnv.rst
@@ -1,16 +1,16 @@
-AuthenticatedClient
-===================
+ClientFromEnv
+=============
.. currentmodule:: kittycad
-.. autoclass:: AuthenticatedClient
+.. autoclass:: ClientFromEnv
:show-inheritance:
.. rubric:: Methods Summary
.. autosummary::
- ~AuthenticatedClient.get_headers
+ ~ClientFromEnv.get_headers
.. rubric:: Methods Documentation
diff --git a/docs/api/kittycad.api.file.file_conversion_by_id.asyncio.rst b/docs/api/kittycad.api.file.file_conversion_by_id.asyncio.rst
deleted file mode 100644
index efc3f7d9b..000000000
--- a/docs/api/kittycad.api.file.file_conversion_by_id.asyncio.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-asyncio
-=======
-
-.. currentmodule:: kittycad.api.file.file_conversion_by_id
-
-.. autofunction:: asyncio
diff --git a/docs/api/kittycad.api.file.file_conversion_by_id.asyncio_detailed.rst b/docs/api/kittycad.api.file.file_conversion_by_id.asyncio_detailed.rst
deleted file mode 100644
index b50ec2a6e..000000000
--- a/docs/api/kittycad.api.file.file_conversion_by_id.asyncio_detailed.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-asyncio_detailed
-================
-
-.. currentmodule:: kittycad.api.file.file_conversion_by_id
-
-.. autofunction:: asyncio_detailed
diff --git a/docs/api/kittycad.api.file.file_conversion_by_id.sync.rst b/docs/api/kittycad.api.file.file_conversion_by_id.sync.rst
deleted file mode 100644
index 1dc4703f5..000000000
--- a/docs/api/kittycad.api.file.file_conversion_by_id.sync.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-sync
-====
-
-.. currentmodule:: kittycad.api.file.file_conversion_by_id
-
-.. autofunction:: sync
diff --git a/docs/api/kittycad.api.file.file_conversion_by_id.sync_detailed.rst b/docs/api/kittycad.api.file.file_conversion_by_id.sync_detailed.rst
deleted file mode 100644
index 76c6953a9..000000000
--- a/docs/api/kittycad.api.file.file_conversion_by_id.sync_detailed.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-sync_detailed
-=============
-
-.. currentmodule:: kittycad.api.file.file_conversion_by_id
-
-.. autofunction:: sync_detailed
diff --git a/docs/api/kittycad.api.file.file_conversion_by_id_with_base64_helper.asyncio.rst b/docs/api/kittycad.api.file.file_conversion_by_id_with_base64_helper.asyncio.rst
deleted file mode 100644
index f3b3406e6..000000000
--- a/docs/api/kittycad.api.file.file_conversion_by_id_with_base64_helper.asyncio.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-asyncio
-=======
-
-.. currentmodule:: kittycad.api.file.file_conversion_by_id_with_base64_helper
-
-.. autofunction:: asyncio
diff --git a/docs/api/kittycad.api.file.file_conversion_by_id_with_base64_helper.sync.rst b/docs/api/kittycad.api.file.file_conversion_by_id_with_base64_helper.sync.rst
deleted file mode 100644
index ee54bd3ec..000000000
--- a/docs/api/kittycad.api.file.file_conversion_by_id_with_base64_helper.sync.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-sync
-====
-
-.. currentmodule:: kittycad.api.file.file_conversion_by_id_with_base64_helper
-
-.. autofunction:: sync
diff --git a/docs/api/kittycad.api.file.file_convert.asyncio.rst b/docs/api/kittycad.api.file.file_convert.asyncio.rst
deleted file mode 100644
index ed1b3b8b5..000000000
--- a/docs/api/kittycad.api.file.file_convert.asyncio.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-asyncio
-=======
-
-.. currentmodule:: kittycad.api.file.file_convert
-
-.. autofunction:: asyncio
diff --git a/docs/api/kittycad.api.file.file_convert.asyncio_detailed.rst b/docs/api/kittycad.api.file.file_convert.asyncio_detailed.rst
deleted file mode 100644
index ba677522c..000000000
--- a/docs/api/kittycad.api.file.file_convert.asyncio_detailed.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-asyncio_detailed
-================
-
-.. currentmodule:: kittycad.api.file.file_convert
-
-.. autofunction:: asyncio_detailed
diff --git a/docs/api/kittycad.api.file.file_convert.sync.rst b/docs/api/kittycad.api.file.file_convert.sync.rst
deleted file mode 100644
index 4d9dccbac..000000000
--- a/docs/api/kittycad.api.file.file_convert.sync.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-sync
-====
-
-.. currentmodule:: kittycad.api.file.file_convert
-
-.. autofunction:: sync
diff --git a/docs/api/kittycad.api.file.file_convert.sync_detailed.rst b/docs/api/kittycad.api.file.file_convert.sync_detailed.rst
deleted file mode 100644
index bba2fd7da..000000000
--- a/docs/api/kittycad.api.file.file_convert.sync_detailed.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-sync_detailed
-=============
-
-.. currentmodule:: kittycad.api.file.file_convert
-
-.. autofunction:: sync_detailed
diff --git a/docs/api/kittycad.api.file.file_convert_with_base64_helper.asyncio.rst b/docs/api/kittycad.api.file.file_convert_with_base64_helper.asyncio.rst
deleted file mode 100644
index 15320af7e..000000000
--- a/docs/api/kittycad.api.file.file_convert_with_base64_helper.asyncio.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-asyncio
-=======
-
-.. currentmodule:: kittycad.api.file.file_convert_with_base64_helper
-
-.. autofunction:: asyncio
diff --git a/docs/api/kittycad.api.file.file_convert_with_base64_helper.sync.rst b/docs/api/kittycad.api.file.file_convert_with_base64_helper.sync.rst
deleted file mode 100644
index 796616615..000000000
--- a/docs/api/kittycad.api.file.file_convert_with_base64_helper.sync.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-sync
-====
-
-.. currentmodule:: kittycad.api.file.file_convert_with_base64_helper
-
-.. autofunction:: sync
diff --git a/docs/api/kittycad.api.meta.meta_debug_instance.asyncio.rst b/docs/api/kittycad.api.meta.meta_debug_instance.asyncio.rst
deleted file mode 100644
index 124d5387e..000000000
--- a/docs/api/kittycad.api.meta.meta_debug_instance.asyncio.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-asyncio
-=======
-
-.. currentmodule:: kittycad.api.meta.meta_debug_instance
-
-.. autofunction:: asyncio
diff --git a/docs/api/kittycad.api.meta.meta_debug_instance.asyncio_detailed.rst b/docs/api/kittycad.api.meta.meta_debug_instance.asyncio_detailed.rst
deleted file mode 100644
index a9d9c247b..000000000
--- a/docs/api/kittycad.api.meta.meta_debug_instance.asyncio_detailed.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-asyncio_detailed
-================
-
-.. currentmodule:: kittycad.api.meta.meta_debug_instance
-
-.. autofunction:: asyncio_detailed
diff --git a/docs/api/kittycad.api.meta.meta_debug_instance.sync.rst b/docs/api/kittycad.api.meta.meta_debug_instance.sync.rst
deleted file mode 100644
index 22045326b..000000000
--- a/docs/api/kittycad.api.meta.meta_debug_instance.sync.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-sync
-====
-
-.. currentmodule:: kittycad.api.meta.meta_debug_instance
-
-.. autofunction:: sync
diff --git a/docs/api/kittycad.api.meta.meta_debug_instance.sync_detailed.rst b/docs/api/kittycad.api.meta.meta_debug_instance.sync_detailed.rst
deleted file mode 100644
index d00e6cbae..000000000
--- a/docs/api/kittycad.api.meta.meta_debug_instance.sync_detailed.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-sync_detailed
-=============
-
-.. currentmodule:: kittycad.api.meta.meta_debug_instance
-
-.. autofunction:: sync_detailed
diff --git a/docs/api/kittycad.api.meta.meta_debug_session.asyncio.rst b/docs/api/kittycad.api.meta.meta_debug_session.asyncio.rst
deleted file mode 100644
index 0b0792c8b..000000000
--- a/docs/api/kittycad.api.meta.meta_debug_session.asyncio.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-asyncio
-=======
-
-.. currentmodule:: kittycad.api.meta.meta_debug_session
-
-.. autofunction:: asyncio
diff --git a/docs/api/kittycad.api.meta.meta_debug_session.asyncio_detailed.rst b/docs/api/kittycad.api.meta.meta_debug_session.asyncio_detailed.rst
deleted file mode 100644
index d98aba1c0..000000000
--- a/docs/api/kittycad.api.meta.meta_debug_session.asyncio_detailed.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-asyncio_detailed
-================
-
-.. currentmodule:: kittycad.api.meta.meta_debug_session
-
-.. autofunction:: asyncio_detailed
diff --git a/docs/api/kittycad.api.meta.meta_debug_session.sync.rst b/docs/api/kittycad.api.meta.meta_debug_session.sync.rst
deleted file mode 100644
index 00dd7d4d2..000000000
--- a/docs/api/kittycad.api.meta.meta_debug_session.sync.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-sync
-====
-
-.. currentmodule:: kittycad.api.meta.meta_debug_session
-
-.. autofunction:: sync
diff --git a/docs/api/kittycad.api.meta.meta_debug_session.sync_detailed.rst b/docs/api/kittycad.api.meta.meta_debug_session.sync_detailed.rst
deleted file mode 100644
index b221a1a54..000000000
--- a/docs/api/kittycad.api.meta.meta_debug_session.sync_detailed.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-sync_detailed
-=============
-
-.. currentmodule:: kittycad.api.meta.meta_debug_session
-
-.. autofunction:: sync_detailed
diff --git a/docs/api/kittycad.api.meta.ping.asyncio.rst b/docs/api/kittycad.api.meta.ping.asyncio.rst
deleted file mode 100644
index e2fc02127..000000000
--- a/docs/api/kittycad.api.meta.ping.asyncio.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-asyncio
-=======
-
-.. currentmodule:: kittycad.api.meta.ping
-
-.. autofunction:: asyncio
diff --git a/docs/api/kittycad.api.meta.ping.asyncio_detailed.rst b/docs/api/kittycad.api.meta.ping.asyncio_detailed.rst
deleted file mode 100644
index c7e723f66..000000000
--- a/docs/api/kittycad.api.meta.ping.asyncio_detailed.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-asyncio_detailed
-================
-
-.. currentmodule:: kittycad.api.meta.ping
-
-.. autofunction:: asyncio_detailed
diff --git a/docs/api/kittycad.api.meta.ping.sync.rst b/docs/api/kittycad.api.meta.ping.sync.rst
deleted file mode 100644
index 23cbdd0ba..000000000
--- a/docs/api/kittycad.api.meta.ping.sync.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-sync
-====
-
-.. currentmodule:: kittycad.api.meta.ping
-
-.. autofunction:: sync
diff --git a/docs/api/kittycad.api.meta.ping.sync_detailed.rst b/docs/api/kittycad.api.meta.ping.sync_detailed.rst
deleted file mode 100644
index 85808280f..000000000
--- a/docs/api/kittycad.api.meta.ping.sync_detailed.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-sync_detailed
-=============
-
-.. currentmodule:: kittycad.api.meta.ping
-
-.. autofunction:: sync_detailed
diff --git a/docs/api/kittycad.client.AuthenticatedClient.rst b/docs/api/kittycad.client.AuthenticatedClient.rst
deleted file mode 100644
index b2fa7996b..000000000
--- a/docs/api/kittycad.client.AuthenticatedClient.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-AuthenticatedClient
-===================
-
-.. currentmodule:: kittycad.client
-
-.. autoclass:: AuthenticatedClient
- :show-inheritance:
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~AuthenticatedClient.get_headers
-
- .. rubric:: Methods Documentation
-
- .. automethod:: get_headers
diff --git a/docs/api/kittycad.client.AuthenticatedClientFromEnv.rst b/docs/api/kittycad.client.AuthenticatedClientFromEnv.rst
deleted file mode 100644
index e7b88b47e..000000000
--- a/docs/api/kittycad.client.AuthenticatedClientFromEnv.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-AuthenticatedClientFromEnv
-==========================
-
-.. currentmodule:: kittycad.client
-
-.. autoclass:: AuthenticatedClientFromEnv
- :show-inheritance:
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~AuthenticatedClientFromEnv.get_headers
-
- .. rubric:: Methods Documentation
-
- .. automethod:: get_headers
diff --git a/docs/api/kittycad.client.Client.rst b/docs/api/kittycad.client.Client.rst
deleted file mode 100644
index ce0a7f940..000000000
--- a/docs/api/kittycad.client.Client.rst
+++ /dev/null
@@ -1,27 +0,0 @@
-Client
-======
-
-.. currentmodule:: kittycad.client
-
-.. autoclass:: Client
- :show-inheritance:
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~Client.get_cookies
- ~Client.get_headers
- ~Client.get_timeout
- ~Client.with_cookies
- ~Client.with_headers
- ~Client.with_timeout
-
- .. rubric:: Methods Documentation
-
- .. automethod:: get_cookies
- .. automethod:: get_headers
- .. automethod:: get_timeout
- .. automethod:: with_cookies
- .. automethod:: with_headers
- .. automethod:: with_timeout
diff --git a/docs/api/kittycad.models.AuthSession.rst b/docs/api/kittycad.models.AuthSession.rst
deleted file mode 100644
index 29c226d55..000000000
--- a/docs/api/kittycad.models.AuthSession.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-AuthSession
-===========
-
-.. currentmodule:: kittycad.models
-
-.. autoclass:: AuthSession
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~AuthSession.additional_keys
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~AuthSession.from_dict
- ~AuthSession.to_dict
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: additional_keys
-
- .. rubric:: Methods Documentation
-
- .. automethod:: from_dict
- .. automethod:: to_dict
diff --git a/docs/api/kittycad.models.Environment.rst b/docs/api/kittycad.models.Environment.rst
deleted file mode 100644
index 58f41549b..000000000
--- a/docs/api/kittycad.models.Environment.rst
+++ /dev/null
@@ -1,21 +0,0 @@
-Environment
-===========
-
-.. currentmodule:: kittycad.models
-
-.. autoclass:: Environment
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~Environment.DEVELOPMENT
- ~Environment.PREVIEW
- ~Environment.PRODUCTION
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: DEVELOPMENT
- .. autoattribute:: PREVIEW
- .. autoattribute:: PRODUCTION
diff --git a/docs/api/kittycad.models.ErrorMessage.rst b/docs/api/kittycad.models.ErrorMessage.rst
deleted file mode 100644
index b61c2b900..000000000
--- a/docs/api/kittycad.models.ErrorMessage.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-ErrorMessage
-============
-
-.. currentmodule:: kittycad.models
-
-.. autoclass:: ErrorMessage
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~ErrorMessage.additional_keys
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~ErrorMessage.from_dict
- ~ErrorMessage.to_dict
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: additional_keys
-
- .. rubric:: Methods Documentation
-
- .. automethod:: from_dict
- .. automethod:: to_dict
diff --git a/docs/api/kittycad.models.FileConversion.rst b/docs/api/kittycad.models.FileConversion.rst
deleted file mode 100644
index ea7024539..000000000
--- a/docs/api/kittycad.models.FileConversion.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-FileConversion
-==============
-
-.. currentmodule:: kittycad.models
-
-.. autoclass:: FileConversion
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~FileConversion.additional_keys
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~FileConversion.from_dict
- ~FileConversion.to_dict
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: additional_keys
-
- .. rubric:: Methods Documentation
-
- .. automethod:: from_dict
- .. automethod:: to_dict
diff --git a/docs/api/kittycad.models.FileConversionStatus.rst b/docs/api/kittycad.models.FileConversionStatus.rst
deleted file mode 100644
index c75f1fd41..000000000
--- a/docs/api/kittycad.models.FileConversionStatus.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-FileConversionStatus
-====================
-
-.. currentmodule:: kittycad.models
-
-.. autoclass:: FileConversionStatus
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~FileConversionStatus.COMPLETED
- ~FileConversionStatus.FAILED
- ~FileConversionStatus.IN_PROGRESS
- ~FileConversionStatus.QUEUED
- ~FileConversionStatus.UPLOADED
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: COMPLETED
- .. autoattribute:: FAILED
- .. autoattribute:: IN_PROGRESS
- .. autoattribute:: QUEUED
- .. autoattribute:: UPLOADED
diff --git a/docs/api/kittycad.models.InstanceMetadata.rst b/docs/api/kittycad.models.InstanceMetadata.rst
deleted file mode 100644
index 86feaea81..000000000
--- a/docs/api/kittycad.models.InstanceMetadata.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-InstanceMetadata
-================
-
-.. currentmodule:: kittycad.models
-
-.. autoclass:: InstanceMetadata
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~InstanceMetadata.additional_keys
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~InstanceMetadata.from_dict
- ~InstanceMetadata.to_dict
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: additional_keys
-
- .. rubric:: Methods Documentation
-
- .. automethod:: from_dict
- .. automethod:: to_dict
diff --git a/docs/api/kittycad.models.Message.rst b/docs/api/kittycad.models.Message.rst
deleted file mode 100644
index c6a5d79e4..000000000
--- a/docs/api/kittycad.models.Message.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-Message
-=======
-
-.. currentmodule:: kittycad.models
-
-.. autoclass:: Message
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~Message.additional_keys
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~Message.from_dict
- ~Message.to_dict
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: additional_keys
-
- .. rubric:: Methods Documentation
-
- .. automethod:: from_dict
- .. automethod:: to_dict
diff --git a/docs/api/kittycad.models.ValidFileTypes.rst b/docs/api/kittycad.models.ValidFileTypes.rst
deleted file mode 100644
index fb0585ce5..000000000
--- a/docs/api/kittycad.models.ValidFileTypes.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-ValidFileTypes
-==============
-
-.. currentmodule:: kittycad.models
-
-.. autoclass:: ValidFileTypes
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~ValidFileTypes.DWG
- ~ValidFileTypes.DXF
- ~ValidFileTypes.OBJ
- ~ValidFileTypes.STEP
- ~ValidFileTypes.STL
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: DWG
- .. autoattribute:: DXF
- .. autoattribute:: OBJ
- .. autoattribute:: STEP
- .. autoattribute:: STL
diff --git a/docs/api/kittycad.models.auth_session.AuthSession.rst b/docs/api/kittycad.models.auth_session.AuthSession.rst
deleted file mode 100644
index 73d9cd14e..000000000
--- a/docs/api/kittycad.models.auth_session.AuthSession.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-AuthSession
-===========
-
-.. currentmodule:: kittycad.models.auth_session
-
-.. autoclass:: AuthSession
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~AuthSession.additional_keys
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~AuthSession.from_dict
- ~AuthSession.to_dict
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: additional_keys
-
- .. rubric:: Methods Documentation
-
- .. automethod:: from_dict
- .. automethod:: to_dict
diff --git a/docs/api/kittycad.models.environment.Environment.rst b/docs/api/kittycad.models.environment.Environment.rst
deleted file mode 100644
index ad4190878..000000000
--- a/docs/api/kittycad.models.environment.Environment.rst
+++ /dev/null
@@ -1,21 +0,0 @@
-Environment
-===========
-
-.. currentmodule:: kittycad.models.environment
-
-.. autoclass:: Environment
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~Environment.DEVELOPMENT
- ~Environment.PREVIEW
- ~Environment.PRODUCTION
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: DEVELOPMENT
- .. autoattribute:: PREVIEW
- .. autoattribute:: PRODUCTION
diff --git a/docs/api/kittycad.models.error_message.ErrorMessage.rst b/docs/api/kittycad.models.error_message.ErrorMessage.rst
deleted file mode 100644
index aa2052082..000000000
--- a/docs/api/kittycad.models.error_message.ErrorMessage.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-ErrorMessage
-============
-
-.. currentmodule:: kittycad.models.error_message
-
-.. autoclass:: ErrorMessage
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~ErrorMessage.additional_keys
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~ErrorMessage.from_dict
- ~ErrorMessage.to_dict
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: additional_keys
-
- .. rubric:: Methods Documentation
-
- .. automethod:: from_dict
- .. automethod:: to_dict
diff --git a/docs/api/kittycad.models.file_conversion.FileConversion.rst b/docs/api/kittycad.models.file_conversion.FileConversion.rst
deleted file mode 100644
index 4bcc324ff..000000000
--- a/docs/api/kittycad.models.file_conversion.FileConversion.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-FileConversion
-==============
-
-.. currentmodule:: kittycad.models.file_conversion
-
-.. autoclass:: FileConversion
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~FileConversion.additional_keys
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~FileConversion.from_dict
- ~FileConversion.to_dict
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: additional_keys
-
- .. rubric:: Methods Documentation
-
- .. automethod:: from_dict
- .. automethod:: to_dict
diff --git a/docs/api/kittycad.models.file_conversion.FileConversionStatus.rst b/docs/api/kittycad.models.file_conversion.FileConversionStatus.rst
deleted file mode 100644
index 088aa93d3..000000000
--- a/docs/api/kittycad.models.file_conversion.FileConversionStatus.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-FileConversionStatus
-====================
-
-.. currentmodule:: kittycad.models.file_conversion
-
-.. autoclass:: FileConversionStatus
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~FileConversionStatus.COMPLETED
- ~FileConversionStatus.FAILED
- ~FileConversionStatus.IN_PROGRESS
- ~FileConversionStatus.QUEUED
- ~FileConversionStatus.UPLOADED
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: COMPLETED
- .. autoattribute:: FAILED
- .. autoattribute:: IN_PROGRESS
- .. autoattribute:: QUEUED
- .. autoattribute:: UPLOADED
diff --git a/docs/api/kittycad.models.file_conversion_status.FileConversionStatus.rst b/docs/api/kittycad.models.file_conversion_status.FileConversionStatus.rst
deleted file mode 100644
index 367439298..000000000
--- a/docs/api/kittycad.models.file_conversion_status.FileConversionStatus.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-FileConversionStatus
-====================
-
-.. currentmodule:: kittycad.models.file_conversion_status
-
-.. autoclass:: FileConversionStatus
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~FileConversionStatus.COMPLETED
- ~FileConversionStatus.FAILED
- ~FileConversionStatus.IN_PROGRESS
- ~FileConversionStatus.QUEUED
- ~FileConversionStatus.UPLOADED
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: COMPLETED
- .. autoattribute:: FAILED
- .. autoattribute:: IN_PROGRESS
- .. autoattribute:: QUEUED
- .. autoattribute:: UPLOADED
diff --git a/docs/api/kittycad.models.instance_metadata.InstanceMetadata.rst b/docs/api/kittycad.models.instance_metadata.InstanceMetadata.rst
deleted file mode 100644
index f5aaa331f..000000000
--- a/docs/api/kittycad.models.instance_metadata.InstanceMetadata.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-InstanceMetadata
-================
-
-.. currentmodule:: kittycad.models.instance_metadata
-
-.. autoclass:: InstanceMetadata
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~InstanceMetadata.additional_keys
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~InstanceMetadata.from_dict
- ~InstanceMetadata.to_dict
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: additional_keys
-
- .. rubric:: Methods Documentation
-
- .. automethod:: from_dict
- .. automethod:: to_dict
diff --git a/docs/api/kittycad.models.message.Message.rst b/docs/api/kittycad.models.message.Message.rst
deleted file mode 100644
index 30d39fc53..000000000
--- a/docs/api/kittycad.models.message.Message.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-Message
-=======
-
-.. currentmodule:: kittycad.models.message
-
-.. autoclass:: Message
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~Message.additional_keys
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~Message.from_dict
- ~Message.to_dict
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: additional_keys
-
- .. rubric:: Methods Documentation
-
- .. automethod:: from_dict
- .. automethod:: to_dict
diff --git a/docs/api/kittycad.models.valid_file_types.ValidFileTypes.rst b/docs/api/kittycad.models.valid_file_types.ValidFileTypes.rst
deleted file mode 100644
index f434f3a29..000000000
--- a/docs/api/kittycad.models.valid_file_types.ValidFileTypes.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-ValidFileTypes
-==============
-
-.. currentmodule:: kittycad.models.valid_file_types
-
-.. autoclass:: ValidFileTypes
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~ValidFileTypes.DWG
- ~ValidFileTypes.DXF
- ~ValidFileTypes.OBJ
- ~ValidFileTypes.STEP
- ~ValidFileTypes.STL
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: DWG
- .. autoattribute:: DXF
- .. autoattribute:: OBJ
- .. autoattribute:: STEP
- .. autoattribute:: STL
diff --git a/docs/api/kittycad.types.File.rst b/docs/api/kittycad.types.File.rst
deleted file mode 100644
index 64f4625fe..000000000
--- a/docs/api/kittycad.types.File.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-File
-====
-
-.. currentmodule:: kittycad.types
-
-.. autoclass:: File
- :show-inheritance:
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~File.to_tuple
-
- .. rubric:: Methods Documentation
-
- .. automethod:: to_tuple
diff --git a/docs/api/kittycad.types.Response.rst b/docs/api/kittycad.types.Response.rst
deleted file mode 100644
index 98341b950..000000000
--- a/docs/api/kittycad.types.Response.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-Response
-========
-
-.. currentmodule:: kittycad.types
-
-.. autoclass:: Response
- :show-inheritance:
diff --git a/docs/html/.buildinfo b/docs/html/.buildinfo
index 6cd2ca24f..af2946fca 100644
--- a/docs/html/.buildinfo
+++ b/docs/html/.buildinfo
@@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: fedaf56120cb91b327d8a023250f850a
+config: 74989a7dc76cd38543fd6db0578bbfeb
tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/docs/html/.doctrees/api/kittycad.AuthenticatedClient.doctree b/docs/html/.doctrees/api/kittycad.AuthenticatedClient.doctree
deleted file mode 100644
index 002386e87..000000000
Binary files a/docs/html/.doctrees/api/kittycad.AuthenticatedClient.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.Client.doctree b/docs/html/.doctrees/api/kittycad.Client.doctree
index 88199ff26..c4d681263 100644
Binary files a/docs/html/.doctrees/api/kittycad.Client.doctree and b/docs/html/.doctrees/api/kittycad.Client.doctree differ
diff --git a/docs/html/.doctrees/api/kittycad.ClientFromEnv.doctree b/docs/html/.doctrees/api/kittycad.ClientFromEnv.doctree
new file mode 100644
index 000000000..28a4ee989
Binary files /dev/null and b/docs/html/.doctrees/api/kittycad.ClientFromEnv.doctree differ
diff --git a/docs/html/.doctrees/api/kittycad.api.file.file_conversion_by_id.asyncio.doctree b/docs/html/.doctrees/api/kittycad.api.file.file_conversion_by_id.asyncio.doctree
deleted file mode 100644
index f93d10654..000000000
Binary files a/docs/html/.doctrees/api/kittycad.api.file.file_conversion_by_id.asyncio.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.api.file.file_conversion_by_id.asyncio_detailed.doctree b/docs/html/.doctrees/api/kittycad.api.file.file_conversion_by_id.asyncio_detailed.doctree
deleted file mode 100644
index 941e38fcd..000000000
Binary files a/docs/html/.doctrees/api/kittycad.api.file.file_conversion_by_id.asyncio_detailed.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.api.file.file_conversion_by_id.sync.doctree b/docs/html/.doctrees/api/kittycad.api.file.file_conversion_by_id.sync.doctree
deleted file mode 100644
index e6936a2a0..000000000
Binary files a/docs/html/.doctrees/api/kittycad.api.file.file_conversion_by_id.sync.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.api.file.file_conversion_by_id.sync_detailed.doctree b/docs/html/.doctrees/api/kittycad.api.file.file_conversion_by_id.sync_detailed.doctree
deleted file mode 100644
index e50bf94c9..000000000
Binary files a/docs/html/.doctrees/api/kittycad.api.file.file_conversion_by_id.sync_detailed.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.api.file.file_conversion_by_id_with_base64_helper.asyncio.doctree b/docs/html/.doctrees/api/kittycad.api.file.file_conversion_by_id_with_base64_helper.asyncio.doctree
deleted file mode 100644
index ee3276bea..000000000
Binary files a/docs/html/.doctrees/api/kittycad.api.file.file_conversion_by_id_with_base64_helper.asyncio.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.api.file.file_conversion_by_id_with_base64_helper.sync.doctree b/docs/html/.doctrees/api/kittycad.api.file.file_conversion_by_id_with_base64_helper.sync.doctree
deleted file mode 100644
index 796cd07c3..000000000
Binary files a/docs/html/.doctrees/api/kittycad.api.file.file_conversion_by_id_with_base64_helper.sync.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.api.file.file_convert.asyncio.doctree b/docs/html/.doctrees/api/kittycad.api.file.file_convert.asyncio.doctree
deleted file mode 100644
index a7867c73b..000000000
Binary files a/docs/html/.doctrees/api/kittycad.api.file.file_convert.asyncio.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.api.file.file_convert.asyncio_detailed.doctree b/docs/html/.doctrees/api/kittycad.api.file.file_convert.asyncio_detailed.doctree
deleted file mode 100644
index 2307c5742..000000000
Binary files a/docs/html/.doctrees/api/kittycad.api.file.file_convert.asyncio_detailed.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.api.file.file_convert.sync.doctree b/docs/html/.doctrees/api/kittycad.api.file.file_convert.sync.doctree
deleted file mode 100644
index 27d08ba4b..000000000
Binary files a/docs/html/.doctrees/api/kittycad.api.file.file_convert.sync.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.api.file.file_convert.sync_detailed.doctree b/docs/html/.doctrees/api/kittycad.api.file.file_convert.sync_detailed.doctree
deleted file mode 100644
index b8fb2fc0f..000000000
Binary files a/docs/html/.doctrees/api/kittycad.api.file.file_convert.sync_detailed.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.api.file.file_convert_with_base64_helper.asyncio.doctree b/docs/html/.doctrees/api/kittycad.api.file.file_convert_with_base64_helper.asyncio.doctree
deleted file mode 100644
index 0a34afdfd..000000000
Binary files a/docs/html/.doctrees/api/kittycad.api.file.file_convert_with_base64_helper.asyncio.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.api.file.file_convert_with_base64_helper.sync.doctree b/docs/html/.doctrees/api/kittycad.api.file.file_convert_with_base64_helper.sync.doctree
deleted file mode 100644
index 621cfb156..000000000
Binary files a/docs/html/.doctrees/api/kittycad.api.file.file_convert_with_base64_helper.sync.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.api.meta.meta_debug_instance.asyncio.doctree b/docs/html/.doctrees/api/kittycad.api.meta.meta_debug_instance.asyncio.doctree
deleted file mode 100644
index 48cf60149..000000000
Binary files a/docs/html/.doctrees/api/kittycad.api.meta.meta_debug_instance.asyncio.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.api.meta.meta_debug_instance.asyncio_detailed.doctree b/docs/html/.doctrees/api/kittycad.api.meta.meta_debug_instance.asyncio_detailed.doctree
deleted file mode 100644
index 58a680773..000000000
Binary files a/docs/html/.doctrees/api/kittycad.api.meta.meta_debug_instance.asyncio_detailed.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.api.meta.meta_debug_instance.sync.doctree b/docs/html/.doctrees/api/kittycad.api.meta.meta_debug_instance.sync.doctree
deleted file mode 100644
index 5f92eb1ba..000000000
Binary files a/docs/html/.doctrees/api/kittycad.api.meta.meta_debug_instance.sync.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.api.meta.meta_debug_instance.sync_detailed.doctree b/docs/html/.doctrees/api/kittycad.api.meta.meta_debug_instance.sync_detailed.doctree
deleted file mode 100644
index 38412a88e..000000000
Binary files a/docs/html/.doctrees/api/kittycad.api.meta.meta_debug_instance.sync_detailed.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.api.meta.meta_debug_session.asyncio.doctree b/docs/html/.doctrees/api/kittycad.api.meta.meta_debug_session.asyncio.doctree
deleted file mode 100644
index d5eaec671..000000000
Binary files a/docs/html/.doctrees/api/kittycad.api.meta.meta_debug_session.asyncio.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.api.meta.meta_debug_session.asyncio_detailed.doctree b/docs/html/.doctrees/api/kittycad.api.meta.meta_debug_session.asyncio_detailed.doctree
deleted file mode 100644
index c0558741d..000000000
Binary files a/docs/html/.doctrees/api/kittycad.api.meta.meta_debug_session.asyncio_detailed.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.api.meta.meta_debug_session.sync.doctree b/docs/html/.doctrees/api/kittycad.api.meta.meta_debug_session.sync.doctree
deleted file mode 100644
index 1852aeff0..000000000
Binary files a/docs/html/.doctrees/api/kittycad.api.meta.meta_debug_session.sync.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.api.meta.meta_debug_session.sync_detailed.doctree b/docs/html/.doctrees/api/kittycad.api.meta.meta_debug_session.sync_detailed.doctree
deleted file mode 100644
index 7c4ce6bb5..000000000
Binary files a/docs/html/.doctrees/api/kittycad.api.meta.meta_debug_session.sync_detailed.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.api.meta.ping.asyncio.doctree b/docs/html/.doctrees/api/kittycad.api.meta.ping.asyncio.doctree
deleted file mode 100644
index db074cbfd..000000000
Binary files a/docs/html/.doctrees/api/kittycad.api.meta.ping.asyncio.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.api.meta.ping.asyncio_detailed.doctree b/docs/html/.doctrees/api/kittycad.api.meta.ping.asyncio_detailed.doctree
deleted file mode 100644
index 9853546c0..000000000
Binary files a/docs/html/.doctrees/api/kittycad.api.meta.ping.asyncio_detailed.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.api.meta.ping.sync.doctree b/docs/html/.doctrees/api/kittycad.api.meta.ping.sync.doctree
deleted file mode 100644
index 1cc99598f..000000000
Binary files a/docs/html/.doctrees/api/kittycad.api.meta.ping.sync.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.api.meta.ping.sync_detailed.doctree b/docs/html/.doctrees/api/kittycad.api.meta.ping.sync_detailed.doctree
deleted file mode 100644
index eb562f6bc..000000000
Binary files a/docs/html/.doctrees/api/kittycad.api.meta.ping.sync_detailed.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.client.AuthenticatedClient.doctree b/docs/html/.doctrees/api/kittycad.client.AuthenticatedClient.doctree
deleted file mode 100644
index 9db8f3582..000000000
Binary files a/docs/html/.doctrees/api/kittycad.client.AuthenticatedClient.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.client.AuthenticatedClientFromEnv.doctree b/docs/html/.doctrees/api/kittycad.client.AuthenticatedClientFromEnv.doctree
deleted file mode 100644
index 92346f567..000000000
Binary files a/docs/html/.doctrees/api/kittycad.client.AuthenticatedClientFromEnv.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.client.Client.doctree b/docs/html/.doctrees/api/kittycad.client.Client.doctree
deleted file mode 100644
index f8b39c06a..000000000
Binary files a/docs/html/.doctrees/api/kittycad.client.Client.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.models.AuthSession.doctree b/docs/html/.doctrees/api/kittycad.models.AuthSession.doctree
deleted file mode 100644
index c345e17e6..000000000
Binary files a/docs/html/.doctrees/api/kittycad.models.AuthSession.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.models.Environment.doctree b/docs/html/.doctrees/api/kittycad.models.Environment.doctree
deleted file mode 100644
index fb266537d..000000000
Binary files a/docs/html/.doctrees/api/kittycad.models.Environment.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.models.ErrorMessage.doctree b/docs/html/.doctrees/api/kittycad.models.ErrorMessage.doctree
deleted file mode 100644
index a4a1f3b75..000000000
Binary files a/docs/html/.doctrees/api/kittycad.models.ErrorMessage.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.models.FileConversion.doctree b/docs/html/.doctrees/api/kittycad.models.FileConversion.doctree
deleted file mode 100644
index 91dd91750..000000000
Binary files a/docs/html/.doctrees/api/kittycad.models.FileConversion.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.models.FileConversionStatus.doctree b/docs/html/.doctrees/api/kittycad.models.FileConversionStatus.doctree
deleted file mode 100644
index a04157ffc..000000000
Binary files a/docs/html/.doctrees/api/kittycad.models.FileConversionStatus.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.models.InstanceMetadata.doctree b/docs/html/.doctrees/api/kittycad.models.InstanceMetadata.doctree
deleted file mode 100644
index a027c9c3c..000000000
Binary files a/docs/html/.doctrees/api/kittycad.models.InstanceMetadata.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.models.Message.doctree b/docs/html/.doctrees/api/kittycad.models.Message.doctree
deleted file mode 100644
index bf3e09778..000000000
Binary files a/docs/html/.doctrees/api/kittycad.models.Message.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.models.auth_session.AuthSession.doctree b/docs/html/.doctrees/api/kittycad.models.auth_session.AuthSession.doctree
deleted file mode 100644
index 5f128c223..000000000
Binary files a/docs/html/.doctrees/api/kittycad.models.auth_session.AuthSession.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.models.environment.Environment.doctree b/docs/html/.doctrees/api/kittycad.models.environment.Environment.doctree
deleted file mode 100644
index a71767fff..000000000
Binary files a/docs/html/.doctrees/api/kittycad.models.environment.Environment.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.models.error_message.ErrorMessage.doctree b/docs/html/.doctrees/api/kittycad.models.error_message.ErrorMessage.doctree
deleted file mode 100644
index 465a2de4a..000000000
Binary files a/docs/html/.doctrees/api/kittycad.models.error_message.ErrorMessage.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.models.file_conversion.FileConversion.doctree b/docs/html/.doctrees/api/kittycad.models.file_conversion.FileConversion.doctree
deleted file mode 100644
index 797fac064..000000000
Binary files a/docs/html/.doctrees/api/kittycad.models.file_conversion.FileConversion.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.models.file_conversion.FileConversionStatus.doctree b/docs/html/.doctrees/api/kittycad.models.file_conversion.FileConversionStatus.doctree
deleted file mode 100644
index 0a4a2cf90..000000000
Binary files a/docs/html/.doctrees/api/kittycad.models.file_conversion.FileConversionStatus.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.models.file_conversion_status.FileConversionStatus.doctree b/docs/html/.doctrees/api/kittycad.models.file_conversion_status.FileConversionStatus.doctree
deleted file mode 100644
index 2211bcdf2..000000000
Binary files a/docs/html/.doctrees/api/kittycad.models.file_conversion_status.FileConversionStatus.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.models.instance_metadata.InstanceMetadata.doctree b/docs/html/.doctrees/api/kittycad.models.instance_metadata.InstanceMetadata.doctree
deleted file mode 100644
index 40daf51f1..000000000
Binary files a/docs/html/.doctrees/api/kittycad.models.instance_metadata.InstanceMetadata.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.models.message.Message.doctree b/docs/html/.doctrees/api/kittycad.models.message.Message.doctree
deleted file mode 100644
index 6d690211b..000000000
Binary files a/docs/html/.doctrees/api/kittycad.models.message.Message.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.models.valid_file_types.ValidFileTypes.doctree b/docs/html/.doctrees/api/kittycad.models.valid_file_types.ValidFileTypes.doctree
deleted file mode 100644
index 06a405116..000000000
Binary files a/docs/html/.doctrees/api/kittycad.models.valid_file_types.ValidFileTypes.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.types.File.doctree b/docs/html/.doctrees/api/kittycad.types.File.doctree
deleted file mode 100644
index 8a7365f93..000000000
Binary files a/docs/html/.doctrees/api/kittycad.types.File.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/api/kittycad.types.Response.doctree b/docs/html/.doctrees/api/kittycad.types.Response.doctree
deleted file mode 100644
index 249bc6ec6..000000000
Binary files a/docs/html/.doctrees/api/kittycad.types.Response.doctree and /dev/null differ
diff --git a/docs/html/.doctrees/environment.pickle b/docs/html/.doctrees/environment.pickle
index dd272ee47..8e726de0a 100644
Binary files a/docs/html/.doctrees/environment.pickle and b/docs/html/.doctrees/environment.pickle differ
diff --git a/docs/html/.doctrees/index.doctree b/docs/html/.doctrees/index.doctree
index edae28552..69d2c2231 100644
Binary files a/docs/html/.doctrees/index.doctree and b/docs/html/.doctrees/index.doctree differ
diff --git a/docs/html/.doctrees/api/kittycad.models.ValidFileTypes.doctree b/docs/html/.doctrees/modules/kittycad.api.beta.doctree
similarity index 52%
rename from docs/html/.doctrees/api/kittycad.models.ValidFileTypes.doctree
rename to docs/html/.doctrees/modules/kittycad.api.beta.doctree
index 3a2b70143..8fe889670 100644
Binary files a/docs/html/.doctrees/api/kittycad.models.ValidFileTypes.doctree and b/docs/html/.doctrees/modules/kittycad.api.beta.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.api.doctree b/docs/html/.doctrees/modules/kittycad.api.doctree
new file mode 100644
index 000000000..9e16f816f
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.api.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.api.file.doctree b/docs/html/.doctrees/modules/kittycad.api.file.doctree
new file mode 100644
index 000000000..cfd28edb1
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.api.file.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.api.file.file_conversion_status.doctree b/docs/html/.doctrees/modules/kittycad.api.file.file_conversion_status.doctree
new file mode 100644
index 000000000..7bb44a8e5
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.api.file.file_conversion_status.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.api.file.file_conversion_status_with_base64_helper.doctree b/docs/html/.doctrees/modules/kittycad.api.file.file_conversion_status_with_base64_helper.doctree
new file mode 100644
index 000000000..674c4270c
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.api.file.file_conversion_status_with_base64_helper.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.api.file.post_file_conversion.doctree b/docs/html/.doctrees/modules/kittycad.api.file.post_file_conversion.doctree
new file mode 100644
index 000000000..24cb97288
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.api.file.post_file_conversion.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.api.file.post_file_conversion_with_base64_helper.doctree b/docs/html/.doctrees/modules/kittycad.api.file.post_file_conversion_with_base64_helper.doctree
new file mode 100644
index 000000000..8104853be
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.api.file.post_file_conversion_with_base64_helper.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.api.internal.doctree b/docs/html/.doctrees/modules/kittycad.api.internal.doctree
new file mode 100644
index 000000000..e971465ce
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.api.internal.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.api.internal.gpu_devices.doctree b/docs/html/.doctrees/modules/kittycad.api.internal.gpu_devices.doctree
new file mode 100644
index 000000000..4f8405ce4
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.api.internal.gpu_devices.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.api.internal.stop_async_conversions.doctree b/docs/html/.doctrees/modules/kittycad.api.internal.stop_async_conversions.doctree
new file mode 100644
index 000000000..819a8c61e
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.api.internal.stop_async_conversions.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.api.meta.auth_session.doctree b/docs/html/.doctrees/modules/kittycad.api.meta.auth_session.doctree
new file mode 100644
index 000000000..b4aff8135
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.api.meta.auth_session.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.api.meta.doctree b/docs/html/.doctrees/modules/kittycad.api.meta.doctree
new file mode 100644
index 000000000..a05fc8c0e
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.api.meta.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.api.meta.instance_metadata.doctree b/docs/html/.doctrees/modules/kittycad.api.meta.instance_metadata.doctree
new file mode 100644
index 000000000..6e171ce19
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.api.meta.instance_metadata.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.api.meta.ping.doctree b/docs/html/.doctrees/modules/kittycad.api.meta.ping.doctree
new file mode 100644
index 000000000..de6712b91
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.api.meta.ping.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.client.doctree b/docs/html/.doctrees/modules/kittycad.client.doctree
new file mode 100644
index 000000000..343a32214
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.client.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.models.auth_session.doctree b/docs/html/.doctrees/modules/kittycad.models.auth_session.doctree
new file mode 100644
index 000000000..c2147d15d
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.models.auth_session.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.models.doctree b/docs/html/.doctrees/modules/kittycad.models.doctree
new file mode 100644
index 000000000..f688bbd54
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.models.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.models.error_message.doctree b/docs/html/.doctrees/modules/kittycad.models.error_message.doctree
new file mode 100644
index 000000000..8aadc28d0
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.models.error_message.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.models.file_conversion.doctree b/docs/html/.doctrees/modules/kittycad.models.file_conversion.doctree
new file mode 100644
index 000000000..b88836be6
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.models.file_conversion.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.models.file_conversion_status.doctree b/docs/html/.doctrees/modules/kittycad.models.file_conversion_status.doctree
new file mode 100644
index 000000000..c02bd3a2a
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.models.file_conversion_status.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.models.gpu_device.doctree b/docs/html/.doctrees/modules/kittycad.models.gpu_device.doctree
new file mode 100644
index 000000000..47ced4785
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.models.gpu_device.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.models.instance.doctree b/docs/html/.doctrees/modules/kittycad.models.instance.doctree
new file mode 100644
index 000000000..dcd23b4f5
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.models.instance.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.models.pong_enum.doctree b/docs/html/.doctrees/modules/kittycad.models.pong_enum.doctree
new file mode 100644
index 000000000..995ae4d54
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.models.pong_enum.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.models.pong_message.doctree b/docs/html/.doctrees/modules/kittycad.models.pong_message.doctree
new file mode 100644
index 000000000..7f3e0dce3
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.models.pong_message.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.models.server_env.doctree b/docs/html/.doctrees/modules/kittycad.models.server_env.doctree
new file mode 100644
index 000000000..5d0735636
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.models.server_env.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.models.valid_output_file_format.doctree b/docs/html/.doctrees/modules/kittycad.models.valid_output_file_format.doctree
new file mode 100644
index 000000000..349cae286
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.models.valid_output_file_format.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.models.valid_source_file_format.doctree b/docs/html/.doctrees/modules/kittycad.models.valid_source_file_format.doctree
new file mode 100644
index 000000000..89064ba8b
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.models.valid_source_file_format.doctree differ
diff --git a/docs/html/.doctrees/modules/kittycad.types.doctree b/docs/html/.doctrees/modules/kittycad.types.doctree
new file mode 100644
index 000000000..0db0aaf3b
Binary files /dev/null and b/docs/html/.doctrees/modules/kittycad.types.doctree differ
diff --git a/docs/html/_sources/api/kittycad.AuthenticatedClient.rst.txt b/docs/html/_sources/api/kittycad.ClientFromEnv.rst.txt
similarity index 60%
rename from docs/html/_sources/api/kittycad.AuthenticatedClient.rst.txt
rename to docs/html/_sources/api/kittycad.ClientFromEnv.rst.txt
index 7e31ef30c..0a8a3026c 100644
--- a/docs/html/_sources/api/kittycad.AuthenticatedClient.rst.txt
+++ b/docs/html/_sources/api/kittycad.ClientFromEnv.rst.txt
@@ -1,16 +1,16 @@
-AuthenticatedClient
-===================
+ClientFromEnv
+=============
.. currentmodule:: kittycad
-.. autoclass:: AuthenticatedClient
+.. autoclass:: ClientFromEnv
:show-inheritance:
.. rubric:: Methods Summary
.. autosummary::
- ~AuthenticatedClient.get_headers
+ ~ClientFromEnv.get_headers
.. rubric:: Methods Documentation
diff --git a/docs/html/_sources/api/kittycad.api.file.file_conversion_by_id.asyncio.rst.txt b/docs/html/_sources/api/kittycad.api.file.file_conversion_by_id.asyncio.rst.txt
deleted file mode 100644
index efc3f7d9b..000000000
--- a/docs/html/_sources/api/kittycad.api.file.file_conversion_by_id.asyncio.rst.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-asyncio
-=======
-
-.. currentmodule:: kittycad.api.file.file_conversion_by_id
-
-.. autofunction:: asyncio
diff --git a/docs/html/_sources/api/kittycad.api.file.file_conversion_by_id.asyncio_detailed.rst.txt b/docs/html/_sources/api/kittycad.api.file.file_conversion_by_id.asyncio_detailed.rst.txt
deleted file mode 100644
index b50ec2a6e..000000000
--- a/docs/html/_sources/api/kittycad.api.file.file_conversion_by_id.asyncio_detailed.rst.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-asyncio_detailed
-================
-
-.. currentmodule:: kittycad.api.file.file_conversion_by_id
-
-.. autofunction:: asyncio_detailed
diff --git a/docs/html/_sources/api/kittycad.api.file.file_conversion_by_id.sync.rst.txt b/docs/html/_sources/api/kittycad.api.file.file_conversion_by_id.sync.rst.txt
deleted file mode 100644
index 1dc4703f5..000000000
--- a/docs/html/_sources/api/kittycad.api.file.file_conversion_by_id.sync.rst.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-sync
-====
-
-.. currentmodule:: kittycad.api.file.file_conversion_by_id
-
-.. autofunction:: sync
diff --git a/docs/html/_sources/api/kittycad.api.file.file_conversion_by_id.sync_detailed.rst.txt b/docs/html/_sources/api/kittycad.api.file.file_conversion_by_id.sync_detailed.rst.txt
deleted file mode 100644
index 76c6953a9..000000000
--- a/docs/html/_sources/api/kittycad.api.file.file_conversion_by_id.sync_detailed.rst.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-sync_detailed
-=============
-
-.. currentmodule:: kittycad.api.file.file_conversion_by_id
-
-.. autofunction:: sync_detailed
diff --git a/docs/html/_sources/api/kittycad.api.file.file_conversion_by_id_with_base64_helper.asyncio.rst.txt b/docs/html/_sources/api/kittycad.api.file.file_conversion_by_id_with_base64_helper.asyncio.rst.txt
deleted file mode 100644
index f3b3406e6..000000000
--- a/docs/html/_sources/api/kittycad.api.file.file_conversion_by_id_with_base64_helper.asyncio.rst.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-asyncio
-=======
-
-.. currentmodule:: kittycad.api.file.file_conversion_by_id_with_base64_helper
-
-.. autofunction:: asyncio
diff --git a/docs/html/_sources/api/kittycad.api.file.file_conversion_by_id_with_base64_helper.sync.rst.txt b/docs/html/_sources/api/kittycad.api.file.file_conversion_by_id_with_base64_helper.sync.rst.txt
deleted file mode 100644
index ee54bd3ec..000000000
--- a/docs/html/_sources/api/kittycad.api.file.file_conversion_by_id_with_base64_helper.sync.rst.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-sync
-====
-
-.. currentmodule:: kittycad.api.file.file_conversion_by_id_with_base64_helper
-
-.. autofunction:: sync
diff --git a/docs/html/_sources/api/kittycad.api.file.file_convert.asyncio.rst.txt b/docs/html/_sources/api/kittycad.api.file.file_convert.asyncio.rst.txt
deleted file mode 100644
index ed1b3b8b5..000000000
--- a/docs/html/_sources/api/kittycad.api.file.file_convert.asyncio.rst.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-asyncio
-=======
-
-.. currentmodule:: kittycad.api.file.file_convert
-
-.. autofunction:: asyncio
diff --git a/docs/html/_sources/api/kittycad.api.file.file_convert.asyncio_detailed.rst.txt b/docs/html/_sources/api/kittycad.api.file.file_convert.asyncio_detailed.rst.txt
deleted file mode 100644
index ba677522c..000000000
--- a/docs/html/_sources/api/kittycad.api.file.file_convert.asyncio_detailed.rst.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-asyncio_detailed
-================
-
-.. currentmodule:: kittycad.api.file.file_convert
-
-.. autofunction:: asyncio_detailed
diff --git a/docs/html/_sources/api/kittycad.api.file.file_convert.sync.rst.txt b/docs/html/_sources/api/kittycad.api.file.file_convert.sync.rst.txt
deleted file mode 100644
index 4d9dccbac..000000000
--- a/docs/html/_sources/api/kittycad.api.file.file_convert.sync.rst.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-sync
-====
-
-.. currentmodule:: kittycad.api.file.file_convert
-
-.. autofunction:: sync
diff --git a/docs/html/_sources/api/kittycad.api.file.file_convert.sync_detailed.rst.txt b/docs/html/_sources/api/kittycad.api.file.file_convert.sync_detailed.rst.txt
deleted file mode 100644
index bba2fd7da..000000000
--- a/docs/html/_sources/api/kittycad.api.file.file_convert.sync_detailed.rst.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-sync_detailed
-=============
-
-.. currentmodule:: kittycad.api.file.file_convert
-
-.. autofunction:: sync_detailed
diff --git a/docs/html/_sources/api/kittycad.api.file.file_convert_with_base64_helper.asyncio.rst.txt b/docs/html/_sources/api/kittycad.api.file.file_convert_with_base64_helper.asyncio.rst.txt
deleted file mode 100644
index 15320af7e..000000000
--- a/docs/html/_sources/api/kittycad.api.file.file_convert_with_base64_helper.asyncio.rst.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-asyncio
-=======
-
-.. currentmodule:: kittycad.api.file.file_convert_with_base64_helper
-
-.. autofunction:: asyncio
diff --git a/docs/html/_sources/api/kittycad.api.file.file_convert_with_base64_helper.sync.rst.txt b/docs/html/_sources/api/kittycad.api.file.file_convert_with_base64_helper.sync.rst.txt
deleted file mode 100644
index 796616615..000000000
--- a/docs/html/_sources/api/kittycad.api.file.file_convert_with_base64_helper.sync.rst.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-sync
-====
-
-.. currentmodule:: kittycad.api.file.file_convert_with_base64_helper
-
-.. autofunction:: sync
diff --git a/docs/html/_sources/api/kittycad.api.meta.meta_debug_instance.asyncio.rst.txt b/docs/html/_sources/api/kittycad.api.meta.meta_debug_instance.asyncio.rst.txt
deleted file mode 100644
index 124d5387e..000000000
--- a/docs/html/_sources/api/kittycad.api.meta.meta_debug_instance.asyncio.rst.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-asyncio
-=======
-
-.. currentmodule:: kittycad.api.meta.meta_debug_instance
-
-.. autofunction:: asyncio
diff --git a/docs/html/_sources/api/kittycad.api.meta.meta_debug_instance.asyncio_detailed.rst.txt b/docs/html/_sources/api/kittycad.api.meta.meta_debug_instance.asyncio_detailed.rst.txt
deleted file mode 100644
index a9d9c247b..000000000
--- a/docs/html/_sources/api/kittycad.api.meta.meta_debug_instance.asyncio_detailed.rst.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-asyncio_detailed
-================
-
-.. currentmodule:: kittycad.api.meta.meta_debug_instance
-
-.. autofunction:: asyncio_detailed
diff --git a/docs/html/_sources/api/kittycad.api.meta.meta_debug_instance.sync.rst.txt b/docs/html/_sources/api/kittycad.api.meta.meta_debug_instance.sync.rst.txt
deleted file mode 100644
index 22045326b..000000000
--- a/docs/html/_sources/api/kittycad.api.meta.meta_debug_instance.sync.rst.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-sync
-====
-
-.. currentmodule:: kittycad.api.meta.meta_debug_instance
-
-.. autofunction:: sync
diff --git a/docs/html/_sources/api/kittycad.api.meta.meta_debug_instance.sync_detailed.rst.txt b/docs/html/_sources/api/kittycad.api.meta.meta_debug_instance.sync_detailed.rst.txt
deleted file mode 100644
index d00e6cbae..000000000
--- a/docs/html/_sources/api/kittycad.api.meta.meta_debug_instance.sync_detailed.rst.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-sync_detailed
-=============
-
-.. currentmodule:: kittycad.api.meta.meta_debug_instance
-
-.. autofunction:: sync_detailed
diff --git a/docs/html/_sources/api/kittycad.api.meta.meta_debug_session.asyncio.rst.txt b/docs/html/_sources/api/kittycad.api.meta.meta_debug_session.asyncio.rst.txt
deleted file mode 100644
index 0b0792c8b..000000000
--- a/docs/html/_sources/api/kittycad.api.meta.meta_debug_session.asyncio.rst.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-asyncio
-=======
-
-.. currentmodule:: kittycad.api.meta.meta_debug_session
-
-.. autofunction:: asyncio
diff --git a/docs/html/_sources/api/kittycad.api.meta.meta_debug_session.asyncio_detailed.rst.txt b/docs/html/_sources/api/kittycad.api.meta.meta_debug_session.asyncio_detailed.rst.txt
deleted file mode 100644
index d98aba1c0..000000000
--- a/docs/html/_sources/api/kittycad.api.meta.meta_debug_session.asyncio_detailed.rst.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-asyncio_detailed
-================
-
-.. currentmodule:: kittycad.api.meta.meta_debug_session
-
-.. autofunction:: asyncio_detailed
diff --git a/docs/html/_sources/api/kittycad.api.meta.meta_debug_session.sync.rst.txt b/docs/html/_sources/api/kittycad.api.meta.meta_debug_session.sync.rst.txt
deleted file mode 100644
index 00dd7d4d2..000000000
--- a/docs/html/_sources/api/kittycad.api.meta.meta_debug_session.sync.rst.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-sync
-====
-
-.. currentmodule:: kittycad.api.meta.meta_debug_session
-
-.. autofunction:: sync
diff --git a/docs/html/_sources/api/kittycad.api.meta.meta_debug_session.sync_detailed.rst.txt b/docs/html/_sources/api/kittycad.api.meta.meta_debug_session.sync_detailed.rst.txt
deleted file mode 100644
index b221a1a54..000000000
--- a/docs/html/_sources/api/kittycad.api.meta.meta_debug_session.sync_detailed.rst.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-sync_detailed
-=============
-
-.. currentmodule:: kittycad.api.meta.meta_debug_session
-
-.. autofunction:: sync_detailed
diff --git a/docs/html/_sources/api/kittycad.api.meta.ping.asyncio.rst.txt b/docs/html/_sources/api/kittycad.api.meta.ping.asyncio.rst.txt
deleted file mode 100644
index e2fc02127..000000000
--- a/docs/html/_sources/api/kittycad.api.meta.ping.asyncio.rst.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-asyncio
-=======
-
-.. currentmodule:: kittycad.api.meta.ping
-
-.. autofunction:: asyncio
diff --git a/docs/html/_sources/api/kittycad.api.meta.ping.asyncio_detailed.rst.txt b/docs/html/_sources/api/kittycad.api.meta.ping.asyncio_detailed.rst.txt
deleted file mode 100644
index c7e723f66..000000000
--- a/docs/html/_sources/api/kittycad.api.meta.ping.asyncio_detailed.rst.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-asyncio_detailed
-================
-
-.. currentmodule:: kittycad.api.meta.ping
-
-.. autofunction:: asyncio_detailed
diff --git a/docs/html/_sources/api/kittycad.api.meta.ping.sync.rst.txt b/docs/html/_sources/api/kittycad.api.meta.ping.sync.rst.txt
deleted file mode 100644
index 23cbdd0ba..000000000
--- a/docs/html/_sources/api/kittycad.api.meta.ping.sync.rst.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-sync
-====
-
-.. currentmodule:: kittycad.api.meta.ping
-
-.. autofunction:: sync
diff --git a/docs/html/_sources/api/kittycad.api.meta.ping.sync_detailed.rst.txt b/docs/html/_sources/api/kittycad.api.meta.ping.sync_detailed.rst.txt
deleted file mode 100644
index 85808280f..000000000
--- a/docs/html/_sources/api/kittycad.api.meta.ping.sync_detailed.rst.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-sync_detailed
-=============
-
-.. currentmodule:: kittycad.api.meta.ping
-
-.. autofunction:: sync_detailed
diff --git a/docs/html/_sources/api/kittycad.client.AuthenticatedClient.rst.txt b/docs/html/_sources/api/kittycad.client.AuthenticatedClient.rst.txt
deleted file mode 100644
index b2fa7996b..000000000
--- a/docs/html/_sources/api/kittycad.client.AuthenticatedClient.rst.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-AuthenticatedClient
-===================
-
-.. currentmodule:: kittycad.client
-
-.. autoclass:: AuthenticatedClient
- :show-inheritance:
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~AuthenticatedClient.get_headers
-
- .. rubric:: Methods Documentation
-
- .. automethod:: get_headers
diff --git a/docs/html/_sources/api/kittycad.client.AuthenticatedClientFromEnv.rst.txt b/docs/html/_sources/api/kittycad.client.AuthenticatedClientFromEnv.rst.txt
deleted file mode 100644
index e7b88b47e..000000000
--- a/docs/html/_sources/api/kittycad.client.AuthenticatedClientFromEnv.rst.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-AuthenticatedClientFromEnv
-==========================
-
-.. currentmodule:: kittycad.client
-
-.. autoclass:: AuthenticatedClientFromEnv
- :show-inheritance:
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~AuthenticatedClientFromEnv.get_headers
-
- .. rubric:: Methods Documentation
-
- .. automethod:: get_headers
diff --git a/docs/html/_sources/api/kittycad.client.Client.rst.txt b/docs/html/_sources/api/kittycad.client.Client.rst.txt
deleted file mode 100644
index ce0a7f940..000000000
--- a/docs/html/_sources/api/kittycad.client.Client.rst.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-Client
-======
-
-.. currentmodule:: kittycad.client
-
-.. autoclass:: Client
- :show-inheritance:
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~Client.get_cookies
- ~Client.get_headers
- ~Client.get_timeout
- ~Client.with_cookies
- ~Client.with_headers
- ~Client.with_timeout
-
- .. rubric:: Methods Documentation
-
- .. automethod:: get_cookies
- .. automethod:: get_headers
- .. automethod:: get_timeout
- .. automethod:: with_cookies
- .. automethod:: with_headers
- .. automethod:: with_timeout
diff --git a/docs/html/_sources/api/kittycad.models.AuthSession.rst.txt b/docs/html/_sources/api/kittycad.models.AuthSession.rst.txt
deleted file mode 100644
index 29c226d55..000000000
--- a/docs/html/_sources/api/kittycad.models.AuthSession.rst.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-AuthSession
-===========
-
-.. currentmodule:: kittycad.models
-
-.. autoclass:: AuthSession
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~AuthSession.additional_keys
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~AuthSession.from_dict
- ~AuthSession.to_dict
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: additional_keys
-
- .. rubric:: Methods Documentation
-
- .. automethod:: from_dict
- .. automethod:: to_dict
diff --git a/docs/html/_sources/api/kittycad.models.Environment.rst.txt b/docs/html/_sources/api/kittycad.models.Environment.rst.txt
deleted file mode 100644
index 58f41549b..000000000
--- a/docs/html/_sources/api/kittycad.models.Environment.rst.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-Environment
-===========
-
-.. currentmodule:: kittycad.models
-
-.. autoclass:: Environment
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~Environment.DEVELOPMENT
- ~Environment.PREVIEW
- ~Environment.PRODUCTION
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: DEVELOPMENT
- .. autoattribute:: PREVIEW
- .. autoattribute:: PRODUCTION
diff --git a/docs/html/_sources/api/kittycad.models.ErrorMessage.rst.txt b/docs/html/_sources/api/kittycad.models.ErrorMessage.rst.txt
deleted file mode 100644
index b61c2b900..000000000
--- a/docs/html/_sources/api/kittycad.models.ErrorMessage.rst.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-ErrorMessage
-============
-
-.. currentmodule:: kittycad.models
-
-.. autoclass:: ErrorMessage
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~ErrorMessage.additional_keys
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~ErrorMessage.from_dict
- ~ErrorMessage.to_dict
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: additional_keys
-
- .. rubric:: Methods Documentation
-
- .. automethod:: from_dict
- .. automethod:: to_dict
diff --git a/docs/html/_sources/api/kittycad.models.FileConversion.rst.txt b/docs/html/_sources/api/kittycad.models.FileConversion.rst.txt
deleted file mode 100644
index ea7024539..000000000
--- a/docs/html/_sources/api/kittycad.models.FileConversion.rst.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-FileConversion
-==============
-
-.. currentmodule:: kittycad.models
-
-.. autoclass:: FileConversion
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~FileConversion.additional_keys
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~FileConversion.from_dict
- ~FileConversion.to_dict
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: additional_keys
-
- .. rubric:: Methods Documentation
-
- .. automethod:: from_dict
- .. automethod:: to_dict
diff --git a/docs/html/_sources/api/kittycad.models.FileConversionStatus.rst.txt b/docs/html/_sources/api/kittycad.models.FileConversionStatus.rst.txt
deleted file mode 100644
index c75f1fd41..000000000
--- a/docs/html/_sources/api/kittycad.models.FileConversionStatus.rst.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-FileConversionStatus
-====================
-
-.. currentmodule:: kittycad.models
-
-.. autoclass:: FileConversionStatus
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~FileConversionStatus.COMPLETED
- ~FileConversionStatus.FAILED
- ~FileConversionStatus.IN_PROGRESS
- ~FileConversionStatus.QUEUED
- ~FileConversionStatus.UPLOADED
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: COMPLETED
- .. autoattribute:: FAILED
- .. autoattribute:: IN_PROGRESS
- .. autoattribute:: QUEUED
- .. autoattribute:: UPLOADED
diff --git a/docs/html/_sources/api/kittycad.models.InstanceMetadata.rst.txt b/docs/html/_sources/api/kittycad.models.InstanceMetadata.rst.txt
deleted file mode 100644
index 86feaea81..000000000
--- a/docs/html/_sources/api/kittycad.models.InstanceMetadata.rst.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-InstanceMetadata
-================
-
-.. currentmodule:: kittycad.models
-
-.. autoclass:: InstanceMetadata
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~InstanceMetadata.additional_keys
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~InstanceMetadata.from_dict
- ~InstanceMetadata.to_dict
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: additional_keys
-
- .. rubric:: Methods Documentation
-
- .. automethod:: from_dict
- .. automethod:: to_dict
diff --git a/docs/html/_sources/api/kittycad.models.Message.rst.txt b/docs/html/_sources/api/kittycad.models.Message.rst.txt
deleted file mode 100644
index c6a5d79e4..000000000
--- a/docs/html/_sources/api/kittycad.models.Message.rst.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-Message
-=======
-
-.. currentmodule:: kittycad.models
-
-.. autoclass:: Message
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~Message.additional_keys
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~Message.from_dict
- ~Message.to_dict
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: additional_keys
-
- .. rubric:: Methods Documentation
-
- .. automethod:: from_dict
- .. automethod:: to_dict
diff --git a/docs/html/_sources/api/kittycad.models.ValidFileTypes.rst.txt b/docs/html/_sources/api/kittycad.models.ValidFileTypes.rst.txt
deleted file mode 100644
index fb0585ce5..000000000
--- a/docs/html/_sources/api/kittycad.models.ValidFileTypes.rst.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-ValidFileTypes
-==============
-
-.. currentmodule:: kittycad.models
-
-.. autoclass:: ValidFileTypes
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~ValidFileTypes.DWG
- ~ValidFileTypes.DXF
- ~ValidFileTypes.OBJ
- ~ValidFileTypes.STEP
- ~ValidFileTypes.STL
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: DWG
- .. autoattribute:: DXF
- .. autoattribute:: OBJ
- .. autoattribute:: STEP
- .. autoattribute:: STL
diff --git a/docs/html/_sources/api/kittycad.models.auth_session.AuthSession.rst.txt b/docs/html/_sources/api/kittycad.models.auth_session.AuthSession.rst.txt
deleted file mode 100644
index 73d9cd14e..000000000
--- a/docs/html/_sources/api/kittycad.models.auth_session.AuthSession.rst.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-AuthSession
-===========
-
-.. currentmodule:: kittycad.models.auth_session
-
-.. autoclass:: AuthSession
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~AuthSession.additional_keys
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~AuthSession.from_dict
- ~AuthSession.to_dict
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: additional_keys
-
- .. rubric:: Methods Documentation
-
- .. automethod:: from_dict
- .. automethod:: to_dict
diff --git a/docs/html/_sources/api/kittycad.models.environment.Environment.rst.txt b/docs/html/_sources/api/kittycad.models.environment.Environment.rst.txt
deleted file mode 100644
index ad4190878..000000000
--- a/docs/html/_sources/api/kittycad.models.environment.Environment.rst.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-Environment
-===========
-
-.. currentmodule:: kittycad.models.environment
-
-.. autoclass:: Environment
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~Environment.DEVELOPMENT
- ~Environment.PREVIEW
- ~Environment.PRODUCTION
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: DEVELOPMENT
- .. autoattribute:: PREVIEW
- .. autoattribute:: PRODUCTION
diff --git a/docs/html/_sources/api/kittycad.models.error_message.ErrorMessage.rst.txt b/docs/html/_sources/api/kittycad.models.error_message.ErrorMessage.rst.txt
deleted file mode 100644
index aa2052082..000000000
--- a/docs/html/_sources/api/kittycad.models.error_message.ErrorMessage.rst.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-ErrorMessage
-============
-
-.. currentmodule:: kittycad.models.error_message
-
-.. autoclass:: ErrorMessage
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~ErrorMessage.additional_keys
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~ErrorMessage.from_dict
- ~ErrorMessage.to_dict
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: additional_keys
-
- .. rubric:: Methods Documentation
-
- .. automethod:: from_dict
- .. automethod:: to_dict
diff --git a/docs/html/_sources/api/kittycad.models.file_conversion.FileConversion.rst.txt b/docs/html/_sources/api/kittycad.models.file_conversion.FileConversion.rst.txt
deleted file mode 100644
index 4bcc324ff..000000000
--- a/docs/html/_sources/api/kittycad.models.file_conversion.FileConversion.rst.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-FileConversion
-==============
-
-.. currentmodule:: kittycad.models.file_conversion
-
-.. autoclass:: FileConversion
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~FileConversion.additional_keys
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~FileConversion.from_dict
- ~FileConversion.to_dict
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: additional_keys
-
- .. rubric:: Methods Documentation
-
- .. automethod:: from_dict
- .. automethod:: to_dict
diff --git a/docs/html/_sources/api/kittycad.models.file_conversion.FileConversionStatus.rst.txt b/docs/html/_sources/api/kittycad.models.file_conversion.FileConversionStatus.rst.txt
deleted file mode 100644
index 088aa93d3..000000000
--- a/docs/html/_sources/api/kittycad.models.file_conversion.FileConversionStatus.rst.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-FileConversionStatus
-====================
-
-.. currentmodule:: kittycad.models.file_conversion
-
-.. autoclass:: FileConversionStatus
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~FileConversionStatus.COMPLETED
- ~FileConversionStatus.FAILED
- ~FileConversionStatus.IN_PROGRESS
- ~FileConversionStatus.QUEUED
- ~FileConversionStatus.UPLOADED
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: COMPLETED
- .. autoattribute:: FAILED
- .. autoattribute:: IN_PROGRESS
- .. autoattribute:: QUEUED
- .. autoattribute:: UPLOADED
diff --git a/docs/html/_sources/api/kittycad.models.file_conversion_status.FileConversionStatus.rst.txt b/docs/html/_sources/api/kittycad.models.file_conversion_status.FileConversionStatus.rst.txt
deleted file mode 100644
index 367439298..000000000
--- a/docs/html/_sources/api/kittycad.models.file_conversion_status.FileConversionStatus.rst.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-FileConversionStatus
-====================
-
-.. currentmodule:: kittycad.models.file_conversion_status
-
-.. autoclass:: FileConversionStatus
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~FileConversionStatus.COMPLETED
- ~FileConversionStatus.FAILED
- ~FileConversionStatus.IN_PROGRESS
- ~FileConversionStatus.QUEUED
- ~FileConversionStatus.UPLOADED
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: COMPLETED
- .. autoattribute:: FAILED
- .. autoattribute:: IN_PROGRESS
- .. autoattribute:: QUEUED
- .. autoattribute:: UPLOADED
diff --git a/docs/html/_sources/api/kittycad.models.instance_metadata.InstanceMetadata.rst.txt b/docs/html/_sources/api/kittycad.models.instance_metadata.InstanceMetadata.rst.txt
deleted file mode 100644
index f5aaa331f..000000000
--- a/docs/html/_sources/api/kittycad.models.instance_metadata.InstanceMetadata.rst.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-InstanceMetadata
-================
-
-.. currentmodule:: kittycad.models.instance_metadata
-
-.. autoclass:: InstanceMetadata
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~InstanceMetadata.additional_keys
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~InstanceMetadata.from_dict
- ~InstanceMetadata.to_dict
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: additional_keys
-
- .. rubric:: Methods Documentation
-
- .. automethod:: from_dict
- .. automethod:: to_dict
diff --git a/docs/html/_sources/api/kittycad.models.message.Message.rst.txt b/docs/html/_sources/api/kittycad.models.message.Message.rst.txt
deleted file mode 100644
index 30d39fc53..000000000
--- a/docs/html/_sources/api/kittycad.models.message.Message.rst.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-Message
-=======
-
-.. currentmodule:: kittycad.models.message
-
-.. autoclass:: Message
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~Message.additional_keys
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~Message.from_dict
- ~Message.to_dict
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: additional_keys
-
- .. rubric:: Methods Documentation
-
- .. automethod:: from_dict
- .. automethod:: to_dict
diff --git a/docs/html/_sources/api/kittycad.models.valid_file_types.ValidFileTypes.rst.txt b/docs/html/_sources/api/kittycad.models.valid_file_types.ValidFileTypes.rst.txt
deleted file mode 100644
index f434f3a29..000000000
--- a/docs/html/_sources/api/kittycad.models.valid_file_types.ValidFileTypes.rst.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-ValidFileTypes
-==============
-
-.. currentmodule:: kittycad.models.valid_file_types
-
-.. autoclass:: ValidFileTypes
- :show-inheritance:
-
- .. rubric:: Attributes Summary
-
- .. autosummary::
-
- ~ValidFileTypes.DWG
- ~ValidFileTypes.DXF
- ~ValidFileTypes.OBJ
- ~ValidFileTypes.STEP
- ~ValidFileTypes.STL
-
- .. rubric:: Attributes Documentation
-
- .. autoattribute:: DWG
- .. autoattribute:: DXF
- .. autoattribute:: OBJ
- .. autoattribute:: STEP
- .. autoattribute:: STL
diff --git a/docs/html/_sources/api/kittycad.types.File.rst.txt b/docs/html/_sources/api/kittycad.types.File.rst.txt
deleted file mode 100644
index 64f4625fe..000000000
--- a/docs/html/_sources/api/kittycad.types.File.rst.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-File
-====
-
-.. currentmodule:: kittycad.types
-
-.. autoclass:: File
- :show-inheritance:
-
- .. rubric:: Methods Summary
-
- .. autosummary::
-
- ~File.to_tuple
-
- .. rubric:: Methods Documentation
-
- .. automethod:: to_tuple
diff --git a/docs/html/_sources/api/kittycad.types.Response.rst.txt b/docs/html/_sources/api/kittycad.types.Response.rst.txt
deleted file mode 100644
index 98341b950..000000000
--- a/docs/html/_sources/api/kittycad.types.Response.rst.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-Response
-========
-
-.. currentmodule:: kittycad.types
-
-.. autoclass:: Response
- :show-inheritance:
diff --git a/docs/html/_sources/index.rst.txt b/docs/html/_sources/index.rst.txt
index 121a82338..b997ab6b1 100644
--- a/docs/html/_sources/index.rst.txt
+++ b/docs/html/_sources/index.rst.txt
@@ -6,9 +6,9 @@
Welcome to kittycad's documentation!
====================================
-.. toctree::
- :maxdepth: 3
- :caption: Contents:
+.. autosummary::
+ :recursive:
+ :toctree: modules
kittycad.api
kittycad.client
diff --git a/docs/html/_sources/modules/kittycad.api.beta.rst.txt b/docs/html/_sources/modules/kittycad.api.beta.rst.txt
new file mode 100644
index 000000000..0a52051ff
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.api.beta.rst.txt
@@ -0,0 +1,23 @@
+kittycad.api.beta
+=================
+
+.. automodule:: kittycad.api.beta
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/_sources/modules/kittycad.api.file.file_conversion_status.rst.txt b/docs/html/_sources/modules/kittycad.api.file.file_conversion_status.rst.txt
new file mode 100644
index 000000000..9fdf128a4
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.api.file.file_conversion_status.rst.txt
@@ -0,0 +1,32 @@
+kittycad.api.file.file\_conversion\_status
+==========================================
+
+.. automodule:: kittycad.api.file.file_conversion_status
+
+
+
+
+
+
+
+ .. rubric:: Functions
+
+ .. autosummary::
+
+ asyncio
+ asyncio_detailed
+ sync
+ sync_detailed
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/_sources/modules/kittycad.api.file.file_conversion_status_with_base64_helper.rst.txt b/docs/html/_sources/modules/kittycad.api.file.file_conversion_status_with_base64_helper.rst.txt
new file mode 100644
index 000000000..2acf39599
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.api.file.file_conversion_status_with_base64_helper.rst.txt
@@ -0,0 +1,30 @@
+kittycad.api.file.file\_conversion\_status\_with\_base64\_helper
+================================================================
+
+.. automodule:: kittycad.api.file.file_conversion_status_with_base64_helper
+
+
+
+
+
+
+
+ .. rubric:: Functions
+
+ .. autosummary::
+
+ asyncio
+ sync
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/_sources/modules/kittycad.api.file.post_file_conversion.rst.txt b/docs/html/_sources/modules/kittycad.api.file.post_file_conversion.rst.txt
new file mode 100644
index 000000000..6c48880ae
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.api.file.post_file_conversion.rst.txt
@@ -0,0 +1,32 @@
+kittycad.api.file.post\_file\_conversion
+========================================
+
+.. automodule:: kittycad.api.file.post_file_conversion
+
+
+
+
+
+
+
+ .. rubric:: Functions
+
+ .. autosummary::
+
+ asyncio
+ asyncio_detailed
+ sync
+ sync_detailed
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/_sources/modules/kittycad.api.file.post_file_conversion_with_base64_helper.rst.txt b/docs/html/_sources/modules/kittycad.api.file.post_file_conversion_with_base64_helper.rst.txt
new file mode 100644
index 000000000..f6fdf1db7
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.api.file.post_file_conversion_with_base64_helper.rst.txt
@@ -0,0 +1,30 @@
+kittycad.api.file.post\_file\_conversion\_with\_base64\_helper
+==============================================================
+
+.. automodule:: kittycad.api.file.post_file_conversion_with_base64_helper
+
+
+
+
+
+
+
+ .. rubric:: Functions
+
+ .. autosummary::
+
+ asyncio
+ sync
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/_sources/modules/kittycad.api.file.rst.txt b/docs/html/_sources/modules/kittycad.api.file.rst.txt
new file mode 100644
index 000000000..5d5337d9c
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.api.file.rst.txt
@@ -0,0 +1,34 @@
+kittycad.api.file
+=================
+
+.. automodule:: kittycad.api.file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+.. rubric:: Modules
+
+.. autosummary::
+ :toctree:
+ :recursive:
+
+ kittycad.api.file.file_conversion_status
+ kittycad.api.file.file_conversion_status_with_base64_helper
+ kittycad.api.file.post_file_conversion
+ kittycad.api.file.post_file_conversion_with_base64_helper
+
diff --git a/docs/html/_sources/modules/kittycad.api.internal.gpu_devices.rst.txt b/docs/html/_sources/modules/kittycad.api.internal.gpu_devices.rst.txt
new file mode 100644
index 000000000..d641b118b
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.api.internal.gpu_devices.rst.txt
@@ -0,0 +1,32 @@
+kittycad.api.internal.gpu\_devices
+==================================
+
+.. automodule:: kittycad.api.internal.gpu_devices
+
+
+
+
+
+
+
+ .. rubric:: Functions
+
+ .. autosummary::
+
+ asyncio
+ asyncio_detailed
+ sync
+ sync_detailed
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/_sources/modules/kittycad.api.internal.rst.txt b/docs/html/_sources/modules/kittycad.api.internal.rst.txt
new file mode 100644
index 000000000..9dc99deac
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.api.internal.rst.txt
@@ -0,0 +1,32 @@
+kittycad.api.internal
+=====================
+
+.. automodule:: kittycad.api.internal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+.. rubric:: Modules
+
+.. autosummary::
+ :toctree:
+ :recursive:
+
+ kittycad.api.internal.gpu_devices
+ kittycad.api.internal.stop_async_conversions
+
diff --git a/docs/html/_sources/modules/kittycad.api.internal.stop_async_conversions.rst.txt b/docs/html/_sources/modules/kittycad.api.internal.stop_async_conversions.rst.txt
new file mode 100644
index 000000000..7d0d74cb0
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.api.internal.stop_async_conversions.rst.txt
@@ -0,0 +1,32 @@
+kittycad.api.internal.stop\_async\_conversions
+==============================================
+
+.. automodule:: kittycad.api.internal.stop_async_conversions
+
+
+
+
+
+
+
+ .. rubric:: Functions
+
+ .. autosummary::
+
+ asyncio
+ asyncio_detailed
+ sync
+ sync_detailed
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/_sources/modules/kittycad.api.meta.auth_session.rst.txt b/docs/html/_sources/modules/kittycad.api.meta.auth_session.rst.txt
new file mode 100644
index 000000000..5eec49990
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.api.meta.auth_session.rst.txt
@@ -0,0 +1,32 @@
+kittycad.api.meta.auth\_session
+===============================
+
+.. automodule:: kittycad.api.meta.auth_session
+
+
+
+
+
+
+
+ .. rubric:: Functions
+
+ .. autosummary::
+
+ asyncio
+ asyncio_detailed
+ sync
+ sync_detailed
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/_sources/modules/kittycad.api.meta.instance_metadata.rst.txt b/docs/html/_sources/modules/kittycad.api.meta.instance_metadata.rst.txt
new file mode 100644
index 000000000..8b0622bd0
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.api.meta.instance_metadata.rst.txt
@@ -0,0 +1,32 @@
+kittycad.api.meta.instance\_metadata
+====================================
+
+.. automodule:: kittycad.api.meta.instance_metadata
+
+
+
+
+
+
+
+ .. rubric:: Functions
+
+ .. autosummary::
+
+ asyncio
+ asyncio_detailed
+ sync
+ sync_detailed
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/_sources/modules/kittycad.api.meta.ping.rst.txt b/docs/html/_sources/modules/kittycad.api.meta.ping.rst.txt
new file mode 100644
index 000000000..c91d90aec
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.api.meta.ping.rst.txt
@@ -0,0 +1,32 @@
+kittycad.api.meta.ping
+======================
+
+.. automodule:: kittycad.api.meta.ping
+
+
+
+
+
+
+
+ .. rubric:: Functions
+
+ .. autosummary::
+
+ asyncio
+ asyncio_detailed
+ sync
+ sync_detailed
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/_sources/modules/kittycad.api.meta.rst.txt b/docs/html/_sources/modules/kittycad.api.meta.rst.txt
new file mode 100644
index 000000000..bc5537a0e
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.api.meta.rst.txt
@@ -0,0 +1,33 @@
+kittycad.api.meta
+=================
+
+.. automodule:: kittycad.api.meta
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+.. rubric:: Modules
+
+.. autosummary::
+ :toctree:
+ :recursive:
+
+ kittycad.api.meta.auth_session
+ kittycad.api.meta.instance_metadata
+ kittycad.api.meta.ping
+
diff --git a/docs/html/_sources/modules/kittycad.api.rst.txt b/docs/html/_sources/modules/kittycad.api.rst.txt
new file mode 100644
index 000000000..aa0fa6aac
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.api.rst.txt
@@ -0,0 +1,34 @@
+kittycad.api
+============
+
+.. automodule:: kittycad.api
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+.. rubric:: Modules
+
+.. autosummary::
+ :toctree:
+ :recursive:
+
+ kittycad.api.beta
+ kittycad.api.file
+ kittycad.api.internal
+ kittycad.api.meta
+
diff --git a/docs/html/_sources/modules/kittycad.client.rst.txt b/docs/html/_sources/modules/kittycad.client.rst.txt
new file mode 100644
index 000000000..0206d8f2a
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.client.rst.txt
@@ -0,0 +1,30 @@
+kittycad.client
+===============
+
+.. automodule:: kittycad.client
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Classes
+
+ .. autosummary::
+
+ Client
+ ClientFromEnv
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/_sources/modules/kittycad.models.auth_session.rst.txt b/docs/html/_sources/modules/kittycad.models.auth_session.rst.txt
new file mode 100644
index 000000000..62839f1b4
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.models.auth_session.rst.txt
@@ -0,0 +1,29 @@
+kittycad.models.auth\_session
+=============================
+
+.. automodule:: kittycad.models.auth_session
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Classes
+
+ .. autosummary::
+
+ AuthSession
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/_sources/modules/kittycad.models.error_message.rst.txt b/docs/html/_sources/modules/kittycad.models.error_message.rst.txt
new file mode 100644
index 000000000..18faf2284
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.models.error_message.rst.txt
@@ -0,0 +1,29 @@
+kittycad.models.error\_message
+==============================
+
+.. automodule:: kittycad.models.error_message
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Classes
+
+ .. autosummary::
+
+ ErrorMessage
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/_sources/modules/kittycad.models.file_conversion.rst.txt b/docs/html/_sources/modules/kittycad.models.file_conversion.rst.txt
new file mode 100644
index 000000000..45315a21d
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.models.file_conversion.rst.txt
@@ -0,0 +1,29 @@
+kittycad.models.file\_conversion
+================================
+
+.. automodule:: kittycad.models.file_conversion
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Classes
+
+ .. autosummary::
+
+ FileConversion
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/_sources/modules/kittycad.models.file_conversion_status.rst.txt b/docs/html/_sources/modules/kittycad.models.file_conversion_status.rst.txt
new file mode 100644
index 000000000..650b3ee5b
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.models.file_conversion_status.rst.txt
@@ -0,0 +1,29 @@
+kittycad.models.file\_conversion\_status
+========================================
+
+.. automodule:: kittycad.models.file_conversion_status
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Classes
+
+ .. autosummary::
+
+ FileConversionStatus
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/_sources/modules/kittycad.models.gpu_device.rst.txt b/docs/html/_sources/modules/kittycad.models.gpu_device.rst.txt
new file mode 100644
index 000000000..009534b75
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.models.gpu_device.rst.txt
@@ -0,0 +1,29 @@
+kittycad.models.gpu\_device
+===========================
+
+.. automodule:: kittycad.models.gpu_device
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Classes
+
+ .. autosummary::
+
+ GPUDevice
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/_sources/modules/kittycad.models.instance.rst.txt b/docs/html/_sources/modules/kittycad.models.instance.rst.txt
new file mode 100644
index 000000000..1ea25a33b
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.models.instance.rst.txt
@@ -0,0 +1,29 @@
+kittycad.models.instance
+========================
+
+.. automodule:: kittycad.models.instance
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Classes
+
+ .. autosummary::
+
+ Instance
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/_sources/modules/kittycad.models.pong_enum.rst.txt b/docs/html/_sources/modules/kittycad.models.pong_enum.rst.txt
new file mode 100644
index 000000000..1c7774ee6
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.models.pong_enum.rst.txt
@@ -0,0 +1,29 @@
+kittycad.models.pong\_enum
+==========================
+
+.. automodule:: kittycad.models.pong_enum
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Classes
+
+ .. autosummary::
+
+ PongEnum
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/_sources/modules/kittycad.models.pong_message.rst.txt b/docs/html/_sources/modules/kittycad.models.pong_message.rst.txt
new file mode 100644
index 000000000..08f513b1c
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.models.pong_message.rst.txt
@@ -0,0 +1,29 @@
+kittycad.models.pong\_message
+=============================
+
+.. automodule:: kittycad.models.pong_message
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Classes
+
+ .. autosummary::
+
+ PongMessage
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/_sources/modules/kittycad.models.rst.txt b/docs/html/_sources/modules/kittycad.models.rst.txt
new file mode 100644
index 000000000..30f1de237
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.models.rst.txt
@@ -0,0 +1,41 @@
+kittycad.models
+===============
+
+.. automodule:: kittycad.models
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+.. rubric:: Modules
+
+.. autosummary::
+ :toctree:
+ :recursive:
+
+ kittycad.models.auth_session
+ kittycad.models.error_message
+ kittycad.models.file_conversion
+ kittycad.models.file_conversion_status
+ kittycad.models.gpu_device
+ kittycad.models.instance
+ kittycad.models.pong_enum
+ kittycad.models.pong_message
+ kittycad.models.server_env
+ kittycad.models.valid_output_file_format
+ kittycad.models.valid_source_file_format
+
diff --git a/docs/html/_sources/modules/kittycad.models.server_env.rst.txt b/docs/html/_sources/modules/kittycad.models.server_env.rst.txt
new file mode 100644
index 000000000..a7ec78345
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.models.server_env.rst.txt
@@ -0,0 +1,29 @@
+kittycad.models.server\_env
+===========================
+
+.. automodule:: kittycad.models.server_env
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Classes
+
+ .. autosummary::
+
+ ServerEnv
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/_sources/modules/kittycad.models.valid_output_file_format.rst.txt b/docs/html/_sources/modules/kittycad.models.valid_output_file_format.rst.txt
new file mode 100644
index 000000000..662fe81fa
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.models.valid_output_file_format.rst.txt
@@ -0,0 +1,29 @@
+kittycad.models.valid\_output\_file\_format
+===========================================
+
+.. automodule:: kittycad.models.valid_output_file_format
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Classes
+
+ .. autosummary::
+
+ ValidOutputFileFormat
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/_sources/modules/kittycad.models.valid_source_file_format.rst.txt b/docs/html/_sources/modules/kittycad.models.valid_source_file_format.rst.txt
new file mode 100644
index 000000000..bb3305484
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.models.valid_source_file_format.rst.txt
@@ -0,0 +1,29 @@
+kittycad.models.valid\_source\_file\_format
+===========================================
+
+.. automodule:: kittycad.models.valid_source_file_format
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Classes
+
+ .. autosummary::
+
+ ValidSourceFileFormat
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/_sources/modules/kittycad.types.rst.txt b/docs/html/_sources/modules/kittycad.types.rst.txt
new file mode 100644
index 000000000..07e380fa9
--- /dev/null
+++ b/docs/html/_sources/modules/kittycad.types.rst.txt
@@ -0,0 +1,31 @@
+kittycad.types
+==============
+
+.. automodule:: kittycad.types
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Classes
+
+ .. autosummary::
+
+ File
+ Response
+ Unset
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/_static/documentation_options.js b/docs/html/_static/documentation_options.js
index 4dfe75f94..efa8c5749 100644
--- a/docs/html/_static/documentation_options.js
+++ b/docs/html/_static/documentation_options.js
@@ -1,6 +1,6 @@
var DOCUMENTATION_OPTIONS = {
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
- VERSION: 'v0.0.5',
+ VERSION: 'v0.0.6',
LANGUAGE: 'None',
COLLAPSE_INDEX: false,
BUILDER: 'html',
diff --git a/docs/html/api/kittycad.Client.html b/docs/html/api/kittycad.Client.html
index 1e1b95a27..86a5ace8f 100644
--- a/docs/html/api/kittycad.Client.html
+++ b/docs/html/api/kittycad.Client.html
@@ -4,7 +4,7 @@
-
Client — kittycad v0.0.5 documentation
+ Client — kittycad v0.0.6 documentation
@@ -19,7 +19,8 @@
-
+
+
@@ -30,7 +31,7 @@
kittycad
- v0.0.5
+ v0.0.6
@@ -73,9 +80,9 @@
Client
-
-class kittycad.Client(base_url='https://api.kittycad.io', *, cookies=NOTHING, headers=NOTHING, timeout=50.0, verify_ssl=True)[source]
+class kittycad.Client(base_url='https://api.kittycad.io', *, token, cookies=NOTHING, headers=NOTHING, timeout=50.0, verify_ssl=True)[source]
Bases: object
-A class for keeping track of data related to the API
+A Client which has been authenticated for use on secured endpoints of the KittyCAD API.
Methods Summary
@@ -151,7 +158,7 @@
Get a new client matching this one with additional cookies
- Return type
-Client
+Client
@@ -162,7 +169,7 @@
Get a new client matching this one with additional headers
- Return type
-Client
+Client
@@ -173,7 +180,7 @@
Get a new client matching this one with a new timeout (in seconds)
- Return type
-Client
+Client
@@ -186,7 +193,8 @@
diff --git a/docs/html/search.html b/docs/html/search.html
index 1ea11478d..772f8226e 100644
--- a/docs/html/search.html
+++ b/docs/html/search.html
@@ -3,7 +3,7 @@
- Search — kittycad v0.0.5 documentation
+ Search — kittycad v0.0.6 documentation
@@ -31,7 +31,7 @@
kittycad
- v0.0.5
+ v0.0.6
diff --git a/docs/html/searchindex.js b/docs/html/searchindex.js
index 222331f40..855bc6252 100644
--- a/docs/html/searchindex.js
+++ b/docs/html/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["api/kittycad.AuthenticatedClient","api/kittycad.Client","api/kittycad.api.file.file_conversion_by_id.asyncio","api/kittycad.api.file.file_conversion_by_id.asyncio_detailed","api/kittycad.api.file.file_conversion_by_id.sync","api/kittycad.api.file.file_conversion_by_id.sync_detailed","api/kittycad.api.file.file_conversion_by_id_with_base64_helper.asyncio","api/kittycad.api.file.file_conversion_by_id_with_base64_helper.sync","api/kittycad.api.file.file_convert.asyncio","api/kittycad.api.file.file_convert.asyncio_detailed","api/kittycad.api.file.file_convert.sync","api/kittycad.api.file.file_convert.sync_detailed","api/kittycad.api.file.file_convert_with_base64_helper.asyncio","api/kittycad.api.file.file_convert_with_base64_helper.sync","api/kittycad.api.meta.meta_debug_instance.asyncio","api/kittycad.api.meta.meta_debug_instance.asyncio_detailed","api/kittycad.api.meta.meta_debug_instance.sync","api/kittycad.api.meta.meta_debug_instance.sync_detailed","api/kittycad.api.meta.meta_debug_session.asyncio","api/kittycad.api.meta.meta_debug_session.asyncio_detailed","api/kittycad.api.meta.meta_debug_session.sync","api/kittycad.api.meta.meta_debug_session.sync_detailed","api/kittycad.api.meta.ping.asyncio","api/kittycad.api.meta.ping.asyncio_detailed","api/kittycad.api.meta.ping.sync","api/kittycad.api.meta.ping.sync_detailed","api/kittycad.client.AuthenticatedClient","api/kittycad.client.AuthenticatedClientFromEnv","api/kittycad.client.Client","api/kittycad.models.AuthSession","api/kittycad.models.Environment","api/kittycad.models.ErrorMessage","api/kittycad.models.FileConversion","api/kittycad.models.FileConversionStatus","api/kittycad.models.InstanceMetadata","api/kittycad.models.Message","api/kittycad.models.ValidFileTypes","api/kittycad.models.auth_session.AuthSession","api/kittycad.models.environment.Environment","api/kittycad.models.error_message.ErrorMessage","api/kittycad.models.file_conversion.FileConversion","api/kittycad.models.file_conversion.FileConversionStatus","api/kittycad.models.file_conversion_status.FileConversionStatus","api/kittycad.models.instance_metadata.InstanceMetadata","api/kittycad.models.message.Message","api/kittycad.models.valid_file_types.ValidFileTypes","api/kittycad.types.File","api/kittycad.types.Response","index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":4,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,sphinx:56},filenames:["api/kittycad.AuthenticatedClient.rst","api/kittycad.Client.rst","api/kittycad.api.file.file_conversion_by_id.asyncio.rst","api/kittycad.api.file.file_conversion_by_id.asyncio_detailed.rst","api/kittycad.api.file.file_conversion_by_id.sync.rst","api/kittycad.api.file.file_conversion_by_id.sync_detailed.rst","api/kittycad.api.file.file_conversion_by_id_with_base64_helper.asyncio.rst","api/kittycad.api.file.file_conversion_by_id_with_base64_helper.sync.rst","api/kittycad.api.file.file_convert.asyncio.rst","api/kittycad.api.file.file_convert.asyncio_detailed.rst","api/kittycad.api.file.file_convert.sync.rst","api/kittycad.api.file.file_convert.sync_detailed.rst","api/kittycad.api.file.file_convert_with_base64_helper.asyncio.rst","api/kittycad.api.file.file_convert_with_base64_helper.sync.rst","api/kittycad.api.meta.meta_debug_instance.asyncio.rst","api/kittycad.api.meta.meta_debug_instance.asyncio_detailed.rst","api/kittycad.api.meta.meta_debug_instance.sync.rst","api/kittycad.api.meta.meta_debug_instance.sync_detailed.rst","api/kittycad.api.meta.meta_debug_session.asyncio.rst","api/kittycad.api.meta.meta_debug_session.asyncio_detailed.rst","api/kittycad.api.meta.meta_debug_session.sync.rst","api/kittycad.api.meta.meta_debug_session.sync_detailed.rst","api/kittycad.api.meta.ping.asyncio.rst","api/kittycad.api.meta.ping.asyncio_detailed.rst","api/kittycad.api.meta.ping.sync.rst","api/kittycad.api.meta.ping.sync_detailed.rst","api/kittycad.client.AuthenticatedClient.rst","api/kittycad.client.AuthenticatedClientFromEnv.rst","api/kittycad.client.Client.rst","api/kittycad.models.AuthSession.rst","api/kittycad.models.Environment.rst","api/kittycad.models.ErrorMessage.rst","api/kittycad.models.FileConversion.rst","api/kittycad.models.FileConversionStatus.rst","api/kittycad.models.InstanceMetadata.rst","api/kittycad.models.Message.rst","api/kittycad.models.ValidFileTypes.rst","api/kittycad.models.auth_session.AuthSession.rst","api/kittycad.models.environment.Environment.rst","api/kittycad.models.error_message.ErrorMessage.rst","api/kittycad.models.file_conversion.FileConversion.rst","api/kittycad.models.file_conversion.FileConversionStatus.rst","api/kittycad.models.file_conversion_status.FileConversionStatus.rst","api/kittycad.models.instance_metadata.InstanceMetadata.rst","api/kittycad.models.message.Message.rst","api/kittycad.models.valid_file_types.ValidFileTypes.rst","api/kittycad.types.File.rst","api/kittycad.types.Response.rst","index.rst"],objects:{"":[[48,0,0,"-","kittycad"]],"kittycad.AuthenticatedClient":[[0,2,1,"","get_headers"]],"kittycad.Client":[[1,2,1,"","get_cookies"],[1,2,1,"","get_headers"],[1,2,1,"","get_timeout"],[1,2,1,"","with_cookies"],[1,2,1,"","with_headers"],[1,2,1,"","with_timeout"]],"kittycad.api.file.file_conversion_by_id":[[2,3,1,"","asyncio"],[3,3,1,"","asyncio_detailed"],[4,3,1,"","sync"],[5,3,1,"","sync_detailed"]],"kittycad.api.file.file_conversion_by_id_with_base64_helper":[[6,3,1,"","asyncio"],[7,3,1,"","sync"]],"kittycad.api.file.file_convert":[[8,3,1,"","asyncio"],[9,3,1,"","asyncio_detailed"],[10,3,1,"","sync"],[11,3,1,"","sync_detailed"]],"kittycad.api.file.file_convert_with_base64_helper":[[12,3,1,"","asyncio"],[13,3,1,"","sync"]],"kittycad.api.meta.meta_debug_instance":[[14,3,1,"","asyncio"],[15,3,1,"","asyncio_detailed"],[16,3,1,"","sync"],[17,3,1,"","sync_detailed"]],"kittycad.api.meta.meta_debug_session":[[18,3,1,"","asyncio"],[19,3,1,"","asyncio_detailed"],[20,3,1,"","sync"],[21,3,1,"","sync_detailed"]],"kittycad.api.meta.ping":[[22,3,1,"","asyncio"],[23,3,1,"","asyncio_detailed"],[24,3,1,"","sync"],[25,3,1,"","sync_detailed"]],"kittycad.client":[[26,1,1,"","AuthenticatedClient"],[27,1,1,"","AuthenticatedClientFromEnv"],[28,1,1,"","Client"]],"kittycad.client.AuthenticatedClient":[[26,2,1,"","get_headers"]],"kittycad.client.AuthenticatedClientFromEnv":[[27,2,1,"","get_headers"]],"kittycad.client.Client":[[28,2,1,"","get_cookies"],[28,2,1,"","get_headers"],[28,2,1,"","get_timeout"],[28,2,1,"","with_cookies"],[28,2,1,"","with_headers"],[28,2,1,"","with_timeout"]],"kittycad.models":[[29,1,1,"","AuthSession"],[30,1,1,"","Environment"],[31,1,1,"","ErrorMessage"],[32,1,1,"","FileConversion"],[33,1,1,"","FileConversionStatus"],[34,1,1,"","InstanceMetadata"],[35,1,1,"","Message"]],"kittycad.models.AuthSession":[[29,4,1,"","additional_keys"],[29,2,1,"","from_dict"],[29,2,1,"","to_dict"]],"kittycad.models.Environment":[[30,4,1,"","DEVELOPMENT"],[30,4,1,"","PREVIEW"],[30,4,1,"","PRODUCTION"]],"kittycad.models.ErrorMessage":[[31,4,1,"","additional_keys"],[31,2,1,"","from_dict"],[31,2,1,"","to_dict"]],"kittycad.models.FileConversion":[[32,4,1,"","additional_keys"],[32,2,1,"","from_dict"],[32,2,1,"","to_dict"]],"kittycad.models.FileConversionStatus":[[33,4,1,"","COMPLETED"],[33,4,1,"","FAILED"],[33,4,1,"","IN_PROGRESS"],[33,4,1,"","QUEUED"],[33,4,1,"","UPLOADED"]],"kittycad.models.InstanceMetadata":[[34,4,1,"","additional_keys"],[34,2,1,"","from_dict"],[34,2,1,"","to_dict"]],"kittycad.models.Message":[[35,4,1,"","additional_keys"],[35,2,1,"","from_dict"],[35,2,1,"","to_dict"]],"kittycad.models.auth_session":[[37,1,1,"","AuthSession"]],"kittycad.models.auth_session.AuthSession":[[37,4,1,"","additional_keys"],[37,2,1,"","from_dict"],[37,2,1,"","to_dict"]],"kittycad.models.environment":[[38,1,1,"","Environment"]],"kittycad.models.environment.Environment":[[38,4,1,"","DEVELOPMENT"],[38,4,1,"","PREVIEW"],[38,4,1,"","PRODUCTION"]],"kittycad.models.error_message":[[39,1,1,"","ErrorMessage"]],"kittycad.models.error_message.ErrorMessage":[[39,4,1,"","additional_keys"],[39,2,1,"","from_dict"],[39,2,1,"","to_dict"]],"kittycad.models.file_conversion":[[40,1,1,"","FileConversion"],[41,1,1,"","FileConversionStatus"]],"kittycad.models.file_conversion.FileConversion":[[40,4,1,"","additional_keys"],[40,2,1,"","from_dict"],[40,2,1,"","to_dict"]],"kittycad.models.file_conversion.FileConversionStatus":[[41,4,1,"","COMPLETED"],[41,4,1,"","FAILED"],[41,4,1,"","IN_PROGRESS"],[41,4,1,"","QUEUED"],[41,4,1,"","UPLOADED"]],"kittycad.models.file_conversion_status":[[42,1,1,"","FileConversionStatus"]],"kittycad.models.file_conversion_status.FileConversionStatus":[[42,4,1,"","COMPLETED"],[42,4,1,"","FAILED"],[42,4,1,"","IN_PROGRESS"],[42,4,1,"","QUEUED"],[42,4,1,"","UPLOADED"]],"kittycad.models.instance_metadata":[[43,1,1,"","InstanceMetadata"]],"kittycad.models.instance_metadata.InstanceMetadata":[[43,4,1,"","additional_keys"],[43,2,1,"","from_dict"],[43,2,1,"","to_dict"]],"kittycad.models.message":[[44,1,1,"","Message"]],"kittycad.models.message.Message":[[44,4,1,"","additional_keys"],[44,2,1,"","from_dict"],[44,2,1,"","to_dict"]],"kittycad.types":[[46,1,1,"","File"],[47,1,1,"","Response"]],"kittycad.types.File":[[46,2,1,"","to_tuple"]],kittycad:[[0,1,1,"","AuthenticatedClient"],[1,1,1,"","Client"]]},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","function","Python function"],"4":["py","attribute","Python attribute"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:function","4":"py:attribute"},terms:{"0":[0,1,26,27,28],"50":[0,1,26,27,28],"class":[0,1,26,27,28,29,30,31,32,33,34,35,37,38,39,40,41,42,43,44,46,47],"enum":[30,33,38,41,42],"float":[1,28],"function":[6,7,12,13],"new":[1,28],"return":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,31,32,34,35,37,39,40,43,44,46],"true":[0,1,26,27,28],A:[0,1,26,27,28,47,48],If:[8,10,12,13],In:[33,41,42],about:[14,16,18,20],accept:46,access:48,addit:[1,28],additional_kei:[29,31,32,34,35,37,39,40,43,44],all:[1,28],an:[30,33,38,41,42,47],ani:[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,29,31,32,34,35,37,39,40,43,44],anoth:[8,10,12,13],api:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28],async:[2,3,6,8,9,12,14,15,18,19,22,23],asynchron:[8,10,12,13],attribut:[29,30,31,32,33,34,35,37,38,39,40,41,42,43,44],auth_sess:37,authent:[0,26,27],authsess:[18,19,20,21],automat:[6,7,12,13],base64:[6,7,12,13],base:[0,1,26,27,28,29,30,31,32,33,34,35,37,38,39,40,41,42,43,44,46,47],base_url:[0,1,26,27,28],been:[0,26,27],being:[8,10,12,13],binaryio:46,bodi:[12,13],cad:[8,10,12,13],certain:[8,10,12,13],classmethod:[29,31,32,34,35,37,39,40,43,44],client:[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,48],complet:[33,41,42],completed_at:[32,40],contain:46,content:[8,9,10,11,12,13,47],convers:[2,4,6,7],convert:[8,10,12,13],cooki:[0,1,26,27,28],cpu_platform:[34,43],created_at:[29,32,37,40],data:[1,28,46],debug:[14,16,18,20],decod:[6,7,12,13],descript:[34,43],develop:[30,38],dict:[0,1,26,27,28,29,31,32,34,35,37,39,40,43,44],document:[0,1,26,27,28,29,30,31,32,33,34,35,37,38,39,40,41,42,43,44,46],email:[29,37],encod:[12,13],endpoint:[0,1,26,27,28,47],enumer:[30,33,38,41,42],environ:[27,34,43],error_messag:39,fail:[33,41,42],fals:[29,37],file:[2,3,4,5,6,7,8,9,10,11,12,13],file_convers:[40,41],file_conversion_by_id:[2,3,4,5],file_conversion_by_id_with_base64_help:[6,7],file_conversion_statu:42,file_convert:[8,9,10,11],file_convert_with_base64_help:[12,13],file_nam:46,fileconvers:[2,3,4,5,6,7,8,9,10,11,12,13],form:46,format:[8,10,12,13],from:[8,10,12,13,47],from_dict:[29,31,32,34,35,37,39,40,43,44],gener:47,get:[0,1,2,4,6,7,14,16,18,20,26,27,28],get_cooki:[1,28],get_head:[0,1,26,27,28],get_timeout:[1,28],git_hash:[34,43],ha:[0,26,27],header:[0,1,26,27,28,47],hostnam:[34,43],http:[0,1,26,27,28],httpx:46,id:[2,3,4,5,6,7,29,32,34,37,40,43],imag:[34,43],in_progress:[33,41,42],index:48,inform:[14,16,18,20,46],instanc:[14,16],instance_metadata:43,instancemetadata:[14,15,16,17],io:[0,1,26,27,28],ip_address:[29,34,37,43],is_valid:[29,37],keep:[1,28],kittycad:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,37,38,39,40,41,42,43,44,46,47],kittycad_api_token:27,larger:[8,10,12,13],librari:48,list:[29,31,32,34,35,37,39,40,43,44],machine_typ:[34,43],match:[1,28],messag:[22,23,24,25,31,39],meta:[14,15,16,17,18,19,20,21,22,23,24,25],meta_debug_inst:[14,15,16,17],meta_debug_sess:[18,19,20,21],method:[0,1,26,27,28,29,31,32,34,35,37,39,40,43,44,46],mime_typ:46,model:[29,30,31,32,33,34,35,37,38,39,40,41,42,43,44],modul:48,multipart:46,name:[34,43],none:[2,4,6,7,8,10,12,13,14,16,18,20,22,24,27,46],noth:[0,1,26,27,28],object:[1,28,29,31,32,34,35,37,39,40,43,44,46],one:[1,6,7,8,10,12,13,28],option:[22,24,46],output:[6,7,12,13,32,40],output_format:[8,9,10,11,12,13,32,40],page:48,pars:47,payload:46,perform:[8,10,12,13],ping:[22,23,24,25],preview:[30,38],primarili:[14,16,18,20],product:[30,38],progress:[33,41,42],queu:[33,41,42],relat:[1,28],represent:46,request:[12,13,18,20],respons:[3,5,6,7,9,11,15,17,19,21,23,25],search:48,second:[1,28],secur:[0,26,27],server:[14,16,22,24],session:[18,20],simpl:[22,24],size:[8,10,12,13],sourc:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,37,38,39,40,41,42,43,44,46,47],source_format:[8,9,10,11,12,13],specif:[14,16],src_dict:[29,31,32,34,35,37,39,40,43,44],src_format:[32,40],statu:[2,4,6,7,32,40],status_cod:47,str:[0,1,26,27,28,29,30,31,32,33,34,35,37,38,39,40,41,42,43,44,46],summari:[0,1,26,27,28,29,30,31,32,33,34,35,37,38,39,40,41,42,43,44,46],t:[29,31,32,34,35,37,39,40,43,44,47],textio:46,than:[8,10,12,13],thi:[1,6,7,12,13,14,16,18,20,28],timeout:[0,1,26,27,28],to_dict:[29,31,32,34,35,37,39,40,43,44],to_tupl:46,token:[0,26,27,29,37],track:[1,28],tupl:46,type:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,31,32,34,35,37,39,40,43,44,46,47],union:[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,46],unset:[29,31,32,34,35,37,39,40,43,44],upload:[33,41,42,46],us:[0,1,14,16,18,20,26,27,28],user_id:[29,37],valu:[30,33,38,41,42],variabl:27,verify_ssl:[0,1,26,27,28],which:[0,26,27],with_cooki:[1,28],with_head:[1,28],with_timeout:[1,28],your:[18,20],zone:[34,43]},titles:["AuthenticatedClient","Client","asyncio","asyncio_detailed","sync","sync_detailed","asyncio","sync","asyncio","asyncio_detailed","sync","sync_detailed","asyncio","sync","asyncio","asyncio_detailed","sync","sync_detailed","asyncio","asyncio_detailed","sync","sync_detailed","asyncio","asyncio_detailed","sync","sync_detailed","AuthenticatedClient","AuthenticatedClientFromEnv","Client","AuthSession","Environment","ErrorMessage","FileConversion","FileConversionStatus","InstanceMetadata","Message","ValidFileTypes","AuthSession","Environment","ErrorMessage","FileConversion","FileConversionStatus","FileConversionStatus","InstanceMetadata","Message","ValidFileTypes","File","Response","Welcome to kittycad\u2019s documentation!"],titleterms:{"class":48,asyncio:[2,6,8,12,14,18,22],asyncio_detail:[3,9,15,19,23],authenticatedcli:[0,26],authenticatedclientfromenv:27,authsess:[29,37],client:[1,28],document:48,environ:[30,38],errormessag:[31,39],file:46,fileconvers:[32,40],fileconversionstatu:[33,41,42],indic:48,instancemetadata:[34,43],kittycad:48,messag:[35,44],packag:48,respons:47,s:48,sync:[4,7,10,13,16,20,24],sync_detail:[5,11,17,21,25],tabl:48,validfiletyp:[36,45],welcom:48}})
\ No newline at end of file
+Search.setIndex({docnames:["api/kittycad.Client","api/kittycad.ClientFromEnv","index","modules/kittycad.api","modules/kittycad.api.beta","modules/kittycad.api.file","modules/kittycad.api.file.file_conversion_status","modules/kittycad.api.file.file_conversion_status_with_base64_helper","modules/kittycad.api.file.post_file_conversion","modules/kittycad.api.file.post_file_conversion_with_base64_helper","modules/kittycad.api.internal","modules/kittycad.api.internal.gpu_devices","modules/kittycad.api.internal.stop_async_conversions","modules/kittycad.api.meta","modules/kittycad.api.meta.auth_session","modules/kittycad.api.meta.instance_metadata","modules/kittycad.api.meta.ping","modules/kittycad.client","modules/kittycad.models","modules/kittycad.models.auth_session","modules/kittycad.models.error_message","modules/kittycad.models.file_conversion","modules/kittycad.models.file_conversion_status","modules/kittycad.models.gpu_device","modules/kittycad.models.instance","modules/kittycad.models.pong_enum","modules/kittycad.models.pong_message","modules/kittycad.models.server_env","modules/kittycad.models.valid_output_file_format","modules/kittycad.models.valid_source_file_format","modules/kittycad.types"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":4,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,sphinx:56},filenames:["api/kittycad.Client.rst","api/kittycad.ClientFromEnv.rst","index.rst","modules/kittycad.api.rst","modules/kittycad.api.beta.rst","modules/kittycad.api.file.rst","modules/kittycad.api.file.file_conversion_status.rst","modules/kittycad.api.file.file_conversion_status_with_base64_helper.rst","modules/kittycad.api.file.post_file_conversion.rst","modules/kittycad.api.file.post_file_conversion_with_base64_helper.rst","modules/kittycad.api.internal.rst","modules/kittycad.api.internal.gpu_devices.rst","modules/kittycad.api.internal.stop_async_conversions.rst","modules/kittycad.api.meta.rst","modules/kittycad.api.meta.auth_session.rst","modules/kittycad.api.meta.instance_metadata.rst","modules/kittycad.api.meta.ping.rst","modules/kittycad.client.rst","modules/kittycad.models.rst","modules/kittycad.models.auth_session.rst","modules/kittycad.models.error_message.rst","modules/kittycad.models.file_conversion.rst","modules/kittycad.models.file_conversion_status.rst","modules/kittycad.models.gpu_device.rst","modules/kittycad.models.instance.rst","modules/kittycad.models.pong_enum.rst","modules/kittycad.models.pong_message.rst","modules/kittycad.models.server_env.rst","modules/kittycad.models.valid_output_file_format.rst","modules/kittycad.models.valid_source_file_format.rst","modules/kittycad.types.rst"],objects:{"":[[2,0,0,"-","kittycad"]],"kittycad.Client":[[0,2,1,"","get_cookies"],[0,2,1,"","get_headers"],[0,2,1,"","get_timeout"],[0,2,1,"","with_cookies"],[0,2,1,"","with_headers"],[0,2,1,"","with_timeout"]],"kittycad.ClientFromEnv":[[1,2,1,"","get_headers"]],"kittycad.api":[[4,0,0,"-","beta"],[5,0,0,"-","file"],[10,0,0,"-","internal"],[13,0,0,"-","meta"]],"kittycad.api.file":[[6,0,0,"-","file_conversion_status"],[7,0,0,"-","file_conversion_status_with_base64_helper"],[8,0,0,"-","post_file_conversion"],[9,0,0,"-","post_file_conversion_with_base64_helper"]],"kittycad.api.internal":[[11,0,0,"-","gpu_devices"],[12,0,0,"-","stop_async_conversions"]],"kittycad.api.meta":[[14,0,0,"-","auth_session"],[15,0,0,"-","instance_metadata"],[16,0,0,"-","ping"]],"kittycad.models":[[19,0,0,"-","auth_session"],[20,0,0,"-","error_message"],[21,0,0,"-","file_conversion"],[22,0,0,"-","file_conversion_status"],[23,0,0,"-","gpu_device"],[24,0,0,"-","instance"],[25,0,0,"-","pong_enum"],[26,0,0,"-","pong_message"],[27,0,0,"-","server_env"],[28,0,0,"-","valid_output_file_format"],[29,0,0,"-","valid_source_file_format"]],kittycad:[[0,1,1,"","Client"],[1,1,1,"","ClientFromEnv"],[3,0,0,"-","api"],[17,0,0,"-","client"],[18,0,0,"-","models"],[30,0,0,"-","types"]]},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method"},terms:{"0":[0,1],"022a":1,"469e":1,"50":[0,1],"class":[0,1,17,19,20,21,22,23,24,25,26,27,28,29,30],"float":0,"function":[6,7,8,9,11,12,14,15,16],"new":0,"return":[0,1],"true":[0,1],A:[0,1,2],about:13,access:[2,3,4,5,10,13],addit:0,all:[0,18],api:[0,1],authent:[0,1],b5d7cbb6ae5b:1,base:[0,1],base_url:[0,1],bb36:1,been:[0,1],cad:5,client:[1,2],contain:[3,4,5,10,13,18,30],cooki:[0,1],data:18,dict:[0,1],document:[0,1],endpoint:[0,1,4,10],environ:1,f633c45d:1,get:[0,1],get_cooki:0,get_head:[0,1],get_timeout:0,ha:[0,1],header:[0,1],http:[0,1],index:2,inform:13,input:18,instanc:13,io:[0,1],kittycad:[0,1],kittycad_api_token:1,librari:2,match:0,method:[0,1,3,4,5,10,13],modul:[2,3,5,10,13,18],noth:[0,1],object:0,one:0,oper:5,output:18,page:2,path:[4,5,10,13],properti:30,search:2,second:0,secur:[0,1],server:13,session:13,share:30,some:30,sourc:[0,1],str:[0,1],summari:[0,1],thi:0,timeout:[0,1],token:[0,1],type:[0,1],us:[0,1,18],variabl:1,verify_ssl:[0,1],which:[0,1],with_cooki:0,with_head:0,with_timeout:0},titles:["Client","ClientFromEnv","Welcome to kittycad\u2019s documentation!","kittycad.api","kittycad.api.beta","kittycad.api.file","kittycad.api.file.file_conversion_status","kittycad.api.file.file_conversion_status_with_base64_helper","kittycad.api.file.post_file_conversion","kittycad.api.file.post_file_conversion_with_base64_helper","kittycad.api.internal","kittycad.api.internal.gpu_devices","kittycad.api.internal.stop_async_conversions","kittycad.api.meta","kittycad.api.meta.auth_session","kittycad.api.meta.instance_metadata","kittycad.api.meta.ping","kittycad.client","kittycad.models","kittycad.models.auth_session","kittycad.models.error_message","kittycad.models.file_conversion","kittycad.models.file_conversion_status","kittycad.models.gpu_device","kittycad.models.instance","kittycad.models.pong_enum","kittycad.models.pong_message","kittycad.models.server_env","kittycad.models.valid_output_file_format","kittycad.models.valid_source_file_format","kittycad.types"],titleterms:{"class":2,api:[3,4,5,6,7,8,9,10,11,12,13,14,15,16],auth_sess:[14,19],beta:4,client:[0,17],clientfromenv:1,document:2,error_messag:20,file:[5,6,7,8,9],file_convers:21,file_conversion_statu:[6,22],file_conversion_status_with_base64_help:7,gpu_devic:[11,23],indic:2,instanc:24,instance_metadata:15,intern:[10,11,12],kittycad:[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30],meta:[13,14,15,16],model:[18,19,20,21,22,23,24,25,26,27,28,29],packag:2,ping:16,pong_enum:25,pong_messag:26,post_file_convers:8,post_file_conversion_with_base64_help:9,s:2,server_env:27,stop_async_convers:12,tabl:2,type:30,valid_output_file_format:28,valid_source_file_format:29,welcom:2}})
\ No newline at end of file
diff --git a/docs/index.rst b/docs/index.rst
index 121a82338..b997ab6b1 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -6,9 +6,9 @@
Welcome to kittycad's documentation!
====================================
-.. toctree::
- :maxdepth: 3
- :caption: Contents:
+.. autosummary::
+ :recursive:
+ :toctree: modules
kittycad.api
kittycad.client
diff --git a/docs/modules/kittycad.api.beta.rst b/docs/modules/kittycad.api.beta.rst
new file mode 100644
index 000000000..0a52051ff
--- /dev/null
+++ b/docs/modules/kittycad.api.beta.rst
@@ -0,0 +1,23 @@
+kittycad.api.beta
+=================
+
+.. automodule:: kittycad.api.beta
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/modules/kittycad.api.file.file_conversion_status.rst b/docs/modules/kittycad.api.file.file_conversion_status.rst
new file mode 100644
index 000000000..9fdf128a4
--- /dev/null
+++ b/docs/modules/kittycad.api.file.file_conversion_status.rst
@@ -0,0 +1,32 @@
+kittycad.api.file.file\_conversion\_status
+==========================================
+
+.. automodule:: kittycad.api.file.file_conversion_status
+
+
+
+
+
+
+
+ .. rubric:: Functions
+
+ .. autosummary::
+
+ asyncio
+ asyncio_detailed
+ sync
+ sync_detailed
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/modules/kittycad.api.file.file_conversion_status_with_base64_helper.rst b/docs/modules/kittycad.api.file.file_conversion_status_with_base64_helper.rst
new file mode 100644
index 000000000..2acf39599
--- /dev/null
+++ b/docs/modules/kittycad.api.file.file_conversion_status_with_base64_helper.rst
@@ -0,0 +1,30 @@
+kittycad.api.file.file\_conversion\_status\_with\_base64\_helper
+================================================================
+
+.. automodule:: kittycad.api.file.file_conversion_status_with_base64_helper
+
+
+
+
+
+
+
+ .. rubric:: Functions
+
+ .. autosummary::
+
+ asyncio
+ sync
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/modules/kittycad.api.file.post_file_conversion.rst b/docs/modules/kittycad.api.file.post_file_conversion.rst
new file mode 100644
index 000000000..6c48880ae
--- /dev/null
+++ b/docs/modules/kittycad.api.file.post_file_conversion.rst
@@ -0,0 +1,32 @@
+kittycad.api.file.post\_file\_conversion
+========================================
+
+.. automodule:: kittycad.api.file.post_file_conversion
+
+
+
+
+
+
+
+ .. rubric:: Functions
+
+ .. autosummary::
+
+ asyncio
+ asyncio_detailed
+ sync
+ sync_detailed
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/modules/kittycad.api.file.post_file_conversion_with_base64_helper.rst b/docs/modules/kittycad.api.file.post_file_conversion_with_base64_helper.rst
new file mode 100644
index 000000000..f6fdf1db7
--- /dev/null
+++ b/docs/modules/kittycad.api.file.post_file_conversion_with_base64_helper.rst
@@ -0,0 +1,30 @@
+kittycad.api.file.post\_file\_conversion\_with\_base64\_helper
+==============================================================
+
+.. automodule:: kittycad.api.file.post_file_conversion_with_base64_helper
+
+
+
+
+
+
+
+ .. rubric:: Functions
+
+ .. autosummary::
+
+ asyncio
+ sync
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/modules/kittycad.api.file.rst b/docs/modules/kittycad.api.file.rst
new file mode 100644
index 000000000..5d5337d9c
--- /dev/null
+++ b/docs/modules/kittycad.api.file.rst
@@ -0,0 +1,34 @@
+kittycad.api.file
+=================
+
+.. automodule:: kittycad.api.file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+.. rubric:: Modules
+
+.. autosummary::
+ :toctree:
+ :recursive:
+
+ kittycad.api.file.file_conversion_status
+ kittycad.api.file.file_conversion_status_with_base64_helper
+ kittycad.api.file.post_file_conversion
+ kittycad.api.file.post_file_conversion_with_base64_helper
+
diff --git a/docs/modules/kittycad.api.internal.gpu_devices.rst b/docs/modules/kittycad.api.internal.gpu_devices.rst
new file mode 100644
index 000000000..d641b118b
--- /dev/null
+++ b/docs/modules/kittycad.api.internal.gpu_devices.rst
@@ -0,0 +1,32 @@
+kittycad.api.internal.gpu\_devices
+==================================
+
+.. automodule:: kittycad.api.internal.gpu_devices
+
+
+
+
+
+
+
+ .. rubric:: Functions
+
+ .. autosummary::
+
+ asyncio
+ asyncio_detailed
+ sync
+ sync_detailed
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/modules/kittycad.api.internal.rst b/docs/modules/kittycad.api.internal.rst
new file mode 100644
index 000000000..9dc99deac
--- /dev/null
+++ b/docs/modules/kittycad.api.internal.rst
@@ -0,0 +1,32 @@
+kittycad.api.internal
+=====================
+
+.. automodule:: kittycad.api.internal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+.. rubric:: Modules
+
+.. autosummary::
+ :toctree:
+ :recursive:
+
+ kittycad.api.internal.gpu_devices
+ kittycad.api.internal.stop_async_conversions
+
diff --git a/docs/modules/kittycad.api.internal.stop_async_conversions.rst b/docs/modules/kittycad.api.internal.stop_async_conversions.rst
new file mode 100644
index 000000000..7d0d74cb0
--- /dev/null
+++ b/docs/modules/kittycad.api.internal.stop_async_conversions.rst
@@ -0,0 +1,32 @@
+kittycad.api.internal.stop\_async\_conversions
+==============================================
+
+.. automodule:: kittycad.api.internal.stop_async_conversions
+
+
+
+
+
+
+
+ .. rubric:: Functions
+
+ .. autosummary::
+
+ asyncio
+ asyncio_detailed
+ sync
+ sync_detailed
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/modules/kittycad.api.meta.auth_session.rst b/docs/modules/kittycad.api.meta.auth_session.rst
new file mode 100644
index 000000000..5eec49990
--- /dev/null
+++ b/docs/modules/kittycad.api.meta.auth_session.rst
@@ -0,0 +1,32 @@
+kittycad.api.meta.auth\_session
+===============================
+
+.. automodule:: kittycad.api.meta.auth_session
+
+
+
+
+
+
+
+ .. rubric:: Functions
+
+ .. autosummary::
+
+ asyncio
+ asyncio_detailed
+ sync
+ sync_detailed
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/modules/kittycad.api.meta.instance_metadata.rst b/docs/modules/kittycad.api.meta.instance_metadata.rst
new file mode 100644
index 000000000..8b0622bd0
--- /dev/null
+++ b/docs/modules/kittycad.api.meta.instance_metadata.rst
@@ -0,0 +1,32 @@
+kittycad.api.meta.instance\_metadata
+====================================
+
+.. automodule:: kittycad.api.meta.instance_metadata
+
+
+
+
+
+
+
+ .. rubric:: Functions
+
+ .. autosummary::
+
+ asyncio
+ asyncio_detailed
+ sync
+ sync_detailed
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/modules/kittycad.api.meta.ping.rst b/docs/modules/kittycad.api.meta.ping.rst
new file mode 100644
index 000000000..c91d90aec
--- /dev/null
+++ b/docs/modules/kittycad.api.meta.ping.rst
@@ -0,0 +1,32 @@
+kittycad.api.meta.ping
+======================
+
+.. automodule:: kittycad.api.meta.ping
+
+
+
+
+
+
+
+ .. rubric:: Functions
+
+ .. autosummary::
+
+ asyncio
+ asyncio_detailed
+ sync
+ sync_detailed
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/modules/kittycad.api.meta.rst b/docs/modules/kittycad.api.meta.rst
new file mode 100644
index 000000000..bc5537a0e
--- /dev/null
+++ b/docs/modules/kittycad.api.meta.rst
@@ -0,0 +1,33 @@
+kittycad.api.meta
+=================
+
+.. automodule:: kittycad.api.meta
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+.. rubric:: Modules
+
+.. autosummary::
+ :toctree:
+ :recursive:
+
+ kittycad.api.meta.auth_session
+ kittycad.api.meta.instance_metadata
+ kittycad.api.meta.ping
+
diff --git a/docs/modules/kittycad.api.rst b/docs/modules/kittycad.api.rst
new file mode 100644
index 000000000..aa0fa6aac
--- /dev/null
+++ b/docs/modules/kittycad.api.rst
@@ -0,0 +1,34 @@
+kittycad.api
+============
+
+.. automodule:: kittycad.api
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+.. rubric:: Modules
+
+.. autosummary::
+ :toctree:
+ :recursive:
+
+ kittycad.api.beta
+ kittycad.api.file
+ kittycad.api.internal
+ kittycad.api.meta
+
diff --git a/docs/modules/kittycad.client.rst b/docs/modules/kittycad.client.rst
new file mode 100644
index 000000000..0206d8f2a
--- /dev/null
+++ b/docs/modules/kittycad.client.rst
@@ -0,0 +1,30 @@
+kittycad.client
+===============
+
+.. automodule:: kittycad.client
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Classes
+
+ .. autosummary::
+
+ Client
+ ClientFromEnv
+
+
+
+
+
+
+
+
+
diff --git a/docs/modules/kittycad.models.auth_session.rst b/docs/modules/kittycad.models.auth_session.rst
new file mode 100644
index 000000000..62839f1b4
--- /dev/null
+++ b/docs/modules/kittycad.models.auth_session.rst
@@ -0,0 +1,29 @@
+kittycad.models.auth\_session
+=============================
+
+.. automodule:: kittycad.models.auth_session
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Classes
+
+ .. autosummary::
+
+ AuthSession
+
+
+
+
+
+
+
+
+
diff --git a/docs/modules/kittycad.models.error_message.rst b/docs/modules/kittycad.models.error_message.rst
new file mode 100644
index 000000000..18faf2284
--- /dev/null
+++ b/docs/modules/kittycad.models.error_message.rst
@@ -0,0 +1,29 @@
+kittycad.models.error\_message
+==============================
+
+.. automodule:: kittycad.models.error_message
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Classes
+
+ .. autosummary::
+
+ ErrorMessage
+
+
+
+
+
+
+
+
+
diff --git a/docs/modules/kittycad.models.file_conversion.rst b/docs/modules/kittycad.models.file_conversion.rst
new file mode 100644
index 000000000..45315a21d
--- /dev/null
+++ b/docs/modules/kittycad.models.file_conversion.rst
@@ -0,0 +1,29 @@
+kittycad.models.file\_conversion
+================================
+
+.. automodule:: kittycad.models.file_conversion
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Classes
+
+ .. autosummary::
+
+ FileConversion
+
+
+
+
+
+
+
+
+
diff --git a/docs/modules/kittycad.models.file_conversion_status.rst b/docs/modules/kittycad.models.file_conversion_status.rst
new file mode 100644
index 000000000..650b3ee5b
--- /dev/null
+++ b/docs/modules/kittycad.models.file_conversion_status.rst
@@ -0,0 +1,29 @@
+kittycad.models.file\_conversion\_status
+========================================
+
+.. automodule:: kittycad.models.file_conversion_status
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Classes
+
+ .. autosummary::
+
+ FileConversionStatus
+
+
+
+
+
+
+
+
+
diff --git a/docs/modules/kittycad.models.gpu_device.rst b/docs/modules/kittycad.models.gpu_device.rst
new file mode 100644
index 000000000..009534b75
--- /dev/null
+++ b/docs/modules/kittycad.models.gpu_device.rst
@@ -0,0 +1,29 @@
+kittycad.models.gpu\_device
+===========================
+
+.. automodule:: kittycad.models.gpu_device
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Classes
+
+ .. autosummary::
+
+ GPUDevice
+
+
+
+
+
+
+
+
+
diff --git a/docs/modules/kittycad.models.instance.rst b/docs/modules/kittycad.models.instance.rst
new file mode 100644
index 000000000..1ea25a33b
--- /dev/null
+++ b/docs/modules/kittycad.models.instance.rst
@@ -0,0 +1,29 @@
+kittycad.models.instance
+========================
+
+.. automodule:: kittycad.models.instance
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Classes
+
+ .. autosummary::
+
+ Instance
+
+
+
+
+
+
+
+
+
diff --git a/docs/modules/kittycad.models.pong_enum.rst b/docs/modules/kittycad.models.pong_enum.rst
new file mode 100644
index 000000000..1c7774ee6
--- /dev/null
+++ b/docs/modules/kittycad.models.pong_enum.rst
@@ -0,0 +1,29 @@
+kittycad.models.pong\_enum
+==========================
+
+.. automodule:: kittycad.models.pong_enum
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Classes
+
+ .. autosummary::
+
+ PongEnum
+
+
+
+
+
+
+
+
+
diff --git a/docs/modules/kittycad.models.pong_message.rst b/docs/modules/kittycad.models.pong_message.rst
new file mode 100644
index 000000000..08f513b1c
--- /dev/null
+++ b/docs/modules/kittycad.models.pong_message.rst
@@ -0,0 +1,29 @@
+kittycad.models.pong\_message
+=============================
+
+.. automodule:: kittycad.models.pong_message
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Classes
+
+ .. autosummary::
+
+ PongMessage
+
+
+
+
+
+
+
+
+
diff --git a/docs/modules/kittycad.models.rst b/docs/modules/kittycad.models.rst
new file mode 100644
index 000000000..30f1de237
--- /dev/null
+++ b/docs/modules/kittycad.models.rst
@@ -0,0 +1,41 @@
+kittycad.models
+===============
+
+.. automodule:: kittycad.models
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+.. rubric:: Modules
+
+.. autosummary::
+ :toctree:
+ :recursive:
+
+ kittycad.models.auth_session
+ kittycad.models.error_message
+ kittycad.models.file_conversion
+ kittycad.models.file_conversion_status
+ kittycad.models.gpu_device
+ kittycad.models.instance
+ kittycad.models.pong_enum
+ kittycad.models.pong_message
+ kittycad.models.server_env
+ kittycad.models.valid_output_file_format
+ kittycad.models.valid_source_file_format
+
diff --git a/docs/modules/kittycad.models.server_env.rst b/docs/modules/kittycad.models.server_env.rst
new file mode 100644
index 000000000..a7ec78345
--- /dev/null
+++ b/docs/modules/kittycad.models.server_env.rst
@@ -0,0 +1,29 @@
+kittycad.models.server\_env
+===========================
+
+.. automodule:: kittycad.models.server_env
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Classes
+
+ .. autosummary::
+
+ ServerEnv
+
+
+
+
+
+
+
+
+
diff --git a/docs/modules/kittycad.models.valid_output_file_format.rst b/docs/modules/kittycad.models.valid_output_file_format.rst
new file mode 100644
index 000000000..662fe81fa
--- /dev/null
+++ b/docs/modules/kittycad.models.valid_output_file_format.rst
@@ -0,0 +1,29 @@
+kittycad.models.valid\_output\_file\_format
+===========================================
+
+.. automodule:: kittycad.models.valid_output_file_format
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Classes
+
+ .. autosummary::
+
+ ValidOutputFileFormat
+
+
+
+
+
+
+
+
+
diff --git a/docs/modules/kittycad.models.valid_source_file_format.rst b/docs/modules/kittycad.models.valid_source_file_format.rst
new file mode 100644
index 000000000..bb3305484
--- /dev/null
+++ b/docs/modules/kittycad.models.valid_source_file_format.rst
@@ -0,0 +1,29 @@
+kittycad.models.valid\_source\_file\_format
+===========================================
+
+.. automodule:: kittycad.models.valid_source_file_format
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Classes
+
+ .. autosummary::
+
+ ValidSourceFileFormat
+
+
+
+
+
+
+
+
+
diff --git a/docs/modules/kittycad.types.rst b/docs/modules/kittycad.types.rst
new file mode 100644
index 000000000..07e380fa9
--- /dev/null
+++ b/docs/modules/kittycad.types.rst
@@ -0,0 +1,31 @@
+kittycad.types
+==============
+
+.. automodule:: kittycad.types
+
+
+
+
+
+
+
+
+
+
+
+ .. rubric:: Classes
+
+ .. autosummary::
+
+ File
+ Response
+ Unset
+
+
+
+
+
+
+
+
+
diff --git a/generate/generate.py b/generate/generate.py
new file mode 100755
index 000000000..cee33af77
--- /dev/null
+++ b/generate/generate.py
@@ -0,0 +1,1143 @@
+#!/usr/bin/env python3
+from openapi_parser.parser.loader import OpenApiParser
+
+import json
+import os
+import re
+
+package_name = 'kittycad'
+
+
+def main():
+ cwd = os.getcwd()
+ path = os.path.join(cwd, 'spec.json')
+ print("opening spec file: ", path)
+ parser = OpenApiParser.open(path)
+ # Ignore the security definitions.
+ parser.load_metadata()
+ parser.load_schemas()
+ parser.load_path_items()
+
+ # Generate the types.
+ generateTypes(cwd, parser)
+
+ # Generate the paths.
+ data = generatePaths(cwd, parser)
+
+ # Add the client information to the generation.
+ data['info']['x-python'] = {
+ 'client': """# Create a client with your token.
+from kittycad import Client
+
+client = Client(token="$TOKEN")
+
+# - OR -
+
+# Create a new client with your token parsed from the environment variable:
+# KITTYCAD_API_TOKEN.
+from kittycad import ClientFromEnv
+
+client = ClientFromEnv()""",
+ 'install': 'pip install kittycad',
+ }
+
+ # Rewrite the spec back out.
+ f = open(path, 'w')
+ f.write(json.dumps(data, indent=4))
+ f.close()
+
+
+def generatePaths(cwd: str, parser: OpenApiParser) -> dict:
+ # Make sure we have the directory.
+ path = os.path.join(cwd, 'kittycad', 'api')
+ os.makedirs(path, exist_ok=True)
+
+ # Open the __init__.py file.
+ file_name = '__init__.py'
+ file_path = os.path.join(path, file_name)
+ f = open(file_path, 'w')
+ f.write("\"\"\" Contains methods for accessing the API \"\"\"\n")
+ # Close the file.
+ f.close()
+
+ # Generate the directory/__init__.py for each of the tags.
+ tags = parser.data['tags']
+ for tag in tags:
+ tag_name = tag['name']
+ tag_description = tag['description']
+ tag_path = os.path.join(path, tag_name)
+ # Esnure the directory exists.
+ os.makedirs(tag_path, exist_ok=True)
+ # Open the __init__.py file.
+ file_name = '__init__.py'
+ file_path = os.path.join(tag_path, file_name)
+ f = open(file_path, 'w')
+ f.write(
+ "\"\"\" Contains methods for accessing the " +
+ tag_name +
+ " API paths: " +
+ tag_description +
+ " \"\"\"\n")
+ # Close the file.
+ f.close()
+
+ # Generate the paths.
+ data = parser.data
+ paths = data['paths']
+ for p in paths:
+ for method in paths[p]:
+ endpoint = paths[p][method]
+ data = generatePath(path, p, method, endpoint, data)
+
+ return data
+
+
+def generatePath(
+ path: str,
+ name: str,
+ method: str,
+ endpoint: dict,
+ data: dict) -> dict:
+ # Generate the path.
+ fn_name = camel_to_snake(endpoint['operationId'])
+ file_name = fn_name + '.py'
+ tag_name = ''
+ # Add the tag to the path if it exists.
+ if 'tags' in endpoint:
+ tag_name = endpoint['tags'][0]
+ path = os.path.join(path, tag_name)
+ file_path = os.path.join(path, file_name)
+ print("generating type: ", name, " at: ", file_path)
+ print(" endpoint: ", [endpoint])
+ f = open(file_path, "w")
+
+ endoint_refs = getEndpointRefs(endpoint, data)
+ parameter_refs = getParameterRefs(endpoint)
+ request_body_refs = getRequestBodyRefs(endpoint)
+ request_body_type = getRequestBodyType(endpoint)
+
+ success_type = endoint_refs[0]
+
+ if fn_name == 'file_conversion_status' or fn_name == 'post_file_conversion':
+ fn_name = 'file_conversion_status_with_base64_helper'
+
+ # Iterate over the parameters.
+ params_str = ''
+ if 'parameters' in endpoint:
+ parameters = endpoint['parameters']
+ for parameter in parameters:
+ parameter_name = parameter['name']
+ parameter_type = ''
+ if 'type' in parameter['schema']:
+ if 'format' in parameter['schema']:
+ if parameter['schema']['format'] == 'uuid':
+ parameter_type = "\"\""
+ else:
+ parameter_type = "\"\""
+ elif '$ref' in parameter['schema']:
+ parameter_type = parameter['schema']['$ref'].replace(
+ '#/components/schemas/', '')
+ else:
+ print(" parameter: ", parameter)
+ raise Exception("Unknown parameter type")
+ params_str += ', ' + \
+ camel_to_snake(parameter_name) + '=' + parameter_type
+
+ if request_body_type:
+ params_str += ', body=' + request_body_type
+
+ example = """from kittycad.models import """ + success_type + """
+from kittycad.api.""" + tag_name + """ import """ + fn_name + """
+from kittycad.types import Response
+
+fc: """ + success_type + """ = """ + fn_name + """.sync(client=client""" + params_str + """)
+
+# OR if you need more info (e.g. status_code)
+response: Response[""" + success_type + """] = """ + fn_name + """.sync_detailed(client=client""" + params_str + """)
+
+# OR run async
+fc: """ + success_type + """ = await """ + fn_name + """.asyncio(client=client""" + params_str + """)
+
+# OR run async with more info
+response: Response[""" + success_type + """] = await """ + fn_name + """.asyncio_detailed(client=client""" + params_str + """)"""
+
+ # Add our example to our json output.
+ data['paths'][name][method]['x-python'] = {
+ 'example': example,
+ 'libDocsLink': 'https://python.api.docs.kittycad.io/modules/kittycad.api.' + tag_name + '.' + fn_name + '.html',
+ }
+
+ # Add our imports.
+ f.write("from typing import Any, Dict, Optional, Union\n")
+ f.write("\n")
+ f.write("import httpx\n")
+ f.write("\n")
+ f.write("from ...client import Client\n")
+ # Import our references for responses.
+ for ref in endoint_refs:
+ if ref.startswith('[') and ref.endswith(']'):
+ ref = ref.replace('[', '').replace(']', '')
+ f.write(
+ "from ...models." +
+ camel_to_snake(ref) +
+ " import " +
+ ref +
+ "\n")
+ for ref in parameter_refs:
+ f.write(
+ "from ...models." +
+ camel_to_snake(ref) +
+ " import " +
+ ref +
+ "\n")
+ for ref in request_body_refs:
+ f.write(
+ "from ...models." +
+ camel_to_snake(ref) +
+ " import " +
+ ref +
+ "\n")
+ f.write("from ...types import Response\n")
+ f.write("\n")
+
+ # Define the method.
+ f.write("def _get_kwargs(\n")
+ # Iterate over the parameters.
+ if 'parameters' in endpoint:
+ parameters = endpoint['parameters']
+ for parameter in parameters:
+ parameter_name = parameter['name']
+ if 'type' in parameter['schema']:
+ parameter_type = parameter['schema']['type'].replace(
+ 'string', 'str')
+ elif '$ref' in parameter['schema']:
+ parameter_type = parameter['schema']['$ref'].replace(
+ '#/components/schemas/', '')
+ else:
+ print(" parameter: ", parameter)
+ raise Exception("Unknown parameter type")
+ f.write(
+ "\t" +
+ camel_to_snake(parameter_name) +
+ ": " +
+ parameter_type +
+ ",\n")
+ if request_body_type:
+ f.write(
+ "\tbody: " +
+ request_body_type +
+ ",\n")
+ f.write("\t*,\n")
+ f.write("\tclient: Client,\n")
+ f.write(") -> Dict[str, Any]:\n")
+ f.write("\turl = \"{}" + name + "\".format(client.base_url")
+ # Iterate over the parameters.
+ if 'parameters' in endpoint:
+ parameters = endpoint['parameters']
+ for parameter in parameters:
+ parameter_name = parameter['name']
+ if 'type' in parameter['schema']:
+ parameter_type = parameter['schema']['type'].replace(
+ 'string', 'str')
+ elif '$ref' in parameter['schema']:
+ parameter_type = parameter['schema']['$ref'].replace(
+ '#/components/schemas/', '')
+ else:
+ print(" parameter: ", parameter)
+ raise Exception("Unknown parameter type")
+ f.write(
+ ", " +
+ parameter_name +
+ "=" +
+ camel_to_snake(parameter_name))
+ f.write(")\n")
+ f.write("\n")
+ f.write("\theaders: Dict[str, Any] = client.get_headers()\n")
+ f.write("\tcookies: Dict[str, Any] = client.get_cookies()\n")
+ f.write("\n")
+
+ f.write("\treturn {\n")
+ f.write("\t\t\"url\": url,\n")
+ f.write("\t\t\"headers\": headers,\n")
+ f.write("\t\t\"cookies\": cookies,\n")
+ f.write("\t\t\"timeout\": client.get_timeout(),\n")
+ f.write("\t}\n")
+
+ # Define the parse reponse.
+ f.write("\n")
+ f.write("\n")
+
+ f.write(
+ "def _parse_response(*, response: httpx.Response) -> Optional[Union[Any, " +
+ ", ".join(endoint_refs) +
+ "]]:\n")
+ # Iterate over the responses.
+ responses = endpoint['responses']
+ for response_code in responses:
+ response = responses[response_code]
+ f.write("\tif response.status_code == " + response_code + ":\n")
+ if 'content' in response:
+ content = response['content']
+ for content_type in content:
+ if content_type == 'application/json':
+ json = content[content_type]['schema']
+ if '$ref' in json:
+ ref = json['$ref'].replace('#/components/schemas/', '')
+ f.write(
+ "\t\tresponse_" +
+ response_code +
+ " = " +
+ ref +
+ ".from_dict(response.json())\n")
+ elif 'type' in json:
+ if json['type'] == 'array':
+ items = json['items']
+ if '$ref' in items:
+ ref = items['$ref'].replace(
+ '#/components/schemas/', '')
+ f.write(
+ "\t\tresponse_" +
+ response_code +
+ " = [\n")
+ f.write(
+ "\t\t\t" +
+ ref +
+ ".from_dict(item)\n")
+ f.write(
+ "\t\t\tfor item in response.json()\n")
+ f.write("\t\t]\n")
+ else:
+ raise Exception("Unknown array type")
+ else:
+ raise Exception("Unknown type")
+ else:
+ raise Exception("Unknown type")
+ elif '$ref' in response:
+ schema_name = response['$ref'].replace(
+ '#/components/responses/', '')
+ schema = data['components']['responses'][schema_name]
+ if 'content' in schema:
+ content = schema['content']
+ for content_type in content:
+ if content_type == 'application/json':
+ json = content[content_type]['schema']
+ if '$ref' in json:
+ ref = json['$ref'].replace(
+ '#/components/schemas/', '')
+ f.write(
+ "\t\tresponse_" +
+ response_code +
+ " = " +
+ ref +
+ ".from_dict(response.json())\n")
+ else:
+ f.write("\t\tresponse_" + response_code + " = None\n")
+
+ f.write("\t\treturn response_" + response_code + "\n")
+
+ # End the method.
+ f.write("\treturn None\n")
+
+ # Define the build response method.
+ f.write("\n")
+ f.write("\n")
+ f.write(
+ "def _build_response(*, response: httpx.Response) -> Response[Union[Any, " +
+ ", ".join(endoint_refs) +
+ "]]:\n")
+ f.write("\treturn Response(\n")
+ f.write("\t\tstatus_code=response.status_code,\n")
+ f.write("\t\tcontent=response.content,\n")
+ f.write("\t\theaders=response.headers,\n")
+ f.write("\t\tparsed=_parse_response(response=response),\n")
+ f.write("\t)\n")
+
+ # Define the sync_detailed method.
+ f.write("\n")
+ f.write("\n")
+ f.write(
+ "def sync_detailed(\n")
+ # Iterate over the parameters.
+ if 'parameters' in endpoint:
+ parameters = endpoint['parameters']
+ for parameter in parameters:
+ parameter_name = parameter['name']
+ if 'type' in parameter['schema']:
+ parameter_type = parameter['schema']['type'].replace(
+ 'string', 'str')
+ elif '$ref' in parameter['schema']:
+ parameter_type = parameter['schema']['$ref'].replace(
+ '#/components/schemas/', '')
+ else:
+ print(" parameter: ", parameter)
+ raise Exception("Unknown parameter type")
+ f.write(
+ "\t" +
+ camel_to_snake(parameter_name) +
+ ": " +
+ parameter_type +
+ ",\n")
+ if request_body_type:
+ f.write(
+ "\tbody: " +
+ request_body_type +
+ ",\n")
+ f.write("\t*,\n")
+ f.write("\tclient: Client,\n")
+ f.write(") -> Response[Union[Any, " +
+ ", ".join(endoint_refs) +
+ "]]:\n")
+ f.write("\tkwargs = _get_kwargs(\n")
+ # Iterate over the parameters.
+ if 'parameters' in endpoint:
+ parameters = endpoint['parameters']
+ for parameter in parameters:
+ parameter_name = parameter['name']
+ if 'type' in parameter['schema']:
+ parameter_type = parameter['schema']['type'].replace(
+ 'string', 'str')
+ elif '$ref' in parameter['schema']:
+ parameter_type = parameter['schema']['$ref'].replace(
+ '#/components/schemas/', '')
+ else:
+ print(" parameter: ", parameter)
+ raise Exception("Unknown parameter type")
+ f.write(
+ "\t\t" +
+ camel_to_snake(parameter_name) +
+ "=" +
+ camel_to_snake(parameter_name) +
+ ",\n")
+ if request_body_type:
+ f.write(
+ "\t\tbody=body,\n")
+ f.write("\t\tclient=client,\n")
+ f.write("\t)\n")
+ f.write("\n")
+ f.write("\tresponse = httpx." + method + "(\n")
+ f.write("\t\tverify=client.verify_ssl,\n")
+ f.write("\t\t**kwargs,\n")
+ f.write("\t)\n")
+ f.write("\n")
+ f.write("\treturn _build_response(response=response)\n")
+
+ # Define the sync method.
+ f.write("\n")
+ f.write("\n")
+ f.write(
+ "def sync(\n")
+ # Iterate over the parameters.
+ if 'parameters' in endpoint:
+ parameters = endpoint['parameters']
+ for parameter in parameters:
+ parameter_name = parameter['name']
+ if 'type' in parameter['schema']:
+ parameter_type = parameter['schema']['type'].replace(
+ 'string', 'str')
+ elif '$ref' in parameter['schema']:
+ parameter_type = parameter['schema']['$ref'].replace(
+ '#/components/schemas/', '')
+ else:
+ print(" parameter: ", parameter)
+ raise Exception("Unknown parameter type")
+ f.write(
+ "\t" +
+ camel_to_snake(parameter_name) +
+ ": " +
+ parameter_type +
+ ",\n")
+ if request_body_type:
+ f.write(
+ "\tbody: " +
+ request_body_type +
+ ",\n")
+ f.write("\t*,\n")
+ f.write("\tclient: Client,\n")
+ f.write(") -> Optional[Union[Any, " +
+ ", ".join(endoint_refs) +
+ "]]:\n")
+ if 'description' in endpoint:
+ f.write("\t\"\"\" " + endpoint['description'] + " \"\"\"\n")
+ f.write("\n")
+ f.write("\treturn sync_detailed(\n")
+ # Iterate over the parameters.
+ if 'parameters' in endpoint:
+ parameters = endpoint['parameters']
+ for parameter in parameters:
+ parameter_name = parameter['name']
+ if 'type' in parameter['schema']:
+ parameter_type = parameter['schema']['type'].replace(
+ 'string', 'str')
+ elif '$ref' in parameter['schema']:
+ parameter_type = parameter['schema']['$ref'].replace(
+ '#/components/schemas/', '')
+ else:
+ print(" parameter: ", parameter)
+ raise Exception("Unknown parameter type")
+ f.write(
+ "\t\t" +
+ camel_to_snake(parameter_name) +
+ "=" +
+ camel_to_snake(parameter_name) +
+ ",\n")
+ if request_body_type:
+ f.write(
+ "\t\tbody=body,\n")
+ f.write("\t\tclient=client,\n")
+ f.write("\t).parsed\n")
+
+ # Define the asyncio_detailed method.
+ f.write("\n")
+ f.write("\n")
+ f.write(
+ "async def asyncio_detailed(\n")
+ # Iterate over the parameters.
+ if 'parameters' in endpoint:
+ parameters = endpoint['parameters']
+ for parameter in parameters:
+ parameter_name = parameter['name']
+ if 'type' in parameter['schema']:
+ parameter_type = parameter['schema']['type'].replace(
+ 'string', 'str')
+ elif '$ref' in parameter['schema']:
+ parameter_type = parameter['schema']['$ref'].replace(
+ '#/components/schemas/', '')
+ else:
+ print(" parameter: ", parameter)
+ raise Exception("Unknown parameter type")
+ f.write(
+ "\t" +
+ camel_to_snake(parameter_name) +
+ ": " +
+ parameter_type +
+ ",\n")
+ if request_body_type:
+ f.write(
+ "\tbody: " +
+ request_body_type +
+ ",\n")
+ f.write("\t*,\n")
+ f.write("\tclient: Client,\n")
+ f.write(") -> Response[Union[Any, " +
+ ", ".join(endoint_refs) +
+ "]]:\n")
+ f.write("\tkwargs = _get_kwargs(\n")
+ # Iterate over the parameters.
+ if 'parameters' in endpoint:
+ parameters = endpoint['parameters']
+ for parameter in parameters:
+ parameter_name = parameter['name']
+ if 'type' in parameter['schema']:
+ parameter_type = parameter['schema']['type'].replace(
+ 'string', 'str')
+ elif '$ref' in parameter['schema']:
+ parameter_type = parameter['schema']['$ref'].replace(
+ '#/components/schemas/', '')
+ else:
+ print(" parameter: ", parameter)
+ raise Exception("Unknown parameter type")
+ f.write(
+ "\t\t" +
+ camel_to_snake(parameter_name) +
+ "=" +
+ camel_to_snake(parameter_name) +
+ ",\n")
+ if request_body_type:
+ f.write(
+ "\t\tbody=body,\n")
+ f.write("\t\tclient=client,\n")
+ f.write("\t)\n")
+ f.write("\n")
+ f.write("\tasync with httpx.AsyncClient(verify=client.verify_ssl) as _client:\n")
+ f.write("\t\tresponse = await _client." + method + "(**kwargs)\n")
+ f.write("\n")
+ f.write("\treturn _build_response(response=response)\n")
+
+ # Define the asyncio method.
+ f.write("\n")
+ f.write("\n")
+ f.write(
+ "async def asyncio(\n")
+ # Iterate over the parameters.
+ if 'parameters' in endpoint:
+ parameters = endpoint['parameters']
+ for parameter in parameters:
+ parameter_name = parameter['name']
+ if 'type' in parameter['schema']:
+ parameter_type = parameter['schema']['type'].replace(
+ 'string', 'str')
+ elif '$ref' in parameter['schema']:
+ parameter_type = parameter['schema']['$ref'].replace(
+ '#/components/schemas/', '')
+ else:
+ print(" parameter: ", parameter)
+ raise Exception("Unknown parameter type")
+ f.write(
+ "\t" +
+ camel_to_snake(parameter_name) +
+ ": " +
+ parameter_type +
+ ",\n")
+ if request_body_type:
+ f.write(
+ "\tbody: " +
+ request_body_type +
+ ",\n")
+ f.write("\t*,\n")
+ f.write("\tclient: Client,\n")
+ f.write(") -> Optional[Union[Any, " +
+ ", ".join(endoint_refs) +
+ "]]:\n")
+ if 'description' in endpoint:
+ f.write("\t\"\"\" " + endpoint['description'] + " \"\"\"\n")
+ f.write("\n")
+ f.write("\treturn (\n")
+ f.write("\t\tawait asyncio_detailed(\n")
+ # Iterate over the parameters.
+ if 'parameters' in endpoint:
+ parameters = endpoint['parameters']
+ for parameter in parameters:
+ parameter_name = parameter['name']
+ if 'type' in parameter['schema']:
+ parameter_type = parameter['schema']['type'].replace(
+ 'string', 'str')
+ elif '$ref' in parameter['schema']:
+ parameter_type = parameter['schema']['$ref'].replace(
+ '#/components/schemas/', '')
+ else:
+ print(" parameter: ", parameter)
+ raise Exception("Unknown parameter type")
+ f.write(
+ "\t\t\t" +
+ camel_to_snake(parameter_name) +
+ "=" +
+ camel_to_snake(parameter_name) +
+ ",\n")
+ if request_body_type:
+ f.write(
+ "\t\t\tbody=body,\n")
+ f.write("\t\t\tclient=client,\n")
+ f.write("\t\t)\n")
+ f.write("\t).parsed\n")
+
+ # Close the file.
+ f.close()
+
+ return data
+
+
+def generateTypes(cwd: str, parser: OpenApiParser):
+ # Make sure we have the directory.
+ path = os.path.join(cwd, 'kittycad', 'models')
+ os.makedirs(path, exist_ok=True)
+
+ # Open the __init__.py file.
+ file_name = '__init__.py'
+ file_path = os.path.join(path, file_name)
+ f = open(file_path, 'w')
+ f.write("\"\"\" Contains all the data models used in inputs/outputs \"\"\"\n")
+ f.write("\n")
+
+ # Generate the types.
+ data = parser.data
+ schemas = data['components']['schemas']
+ for key in schemas:
+ schema = schemas[key]
+ generateType(path, key, schema)
+ f.write("from ." + camel_to_snake(key) + " import " + key + "\n")
+
+ # Close the file.
+ f.close()
+
+
+def generateType(path: str, name: str, schema: dict):
+ # Generate the type.
+ file_name = camel_to_snake(name) + '.py'
+ file_path = os.path.join(path, file_name)
+ type_name = schema['type']
+ print("generating type: ", name, " at: ", file_path)
+ print(" schema: ", [schema])
+ f = open(file_path, "w")
+ if type_name == 'object':
+ has_date_time = hasDateTime(schema)
+ if has_date_time:
+ f.write("import datetime\n")
+ f.write("from typing import Any, Dict, List, Type, TypeVar, Union\n")
+ f.write("\n")
+ f.write("import attr\n")
+ if has_date_time:
+ f.write("from dateutil.parser import isoparse\n")
+ f.write("\n")
+
+ refs = getRefs(schema)
+ for ref in refs:
+ f.write(
+ "from ..models." +
+ camel_to_snake(ref) +
+ " import " +
+ ref +
+ "\n")
+
+ f.write("from ..types import UNSET, Unset\n")
+ f.write("\n")
+ f.write("T = TypeVar(\"T\", bound=\"" + name + "\")\n")
+ f.write("\n")
+ f.write("@attr.s(auto_attribs=True)\n")
+ f.write("class " + name + ":\n")
+ # Write the description.
+ f.write("\t\"\"\" \"\"\"\n")
+ # Iterate over the properties.
+ for property_name in schema['properties']:
+ property_schema = schema['properties'][property_name]
+ if 'type' in property_schema:
+ property_type = property_schema['type']
+
+ # Write the property.
+ if property_type == 'string':
+ if 'format' in property_schema:
+ if property_schema['format'] == 'date-time':
+ f.write(
+ "\t" +
+ property_name +
+ ": Union[Unset, datetime.datetime] = UNSET\n")
+ continue
+
+ f.write(
+ "\t" +
+ property_name +
+ ": Union[Unset, str] = UNSET\n")
+ elif property_type == 'integer':
+ f.write(
+ "\t" +
+ property_name +
+ ": Union[Unset, int] = UNSET\n")
+ elif property_type == 'number':
+ f.write(
+ "\t" +
+ property_name +
+ ": Union[Unset, float] = UNSET\n")
+ elif property_type == 'boolean':
+ f.write(
+ "\t" +
+ property_name +
+ ": Union[Unset, bool] = False\n")
+ else:
+ raise Exception(" unknown type: ", property_type)
+ elif '$ref' in property_schema:
+ ref = property_schema['$ref'].replace(
+ '#/components/schemas/', '')
+ f.write(
+ "\t" +
+ property_name +
+ ": Union[Unset, " +
+ ref +
+ "] = UNSET\n")
+ else:
+ raise Exception(" unknown schema: ", property_schema)
+
+ # Finish writing the class.
+ f.write("\n")
+ f.write(
+ "\tadditional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)\n")
+
+ # Now let's write the to_dict method.
+ f.write("\n")
+ f.write("\tdef to_dict(self) -> Dict[str, Any]:\n")
+ # Iternate over the properties.
+ for property_name in schema['properties']:
+ property_schema = schema['properties'][property_name]
+ if 'type' in property_schema:
+ property_type = property_schema['type']
+
+ # Write the property.
+ if property_type == 'string':
+ if 'format' in property_schema:
+ if property_schema['format'] == 'date-time':
+ f.write(
+ "\t\t" +
+ property_name +
+ ": Union[Unset, str] = UNSET\n")
+ f.write(
+ "\t\tif not isinstance(self." + property_name + ", Unset):\n")
+ f.write(
+ "\t\t\t" +
+ property_name +
+ " = self." +
+ property_name +
+ ".isoformat()\n")
+ continue
+
+ f.write(
+ "\t\t" +
+ property_name +
+ " = self." +
+ property_name +
+ "\n")
+ elif property_type == 'integer':
+ f.write(
+ "\t\t" +
+ property_name +
+ " = self." +
+ property_name +
+ "\n")
+ elif property_type == 'number':
+ f.write(
+ "\t\t" +
+ property_name +
+ " = self." +
+ property_name +
+ "\n")
+ elif property_type == 'boolean':
+ f.write(
+ "\t\t" +
+ property_name +
+ " = self." +
+ property_name +
+ "\n")
+ else:
+ raise Exception(" unknown type: ", property_type)
+ elif '$ref' in property_schema:
+ ref = property_schema['$ref'].replace(
+ '#/components/schemas/', '')
+ f.write(
+ "\t\t" +
+ property_name +
+ ": Union[Unset, str] = UNSET\n")
+ f.write(
+ "\t\tif not isinstance(self." +
+ property_name +
+ ", Unset):\n")
+ f.write(
+ "\t\t\t" +
+ property_name +
+ " = self." +
+ property_name +
+ ".value\n")
+ else:
+ raise Exception(" unknown schema: ", property_schema)
+
+ # Finish writing the to_dict method.
+ f.write("\n")
+ f.write("\t\tfield_dict: Dict[str, Any] = {}\n")
+ f.write("\t\tfield_dict.update(self.additional_properties)\n")
+ f.write("\t\tfield_dict.update({})\n")
+
+ # Iternate over the properties.
+ for property_name in schema['properties']:
+ # Write the property.
+ f.write("\t\tif " + property_name + " is not UNSET:\n")
+ f.write(
+ "\t\t\tfield_dict['" +
+ property_name +
+ "'] = " +
+ property_name +
+ "\n")
+
+ f.write("\n")
+ f.write("\t\treturn field_dict\n")
+
+ # Now let's write the from_dict method.
+ f.write("\n")
+ f.write("\t@classmethod\n")
+ f.write(
+ "\tdef from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:\n")
+ f.write("\t\td = src_dict.copy()\n")
+
+ # Iternate over the properties.
+ for property_name in schema['properties']:
+ property_schema = schema['properties'][property_name]
+ if 'type' in property_schema:
+ property_type = property_schema['type']
+
+ # Write the property.
+ if property_type == 'string':
+ if 'format' in property_schema:
+ if property_schema['format'] == 'date-time':
+ f.write(
+ "\t\t_" +
+ property_name +
+ " = d.pop(\"" +
+ property_name +
+ "\", UNSET)\n")
+ f.write(
+ "\t\t" +
+ property_name +
+ ": Union[Unset, datetime.datetime]\n")
+ f.write(
+ "\t\tif not isinstance(_" + property_name + ", Unset):\n")
+ f.write("\t\t\t" + property_name + " = UNSET\n")
+ f.write("\t\telse:\n")
+ f.write("\t\t\t" + property_name +
+ " = isoparse(_" + property_name + ")\n")
+ f.write("\n")
+ continue
+
+ f.write(
+ "\t\t" +
+ property_name +
+ " = d.pop(\"" +
+ property_name +
+ "\", UNSET)\n")
+ f.write("\n")
+ elif property_type == 'integer':
+ f.write(
+ "\t\t" +
+ property_name +
+ " = d.pop(\"" +
+ property_name +
+ "\", UNSET)\n")
+ f.write("\n")
+ elif property_type == 'number':
+ f.write(
+ "\t\t" +
+ property_name +
+ " = d.pop(\"" +
+ property_name +
+ "\", UNSET)\n")
+ f.write("\n")
+ elif property_type == 'boolean':
+ f.write(
+ "\t\t" +
+ property_name +
+ " = d.pop(\"" +
+ property_name +
+ "\", UNSET)\n")
+ f.write("\n")
+ else:
+ print(" unknown type: ", property_type)
+ raise Exception(" unknown type: ", property_type)
+ elif '$ref' in property_schema:
+ ref = property_schema['$ref'].replace(
+ '#/components/schemas/', '')
+ f.write(
+ "\t\t_" +
+ property_name +
+ " = d.pop(\"" +
+ property_name +
+ "\", UNSET)\n")
+ f.write("\t\t" + property_name +
+ ": Union[Unset, " + ref + "]\n")
+ f.write(
+ "\t\tif not isinstance(_" +
+ property_name +
+ ", Unset):\n")
+ f.write("\t\t\t" + property_name + " = UNSET\n")
+ f.write("\t\telse:\n")
+ f.write("\t\t\t" + property_name + " = " +
+ ref + "(_" + property_name + ")\n")
+ f.write("\n")
+ else:
+ print(" unknown schema: ", property_schema)
+ raise Exception(" unknown schema: ", property_schema)
+
+ # Finish writing the from_dict method.
+ f.write("\n")
+ f.write("\t\t" + camel_to_snake(name) + " = cls(\n")
+ # Iternate over the properties.
+ for property_name in schema['properties']:
+ # Write the property.
+ f.write("\t\t\t" + property_name + "= " + property_name + ",\n")
+
+ # Close the class.
+ f.write("\t\t)\n")
+ f.write("\n")
+ f.write("\t\t" + camel_to_snake(name) + ".additional_properties = d\n")
+ f.write("\t\treturn " + camel_to_snake(name) + "\n")
+
+ # write the rest of the class.
+ f.write("\n")
+ f.write("\t@property\n")
+ f.write("\tdef additional_keys(self) -> List[str]:\n")
+ f.write("\t\treturn list(self.additional_properties.keys())\n")
+
+ f.write("\n")
+ f.write("\tdef __getitem__(self, key: str) -> Any:\n")
+ f.write("\t\treturn self.additional_properties[key]\n")
+
+ f.write("\n")
+ f.write("\tdef __setitem__(self, key: str, value: Any) -> None:\n")
+ f.write("\t\tself.additional_properties[key] = value\n")
+
+ f.write("\n")
+ f.write("\tdef __delitem__(self, key: str) -> None:\n")
+ f.write("\t\tdel self.additional_properties[key]\n")
+
+ f.write("\n")
+ f.write("\tdef __contains__(self, key: str) -> bool:\n")
+ f.write("\t\treturn key in self.additional_properties\n")
+ elif type_name == 'string' and 'enum' in schema:
+ f.write("from enum import Enum\n")
+ f.write("\n")
+ f.write("class " + name + "(str, Enum):\n")
+ # Iterate over the properties.
+ for value in schema['enum']:
+ f.write(
+ "\t" +
+ camel_to_screaming_snake(value) +
+ " = '" +
+ value +
+ "'\n")
+
+ # close the enum.
+ f.write("\n")
+ f.write("\tdef __str__(self) -> str:\n")
+ f.write("\t\treturn str(self.value)\n")
+ else:
+ print(" unsupported type: ", type_name)
+ return
+
+ # Close the file.
+ f.close()
+
+
+def hasDateTime(schema: dict) -> bool:
+ # Generate the type.
+ if 'type' in schema:
+ type_name = schema['type']
+ if type_name == 'object':
+ # Iternate over the properties.
+ for property_name in schema['properties']:
+ property_schema = schema['properties'][property_name]
+ has_date_time = hasDateTime(property_schema)
+ if has_date_time:
+ return True
+ elif type_name == 'string' and 'format' in schema:
+ if schema['format'] == 'date-time':
+ return True
+
+ return False
+
+
+def getRefs(schema: dict) -> [str]:
+ refs = []
+ if '$ref' in schema:
+ refs.append(schema['$ref'].replace('#/components/schemas/', ''))
+
+ else:
+ # Generate the type.
+ type_name = schema['type']
+ if type_name == 'object':
+ # Iternate over the properties.
+ for property_name in schema['properties']:
+ property_schema = schema['properties'][property_name]
+ schema_refs = getRefs(property_schema)
+ for ref in schema_refs:
+ if ref not in refs:
+ refs.append(ref)
+
+ return refs
+
+
+def getEndpointRefs(endpoint: dict, data: dict) -> [str]:
+ refs = []
+
+ responses = endpoint['responses']
+ for response_code in responses:
+ response = responses[response_code]
+ if 'content' in response:
+ content = response['content']
+ for content_type in content:
+ if content_type == 'application/json':
+ json = content[content_type]['schema']
+ if '$ref' in json:
+ ref = json['$ref'].replace('#/components/schemas/', '')
+ if ref not in refs:
+ refs.append(ref)
+ elif 'type' in json:
+ if json['type'] == 'array':
+ items = json['items']
+ if '$ref' in items:
+ ref = items['$ref'].replace(
+ '#/components/schemas/', '')
+ refs.append('[' + ref + ']')
+ else:
+ raise Exception("Unknown array type")
+ else:
+ raise Exception("Unknown type")
+ else:
+ raise Exception("Unknown type")
+ elif '$ref' in response:
+ schema_name = response['$ref'].replace(
+ '#/components/responses/', '')
+ schema = data['components']['responses'][schema_name]
+ if 'content' in schema:
+ content = schema['content']
+ for content_type in content:
+ if content_type == 'application/json':
+ json = content[content_type]['schema']
+ if '$ref' in json:
+ ref = json['$ref'].replace(
+ '#/components/schemas/', '')
+ if ref not in refs:
+ refs.append(ref)
+
+ return refs
+
+
+def getParameterRefs(endpoint: dict) -> [str]:
+ refs = []
+
+ if 'parameters' in endpoint:
+ parameters = endpoint['parameters']
+ for parameter in parameters:
+ parameter_name = parameter['name']
+ if '$ref' in parameter['schema']:
+ parameter_type = parameter['schema']['$ref'].replace(
+ '#/components/schemas/', '')
+ refs.append(parameter_type)
+
+ return refs
+
+
+def getRequestBodyRefs(endpoint: dict) -> [str]:
+ refs = []
+
+ if 'requestBody' in endpoint:
+ requestBody = endpoint['requestBody']
+ if 'content' in requestBody:
+ content = requestBody['content']
+ for content_type in content:
+ if content_type == 'application/json':
+ json = content[content_type]['schema']
+ if '$ref' in json:
+ ref = json['$ref'].replace('#/components/schemas/', '')
+ refs.append(ref)
+
+ return refs
+
+
+def getRequestBodyType(endpoint: dict) -> str:
+ type_name = None
+
+ if 'requestBody' in endpoint:
+ requestBody = endpoint['requestBody']
+ if 'content' in requestBody:
+ content = requestBody['content']
+ for content_type in content:
+ if content_type == 'application/json':
+ json = content[content_type]['schema']
+ if '$ref' in json:
+ ref = json['$ref'].replace('#/components/schemas/', '')
+ return ref
+ elif content_type == 'text/plain':
+ return 'bytes'
+ else:
+ print(" unsupported content type: ", content_type)
+ raise Exception("unsupported content type")
+
+ return type_name
+
+
+def camel_to_snake(name: str):
+ name = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', name)
+ return re.sub('([a-z0-9])([A-Z])', r'\1_\2', name).lower()
+
+
+def camel_to_screaming_snake(name: str):
+ name = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', name)
+ return re.sub('([a-z0-9])([A-Z])', r'\1_\2', name).replace(' ', '').upper()
+
+
+if (__name__ == '__main__'):
+ exit_code = main()
+ exit(exit_code)
diff --git a/kittycad/__init__.py b/kittycad/__init__.py
index c33f09e66..18aa67c82 100644
--- a/kittycad/__init__.py
+++ b/kittycad/__init__.py
@@ -1,2 +1,2 @@
""" A client library for accessing KittyCAD """
-from .client import AuthenticatedClient, Client
+from .client import Client, ClientFromEnv
diff --git a/kittycad/api/beta/__init__.py b/kittycad/api/beta/__init__.py
new file mode 100644
index 000000000..f80dbd97b
--- /dev/null
+++ b/kittycad/api/beta/__init__.py
@@ -0,0 +1 @@
+""" Contains methods for accessing the beta API paths: Beta API endpoints. """
diff --git a/kittycad/api/file/__init__.py b/kittycad/api/file/__init__.py
index e69de29bb..bd83ff7bb 100644
--- a/kittycad/api/file/__init__.py
+++ b/kittycad/api/file/__init__.py
@@ -0,0 +1 @@
+""" Contains methods for accessing the file API paths: CAD file operations. """
diff --git a/kittycad/api/file/file_conversion_by_id.py b/kittycad/api/file/file_conversion_by_id.py
deleted file mode 100644
index b98ebd0f7..000000000
--- a/kittycad/api/file/file_conversion_by_id.py
+++ /dev/null
@@ -1,128 +0,0 @@
-from typing import Any, Dict, Optional, Union
-
-import httpx
-
-from ...client import AuthenticatedClient
-from ...models.file_conversion import FileConversion
-from ...types import Response
-
-
-def _get_kwargs(
- id: str,
- *,
- client: AuthenticatedClient,
-) -> Dict[str, Any]:
- url = "{}/file/conversion/{id}".format(client.base_url, id=id)
-
- 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[Any, FileConversion]]:
- if response.status_code == 200:
- response_200 = FileConversion.from_dict(response.json())
-
- return response_200
- if response.status_code == 400:
- response_400 = None
-
- return response_400
- if response.status_code == 401:
- response_401 = None
-
- return response_401
- if response.status_code == 403:
- response_403 = None
-
- return response_403
- if response.status_code == 404:
- response_404 = None
-
- return response_404
- if response.status_code == 406:
- response_406 = None
-
- return response_406
- if response.status_code == 500:
- response_500 = None
-
- return response_500
- return None
-
-
-def _build_response(*, response: httpx.Response) -> Response[Union[Any, FileConversion]]:
- return Response(
- status_code=response.status_code,
- content=response.content,
- headers=response.headers,
- parsed=_parse_response(response=response),
- )
-
-
-def sync_detailed(
- id: str,
- *,
- client: AuthenticatedClient,
-) -> Response[Union[Any, FileConversion]]:
- kwargs = _get_kwargs(
- id=id,
- client=client,
- )
-
- response = httpx.get(
- verify=client.verify_ssl,
- **kwargs,
- )
-
- return _build_response(response=response)
-
-
-def sync(
- id: str,
- *,
- client: AuthenticatedClient,
-) -> Optional[Union[Any, FileConversion]]:
- """Get the status of a file conversion."""
-
- return sync_detailed(
- id=id,
- client=client,
- ).parsed
-
-
-async def asyncio_detailed(
- id: str,
- *,
- client: AuthenticatedClient,
-) -> Response[Union[Any, FileConversion]]:
- kwargs = _get_kwargs(
- id=id,
- 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(
- id: str,
- *,
- client: AuthenticatedClient,
-) -> Optional[Union[Any, FileConversion]]:
- """Get the status of a file conversion."""
-
- return (
- await asyncio_detailed(
- id=id,
- client=client,
- )
- ).parsed
diff --git a/kittycad/api/file/file_conversion_status.py b/kittycad/api/file/file_conversion_status.py
new file mode 100644
index 000000000..c14c91f26
--- /dev/null
+++ b/kittycad/api/file/file_conversion_status.py
@@ -0,0 +1,118 @@
+from typing import Any, Dict, Optional, Union
+
+import httpx
+
+from ...client import Client
+from ...models.file_conversion import FileConversion
+from ...models.error_message import ErrorMessage
+from ...types import Response
+
+def _get_kwargs(
+ id: str,
+ *,
+ client: Client,
+) -> Dict[str, Any]:
+ url = "{}/file/conversion/{id}".format(client.base_url, id=id)
+
+ 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[Any, FileConversion, ErrorMessage]]:
+ if response.status_code == 200:
+ response_200 = FileConversion.from_dict(response.json())
+ return response_200
+ if response.status_code == 401:
+ response_401 = ErrorMessage.from_dict(response.json())
+ return response_401
+ if response.status_code == 403:
+ response_403 = ErrorMessage.from_dict(response.json())
+ return response_403
+ if response.status_code == 404:
+ response_404 = ErrorMessage.from_dict(response.json())
+ return response_404
+ if response.status_code == 406:
+ response_406 = ErrorMessage.from_dict(response.json())
+ return response_406
+ if response.status_code == 500:
+ response_500 = ErrorMessage.from_dict(response.json())
+ return response_500
+ return None
+
+
+def _build_response(*, response: httpx.Response) -> Response[Union[Any, FileConversion, ErrorMessage]]:
+ return Response(
+ status_code=response.status_code,
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(response=response),
+ )
+
+
+def sync_detailed(
+ id: str,
+ *,
+ client: Client,
+) -> Response[Union[Any, FileConversion, ErrorMessage]]:
+ kwargs = _get_kwargs(
+ id=id,
+ client=client,
+ )
+
+ response = httpx.get(
+ verify=client.verify_ssl,
+ **kwargs,
+ )
+
+ return _build_response(response=response)
+
+
+def sync(
+ id: str,
+ *,
+ client: Client,
+) -> Optional[Union[Any, FileConversion, ErrorMessage]]:
+ """ Get the status and output of an async file conversion. """
+
+ return sync_detailed(
+ id=id,
+ client=client,
+ ).parsed
+
+
+async def asyncio_detailed(
+ id: str,
+ *,
+ client: Client,
+) -> Response[Union[Any, FileConversion, ErrorMessage]]:
+ kwargs = _get_kwargs(
+ id=id,
+ 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(
+ id: str,
+ *,
+ client: Client,
+) -> Optional[Union[Any, FileConversion, ErrorMessage]]:
+ """ Get the status and output of an async file conversion. """
+
+ return (
+ await asyncio_detailed(
+ id=id,
+ client=client,
+ )
+ ).parsed
diff --git a/kittycad/api/file/file_conversion_by_id_with_base64_helper.py b/kittycad/api/file/file_conversion_status_with_base64_helper.py
similarity index 63%
rename from kittycad/api/file/file_conversion_by_id_with_base64_helper.py
rename to kittycad/api/file/file_conversion_status_with_base64_helper.py
index 411e98a64..a1e850eb2 100644
--- a/kittycad/api/file/file_conversion_by_id_with_base64_helper.py
+++ b/kittycad/api/file/file_conversion_status_with_base64_helper.py
@@ -3,17 +3,18 @@ from typing import Any, Dict, Optional, Union
import base64
import httpx
-from ...client import AuthenticatedClient
+from ...client import Client
+from ...models.error_message import ErrorMessage
from ...models.file_conversion import FileConversion
from ...types import Response
-from ...api.file.file_conversion_by_id import sync as fc_sync, asyncio as fc_asyncio
+from ...api.file.file_conversion_status import sync as fc_sync, asyncio as fc_asyncio
def sync(
id: str,
*,
- client: AuthenticatedClient,
-) -> Optional[Union[Any, FileConversion]]:
+ client: Client,
+) -> Optional[Union[Any, FileConversion, ErrorMessage]]:
"""Get the status of a file conversion. This function automatically base64 decodes the output response if there is one."""
fc = fc_sync(
@@ -21,7 +22,7 @@ def sync(
client=client,
)
- if fc.output != "":
+ if isinstance(fc, FileConversion) and fc.output != "":
fc.output = base64.b64decode(fc.output)
return fc
@@ -30,8 +31,8 @@ def sync(
async def asyncio(
id: str,
*,
- client: AuthenticatedClient,
-) -> Optional[Union[Any, FileConversion]]:
+ client: Client,
+) -> Optional[Union[Any, FileConversion, ErrorMessage]]:
"""Get the status of a file conversion. This function automatically base64 decodes the output response if there is one."""
fc = await fc_asyncio(
@@ -39,7 +40,7 @@ async def asyncio(
client=client,
)
- if fc.output != "":
+ if isinstance(fc, FileConversion) and fc.output != "":
fc.output = base64.b64decode(fc.output)
return fc
diff --git a/kittycad/api/file/file_convert.py b/kittycad/api/file/file_convert.py
deleted file mode 100644
index 900cbb5b3..000000000
--- a/kittycad/api/file/file_convert.py
+++ /dev/null
@@ -1,150 +0,0 @@
-from typing import Any, Dict, Optional, Union
-
-import httpx
-
-from ...client import AuthenticatedClient
-from ...models.file_conversion import FileConversion
-from ...models.valid_file_type import ValidFileType
-from ...types import Response
-
-
-def _get_kwargs(
- source_format: ValidFileType,
- output_format: ValidFileType,
- content: bytes,
- *,
- client: AuthenticatedClient,
-) -> Dict[str, Any]:
- url = "{}/file/conversion/{sourceFormat}/{outputFormat}".format(
- client.base_url, sourceFormat=source_format, outputFormat=output_format
- )
-
- headers: Dict[str, Any] = client.get_headers()
- cookies: Dict[str, Any] = client.get_cookies()
-
- return {
- "url": url,
- "headers": headers,
- "cookies": cookies,
- "timeout": client.get_timeout(),
- "content": content,
- }
-
-
-def _parse_response(*, response: httpx.Response) -> Optional[Union[Any, FileConversion]]:
- if response.status_code == 200:
- response_200 = FileConversion.from_dict(response.json())
-
- return response_200
- if response.status_code == 202:
- response_202 = FileConversion.from_dict(response.json())
-
- return response_202
- if response.status_code == 400:
- response_400 = None
-
- return response_400
- if response.status_code == 401:
- response_401 = None
-
- return response_401
- if response.status_code == 403:
- response_403 = None
-
- return response_403
- if response.status_code == 406:
- response_406 = None
-
- return response_406
- if response.status_code == 500:
- response_500 = None
-
- return response_500
- return None
-
-
-def _build_response(*, response: httpx.Response) -> Response[Union[Any, FileConversion]]:
- return Response(
- status_code=response.status_code,
- content=response.content,
- headers=response.headers,
- parsed=_parse_response(response=response),
- )
-
-
-def sync_detailed(
- source_format: ValidFileType,
- output_format: ValidFileType,
- content: bytes,
- *,
- client: AuthenticatedClient,
-) -> Response[Union[Any, FileConversion]]:
- kwargs = _get_kwargs(
- source_format=source_format,
- output_format=output_format,
- content=content,
- client=client,
- )
-
- response = httpx.post(
- verify=client.verify_ssl,
- **kwargs,
- )
-
- return _build_response(response=response)
-
-
-def sync(
- source_format: ValidFileType,
- output_format: ValidFileType,
- content: bytes,
- *,
- client: AuthenticatedClient,
-) -> Optional[Union[Any, FileConversion]]:
- """Convert a CAD file from one format to another. If the file being converted is larger than a certain size it will be performed asynchronously."""
-
- return sync_detailed(
- source_format=source_format,
- output_format=output_format,
- content=content,
- client=client,
- ).parsed
-
-
-async def asyncio_detailed(
- source_format: ValidFileType,
- output_format: ValidFileType,
- content: bytes,
- *,
- client: AuthenticatedClient,
-) -> Response[Union[Any, FileConversion]]:
- kwargs = _get_kwargs(
- source_format=source_format,
- output_format=output_format,
- content=content,
- client=client,
- )
-
- async with httpx.AsyncClient(verify=client.verify_ssl) as _client:
- response = await _client.post(**kwargs)
-
- return _build_response(response=response)
-
-
-async def asyncio(
- source_format: ValidFileType,
- output_format: ValidFileType,
- content: bytes,
- *,
- client: AuthenticatedClient,
-) -> Optional[Union[Any, FileConversion]]:
- """Convert a CAD file from one format to another. If the file being converted is larger than a certain size it will be performed asynchronously."""
-
- return (
- await asyncio_detailed(
- source_format=source_format,
- output_format=output_format,
- content=content,
- client=client,
- )
- ).parsed
diff --git a/kittycad/api/file/post_file_conversion.py b/kittycad/api/file/post_file_conversion.py
new file mode 100644
index 000000000..d5b530e90
--- /dev/null
+++ b/kittycad/api/file/post_file_conversion.py
@@ -0,0 +1,141 @@
+from typing import Any, Dict, Optional, Union
+
+import httpx
+
+from ...client import Client
+from ...models.file_conversion import FileConversion
+from ...models.error_message import ErrorMessage
+from ...models.valid_source_file_format import ValidSourceFileFormat
+from ...models.valid_output_file_format import ValidOutputFileFormat
+from ...types import Response
+
+def _get_kwargs(
+ source_format: ValidSourceFileFormat,
+ output_format: ValidOutputFileFormat,
+ body: bytes,
+ *,
+ client: Client,
+) -> Dict[str, Any]:
+ url = "{}/file/conversion/{sourceFormat}/{outputFormat}".format(client.base_url, sourceFormat=source_format, outputFormat=output_format)
+
+ 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[Any, FileConversion, ErrorMessage]]:
+ if response.status_code == 200:
+ response_200 = FileConversion.from_dict(response.json())
+ return response_200
+ if response.status_code == 202:
+ response_202 = FileConversion.from_dict(response.json())
+ return response_202
+ if response.status_code == 400:
+ response_400 = ErrorMessage.from_dict(response.json())
+ return response_400
+ if response.status_code == 401:
+ response_401 = ErrorMessage.from_dict(response.json())
+ return response_401
+ if response.status_code == 403:
+ response_403 = ErrorMessage.from_dict(response.json())
+ return response_403
+ if response.status_code == 406:
+ response_406 = ErrorMessage.from_dict(response.json())
+ return response_406
+ if response.status_code == 500:
+ response_500 = ErrorMessage.from_dict(response.json())
+ return response_500
+ return None
+
+
+def _build_response(*, response: httpx.Response) -> Response[Union[Any, FileConversion, ErrorMessage]]:
+ return Response(
+ status_code=response.status_code,
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(response=response),
+ )
+
+
+def sync_detailed(
+ source_format: ValidSourceFileFormat,
+ output_format: ValidOutputFileFormat,
+ body: bytes,
+ *,
+ client: Client,
+) -> Response[Union[Any, FileConversion, ErrorMessage]]:
+ kwargs = _get_kwargs(
+ source_format=source_format,
+ output_format=output_format,
+ body=body,
+ client=client,
+ )
+
+ response = httpx.post(
+ verify=client.verify_ssl,
+ **kwargs,
+ )
+
+ return _build_response(response=response)
+
+
+def sync(
+ source_format: ValidSourceFileFormat,
+ output_format: ValidOutputFileFormat,
+ body: bytes,
+ *,
+ client: Client,
+) -> Optional[Union[Any, FileConversion, ErrorMessage]]:
+ """ Convert a CAD file from one format to another. If the file being converted is larger than 30MB, it will be performed asynchronously. """
+
+ return sync_detailed(
+ source_format=source_format,
+ output_format=output_format,
+ body=body,
+ client=client,
+ ).parsed
+
+
+async def asyncio_detailed(
+ source_format: ValidSourceFileFormat,
+ output_format: ValidOutputFileFormat,
+ body: bytes,
+ *,
+ client: Client,
+) -> Response[Union[Any, FileConversion, ErrorMessage]]:
+ kwargs = _get_kwargs(
+ source_format=source_format,
+ output_format=output_format,
+ body=body,
+ client=client,
+ )
+
+ async with httpx.AsyncClient(verify=client.verify_ssl) as _client:
+ response = await _client.post(**kwargs)
+
+ return _build_response(response=response)
+
+
+async def asyncio(
+ source_format: ValidSourceFileFormat,
+ output_format: ValidOutputFileFormat,
+ body: bytes,
+ *,
+ client: Client,
+) -> Optional[Union[Any, FileConversion, ErrorMessage]]:
+ """ Convert a CAD file from one format to another. If the file being converted is larger than 30MB, it will be performed asynchronously. """
+
+ return (
+ await asyncio_detailed(
+ source_format=source_format,
+ output_format=output_format,
+ body=body,
+ client=client,
+ )
+ ).parsed
diff --git a/kittycad/api/file/file_convert_with_base64_helper.py b/kittycad/api/file/post_file_conversion_with_base64_helper.py
similarity index 55%
rename from kittycad/api/file/file_convert_with_base64_helper.py
rename to kittycad/api/file/post_file_conversion_with_base64_helper.py
index 7394dbf2a..0448e6beb 100644
--- a/kittycad/api/file/file_convert_with_base64_helper.py
+++ b/kittycad/api/file/post_file_conversion_with_base64_helper.py
@@ -3,55 +3,57 @@ from typing import Any, Dict, Optional, Union
import base64
import httpx
-from ...client import AuthenticatedClient
+from ...client import Client
+from ...models.error_message import ErrorMessage
from ...models.file_conversion import FileConversion
-from ...models.valid_file_type import ValidFileType
+from ...models.valid_source_file_format import ValidSourceFileFormat
+from ...models.valid_output_file_format import ValidOutputFileFormat
from ...types import Response
-from ...api.file.file_convert import sync as fc_sync, asyncio as fc_asyncio
+from ...api.file.post_file_conversion import sync as fc_sync, asyncio as fc_asyncio
def sync(
- source_format: ValidFileType,
- output_format: ValidFileType,
- content: bytes,
+ source_format: ValidSourceFileFormat,
+ output_format: ValidOutputFileFormat,
+ body: bytes,
*,
- client: AuthenticatedClient,
-) -> Optional[Union[Any, FileConversion]]:
+ client: Client,
+) -> Optional[Union[Any, FileConversion, ErrorMessage]]:
"""Convert a CAD file from one format to another. If the file being converted is larger than a certain size it will be performed asynchronously. This function automatically base64 encodes the request body and base64 decodes the request output."""
- encoded = base64.b64encode(content)
+ encoded = base64.b64encode(body)
fc = fc_sync(
source_format=source_format,
output_format=output_format,
- content=encoded,
+ body=encoded,
client=client,
)
- if fc != None and fc.output != "":
+ if isinstance(fc, FileConversion) and fc.output != "":
fc.output = base64.b64decode(fc.output)
return fc
async def asyncio(
- source_format: ValidFileType,
- output_format: ValidFileType,
- content: bytes,
+ source_format: ValidSourceFileFormat,
+ output_format: ValidOutputFileFormat,
+ body: bytes,
*,
- client: AuthenticatedClient,
-) -> Optional[Union[Any, FileConversion]]:
+ client: Client,
+) -> Optional[Union[Any, FileConversion, ErrorMessage]]:
"""Convert a CAD file from one format to another. If the file being converted is larger than a certain size it will be performed asynchronously. This function automatically base64 encodes the request body and base64 decodes the request output."""
- encoded = base64.b64encode(content)
+ encoded = base64.b64encode(body)
fc = await fc_asyncio(
source_format=source_format,
output_format=output_format,
- content=encoded,
+ body=encoded,
client=client,
)
- if fc != None and fc.output != "":
+ if isinstance(fc, FileConversion) and fc.output != "":
fc.output = base64.b64decode(fc.output)
return fc
diff --git a/kittycad/api/internal/__init__.py b/kittycad/api/internal/__init__.py
new file mode 100644
index 000000000..3ecabd4f5
--- /dev/null
+++ b/kittycad/api/internal/__init__.py
@@ -0,0 +1 @@
+""" Contains methods for accessing the internal API paths: Internal API endpoints. """
diff --git a/kittycad/api/internal/gpu_devices.py b/kittycad/api/internal/gpu_devices.py
new file mode 100644
index 000000000..fbafd15b9
--- /dev/null
+++ b/kittycad/api/internal/gpu_devices.py
@@ -0,0 +1,103 @@
+from typing import Any, Dict, Optional, Union
+
+import httpx
+
+from ...client import Client
+from ...models.gpu_device import GPUDevice
+from ...models.error_message import ErrorMessage
+from ...types import Response
+
+def _get_kwargs(
+ *,
+ client: Client,
+) -> Dict[str, Any]:
+ url = "{}/_internal/gpu/devices".format(client.base_url)
+
+ 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[Any, [GPUDevice], ErrorMessage]]:
+ if response.status_code == 200:
+ response_200 = [
+ GPUDevice.from_dict(item)
+ for item in response.json()
+ ]
+ return response_200
+ if response.status_code == 401:
+ response_401 = ErrorMessage.from_dict(response.json())
+ return response_401
+ if response.status_code == 403:
+ response_403 = ErrorMessage.from_dict(response.json())
+ return response_403
+ return None
+
+
+def _build_response(*, response: httpx.Response) -> Response[Union[Any, [GPUDevice], ErrorMessage]]:
+ return Response(
+ status_code=response.status_code,
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: Client,
+) -> Response[Union[Any, [GPUDevice], ErrorMessage]]:
+ kwargs = _get_kwargs(
+ client=client,
+ )
+
+ response = httpx.get(
+ verify=client.verify_ssl,
+ **kwargs,
+ )
+
+ return _build_response(response=response)
+
+
+def sync(
+ *,
+ client: Client,
+) -> Optional[Union[Any, [GPUDevice], ErrorMessage]]:
+ """ Get information about GPU devices on this server. This is primarily used for debugging. This endpoint can only be used by specific KittyCAD employees. """
+
+ return sync_detailed(
+ client=client,
+ ).parsed
+
+
+async def asyncio_detailed(
+ *,
+ client: Client,
+) -> Response[Union[Any, [GPUDevice], ErrorMessage]]:
+ kwargs = _get_kwargs(
+ client=client,
+ )
+
+ async with httpx.AsyncClient(verify=client.verify_ssl) as _client:
+ response = await _client.get(**kwargs)
+
+ return _build_response(response=response)
+
+
+async def asyncio(
+ *,
+ client: Client,
+) -> Optional[Union[Any, [GPUDevice], ErrorMessage]]:
+ """ Get information about GPU devices on this server. This is primarily used for debugging. This endpoint can only be used by specific KittyCAD employees. """
+
+ return (
+ await asyncio_detailed(
+ client=client,
+ )
+ ).parsed
diff --git a/kittycad/api/internal/stop_async_conversions.py b/kittycad/api/internal/stop_async_conversions.py
new file mode 100644
index 000000000..7ede231bb
--- /dev/null
+++ b/kittycad/api/internal/stop_async_conversions.py
@@ -0,0 +1,103 @@
+from typing import Any, Dict, Optional, Union
+
+import httpx
+
+from ...client import Client
+from ...models.file_conversion import FileConversion
+from ...models.error_message import ErrorMessage
+from ...types import Response
+
+def _get_kwargs(
+ *,
+ client: Client,
+) -> Dict[str, Any]:
+ url = "{}/_internal/async/conversions/stop".format(client.base_url)
+
+ 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[Any, FileConversion, ErrorMessage]]:
+ if response.status_code == 200:
+ response_200 = FileConversion.from_dict(response.json())
+ return response_200
+ if response.status_code == 401:
+ response_401 = ErrorMessage.from_dict(response.json())
+ return response_401
+ if response.status_code == 403:
+ response_403 = ErrorMessage.from_dict(response.json())
+ return response_403
+ if response.status_code == 404:
+ response_404 = ErrorMessage.from_dict(response.json())
+ return response_404
+ return None
+
+
+def _build_response(*, response: httpx.Response) -> Response[Union[Any, FileConversion, ErrorMessage]]:
+ return Response(
+ status_code=response.status_code,
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: Client,
+) -> Response[Union[Any, FileConversion, ErrorMessage]]:
+ kwargs = _get_kwargs(
+ client=client,
+ )
+
+ response = httpx.post(
+ verify=client.verify_ssl,
+ **kwargs,
+ )
+
+ return _build_response(response=response)
+
+
+def sync(
+ *,
+ client: Client,
+) -> Optional[Union[Any, FileConversion, ErrorMessage]]:
+ """ Stop all async conversions that are currently running. This endpoint can only be used by specific KittyCAD employees. """
+
+ return sync_detailed(
+ client=client,
+ ).parsed
+
+
+async def asyncio_detailed(
+ *,
+ client: Client,
+) -> Response[Union[Any, FileConversion, ErrorMessage]]:
+ kwargs = _get_kwargs(
+ client=client,
+ )
+
+ async with httpx.AsyncClient(verify=client.verify_ssl) as _client:
+ response = await _client.post(**kwargs)
+
+ return _build_response(response=response)
+
+
+async def asyncio(
+ *,
+ client: Client,
+) -> Optional[Union[Any, FileConversion, ErrorMessage]]:
+ """ Stop all async conversions that are currently running. This endpoint can only be used by specific KittyCAD employees. """
+
+ return (
+ await asyncio_detailed(
+ client=client,
+ )
+ ).parsed
diff --git a/kittycad/api/meta/__init__.py b/kittycad/api/meta/__init__.py
index e69de29bb..8ab89b892 100644
--- a/kittycad/api/meta/__init__.py
+++ b/kittycad/api/meta/__init__.py
@@ -0,0 +1 @@
+""" Contains methods for accessing the meta API paths: Meta information about servers, instances, and sessions. """
diff --git a/kittycad/api/meta/auth_session.py b/kittycad/api/meta/auth_session.py
new file mode 100644
index 000000000..5110f0f40
--- /dev/null
+++ b/kittycad/api/meta/auth_session.py
@@ -0,0 +1,100 @@
+from typing import Any, Dict, Optional, Union
+
+import httpx
+
+from ...client import Client
+from ...models.auth_session import AuthSession
+from ...models.error_message import ErrorMessage
+from ...types import Response
+
+def _get_kwargs(
+ *,
+ client: Client,
+) -> Dict[str, Any]:
+ url = "{}/_meta/debug/session".format(client.base_url)
+
+ 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[Any, AuthSession, ErrorMessage]]:
+ if response.status_code == 200:
+ response_200 = AuthSession.from_dict(response.json())
+ return response_200
+ if response.status_code == 401:
+ response_401 = ErrorMessage.from_dict(response.json())
+ return response_401
+ if response.status_code == 403:
+ response_403 = ErrorMessage.from_dict(response.json())
+ return response_403
+ return None
+
+
+def _build_response(*, response: httpx.Response) -> Response[Union[Any, AuthSession, ErrorMessage]]:
+ return Response(
+ status_code=response.status_code,
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: Client,
+) -> Response[Union[Any, AuthSession, ErrorMessage]]:
+ kwargs = _get_kwargs(
+ client=client,
+ )
+
+ response = httpx.get(
+ verify=client.verify_ssl,
+ **kwargs,
+ )
+
+ return _build_response(response=response)
+
+
+def sync(
+ *,
+ client: Client,
+) -> Optional[Union[Any, AuthSession, ErrorMessage]]:
+ """ Get information about your API request session. This is primarily used for debugging. """
+
+ return sync_detailed(
+ client=client,
+ ).parsed
+
+
+async def asyncio_detailed(
+ *,
+ client: Client,
+) -> Response[Union[Any, AuthSession, ErrorMessage]]:
+ kwargs = _get_kwargs(
+ client=client,
+ )
+
+ async with httpx.AsyncClient(verify=client.verify_ssl) as _client:
+ response = await _client.get(**kwargs)
+
+ return _build_response(response=response)
+
+
+async def asyncio(
+ *,
+ client: Client,
+) -> Optional[Union[Any, AuthSession, ErrorMessage]]:
+ """ Get information about your API request session. This is primarily used for debugging. """
+
+ return (
+ await asyncio_detailed(
+ client=client,
+ )
+ ).parsed
diff --git a/kittycad/api/meta/instance_metadata.py b/kittycad/api/meta/instance_metadata.py
new file mode 100644
index 000000000..c3112d266
--- /dev/null
+++ b/kittycad/api/meta/instance_metadata.py
@@ -0,0 +1,100 @@
+from typing import Any, Dict, Optional, Union
+
+import httpx
+
+from ...client import Client
+from ...models.instance import Instance
+from ...models.error_message import ErrorMessage
+from ...types import Response
+
+def _get_kwargs(
+ *,
+ client: Client,
+) -> Dict[str, Any]:
+ url = "{}/_meta/debug/instance".format(client.base_url)
+
+ 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[Any, Instance, ErrorMessage]]:
+ if response.status_code == 200:
+ response_200 = Instance.from_dict(response.json())
+ return response_200
+ if response.status_code == 401:
+ response_401 = ErrorMessage.from_dict(response.json())
+ return response_401
+ if response.status_code == 403:
+ response_403 = ErrorMessage.from_dict(response.json())
+ return response_403
+ return None
+
+
+def _build_response(*, response: httpx.Response) -> Response[Union[Any, Instance, ErrorMessage]]:
+ return Response(
+ status_code=response.status_code,
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: Client,
+) -> Response[Union[Any, Instance, ErrorMessage]]:
+ kwargs = _get_kwargs(
+ client=client,
+ )
+
+ response = httpx.get(
+ verify=client.verify_ssl,
+ **kwargs,
+ )
+
+ return _build_response(response=response)
+
+
+def sync(
+ *,
+ client: Client,
+) -> Optional[Union[Any, Instance, ErrorMessage]]:
+ """ Get information about this specific API server instance. This is primarily used for debugging. """
+
+ return sync_detailed(
+ client=client,
+ ).parsed
+
+
+async def asyncio_detailed(
+ *,
+ client: Client,
+) -> Response[Union[Any, Instance, ErrorMessage]]:
+ kwargs = _get_kwargs(
+ client=client,
+ )
+
+ async with httpx.AsyncClient(verify=client.verify_ssl) as _client:
+ response = await _client.get(**kwargs)
+
+ return _build_response(response=response)
+
+
+async def asyncio(
+ *,
+ client: Client,
+) -> Optional[Union[Any, Instance, ErrorMessage]]:
+ """ Get information about this specific API server instance. This is primarily used for debugging. """
+
+ return (
+ await asyncio_detailed(
+ client=client,
+ )
+ ).parsed
diff --git a/kittycad/api/meta/meta_debug_instance.py b/kittycad/api/meta/meta_debug_instance.py
deleted file mode 100644
index 716d96181..000000000
--- a/kittycad/api/meta/meta_debug_instance.py
+++ /dev/null
@@ -1,107 +0,0 @@
-from typing import Any, Dict, Optional, Union
-
-import httpx
-
-from ...client import AuthenticatedClient
-from ...models.instance_metadata import InstanceMetadata
-from ...types import Response
-
-
-def _get_kwargs(
- *,
- client: AuthenticatedClient,
-) -> Dict[str, Any]:
- url = "{}/_meta/debug/instance".format(client.base_url)
-
- 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[Any, InstanceMetadata]]:
- if response.status_code == 200:
- response_200 = InstanceMetadata.from_dict(response.json())
-
- return response_200
- if response.status_code == 400:
- response_400 = None
-
- return response_400
- if response.status_code == 401:
- response_401 = None
-
- return response_401
- if response.status_code == 403:
- response_403 = None
-
- return response_403
- return None
-
-
-def _build_response(*, response: httpx.Response) -> Response[Union[Any, InstanceMetadata]]:
- return Response(
- status_code=response.status_code,
- content=response.content,
- headers=response.headers,
- parsed=_parse_response(response=response),
- )
-
-
-def sync_detailed(
- *,
- client: AuthenticatedClient,
-) -> Response[Union[Any, InstanceMetadata]]:
- kwargs = _get_kwargs(
- client=client,
- )
-
- response = httpx.get(
- verify=client.verify_ssl,
- **kwargs,
- )
-
- return _build_response(response=response)
-
-
-def sync(
- *,
- client: AuthenticatedClient,
-) -> Optional[Union[Any, InstanceMetadata]]:
- """Get information about this specific API server instance. This is primarily used for debugging."""
-
- return sync_detailed(
- client=client,
- ).parsed
-
-
-async def asyncio_detailed(
- *,
- client: AuthenticatedClient,
-) -> Response[Union[Any, InstanceMetadata]]:
- kwargs = _get_kwargs(
- client=client,
- )
-
- async with httpx.AsyncClient(verify=client.verify_ssl) as _client:
- response = await _client.get(**kwargs)
-
- return _build_response(response=response)
-
-
-async def asyncio(
- *,
- client: AuthenticatedClient,
-) -> Optional[Union[Any, InstanceMetadata]]:
- """Get information about this specific API server instance. This is primarily used for debugging."""
-
- return (
- await asyncio_detailed(
- client=client,
- )
- ).parsed
diff --git a/kittycad/api/meta/meta_debug_session.py b/kittycad/api/meta/meta_debug_session.py
deleted file mode 100644
index 24acd3a02..000000000
--- a/kittycad/api/meta/meta_debug_session.py
+++ /dev/null
@@ -1,107 +0,0 @@
-from typing import Any, Dict, Optional, Union
-
-import httpx
-
-from ...client import AuthenticatedClient
-from ...models.auth_session import AuthSession
-from ...types import Response
-
-
-def _get_kwargs(
- *,
- client: AuthenticatedClient,
-) -> Dict[str, Any]:
- url = "{}/_meta/debug/session".format(client.base_url)
-
- 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[Any, AuthSession]]:
- if response.status_code == 200:
- response_200 = AuthSession.from_dict(response.json())
-
- return response_200
- if response.status_code == 400:
- response_400 = None
-
- return response_400
- if response.status_code == 401:
- response_401 = None
-
- return response_401
- if response.status_code == 403:
- response_403 = None
-
- return response_403
- return None
-
-
-def _build_response(*, response: httpx.Response) -> Response[Union[Any, AuthSession]]:
- return Response(
- status_code=response.status_code,
- content=response.content,
- headers=response.headers,
- parsed=_parse_response(response=response),
- )
-
-
-def sync_detailed(
- *,
- client: AuthenticatedClient,
-) -> Response[Union[Any, AuthSession]]:
- kwargs = _get_kwargs(
- client=client,
- )
-
- response = httpx.get(
- verify=client.verify_ssl,
- **kwargs,
- )
-
- return _build_response(response=response)
-
-
-def sync(
- *,
- client: AuthenticatedClient,
-) -> Optional[Union[Any, AuthSession]]:
- """Get information about your API request session. This is primarily used for debugging."""
-
- return sync_detailed(
- client=client,
- ).parsed
-
-
-async def asyncio_detailed(
- *,
- client: AuthenticatedClient,
-) -> Response[Union[Any, AuthSession]]:
- kwargs = _get_kwargs(
- client=client,
- )
-
- async with httpx.AsyncClient(verify=client.verify_ssl) as _client:
- response = await _client.get(**kwargs)
-
- return _build_response(response=response)
-
-
-async def asyncio(
- *,
- client: AuthenticatedClient,
-) -> Optional[Union[Any, AuthSession]]:
- """Get information about your API request session. This is primarily used for debugging."""
-
- return (
- await asyncio_detailed(
- client=client,
- )
- ).parsed
diff --git a/kittycad/api/meta/ping.py b/kittycad/api/meta/ping.py
index 5a8972476..bbfedaa21 100644
--- a/kittycad/api/meta/ping.py
+++ b/kittycad/api/meta/ping.py
@@ -1,95 +1,93 @@
-from typing import Any, Dict, Optional
+from typing import Any, Dict, Optional, Union
import httpx
from ...client import Client
-from ...models.message import Message
+from ...models.pong_message import PongMessage
from ...types import Response
-
def _get_kwargs(
- *,
- client: Client,
+ *,
+ client: Client,
) -> Dict[str, Any]:
- url = "{}/ping".format(client.base_url)
+ url = "{}/ping".format(client.base_url)
- headers: Dict[str, Any] = client.get_headers()
- cookies: Dict[str, Any] = client.get_cookies()
+ 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(),
- }
+ return {
+ "url": url,
+ "headers": headers,
+ "cookies": cookies,
+ "timeout": client.get_timeout(),
+ }
-def _parse_response(*, response: httpx.Response) -> Optional[Message]:
- if response.status_code == 200:
- response_200 = Message.from_dict(response.json())
-
- return response_200
- return None
+def _parse_response(*, response: httpx.Response) -> Optional[Union[Any, PongMessage]]:
+ if response.status_code == 200:
+ response_200 = PongMessage.from_dict(response.json())
+ return response_200
+ return None
-def _build_response(*, response: httpx.Response) -> Response[Message]:
- return Response(
- status_code=response.status_code,
- content=response.content,
- headers=response.headers,
- parsed=_parse_response(response=response),
- )
+def _build_response(*, response: httpx.Response) -> Response[Union[Any, PongMessage]]:
+ return Response(
+ status_code=response.status_code,
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(response=response),
+ )
def sync_detailed(
- *,
- client: Client,
-) -> Response[Message]:
- kwargs = _get_kwargs(
- client=client,
- )
+ *,
+ client: Client,
+) -> Response[Union[Any, PongMessage]]:
+ kwargs = _get_kwargs(
+ client=client,
+ )
- response = httpx.get(
- verify=client.verify_ssl,
- **kwargs,
- )
+ response = httpx.get(
+ verify=client.verify_ssl,
+ **kwargs,
+ )
- return _build_response(response=response)
+ return _build_response(response=response)
def sync(
- *,
- client: Client,
-) -> Optional[Message]:
- """Simple ping to the server."""
+ *,
+ client: Client,
+) -> Optional[Union[Any, PongMessage]]:
+ """ Simple ping to the server. """
- return sync_detailed(
- client=client,
- ).parsed
+ return sync_detailed(
+ client=client,
+ ).parsed
async def asyncio_detailed(
- *,
- client: Client,
-) -> Response[Message]:
- kwargs = _get_kwargs(
- client=client,
- )
+ *,
+ client: Client,
+) -> Response[Union[Any, PongMessage]]:
+ kwargs = _get_kwargs(
+ client=client,
+ )
- async with httpx.AsyncClient(verify=client.verify_ssl) as _client:
- response = await _client.get(**kwargs)
+ async with httpx.AsyncClient(verify=client.verify_ssl) as _client:
+ response = await _client.get(**kwargs)
- return _build_response(response=response)
+ return _build_response(response=response)
async def asyncio(
- *,
- client: Client,
-) -> Optional[Message]:
- """Simple ping to the server."""
+ *,
+ client: Client,
+) -> Optional[Union[Any, PongMessage]]:
+ """ Simple ping to the server. """
- return (
- await asyncio_detailed(
- client=client,
- )
- ).parsed
+ return (
+ await asyncio_detailed(
+ client=client,
+ )
+ ).parsed
diff --git a/kittycad/client.py b/kittycad/client.py
index 2e787dce2..2c8dad866 100644
--- a/kittycad/client.py
+++ b/kittycad/client.py
@@ -7,8 +7,9 @@ import attr
@attr.s(auto_attribs=True)
class Client:
- """A class for keeping track of data related to the API"""
+ """A Client which has been authenticated for use on secured endpoints of the KittyCAD API."""
+ token: str = attr.ib(kw_only=True)
base_url: str = attr.ib(default="https://api.kittycad.io")
cookies: Dict[str, str] = attr.ib(factory=dict, kw_only=True)
headers: Dict[str, str] = attr.ib(factory=dict, kw_only=True)
@@ -17,7 +18,7 @@ class Client:
def get_headers(self) -> Dict[str, str]:
"""Get headers to be used in all endpoints"""
- return {**self.headers}
+ return {"Authorization": f"Bearer {self.token}", **self.headers}
def with_headers(self, headers: Dict[str, str]) -> "Client":
"""Get a new client matching this one with additional headers"""
@@ -39,17 +40,7 @@ class Client:
@attr.s(auto_attribs=True)
-class AuthenticatedClient(Client):
- """A Client which has been authenticated for use on secured endpoints"""
-
- token: str = attr.ib(kw_only=True)
-
- def get_headers(self) -> Dict[str, str]:
- """Get headers to be used in authenticated endpoints"""
- return {"Authorization": f"Bearer {self.token}", **self.headers}
-
-@attr.s(auto_attribs=True)
-class AuthenticatedClientFromEnv(Client):
+class ClientFromEnv(Client):
"""A Client which has been authenticated for use on secured endpoints that uses the KITTYCAD_API_TOKEN environment variable for the authentication token."""
token: str = attr.ib(default=os.getenv('KITTYCAD_API_TOKEN'))
diff --git a/kittycad/client_test.py b/kittycad/client_test.py
index a6648c471..e25533283 100644
--- a/kittycad/client_test.py
+++ b/kittycad/client_test.py
@@ -2,83 +2,90 @@ import os
import pytest
import asyncio
-from .client import AuthenticatedClientFromEnv
-from .models import FileConversion, ValidFileType, AuthSession, InstanceMetadata, Message
-from .api.file import file_convert_with_base64_helper
-from .api.meta import meta_debug_session, meta_debug_instance, ping
+from .client import ClientFromEnv
+from .models import FileConversion, ValidOutputFileFormat, ValidSourceFileFormat, AuthSession, Instance, PongMessage
+from .api.file import post_file_conversion_with_base64_helper
+from .api.meta import auth_session, instance_metadata, ping
+
def test_get_session():
# Create our client.
- client = AuthenticatedClientFromEnv()
+ client = ClientFromEnv()
# Get the session.
- session: AuthSession = meta_debug_session.sync(client=client)
+ session: AuthSession = auth_session.sync(client=client)
- assert session != None
+ assert session is not None
print(f"Session: {session}")
+
@pytest.mark.asyncio
async def test_get_session_async():
# Create our client.
- client = AuthenticatedClientFromEnv()
+ client = ClientFromEnv()
# Get the session.
- session: AuthSession = await meta_debug_session.asyncio(client=client)
+ session: AuthSession = await auth_session.asyncio(client=client)
- assert session != None
+ assert session is not None
print(f"Session: {session}")
+
def test_get_instance():
# Create our client.
- client = AuthenticatedClientFromEnv()
+ client = ClientFromEnv()
# Get the instance.
- instance: InstanceMetadata = meta_debug_instance.sync(client=client)
+ instance: Instance = instance_metadata.sync(client=client)
- assert instance != None
+ assert instance is not None
print(f"Instance: {instance}")
+
@pytest.mark.asyncio
async def test_get_instance_async():
# Create our client.
- client = AuthenticatedClientFromEnv()
+ client = ClientFromEnv()
# Get the instance.
- instance: InstanceMetadata = await meta_debug_instance.asyncio(client=client)
+ instance: Instance = await instance_metadata.asyncio(client=client)
- assert instance != None
+ assert instance is not None
print(f"Instance: {instance}")
+
def test_ping():
# Create our client.
- client = AuthenticatedClientFromEnv()
+ client = ClientFromEnv()
# Get the message.
- message: Message = ping.sync(client=client)
+ message: PongMessage = ping.sync(client=client)
- assert message != None
+ assert message is not None
print(f"Message: {message}")
+
@pytest.mark.asyncio
async def test_ping_async():
# Create our client.
- client = AuthenticatedClientFromEnv()
+ client = ClientFromEnv()
# Get the message.
- message: Message = await ping.asyncio(client=client)
+ message: PongMessage = await ping.asyncio(client=client)
- assert message != None
+ assert message is not None
print(f"Message: {message}")
+
def test_file_convert_stl():
# Create our client.
- client = AuthenticatedClientFromEnv()
+ client = ClientFromEnv()
dir_path = os.path.dirname(os.path.realpath(__file__))
file = open(os.path.join(dir_path, "../assets/testing.stl"), "rb")
@@ -86,16 +93,21 @@ def test_file_convert_stl():
file.close()
# Get the fc.
- fc: FileConversion = file_convert_with_base64_helper.sync(client=client, content=content, source_format=ValidFileType.STL, output_format=ValidFileType.OBJ)
+ fc: FileConversion = post_file_conversion_with_base64_helper.sync(
+ client=client,
+ body=content,
+ source_format=ValidSourceFileFormat.STL,
+ output_format=ValidOutputFileFormat.OBJ)
- assert fc != None
+ assert fc is not None
print(f"FileConversion: {fc}")
+
@pytest.mark.asyncio
async def test_file_convert_stl_async():
# Create our client.
- client = AuthenticatedClientFromEnv()
+ client = ClientFromEnv()
dir_path = os.path.dirname(os.path.realpath(__file__))
file = open(os.path.join(dir_path, "../assets/testing.stl"), "rb")
@@ -103,8 +115,8 @@ async def test_file_convert_stl_async():
file.close()
# Get the fc.
- fc: FileConversion = await file_convert_with_base64_helper.asyncio(client=client, content=content, source_format=ValidFileType.STL, output_format=ValidFileType.OBJ)
+ fc: FileConversion = await post_file_conversion_with_base64_helper.asyncio(client=client, body=content, source_format=ValidSourceFileFormat.STL, output_format=ValidOutputFileFormat.OBJ)
- assert fc != None
+ assert fc is not None
print(f"FileConversion: {fc}")
diff --git a/kittycad/models/__init__.py b/kittycad/models/__init__.py
index 508f184ff..043668563 100644
--- a/kittycad/models/__init__.py
+++ b/kittycad/models/__init__.py
@@ -1,10 +1,13 @@
""" Contains all the data models used in inputs/outputs """
from .auth_session import AuthSession
-from .environment import Environment
from .error_message import ErrorMessage
from .file_conversion import FileConversion
from .file_conversion_status import FileConversionStatus
-from .instance_metadata import InstanceMetadata
-from .message import Message
-from .valid_file_type import ValidFileType
+from .gpu_device import GPUDevice
+from .instance import Instance
+from .pong_enum import PongEnum
+from .pong_message import PongMessage
+from .server_env import ServerEnv
+from .valid_output_file_format import ValidOutputFileFormat
+from .valid_source_file_format import ValidSourceFileFormat
diff --git a/kittycad/models/auth_session.py b/kittycad/models/auth_session.py
index b79ca7558..d4fe479e9 100644
--- a/kittycad/models/auth_session.py
+++ b/kittycad/models/auth_session.py
@@ -12,23 +12,24 @@ T = TypeVar("T", bound="AuthSession")
@attr.s(auto_attribs=True)
class AuthSession:
""" """
-
created_at: Union[Unset, datetime.datetime] = UNSET
email: Union[Unset, str] = UNSET
id: Union[Unset, str] = UNSET
+ image: Union[Unset, str] = UNSET
ip_address: Union[Unset, str] = UNSET
is_valid: Union[Unset, bool] = False
token: Union[Unset, str] = UNSET
user_id: Union[Unset, str] = UNSET
+
additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
def to_dict(self) -> Dict[str, Any]:
created_at: Union[Unset, str] = UNSET
if not isinstance(self.created_at, Unset):
created_at = self.created_at.isoformat()
-
email = self.email
id = self.id
+ image = self.image
ip_address = self.ip_address
is_valid = self.is_valid
token = self.token
@@ -38,19 +39,21 @@ class AuthSession:
field_dict.update(self.additional_properties)
field_dict.update({})
if created_at is not UNSET:
- field_dict["created_at"] = created_at
+ field_dict['created_at'] = created_at
if email is not UNSET:
- field_dict["email"] = email
+ field_dict['email'] = email
if id is not UNSET:
- field_dict["id"] = id
+ field_dict['id'] = id
+ if image is not UNSET:
+ field_dict['image'] = image
if ip_address is not UNSET:
- field_dict["ip_address"] = ip_address
+ field_dict['ip_address'] = ip_address
if is_valid is not UNSET:
- field_dict["is_valid"] = is_valid
+ field_dict['is_valid'] = is_valid
if token is not UNSET:
- field_dict["token"] = token
+ field_dict['token'] = token
if user_id is not UNSET:
- field_dict["user_id"] = user_id
+ field_dict['user_id'] = user_id
return field_dict
@@ -59,7 +62,7 @@ class AuthSession:
d = src_dict.copy()
_created_at = d.pop("created_at", UNSET)
created_at: Union[Unset, datetime.datetime]
- if isinstance(_created_at, Unset):
+ if not isinstance(_created_at, Unset):
created_at = UNSET
else:
created_at = isoparse(_created_at)
@@ -68,6 +71,8 @@ class AuthSession:
id = d.pop("id", UNSET)
+ image = d.pop("image", UNSET)
+
ip_address = d.pop("ip_address", UNSET)
is_valid = d.pop("is_valid", UNSET)
@@ -80,6 +85,7 @@ class AuthSession:
created_at=created_at,
email=email,
id=id,
+ image=image,
ip_address=ip_address,
is_valid=is_valid,
token=token,
diff --git a/kittycad/models/environment.py b/kittycad/models/environment.py
deleted file mode 100644
index 76768ebb7..000000000
--- a/kittycad/models/environment.py
+++ /dev/null
@@ -1,10 +0,0 @@
-from enum import Enum
-
-
-class Environment(str, Enum):
- DEVELOPMENT = "DEVELOPMENT"
- PREVIEW = "PREVIEW"
- PRODUCTION = "PRODUCTION"
-
- def __str__(self) -> str:
- return str(self.value)
diff --git a/kittycad/models/error_message.py b/kittycad/models/error_message.py
index 8eacf38bc..6e86fc49d 100644
--- a/kittycad/models/error_message.py
+++ b/kittycad/models/error_message.py
@@ -10,28 +10,42 @@ T = TypeVar("T", bound="ErrorMessage")
@attr.s(auto_attribs=True)
class ErrorMessage:
""" """
-
+ code: Union[Unset, int] = UNSET
message: Union[Unset, str] = UNSET
+ status: Union[Unset, str] = UNSET
+
additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
def to_dict(self) -> Dict[str, Any]:
+ code = self.code
message = self.message
+ status = self.status
field_dict: Dict[str, Any] = {}
field_dict.update(self.additional_properties)
field_dict.update({})
+ if code is not UNSET:
+ field_dict['code'] = code
if message is not UNSET:
- field_dict["message"] = message
+ field_dict['message'] = message
+ if status is not UNSET:
+ field_dict['status'] = status
return field_dict
@classmethod
def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
d = src_dict.copy()
+ code = d.pop("code", UNSET)
+
message = d.pop("message", UNSET)
+ status = d.pop("status", UNSET)
+
error_message = cls(
+ code=code,
message=message,
+ status=status,
)
error_message.additional_properties = d
diff --git a/kittycad/models/file_conversion.py b/kittycad/models/file_conversion.py
index ffedfe7a5..f9fbbc0fe 100644
--- a/kittycad/models/file_conversion.py
+++ b/kittycad/models/file_conversion.py
@@ -4,8 +4,9 @@ from typing import Any, Dict, List, Type, TypeVar, Union
import attr
from dateutil.parser import isoparse
+from ..models.valid_output_file_format import ValidOutputFileFormat
+from ..models.valid_source_file_format import ValidSourceFileFormat
from ..models.file_conversion_status import FileConversionStatus
-from ..models.valid_file_type import ValidFileType
from ..types import UNSET, Unset
T = TypeVar("T", bound="FileConversion")
@@ -14,35 +15,35 @@ T = TypeVar("T", bound="FileConversion")
@attr.s(auto_attribs=True)
class FileConversion:
""" """
-
completed_at: Union[Unset, datetime.datetime] = UNSET
created_at: Union[Unset, datetime.datetime] = UNSET
id: Union[Unset, str] = UNSET
output: Union[Unset, str] = UNSET
- output_format: Union[Unset, ValidFileType] = UNSET
- src_format: Union[Unset, ValidFileType] = UNSET
+ output_format: Union[Unset, ValidOutputFileFormat] = UNSET
+ src_format: Union[Unset, ValidSourceFileFormat] = UNSET
+ started_at: Union[Unset, datetime.datetime] = UNSET
status: Union[Unset, FileConversionStatus] = UNSET
+
additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
def to_dict(self) -> Dict[str, Any]:
completed_at: Union[Unset, str] = UNSET
if not isinstance(self.completed_at, Unset):
completed_at = self.completed_at.isoformat()
-
created_at: Union[Unset, str] = UNSET
if not isinstance(self.created_at, Unset):
created_at = self.created_at.isoformat()
-
id = self.id
output = self.output
output_format: Union[Unset, str] = UNSET
if not isinstance(self.output_format, Unset):
output_format = self.output_format.value
-
src_format: Union[Unset, str] = UNSET
if not isinstance(self.src_format, Unset):
src_format = self.src_format.value
-
+ started_at: Union[Unset, str] = UNSET
+ if not isinstance(self.started_at, Unset):
+ started_at = self.started_at.isoformat()
status: Union[Unset, str] = UNSET
if not isinstance(self.status, Unset):
status = self.status.value
@@ -51,19 +52,21 @@ class FileConversion:
field_dict.update(self.additional_properties)
field_dict.update({})
if completed_at is not UNSET:
- field_dict["completed_at"] = completed_at
+ field_dict['completed_at'] = completed_at
if created_at is not UNSET:
- field_dict["created_at"] = created_at
+ field_dict['created_at'] = created_at
if id is not UNSET:
- field_dict["id"] = id
+ field_dict['id'] = id
if output is not UNSET:
- field_dict["output"] = output
+ field_dict['output'] = output
if output_format is not UNSET:
- field_dict["output_format"] = output_format
+ field_dict['output_format'] = output_format
if src_format is not UNSET:
- field_dict["src_format"] = src_format
+ field_dict['src_format'] = src_format
+ if started_at is not UNSET:
+ field_dict['started_at'] = started_at
if status is not UNSET:
- field_dict["status"] = status
+ field_dict['status'] = status
return field_dict
@@ -72,14 +75,14 @@ class FileConversion:
d = src_dict.copy()
_completed_at = d.pop("completed_at", UNSET)
completed_at: Union[Unset, datetime.datetime]
- if isinstance(_completed_at, Unset):
+ if not isinstance(_completed_at, Unset):
completed_at = UNSET
else:
completed_at = isoparse(_completed_at)
_created_at = d.pop("created_at", UNSET)
created_at: Union[Unset, datetime.datetime]
- if isinstance(_created_at, Unset):
+ if not isinstance(_created_at, Unset):
created_at = UNSET
else:
created_at = isoparse(_created_at)
@@ -89,22 +92,29 @@ class FileConversion:
output = d.pop("output", UNSET)
_output_format = d.pop("output_format", UNSET)
- output_format: Union[Unset, ValidFileType]
- if isinstance(_output_format, Unset):
+ output_format: Union[Unset, ValidOutputFileFormat]
+ if not isinstance(_output_format, Unset):
output_format = UNSET
else:
- output_format = ValidFileType(_output_format)
+ output_format = ValidOutputFileFormat(_output_format)
_src_format = d.pop("src_format", UNSET)
- src_format: Union[Unset, ValidFileType]
- if isinstance(_src_format, Unset):
+ src_format: Union[Unset, ValidSourceFileFormat]
+ if not isinstance(_src_format, Unset):
src_format = UNSET
else:
- src_format = ValidFileType(_src_format)
+ src_format = ValidSourceFileFormat(_src_format)
+
+ _started_at = d.pop("started_at", UNSET)
+ started_at: Union[Unset, datetime.datetime]
+ if not isinstance(_started_at, Unset):
+ started_at = UNSET
+ else:
+ started_at = isoparse(_started_at)
_status = d.pop("status", UNSET)
status: Union[Unset, FileConversionStatus]
- if isinstance(_status, Unset):
+ if not isinstance(_status, Unset):
status = UNSET
else:
status = FileConversionStatus(_status)
@@ -116,6 +126,7 @@ class FileConversion:
output=output,
output_format=output_format,
src_format=src_format,
+ started_at=started_at,
status=status,
)
diff --git a/kittycad/models/file_conversion_status.py b/kittycad/models/file_conversion_status.py
index d177059ec..49fa5419f 100644
--- a/kittycad/models/file_conversion_status.py
+++ b/kittycad/models/file_conversion_status.py
@@ -2,11 +2,11 @@ from enum import Enum
class FileConversionStatus(str, Enum):
- QUEUED = "Queued"
- UPLOADED = "Uploaded"
- IN_PROGRESS = "In Progress"
- COMPLETED = "Completed"
- FAILED = "Failed"
+ QUEUED = 'Queued'
+ UPLOADED = 'Uploaded'
+ IN_PROGRESS = 'In Progress'
+ COMPLETED = 'Completed'
+ FAILED = 'Failed'
def __str__(self) -> str:
return str(self.value)
diff --git a/kittycad/models/gpu_device.py b/kittycad/models/gpu_device.py
new file mode 100644
index 000000000..022023e46
--- /dev/null
+++ b/kittycad/models/gpu_device.py
@@ -0,0 +1,82 @@
+from typing import Any, Dict, List, Type, TypeVar, Union
+
+import attr
+
+from ..types import UNSET, Unset
+
+T = TypeVar("T", bound="GPUDevice")
+
+
+@attr.s(auto_attribs=True)
+class GPUDevice:
+ """ """
+ id: Union[Unset, int] = UNSET
+ memory_bus_width: Union[Unset, int] = UNSET
+ memory_clock_rate: Union[Unset, int] = UNSET
+ name: Union[Unset, str] = UNSET
+ peak_memory_bandwidth: Union[Unset, int] = UNSET
+
+ additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
+
+ def to_dict(self) -> Dict[str, Any]:
+ id = self.id
+ memory_bus_width = self.memory_bus_width
+ memory_clock_rate = self.memory_clock_rate
+ name = self.name
+ peak_memory_bandwidth = self.peak_memory_bandwidth
+
+ field_dict: Dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({})
+ if id is not UNSET:
+ field_dict['id'] = id
+ if memory_bus_width is not UNSET:
+ field_dict['memory_bus_width'] = memory_bus_width
+ if memory_clock_rate is not UNSET:
+ field_dict['memory_clock_rate'] = memory_clock_rate
+ if name is not UNSET:
+ field_dict['name'] = name
+ if peak_memory_bandwidth is not UNSET:
+ field_dict['peak_memory_bandwidth'] = peak_memory_bandwidth
+
+ return field_dict
+
+ @classmethod
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
+ d = src_dict.copy()
+ id = d.pop("id", UNSET)
+
+ memory_bus_width = d.pop("memory_bus_width", UNSET)
+
+ memory_clock_rate = d.pop("memory_clock_rate", UNSET)
+
+ name = d.pop("name", UNSET)
+
+ peak_memory_bandwidth = d.pop("peak_memory_bandwidth", UNSET)
+
+ gpu_device = cls(
+ id=id,
+ memory_bus_width=memory_bus_width,
+ memory_clock_rate=memory_clock_rate,
+ name=name,
+ peak_memory_bandwidth=peak_memory_bandwidth,
+ )
+
+ gpu_device.additional_properties = d
+ return gpu_device
+
+ @property
+ def additional_keys(self) -> List[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/kittycad/models/instance_metadata.py b/kittycad/models/instance.py
similarity index 77%
rename from kittycad/models/instance_metadata.py
rename to kittycad/models/instance.py
index e2fb8545c..f26fcc893 100644
--- a/kittycad/models/instance_metadata.py
+++ b/kittycad/models/instance.py
@@ -2,19 +2,18 @@ from typing import Any, Dict, List, Type, TypeVar, Union
import attr
-from ..models.environment import Environment
+from ..models.server_env import ServerEnv
from ..types import UNSET, Unset
-T = TypeVar("T", bound="InstanceMetadata")
+T = TypeVar("T", bound="Instance")
@attr.s(auto_attribs=True)
-class InstanceMetadata:
+class Instance:
""" """
-
cpu_platform: Union[Unset, str] = UNSET
description: Union[Unset, str] = UNSET
- environment: Union[Unset, Environment] = UNSET
+ environment: Union[Unset, ServerEnv] = UNSET
git_hash: Union[Unset, str] = UNSET
hostname: Union[Unset, str] = UNSET
id: Union[Unset, str] = UNSET
@@ -23,6 +22,7 @@ class InstanceMetadata:
machine_type: Union[Unset, str] = UNSET
name: Union[Unset, str] = UNSET
zone: Union[Unset, str] = UNSET
+
additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
def to_dict(self) -> Dict[str, Any]:
@@ -31,7 +31,6 @@ class InstanceMetadata:
environment: Union[Unset, str] = UNSET
if not isinstance(self.environment, Unset):
environment = self.environment.value
-
git_hash = self.git_hash
hostname = self.hostname
id = self.id
@@ -45,27 +44,27 @@ class InstanceMetadata:
field_dict.update(self.additional_properties)
field_dict.update({})
if cpu_platform is not UNSET:
- field_dict["cpu_platform"] = cpu_platform
+ field_dict['cpu_platform'] = cpu_platform
if description is not UNSET:
- field_dict["description"] = description
+ field_dict['description'] = description
if environment is not UNSET:
- field_dict["environment"] = environment
+ field_dict['environment'] = environment
if git_hash is not UNSET:
- field_dict["git_hash"] = git_hash
+ field_dict['git_hash'] = git_hash
if hostname is not UNSET:
- field_dict["hostname"] = hostname
+ field_dict['hostname'] = hostname
if id is not UNSET:
- field_dict["id"] = id
+ field_dict['id'] = id
if image is not UNSET:
- field_dict["image"] = image
+ field_dict['image'] = image
if ip_address is not UNSET:
- field_dict["ip_address"] = ip_address
+ field_dict['ip_address'] = ip_address
if machine_type is not UNSET:
- field_dict["machine_type"] = machine_type
+ field_dict['machine_type'] = machine_type
if name is not UNSET:
- field_dict["name"] = name
+ field_dict['name'] = name
if zone is not UNSET:
- field_dict["zone"] = zone
+ field_dict['zone'] = zone
return field_dict
@@ -77,11 +76,11 @@ class InstanceMetadata:
description = d.pop("description", UNSET)
_environment = d.pop("environment", UNSET)
- environment: Union[Unset, Environment]
- if isinstance(_environment, Unset):
+ environment: Union[Unset, ServerEnv]
+ if not isinstance(_environment, Unset):
environment = UNSET
else:
- environment = Environment(_environment)
+ environment = ServerEnv(_environment)
git_hash = d.pop("git_hash", UNSET)
@@ -99,7 +98,7 @@ class InstanceMetadata:
zone = d.pop("zone", UNSET)
- instance_metadata = cls(
+ instance = cls(
cpu_platform=cpu_platform,
description=description,
environment=environment,
@@ -113,8 +112,8 @@ class InstanceMetadata:
zone=zone,
)
- instance_metadata.additional_properties = d
- return instance_metadata
+ instance.additional_properties = d
+ return instance
@property
def additional_keys(self) -> List[str]:
diff --git a/kittycad/models/valid_file_type.py b/kittycad/models/pong_enum.py
similarity index 52%
rename from kittycad/models/valid_file_type.py
rename to kittycad/models/pong_enum.py
index 9ae4cbd0e..eabdf457c 100644
--- a/kittycad/models/valid_file_type.py
+++ b/kittycad/models/pong_enum.py
@@ -1,10 +1,8 @@
from enum import Enum
-class ValidFileType(str, Enum):
- OBJ = "obj"
- STL = "stl"
- DAE= "dae"
+class PongEnum(str, Enum):
+ PONG = 'pong'
def __str__(self) -> str:
return str(self.value)
diff --git a/kittycad/models/message.py b/kittycad/models/pong_message.py
similarity index 63%
rename from kittycad/models/message.py
rename to kittycad/models/pong_message.py
index 5cd2f528e..1ce0293a9 100644
--- a/kittycad/models/message.py
+++ b/kittycad/models/pong_message.py
@@ -2,40 +2,48 @@ from typing import Any, Dict, List, Type, TypeVar, Union
import attr
+from ..models.pong_enum import PongEnum
from ..types import UNSET, Unset
-T = TypeVar("T", bound="Message")
+T = TypeVar("T", bound="PongMessage")
@attr.s(auto_attribs=True)
-class Message:
+class PongMessage:
""" """
+ message: Union[Unset, PongEnum] = UNSET
- message: Union[Unset, str] = UNSET
additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
def to_dict(self) -> Dict[str, Any]:
- message = self.message
+ message: Union[Unset, str] = UNSET
+ if not isinstance(self.message, Unset):
+ message = self.message.value
field_dict: Dict[str, Any] = {}
field_dict.update(self.additional_properties)
field_dict.update({})
if message is not UNSET:
- field_dict["message"] = message
+ field_dict['message'] = message
return field_dict
@classmethod
def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
d = src_dict.copy()
- message = d.pop("message", UNSET)
+ _message = d.pop("message", UNSET)
+ message: Union[Unset, PongEnum]
+ if not isinstance(_message, Unset):
+ message = UNSET
+ else:
+ message = PongEnum(_message)
- message = cls(
+ pong_message = cls(
message=message,
)
- message.additional_properties = d
- return message
+ pong_message.additional_properties = d
+ return pong_message
@property
def additional_keys(self) -> List[str]:
diff --git a/kittycad/models/server_env.py b/kittycad/models/server_env.py
new file mode 100644
index 000000000..8822a3791
--- /dev/null
+++ b/kittycad/models/server_env.py
@@ -0,0 +1,10 @@
+from enum import Enum
+
+
+class ServerEnv(str, Enum):
+ PRODUCTION = 'production'
+ DEVELOPMENT = 'development'
+ PREVIEW = 'preview'
+
+ def __str__(self) -> str:
+ return str(self.value)
diff --git a/kittycad/models/valid_output_file_format.py b/kittycad/models/valid_output_file_format.py
new file mode 100644
index 000000000..78194f2e3
--- /dev/null
+++ b/kittycad/models/valid_output_file_format.py
@@ -0,0 +1,13 @@
+from enum import Enum
+
+
+class ValidOutputFileFormat(str, Enum):
+ STL = 'stl'
+ OBJ = 'obj'
+ DAE = 'dae'
+ STEP = 'step'
+ FBX = 'fbx'
+ FBXB = 'fbxb'
+
+ def __str__(self) -> str:
+ return str(self.value)
diff --git a/kittycad/models/valid_source_file_format.py b/kittycad/models/valid_source_file_format.py
new file mode 100644
index 000000000..0b8f05d22
--- /dev/null
+++ b/kittycad/models/valid_source_file_format.py
@@ -0,0 +1,12 @@
+from enum import Enum
+
+
+class ValidSourceFileFormat(str, Enum):
+ STL = 'stl'
+ OBJ = 'obj'
+ DAE = 'dae'
+ STEP = 'step'
+ FBX = 'fbx'
+
+ def __str__(self) -> str:
+ return str(self.value)
diff --git a/pyproject.toml b/pyproject.toml
index d94666d11..25d14c50e 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -29,6 +29,8 @@ sphinx-rtd-theme = "^1.0.0"
sphinx-automodapi = "^0.13"
pytest-cov = "^3.0.0"
pytest-asyncio = "^0.16.0"
+openapi-parser = "^0.2.6"
+autopep8 = "^1.6.0"
[build-system]
requires = ["poetry>=1.0"]
diff --git a/spec.json b/spec.json
new file mode 100644
index 000000000..2f49f44dc
--- /dev/null
+++ b/spec.json
@@ -0,0 +1,709 @@
+{
+ "components": {
+ "responses": {
+ "400": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorMessage"
+ }
+ }
+ },
+ "description": "Bad Request"
+ },
+ "401": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorMessage"
+ }
+ }
+ },
+ "description": "Unauthorized"
+ },
+ "403": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorMessage"
+ }
+ }
+ },
+ "description": "Forbidden"
+ },
+ "404": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorMessage"
+ }
+ }
+ },
+ "description": "Not Found"
+ },
+ "406": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorMessage"
+ }
+ }
+ },
+ "description": "Not Acceptable"
+ },
+ "500": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorMessage"
+ }
+ }
+ },
+ "description": "Internal Server Error"
+ }
+ },
+ "schemas": {
+ "AuthSession": {
+ "properties": {
+ "created_at": {
+ "description": "The date and time the session/request was created.",
+ "format": "date-time",
+ "type": "string"
+ },
+ "email": {
+ "description": "The user's email address.",
+ "format": "email",
+ "type": "string"
+ },
+ "id": {
+ "description": "The unique identifier of the session.",
+ "type": "string"
+ },
+ "image": {
+ "description": "The virtual machine image the instance used as a base.",
+ "type": "string"
+ },
+ "ip_address": {
+ "description": "The IP address the request originated from.",
+ "format": "ip",
+ "type": "string"
+ },
+ "is_valid": {
+ "description": "If the token is valid.",
+ "type": "boolean"
+ },
+ "token": {
+ "description": "The token the user provided for the request.",
+ "type": "string"
+ },
+ "user_id": {
+ "description": "The unique identifier of the user.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ErrorMessage": {
+ "properties": {
+ "code": {
+ "description": "Status code",
+ "maximum": 2147483647,
+ "minimum": -2147483648,
+ "type": "integer"
+ },
+ "message": {
+ "description": "Verbose message",
+ "type": "string"
+ },
+ "status": {
+ "description": "Short status text",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "FileConversion": {
+ "properties": {
+ "completed_at": {
+ "description": "The date and time the file conversion was completed.",
+ "format": "date-time",
+ "type": "string"
+ },
+ "created_at": {
+ "description": "The date and time the file conversion was created.",
+ "format": "date-time",
+ "type": "string"
+ },
+ "id": {
+ "description": "The unique identifier of the file conversion.",
+ "type": "string"
+ },
+ "output": {
+ "description": "The converted file, base64 encoded. If the conversion failed, this field will show any errors.",
+ "type": "string"
+ },
+ "output_format": {
+ "$ref": "#/components/schemas/ValidOutputFileFormat"
+ },
+ "src_format": {
+ "$ref": "#/components/schemas/ValidSourceFileFormat"
+ },
+ "started_at": {
+ "description": "The date and time the file conversion was completed.",
+ "format": "date-time",
+ "type": "string"
+ },
+ "status": {
+ "$ref": "#/components/schemas/FileConversionStatus"
+ }
+ },
+ "type": "object"
+ },
+ "FileConversionStatus": {
+ "enum": [
+ "Queued",
+ "Uploaded",
+ "In Progress",
+ "Completed",
+ "Failed"
+ ],
+ "type": "string"
+ },
+ "GPUDevice": {
+ "properties": {
+ "id": {
+ "description": "The unique identifier of the device.",
+ "format": "int64",
+ "type": "integer"
+ },
+ "memory_bus_width": {
+ "description": "The memory bus width of the device.",
+ "format": "int64",
+ "type": "integer"
+ },
+ "memory_clock_rate": {
+ "description": "The memory clock rate of the device.",
+ "format": "int64",
+ "type": "integer"
+ },
+ "name": {
+ "description": "The name of the device.",
+ "type": "string"
+ },
+ "peak_memory_bandwidth": {
+ "description": "The peak memory bandwidth of the device.",
+ "format": "int64",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "Instance": {
+ "properties": {
+ "cpu_platform": {
+ "description": "The CPU platform of the server instance.",
+ "type": "string"
+ },
+ "description": {
+ "description": "The description of the server instance.",
+ "type": "string"
+ },
+ "environment": {
+ "$ref": "#/components/schemas/ServerEnv"
+ },
+ "git_hash": {
+ "description": "The git commit hash that the server binary was built from.",
+ "type": "string"
+ },
+ "hostname": {
+ "description": "The hostname of the server instance.",
+ "type": "string"
+ },
+ "id": {
+ "description": "The unique identifier of the server instance.",
+ "type": "string"
+ },
+ "image": {
+ "description": "The virtual machine image the instance used as a base.",
+ "type": "string"
+ },
+ "ip_address": {
+ "description": "The IP address of the server instance.",
+ "format": "ip",
+ "type": "string"
+ },
+ "machine_type": {
+ "description": "The machine type of the server instance.",
+ "type": "string"
+ },
+ "name": {
+ "description": "The name of the server instance.",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The zone the server instance is deployed in.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "PongEnum": {
+ "enum": [
+ "pong"
+ ],
+ "type": "string"
+ },
+ "PongMessage": {
+ "properties": {
+ "message": {
+ "$ref": "#/components/schemas/PongEnum"
+ }
+ },
+ "type": "object"
+ },
+ "ServerEnv": {
+ "enum": [
+ "production",
+ "development",
+ "preview"
+ ],
+ "type": "string"
+ },
+ "ValidOutputFileFormat": {
+ "enum": [
+ "stl",
+ "obj",
+ "dae",
+ "step",
+ "fbx",
+ "fbxb"
+ ],
+ "type": "string"
+ },
+ "ValidSourceFileFormat": {
+ "enum": [
+ "stl",
+ "obj",
+ "dae",
+ "step",
+ "fbx"
+ ],
+ "type": "string"
+ }
+ },
+ "securitySchemes": {
+ "bearerAuth": {
+ "description": "Default HTTP Basic Authorization",
+ "scheme": "bearer",
+ "type": "http"
+ }
+ }
+ },
+ "externalDocs": {
+ "description": "KittyCAD API Documentation",
+ "url": "https://docs.kittycad.io"
+ },
+ "info": {
+ "contact": {
+ "email": "support@kittycad.io",
+ "name": "KittyCAD Support",
+ "url": "https://kittycad.io"
+ },
+ "description": "The KittyCAD API",
+ "license": {
+ "name": "Apache License, Version 2.0",
+ "url": "http://www.apache.org/licenses/LICENSE-2.0"
+ },
+ "termsOfService": "https://kittycad.io/terms-and-conditions",
+ "title": "KittyCAD API",
+ "version": "0.0.2-6f1ca7e",
+ "x-go": {
+ "client": "// Create a client with your token.\nclient, err := kittycad.NewClient(\"$TOKEN\", \"your apps user agent\")\nif err != nil {\n panic(err)\n}\n\n// - OR -\n\n// Create a new client with your token parsed from the environment\n// variable: KITTYCAD_API_TOKEN.\nclient, err := kittycad.NewClientFromEnv(\"your apps user agent\")\nif err != nil {\n panic(err)\n}",
+ "install": "go get github.com/kittycad/kittycad.go"
+ },
+ "x-python": {
+ "client": "# Create a client with your token.\nfrom kittycad 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.\nfrom kittycad import ClientFromEnv\n\nclient = ClientFromEnv()",
+ "install": "pip install kittycad"
+ }
+ },
+ "openapi": "3.0.0",
+ "paths": {
+ "/_internal/async/conversions/stop": {
+ "post": {
+ "description": "Stop all async conversions that are currently running. This endpoint can only be used by specific KittyCAD employees.",
+ "operationId": "stopAsyncConversions",
+ "responses": {
+ "200": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FileConversion"
+ }
+ }
+ },
+ "description": "OK"
+ },
+ "401": {
+ "$ref": "#/components/responses/401"
+ },
+ "403": {
+ "$ref": "#/components/responses/403"
+ },
+ "404": {
+ "$ref": "#/components/responses/404"
+ }
+ },
+ "security": [
+ {
+ "bearerAuth": []
+ }
+ ],
+ "summary": "Stop all async conversions",
+ "tags": [
+ "internal"
+ ],
+ "x-go": {
+ "example": "// StopAsyncConversions: Stop all async conversions\n//\n// Stop all async conversions that are currently running. This endpoint can only be used by specific KittyCAD employees.\nfileConversion, err := client.Internal.StopAsyncConversions()",
+ "libDocsLink": "https://pkg.go.dev/github.com/kittycad/kittycad.go/#InternalService.StopAsyncConversions"
+ },
+ "x-python": {
+ "example": "from kittycad.models import FileConversion\nfrom kittycad.api.internal import stop_async_conversions\nfrom kittycad.types import Response\n\nfc: FileConversion = stop_async_conversions.sync(client=client)\n\n# OR if you need more info (e.g. status_code)\nresponse: Response[FileConversion] = stop_async_conversions.sync_detailed(client=client)\n\n# OR run async\nfc: FileConversion = await stop_async_conversions.asyncio(client=client)\n\n# OR run async with more info\nresponse: Response[FileConversion] = await stop_async_conversions.asyncio_detailed(client=client)",
+ "libDocsLink": "https://python.api.docs.kittycad.io/modules/kittycad.api.internal.stop_async_conversions.html"
+ }
+ }
+ },
+ "/_internal/gpu/devices": {
+ "get": {
+ "description": "Get information about GPU devices on this server. This is primarily used for debugging. This endpoint can only be used by specific KittyCAD employees.",
+ "operationId": "gpuDevices",
+ "responses": {
+ "200": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "items": {
+ "$ref": "#/components/schemas/GPUDevice"
+ },
+ "type": "array"
+ }
+ }
+ },
+ "description": "Returns the GPU devices if successful."
+ },
+ "401": {
+ "$ref": "#/components/responses/401"
+ },
+ "403": {
+ "$ref": "#/components/responses/403"
+ }
+ },
+ "security": [
+ {
+ "bearerAuth": []
+ }
+ ],
+ "summary": "Get GPU devices",
+ "tags": [
+ "internal"
+ ],
+ "x-go": {
+ "example": "// GPUDevices: Get GPU devices\n//\n// Get information about GPU devices on this server. This is primarily used for debugging. This endpoint can only be used by specific KittyCAD employees.\nGPUDevice, err := client.Internal.GPUDevices()",
+ "libDocsLink": "https://pkg.go.dev/github.com/kittycad/kittycad.go/#InternalService.GPUDevices"
+ },
+ "x-python": {
+ "example": "from kittycad.models import [GPUDevice]\nfrom kittycad.api.internal import gpu_devices\nfrom kittycad.types import Response\n\nfc: [GPUDevice] = gpu_devices.sync(client=client)\n\n# OR if you need more info (e.g. status_code)\nresponse: Response[[GPUDevice]] = gpu_devices.sync_detailed(client=client)\n\n# OR run async\nfc: [GPUDevice] = await gpu_devices.asyncio(client=client)\n\n# OR run async with more info\nresponse: Response[[GPUDevice]] = await gpu_devices.asyncio_detailed(client=client)",
+ "libDocsLink": "https://python.api.docs.kittycad.io/modules/kittycad.api.internal.gpu_devices.html"
+ }
+ }
+ },
+ "/_meta/debug/instance": {
+ "get": {
+ "description": "Get information about this specific API server instance. This is primarily used for debugging.",
+ "operationId": "instanceMetadata",
+ "responses": {
+ "200": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Instance"
+ }
+ }
+ },
+ "description": "Returns the instance metadata if successful."
+ },
+ "401": {
+ "$ref": "#/components/responses/401"
+ },
+ "403": {
+ "$ref": "#/components/responses/403"
+ }
+ },
+ "security": [
+ {
+ "bearerAuth": []
+ }
+ ],
+ "summary": "Get instance metadata",
+ "tags": [
+ "meta"
+ ],
+ "x-go": {
+ "example": "// InstanceMetadata: Get instance metadata\n//\n// Get information about this specific API server instance. This is primarily used for debugging.\ninstance, err := client.Meta.InstanceMetadata()",
+ "libDocsLink": "https://pkg.go.dev/github.com/kittycad/kittycad.go/#MetaService.InstanceMetadata"
+ },
+ "x-python": {
+ "example": "from kittycad.models import Instance\nfrom kittycad.api.meta import instance_metadata\nfrom kittycad.types import Response\n\nfc: Instance = instance_metadata.sync(client=client)\n\n# OR if you need more info (e.g. status_code)\nresponse: Response[Instance] = instance_metadata.sync_detailed(client=client)\n\n# OR run async\nfc: Instance = await instance_metadata.asyncio(client=client)\n\n# OR run async with more info\nresponse: Response[Instance] = await instance_metadata.asyncio_detailed(client=client)",
+ "libDocsLink": "https://python.api.docs.kittycad.io/modules/kittycad.api.meta.instance_metadata.html"
+ }
+ }
+ },
+ "/_meta/debug/session": {
+ "get": {
+ "description": "Get information about your API request session. This is primarily used for debugging.",
+ "operationId": "authSession",
+ "responses": {
+ "200": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/AuthSession"
+ }
+ }
+ },
+ "description": "Returns the authorized user's authentication session if successful."
+ },
+ "401": {
+ "$ref": "#/components/responses/401"
+ },
+ "403": {
+ "$ref": "#/components/responses/403"
+ }
+ },
+ "security": [
+ {
+ "bearerAuth": []
+ }
+ ],
+ "summary": "Get auth session",
+ "tags": [
+ "meta"
+ ],
+ "x-go": {
+ "example": "// AuthSession: Get auth session\n//\n// Get information about your API request session. This is primarily used for debugging.\nauthSession, err := client.Meta.AuthSession()",
+ "libDocsLink": "https://pkg.go.dev/github.com/kittycad/kittycad.go/#MetaService.AuthSession"
+ },
+ "x-python": {
+ "example": "from kittycad.models import AuthSession\nfrom kittycad.api.meta import auth_session\nfrom kittycad.types import Response\n\nfc: AuthSession = auth_session.sync(client=client)\n\n# OR if you need more info (e.g. status_code)\nresponse: Response[AuthSession] = auth_session.sync_detailed(client=client)\n\n# OR run async\nfc: AuthSession = await auth_session.asyncio(client=client)\n\n# OR run async with more info\nresponse: Response[AuthSession] = await auth_session.asyncio_detailed(client=client)",
+ "libDocsLink": "https://python.api.docs.kittycad.io/modules/kittycad.api.meta.auth_session.html"
+ }
+ }
+ },
+ "/file/conversion/{id}": {
+ "get": {
+ "description": "Get the status and output of an async file conversion.",
+ "operationId": "fileConversionStatus",
+ "parameters": [
+ {
+ "description": "The id of the file conversion.",
+ "in": "path",
+ "name": "id",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FileConversion"
+ }
+ }
+ },
+ "description": "Returns the status of the file conversion. If completed, the contents of the converted file will be returned as a base64 encoded string."
+ },
+ "401": {
+ "$ref": "#/components/responses/401"
+ },
+ "403": {
+ "$ref": "#/components/responses/403"
+ },
+ "404": {
+ "$ref": "#/components/responses/404"
+ },
+ "406": {
+ "$ref": "#/components/responses/406"
+ },
+ "500": {
+ "$ref": "#/components/responses/500"
+ }
+ },
+ "security": [
+ {
+ "bearerAuth": []
+ }
+ ],
+ "summary": "Get a file conversion",
+ "tags": [
+ "file",
+ "beta"
+ ],
+ "x-go": {
+ "example": "// ConversionStatus: Get a file conversion\n//\n// Get the status and output of an async file conversion.\n//\n// Parameters:\n//\t- `id`: The id of the file conversion.\nfileConversion, err := client.File.ConversionStatus(id)",
+ "libDocsLink": "https://pkg.go.dev/github.com/kittycad/kittycad.go/#FileService.ConversionStatus"
+ },
+ "x-python": {
+ "example": "from kittycad.models import FileConversion\nfrom kittycad.api.file import file_conversion_status_with_base64_helper\nfrom kittycad.types import Response\n\nfc: FileConversion = file_conversion_status_with_base64_helper.sync(client=client, id=)\n\n# OR if you need more info (e.g. status_code)\nresponse: Response[FileConversion] = file_conversion_status_with_base64_helper.sync_detailed(client=client, id=)\n\n# OR run async\nfc: FileConversion = await file_conversion_status_with_base64_helper.asyncio(client=client, id=)\n\n# OR run async with more info\nresponse: Response[FileConversion] = await file_conversion_status_with_base64_helper.asyncio_detailed(client=client, id=)",
+ "libDocsLink": "https://python.api.docs.kittycad.io/modules/kittycad.api.file.file_conversion_status_with_base64_helper.html"
+ }
+ }
+ },
+ "/file/conversion/{sourceFormat}/{outputFormat}": {
+ "post": {
+ "description": "Convert a CAD file from one format to another. If the file being converted is larger than 30MB, it will be performed asynchronously.",
+ "operationId": "postFileConversion",
+ "parameters": [
+ {
+ "description": "The format of the file to convert.",
+ "in": "path",
+ "name": "sourceFormat",
+ "required": true,
+ "schema": {
+ "$ref": "#/components/schemas/ValidSourceFileFormat"
+ }
+ },
+ {
+ "description": "The format the file should be converted to.",
+ "in": "path",
+ "name": "outputFormat",
+ "required": true,
+ "schema": {
+ "$ref": "#/components/schemas/ValidOutputFileFormat"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "text/plain": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FileConversion"
+ }
+ }
+ },
+ "description": "Returns the contents of the converted file, base64 encoded, if successful. The contents will be base64 encoded."
+ },
+ "202": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FileConversion"
+ }
+ }
+ },
+ "description": "The file conversion is being performed asynchronously. You can use the `id` returned from the request to get status information about the async conversion."
+ },
+ "400": {
+ "$ref": "#/components/responses/400"
+ },
+ "401": {
+ "$ref": "#/components/responses/401"
+ },
+ "403": {
+ "$ref": "#/components/responses/403"
+ },
+ "406": {
+ "$ref": "#/components/responses/406"
+ },
+ "500": {
+ "$ref": "#/components/responses/500"
+ }
+ },
+ "security": [
+ {
+ "bearerAuth": []
+ }
+ ],
+ "summary": "Convert CAD file",
+ "tags": [
+ "file",
+ "beta"
+ ],
+ "x-go": {
+ "example": "// PostConversion: Convert CAD file\n//\n// Convert a CAD file from one format to another. If the file being converted is larger than 30MB, it will be performed asynchronously.\n//\n// Parameters:\n//\t- `outputFormat`: The format the file should be converted to.\n//\t- `sourceFormat`: The format of the file to convert.\nfileConversion, err := client.File.PostConversion(sourceFormat, outputFormat, body)",
+ "libDocsLink": "https://pkg.go.dev/github.com/kittycad/kittycad.go/#FileService.PostConversion"
+ },
+ "x-python": {
+ "example": "from kittycad.models import FileConversion\nfrom kittycad.api.file import file_conversion_status_with_base64_helper\nfrom kittycad.types import Response\n\nfc: FileConversion = file_conversion_status_with_base64_helper.sync(client=client, source_format=ValidSourceFileFormat, output_format=ValidOutputFileFormat, body=bytes)\n\n# OR if you need more info (e.g. status_code)\nresponse: Response[FileConversion] = file_conversion_status_with_base64_helper.sync_detailed(client=client, source_format=ValidSourceFileFormat, output_format=ValidOutputFileFormat, body=bytes)\n\n# OR run async\nfc: FileConversion = await file_conversion_status_with_base64_helper.asyncio(client=client, source_format=ValidSourceFileFormat, output_format=ValidOutputFileFormat, body=bytes)\n\n# OR run async with more info\nresponse: Response[FileConversion] = await file_conversion_status_with_base64_helper.asyncio_detailed(client=client, source_format=ValidSourceFileFormat, output_format=ValidOutputFileFormat, body=bytes)",
+ "libDocsLink": "https://python.api.docs.kittycad.io/modules/kittycad.api.file.file_conversion_status_with_base64_helper.html"
+ }
+ }
+ },
+ "/ping": {
+ "get": {
+ "description": "Simple ping to the server.",
+ "operationId": "ping",
+ "responses": {
+ "200": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/PongMessage"
+ }
+ }
+ },
+ "description": "Returns the message \"pong\" if successful."
+ }
+ },
+ "summary": "Ping",
+ "tags": [
+ "meta"
+ ],
+ "x-go": {
+ "example": "// Ping: Ping\n//\n// Simple ping to the server.\npongMessage, err := client.Meta.Ping()",
+ "libDocsLink": "https://pkg.go.dev/github.com/kittycad/kittycad.go/#MetaService.Ping"
+ },
+ "x-python": {
+ "example": "from kittycad.models import PongMessage\nfrom kittycad.api.meta import ping\nfrom kittycad.types import Response\n\nfc: PongMessage = ping.sync(client=client)\n\n# OR if you need more info (e.g. status_code)\nresponse: Response[PongMessage] = ping.sync_detailed(client=client)\n\n# OR run async\nfc: PongMessage = await ping.asyncio(client=client)\n\n# OR run async with more info\nresponse: Response[PongMessage] = await ping.asyncio_detailed(client=client)",
+ "libDocsLink": "https://python.api.docs.kittycad.io/modules/kittycad.api.meta.ping.html"
+ }
+ }
+ }
+ },
+ "servers": [
+ {
+ "description": "Production",
+ "url": "https://api.kittycad.io"
+ }
+ ],
+ "tags": [
+ {
+ "description": "CAD file operations.",
+ "name": "file"
+ },
+ {
+ "description": "Meta information about servers, instances, and sessions.",
+ "name": "meta"
+ },
+ {
+ "description": "Beta API endpoints.",
+ "name": "beta"
+ },
+ {
+ "description": "Internal API endpoints.",
+ "name": "internal"
+ }
+ ]
+}
\ No newline at end of file