diff --git a/.gitignore b/.gitignore
index 4a79d71..221bee3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,7 +16,13 @@ env/
#Build files
dist
-docs
+sphinx/_build
+sphinx/reference
+
+# Only the page JSON is committed. Everything else Sphinx writes there is not.
+sphinx/json/*
+!sphinx/json/reference
+!sphinx/json/index.fjson
#testfile
server.py
diff --git a/poetry.lock b/poetry.lock
index 1a1cbf9..4027934 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,4 +1,16 @@
-# This file is automatically @generated by Poetry 2.4.1 and should not be changed by hand.
+# This file is automatically @generated by Poetry 2.3.4 and should not be changed by hand.
+
+[[package]]
+name = "alabaster"
+version = "0.7.16"
+description = "A light, configurable Sphinx theme"
+optional = false
+python-versions = ">=3.9"
+groups = ["docs"]
+files = [
+ {file = "alabaster-0.7.16-py3-none-any.whl", hash = "sha256:b46733c07dce03ae4e150330b975c75737fa60f0a7c591b6c8bf4928a28e2c92"},
+ {file = "alabaster-0.7.16.tar.gz", hash = "sha256:75a8b99c28a5dad50dd7f8ccdd447a121ddb3892da9e53d1ca5cca3106d58d65"},
+]
[[package]]
name = "annotated-types"
@@ -32,6 +44,35 @@ typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""}
[package.extras]
trio = ["trio (>=0.31.0) ; python_version < \"3.10\"", "trio (>=0.32.0) ; python_version >= \"3.10\""]
+[[package]]
+name = "astroid"
+version = "3.3.11"
+description = "An abstract syntax tree for Python with inference support."
+optional = false
+python-versions = ">=3.9.0"
+groups = ["docs"]
+markers = "python_version < \"3.12\""
+files = [
+ {file = "astroid-3.3.11-py3-none-any.whl", hash = "sha256:54c760ae8322ece1abd213057c4b5bba7c49818853fc901ef09719a60dbf9dec"},
+ {file = "astroid-3.3.11.tar.gz", hash = "sha256:1e5a5011af2920c7c67a53f65d536d65bfa7116feeaf2354d8b94f29573bb0ce"},
+]
+
+[package.dependencies]
+typing-extensions = {version = ">=4", markers = "python_version < \"3.11\""}
+
+[[package]]
+name = "astroid"
+version = "4.3.3"
+description = "An abstract syntax tree for Python with inference support."
+optional = false
+python-versions = ">=3.10.0"
+groups = ["docs"]
+markers = "python_version >= \"3.12\""
+files = [
+ {file = "astroid-4.3.3-py3-none-any.whl", hash = "sha256:366c99c2907b6407869b1bbfd8abb10f3aea5818309e9c93c9b9c93ecf14bc4f"},
+ {file = "astroid-4.3.3.tar.gz", hash = "sha256:d03854b09d92c08e18d8e7d9185d393961186ed0747136d8fcb2d1c008a504ec"},
+]
+
[[package]]
name = "authlib"
version = "1.6.11"
@@ -47,6 +88,21 @@ files = [
[package.dependencies]
cryptography = "*"
+[[package]]
+name = "babel"
+version = "2.18.0"
+description = "Internationalization utilities"
+optional = false
+python-versions = ">=3.8"
+groups = ["docs"]
+files = [
+ {file = "babel-2.18.0-py3-none-any.whl", hash = "sha256:e2b422b277c2b9a9630c1d7903c2a00d0830c409c59ac8cae9081c92f1aeba35"},
+ {file = "babel-2.18.0.tar.gz", hash = "sha256:b80b99a14bd085fcacfa15c9165f651fbb3406e66cc603abf11c5750937c992d"},
+]
+
+[package.extras]
+dev = ["backports.zoneinfo ; python_version < \"3.9\"", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata ; sys_platform == \"win32\""]
+
[[package]]
name = "backports-tarfile"
version = "1.2.0"
@@ -54,7 +110,7 @@ description = "Backport of CPython tarfile module"
optional = false
python-versions = ">=3.8"
groups = ["dev"]
-markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and python_version < \"3.12\""
+markers = "python_version < \"3.12\" and platform_machine != \"ppc64le\" and platform_machine != \"s390x\""
files = [
{file = "backports.tarfile-1.2.0-py3-none-any.whl", hash = "sha256:77e284d754527b01fb1e6fa8a1afe577858ebe4e9dad8919e34c862cb399bc34"},
{file = "backports_tarfile-1.2.0.tar.gz", hash = "sha256:d75e02c268746e1b8144c278978b6e98e85de6ad16f8e4b0844a154557eca991"},
@@ -70,7 +126,7 @@ version = "2026.4.22"
description = "Python package for providing Mozilla's CA Bundle."
optional = false
python-versions = ">=3.7"
-groups = ["main", "dev"]
+groups = ["main", "dev", "docs"]
files = [
{file = "certifi-2026.4.22-py3-none-any.whl", hash = "sha256:3cb2210c8f88ba2318d29b0388d1023c8492ff72ecdde4ebdaddbb13a31b1c4a"},
{file = "certifi-2026.4.22.tar.gz", hash = "sha256:8d455352a37b71bf76a79caa83a3d6c25afee4a385d632127b6afb3963f1c580"},
@@ -180,7 +236,7 @@ version = "3.4.7"
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
optional = false
python-versions = ">=3.7"
-groups = ["dev"]
+groups = ["dev", "docs"]
files = [
{file = "charset_normalizer-3.4.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cdd68a1fb318e290a2077696b7eb7a21a49163c455979c639bf5a5dcdc46617d"},
{file = "charset_normalizer-3.4.7-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e17b8d5d6a8c47c85e68ca8379def1303fd360c3e22093a807cd34a71cd082b8"},
@@ -319,7 +375,7 @@ version = "0.4.6"
description = "Cross-platform colored terminal text."
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
-groups = ["dev"]
+groups = ["dev", "docs"]
markers = "sys_platform == \"win32\""
files = [
{file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
@@ -499,14 +555,14 @@ test-randomorder = ["pytest-randomly"]
[[package]]
name = "docutils"
-version = "0.22.4"
+version = "0.21.2"
description = "Docutils -- Python Documentation Utilities"
optional = false
python-versions = ">=3.9"
-groups = ["dev"]
+groups = ["dev", "docs"]
files = [
- {file = "docutils-0.22.4-py3-none-any.whl", hash = "sha256:d0013f540772d1420576855455d050a2180186c91c15779301ac2ccb3eeb68de"},
- {file = "docutils-0.22.4.tar.gz", hash = "sha256:4db53b1fde9abecbb74d91230d32ab626d94f6badfc575d6db9194a49df29968"},
+ {file = "docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2"},
+ {file = "docutils-0.21.2.tar.gz", hash = "sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f"},
]
[[package]]
@@ -613,7 +669,7 @@ version = "3.18"
description = "Internationalized Domain Names in Applications (IDNA)"
optional = false
python-versions = ">=3.9"
-groups = ["main", "dev"]
+groups = ["main", "dev", "docs"]
files = [
{file = "idna-3.18-py3-none-any.whl", hash = "sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2"},
{file = "idna-3.18.tar.gz", hash = "sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848"},
@@ -622,18 +678,44 @@ files = [
[package.extras]
all = ["mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"]
+[[package]]
+name = "imagesize"
+version = "1.5.0"
+description = "Getting image size from png/jpeg/jpeg2000/gif file"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"
+groups = ["docs"]
+markers = "python_version < \"3.12\""
+files = [
+ {file = "imagesize-1.5.0-py2.py3-none-any.whl", hash = "sha256:32677681b3f434c2cb496f00e89c5a291247b35b1f527589909e008057da5899"},
+ {file = "imagesize-1.5.0.tar.gz", hash = "sha256:8bfc5363a7f2133a89f0098451e0bcb1cd71aba4dc02bbcecb39d99d40e1b94f"},
+]
+
+[[package]]
+name = "imagesize"
+version = "2.0.1"
+description = "Get image size from headers (BMP/PNG/JPEG/JPEG2000/GIF/TIFF/SVG/Netpbm/WebP/AVIF/HEIC/HEIF)"
+optional = false
+python-versions = ">=3.10"
+groups = ["docs"]
+markers = "python_version >= \"3.12\""
+files = [
+ {file = "imagesize-2.0.1-py3-none-any.whl", hash = "sha256:ea0c9a0384df69ed86a943a15cde37d0360b82491b3910dc2215e202e62b5b02"},
+ {file = "imagesize-2.0.1.tar.gz", hash = "sha256:b2ba6a4dea487a7ebcd53248d3476aca449d30db12a2dde5e0c5ca9624fd77e5"},
+]
+
[[package]]
name = "importlib-metadata"
version = "8.7.1"
description = "Read metadata from Python packages"
optional = false
python-versions = ">=3.9"
-groups = ["dev"]
-markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and python_version < \"3.12\" or python_version == \"3.9\""
+groups = ["dev", "docs"]
files = [
{file = "importlib_metadata-8.7.1-py3-none-any.whl", hash = "sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151"},
{file = "importlib_metadata-8.7.1.tar.gz", hash = "sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb"},
]
+markers = {dev = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and python_version < \"3.12\" or python_version == \"3.9\"", docs = "python_version == \"3.9\""}
[package.dependencies]
zipp = ">=3.20"
@@ -744,6 +826,24 @@ files = [
test = ["async-timeout ; python_version < \"3.11\"", "pytest", "pytest-asyncio (>=0.17)", "pytest-trio", "testpath", "trio"]
trio = ["trio"]
+[[package]]
+name = "jinja2"
+version = "3.1.6"
+description = "A very fast and expressive template engine."
+optional = false
+python-versions = ">=3.7"
+groups = ["docs"]
+files = [
+ {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"},
+ {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"},
+]
+
+[package.dependencies]
+MarkupSafe = ">=2.0"
+
+[package.extras]
+i18n = ["Babel (>=2.7)"]
+
[[package]]
name = "jwcrypto"
version = "1.5.7"
@@ -816,6 +916,167 @@ profiling = ["gprof2dot"]
rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"]
testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"]
+[[package]]
+name = "markupsafe"
+version = "3.0.4"
+description = "Safely add untrusted strings to HTML/XML markup."
+optional = false
+python-versions = ">=3.9"
+groups = ["docs"]
+files = [
+ {file = "markupsafe-3.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dd8ea6ebee7aedbf7c749fa80521d9ccf1ba473e0d1e14805caafbaad281c889"},
+ {file = "markupsafe-3.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dff05cb7016dff1e9fd68f4122c127b65dfc59de5306cfb7ad92f956f230bee2"},
+ {file = "markupsafe-3.0.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cf63c214fe879a65e69a386f915e36104fc84254ab141240f8854602d8e0be2a"},
+ {file = "markupsafe-3.0.4-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2a6ef68ae94aed8721934072b27a3b654ea2100b97e4ab864cf1489c90926fbc"},
+ {file = "markupsafe-3.0.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:fd9f8797427910198f95bced71ddfed61130d7e349213bfb8466c9c99e2c46a8"},
+ {file = "markupsafe-3.0.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d1aca03ede943eb80ab3d63bb082c84b7aab85ea83bd0fd0c200260945fb49d9"},
+ {file = "markupsafe-3.0.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0764a13d34cae40db7bbf3a09b7e9b491bf4603e20b263a7a9d6b8e324975d0a"},
+ {file = "markupsafe-3.0.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9388003072b95f2f1e3fd908604194d653ba21330d811961a78b7da1a77e9e36"},
+ {file = "markupsafe-3.0.4-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:8698d70a8081ee8c090dbb394768b5789a1da8b131b5499f89d071dd3cfaf6be"},
+ {file = "markupsafe-3.0.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:bf053da3c97a4bc5ecfbb218cdd2983febd91c617be8367d139882aa11e490aa"},
+ {file = "markupsafe-3.0.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:9438a2648b2195980cb2dd8e53ed7b8df91319e2d0b70ae61a9e1d1bc8d3bec9"},
+ {file = "markupsafe-3.0.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:88d59b473bfb03259722600839af9bbd7fa13a2eb514beefeedb95997882f69a"},
+ {file = "markupsafe-3.0.4-cp310-cp310-win32.whl", hash = "sha256:4a540e2d3192792fc84eced57bef37851ccb2b41f73291bb17408eea77bcd278"},
+ {file = "markupsafe-3.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:5c22873ad1f0532ba40fa1727f3c0fc1bbbaab6d373d4cbe3f0dc74b2e2521c7"},
+ {file = "markupsafe-3.0.4-cp310-cp310-win_arm64.whl", hash = "sha256:3d23795802fc8bd72534836d64489bbf0f67c088959091bdb22e10735a5107bf"},
+ {file = "markupsafe-3.0.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9e25feb9e330b63edb0278a0acdf85e50d0cb0fbf49c3084abbe4e24ae195346"},
+ {file = "markupsafe-3.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7d3391b2188d18737cb2fa147028b1096236eaa7e156446c650a489fa2cadc91"},
+ {file = "markupsafe-3.0.4-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:849dd2bb0e5e4ab2b71c7191726a4a8d5aa8a610daa584728cbee0b710ddc4ef"},
+ {file = "markupsafe-3.0.4-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:befb4158af32106b9a93db8d6d1d1cbbd418c0d5aca0cabb7b1780abf0c89169"},
+ {file = "markupsafe-3.0.4-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:71f88e749ea29f67f21f3b36433c1dc54c7729ed2a6d9e2da2e0d9e0d7b224eb"},
+ {file = "markupsafe-3.0.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6da83a088f8ef93b2d483a8232a4dbf4d69d3d8496b568a03c56becac43e1808"},
+ {file = "markupsafe-3.0.4-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:8f0fac8b13d14bb06c68195f849371924ae53dd7b1c00fed24650f704383b692"},
+ {file = "markupsafe-3.0.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4a7cdc2a420ca01058182da4253329764d4bfa055564d1eced90e6ba1e8b1d3d"},
+ {file = "markupsafe-3.0.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:83b3944fea42a8400edf92fd1770fb8d0d4f7de651353bd2d8525a92dba69a21"},
+ {file = "markupsafe-3.0.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:8138eb83940ec7299024d92d4dee45f601b9e6c5ffde9d25f4e35e326203c707"},
+ {file = "markupsafe-3.0.4-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:811d02d5122171c1941357efd8f9bf4ffe907b7f0a1a4e729a880e4be3f46e3e"},
+ {file = "markupsafe-3.0.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:50b5bedc9ed8a94fc8857a42ef4f84a81ea88f8d4f05dc8705fb23ee6d8dcca7"},
+ {file = "markupsafe-3.0.4-cp311-cp311-win32.whl", hash = "sha256:2e5a7cd7fdd14fcb1ae5d7d8bf23d24fbd1daefd1fbca2580132e1ea75f098b5"},
+ {file = "markupsafe-3.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:fdb4ca07ab75ffadab4a8b135ad59cdbb3156b99310f3d565370da74a15d6bd3"},
+ {file = "markupsafe-3.0.4-cp311-cp311-win_arm64.whl", hash = "sha256:569d65055d367e3dcdf30c3f41119467b73d9ee9faf332bdf40402644f5ac08e"},
+ {file = "markupsafe-3.0.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:61631e08084be9e21a8967ec3139c7616ed7c5e9368e05c86d1b39562c8a57b6"},
+ {file = "markupsafe-3.0.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0930db9bdc62d22944e10b066448bb65dc9abe9112880c7cab8da54db4284d5f"},
+ {file = "markupsafe-3.0.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6a45c3d514f2436064db00d7fc8778d888f0236ebfed649b53d13a59e69ad51b"},
+ {file = "markupsafe-3.0.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:1e1451fab512d1bcc3dc26988ec1edb0b82c2db909132872cd9356070a6b63df"},
+ {file = "markupsafe-3.0.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bd3ce56ae2cbae3ba82b683bc425cd7e48d2ed8b10f3e818186b6f5646d9271c"},
+ {file = "markupsafe-3.0.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8e124f974786f831d6043728e38296969d3579db8896fe004682f5758e613581"},
+ {file = "markupsafe-3.0.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c02e8f18bdedba082cef725942ac823b9b60656db07f7e265cb31618dfd00d77"},
+ {file = "markupsafe-3.0.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9f098115c247e11d138ab83a28fa0323c77015007ea2df73ba5fd714dfefd67c"},
+ {file = "markupsafe-3.0.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d5f93ebbeb8032d47e349328ec8662d973d9b05a70b3c35df1f91fe419b84749"},
+ {file = "markupsafe-3.0.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:64511c54db4e4987aef4c41923235927428729e8174c5dba488429be70a998ed"},
+ {file = "markupsafe-3.0.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:e1a622f13970d81f95d0c72f9dc090dce9085fccfa4c9f2174377ee32bd15786"},
+ {file = "markupsafe-3.0.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c9a7f43c0b202b334cc9184af09bb8f21d3a209e038efaf106936fb69e6b026e"},
+ {file = "markupsafe-3.0.4-cp312-cp312-win32.whl", hash = "sha256:f0ec3b750b59375eab5b0fb2b9254810c00a3375be6d789899f1055a1d556237"},
+ {file = "markupsafe-3.0.4-cp312-cp312-win_amd64.whl", hash = "sha256:11935df9bf455ed0c04eb87bcd720f02b1fe5e02128a9430f23aed6f93336fc7"},
+ {file = "markupsafe-3.0.4-cp312-cp312-win_arm64.whl", hash = "sha256:a4bbd2d87dd233b9fc5812160c3d0ffbe42edc22a26ce0469f58479ede633fe9"},
+ {file = "markupsafe-3.0.4-cp313-cp313-android_24_arm64_v8a.whl", hash = "sha256:de8b364c423ef0a4bad9069657d617f9a5d2b2062457a89b1fa16ee199c399c1"},
+ {file = "markupsafe-3.0.4-cp313-cp313-android_24_x86_64.whl", hash = "sha256:34bdde374c5932765d7dc685c4a1d191a3207852d67e8e0a9eb6ea85156181f1"},
+ {file = "markupsafe-3.0.4-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:6bd9e1788e15bfcf6a9082de42e30387e7b85d211ab21e57a939bb8cfaaf8d96"},
+ {file = "markupsafe-3.0.4-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:5066b244f576f91afc8ee3ba029a89f99d39c79b1853fe9d39bea9f0afbec148"},
+ {file = "markupsafe-3.0.4-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:7a83aa6e4805df46fed18e989d3d16f86ef60cb50bbc8d9ce3a6be89165fbf6e"},
+ {file = "markupsafe-3.0.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2d1b7d9308288661f56672b1b157d75fc536714d3638487bbea17b6318a78248"},
+ {file = "markupsafe-3.0.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:73e77980c7207854f00fc4e71fb1626868d5740ab4012623d55c7a99ad122a72"},
+ {file = "markupsafe-3.0.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7018d4af1cd272e847aa5917983ab5e83e4f6579f9dbfecd4a79c0ca80b144c2"},
+ {file = "markupsafe-3.0.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c90d5b3d4e944e065a301d741b3c1d784f6bd1f503aa68b4967e32b2ba313d85"},
+ {file = "markupsafe-3.0.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:18a801868a884f216e784d7d14db2a4077143ce7610440aee2ce8f734e7cfcde"},
+ {file = "markupsafe-3.0.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:434139499bb20b502ed3baa1f169e618f924a97e7a777fea1a49446d80106cf6"},
+ {file = "markupsafe-3.0.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9e227f3dbe6bde7491cf0a9965d00b88c6b1a4a95d11480ddf88bb96d397c19f"},
+ {file = "markupsafe-3.0.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b8cd1f918b26fd7b1832ece557cc18f2d8747309ff8b3f0ef9d4250c5ad67a39"},
+ {file = "markupsafe-3.0.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:a5fcffb37e602b0b3c1638a97746b9b96125caa9bcf6fa41d337a9261de231ee"},
+ {file = "markupsafe-3.0.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:5989cb26b2e1efc6a42216a9f6b5ee495ce5ace2e5b352a9af489976b32d1ee2"},
+ {file = "markupsafe-3.0.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:add96447a86d205ab616665d53b2950ee81083757f56e6ea833c8b2917646b46"},
+ {file = "markupsafe-3.0.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2628d3a8cb648ecebb3c5d6b0a1052d400e4d8b7ac0fb786be8d285b50040d17"},
+ {file = "markupsafe-3.0.4-cp313-cp313-win32.whl", hash = "sha256:672d207103e6b16ca098611b0f9efad6bc00afd47c03d6ef62186495ca677dc0"},
+ {file = "markupsafe-3.0.4-cp313-cp313-win_amd64.whl", hash = "sha256:1f1f9477e174582b0a1b583d60b66e1f2cf5d3fe12cee985e4aedf44766600e5"},
+ {file = "markupsafe-3.0.4-cp313-cp313-win_arm64.whl", hash = "sha256:06de8ef6331f6e822c28d577dc8bf43fe398800477c49498f38fc38b67ff33fc"},
+ {file = "markupsafe-3.0.4-cp314-cp314-android_24_arm64_v8a.whl", hash = "sha256:4ed644d75aa94a2baf7ec3a96eaa160ea58c742eb9d27c6506053c5c40fc84ed"},
+ {file = "markupsafe-3.0.4-cp314-cp314-android_24_x86_64.whl", hash = "sha256:6d2a9efe686f9de00d0d1ea32a4a5a86d558a2277501bd78d964214eab625e59"},
+ {file = "markupsafe-3.0.4-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:8781a792a070cf2bd1b86d3aa943894115faaba6e88122a7bf32d62072742453"},
+ {file = "markupsafe-3.0.4-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:971a3bbb75d97ae4e2e8f7d4834236f86f85f0c85e04ab2e191db1123b04f80b"},
+ {file = "markupsafe-3.0.4-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:8909c2f1c6dd65e054ac4b573a91c8384d1492281e55d82d159d653f7a13adf6"},
+ {file = "markupsafe-3.0.4-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:4cf3468d5ec187ffffcaca8e61929a37448f215dafc1386a12c750a72fe53634"},
+ {file = "markupsafe-3.0.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:52704c5d36eb6dda8866493decd61111fff86244c9b1ad225ca01b9e91e5970f"},
+ {file = "markupsafe-3.0.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1caa2fa5a6184fb233153b35f654e6687bd555476f6170f29d8ee9be1a8b0af9"},
+ {file = "markupsafe-3.0.4-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:387d8cd30e69b3f0a72877b9ae717033396404e19095b17fe89753a981fda44f"},
+ {file = "markupsafe-3.0.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:051417f74bcaaefa316276e0ff723f541616ca51043d070da00249d9bddd3e3c"},
+ {file = "markupsafe-3.0.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8e9f292fcda89b324f2f5c91d13f1424a153e40fc2756f38ee23b15835ff300"},
+ {file = "markupsafe-3.0.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:df1ae86ff54725a01fa1a0510b914ca53a161b7050be74f6204e24aded5971d0"},
+ {file = "markupsafe-3.0.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:8965520ac587c94a4ac48b729be3d8b8de00af39699b17585dfb599babe77977"},
+ {file = "markupsafe-3.0.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:340cbb1957ba99929cbf19a75626d36ba1ae21d1730b287d1cf7f824a20c4fc7"},
+ {file = "markupsafe-3.0.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:3a93d9616ddecfb393727a0041a562cf0b15a244e20f2bd25efc7949be4c4f17"},
+ {file = "markupsafe-3.0.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:d2e56fd3b00222722abfb3f5f0759ddbae4b90811b5ad4343c64030ad1bde70c"},
+ {file = "markupsafe-3.0.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:0d9c47709875fdb321452056622e930c52afbc07a7d780762fbb8b4d91ce6fa4"},
+ {file = "markupsafe-3.0.4-cp314-cp314-win32.whl", hash = "sha256:38fc55594dab834470b6733dead2ee9e3f657fb0608c769dcafa0ba5ab52f45c"},
+ {file = "markupsafe-3.0.4-cp314-cp314-win_amd64.whl", hash = "sha256:c1bc67752d5f21013cfe430df4062441714eab79f65a6a05e01505957e9c35fe"},
+ {file = "markupsafe-3.0.4-cp314-cp314-win_arm64.whl", hash = "sha256:7e1636da3d8dfc220b6dd10264db5f2b165e4888c4518594898fbe381049af8a"},
+ {file = "markupsafe-3.0.4-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:805c8b84534fa10891890f0e4be39f3a99e94615d93e8836bf9fa1fdca2feeb2"},
+ {file = "markupsafe-3.0.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:fa95848c929b6a75f6848d3c9793e59db365ee436776e57db835cdbfa79ba977"},
+ {file = "markupsafe-3.0.4-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e916035e3e9930cbdfdd10abf48861340221857f45509565898e012263f7b289"},
+ {file = "markupsafe-3.0.4-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b4d12837e0203bbace818ff4a7461afdcd78bcd782351cea148139180d7bcffe"},
+ {file = "markupsafe-3.0.4-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5086f9975abb1ab531ee6afca1761e4b59a19b446f3f6522ed776963228cfe5a"},
+ {file = "markupsafe-3.0.4-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b4a635a0487774f841cb1fb62e907e7195cc95bc761e053184b8acc3ceb20733"},
+ {file = "markupsafe-3.0.4-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cb96e6e088d6cf71c1ea977510948320234824cf226e32f6f6e044f7a9c82b34"},
+ {file = "markupsafe-3.0.4-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8b5d563170ff8ba3181caa967c99a3c804d1dedb702c7cb93a6a7c32247da978"},
+ {file = "markupsafe-3.0.4-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:396ec4e65cc889f69786b3b89478b471cee5a3bcf468b9d9bb03e1a30fb291fc"},
+ {file = "markupsafe-3.0.4-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:15ba9e28640feef770374b116a6f019c21f52404aeabe516aa7f800587b98cfc"},
+ {file = "markupsafe-3.0.4-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:d920abdfa61279ba1a2ef9484aab07bf03331f8c08a10120fa332353d06e6932"},
+ {file = "markupsafe-3.0.4-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a9f54054101545a9a9cccefddf54316aa6e4491611fcbef9e91b3b6bebec04f6"},
+ {file = "markupsafe-3.0.4-cp314-cp314t-win32.whl", hash = "sha256:12a606a492de952afcb43b59a14aaaaad120e708d3663dd0fdf2d738d427a691"},
+ {file = "markupsafe-3.0.4-cp314-cp314t-win_amd64.whl", hash = "sha256:a18f38cafc329bac5e3c2b96c765b4c96d3d103421ed22ab7988c1e3fce27464"},
+ {file = "markupsafe-3.0.4-cp314-cp314t-win_arm64.whl", hash = "sha256:eba154571c16e032112afac0dc2dfe9e63c2ceb7aedd07bb7eecf2ce26d4dd4c"},
+ {file = "markupsafe-3.0.4-cp315-cp315-android_24_arm64_v8a.whl", hash = "sha256:737c9c3981998eba27f11786f84fddcbabc74068b72a4a1f454ea02094b57b65"},
+ {file = "markupsafe-3.0.4-cp315-cp315-android_24_x86_64.whl", hash = "sha256:489505b03f692c3f376394e49194fa7a7f9e8558d6e293a7056a0032b0c38163"},
+ {file = "markupsafe-3.0.4-cp315-cp315-ios_13_0_arm64_iphoneos.whl", hash = "sha256:077293e425f28ec737dbcad442a71752e28f8ae27cde3d68acd1fb212091cd92"},
+ {file = "markupsafe-3.0.4-cp315-cp315-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:9348cbb300d224fe3b89793262cb093504d4ae927004468463f745188a193e4a"},
+ {file = "markupsafe-3.0.4-cp315-cp315-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:b807e598953730f82e4eae3bd30f6a122cf6b31c398c6b504c0e04c13c170429"},
+ {file = "markupsafe-3.0.4-cp315-cp315-macosx_10_15_x86_64.whl", hash = "sha256:799c39bdf5e2f1292fedd3009f7b3c9e760f10b2420cb9638d56920840ff6db8"},
+ {file = "markupsafe-3.0.4-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:ae9dcb8fbe244cb82f8a6458b455b927a03685e383d9bacf1ea5ce180b96dc97"},
+ {file = "markupsafe-3.0.4-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4bced6e2a6dba6a28f7dd3c6ce14df1b2dd495923f16ea484cad03decd463b2b"},
+ {file = "markupsafe-3.0.4-cp315-cp315-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3882fb412298575bae3b9c46868251f15cc69307359f87bb1b382e53d6e5a2c9"},
+ {file = "markupsafe-3.0.4-cp315-cp315-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:04e7902ba80ee4bac1d50a549606527a1dcf0476cd81403db41099d3b60ec653"},
+ {file = "markupsafe-3.0.4-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:925f929d6b59a8b3f8b8c6ac363cd0af7eecc81efb3071770b3c6717c450a369"},
+ {file = "markupsafe-3.0.4-cp315-cp315-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f68edfc67aabac33708941f26f22a7b8e9f81429bc0cf249fcf7d66b23af8d19"},
+ {file = "markupsafe-3.0.4-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:e5c802729725bd07e2bc3ab7b76dc7e0bbfc53129d8f1eb1c002c24cf774717e"},
+ {file = "markupsafe-3.0.4-cp315-cp315-musllinux_1_2_armv7l.whl", hash = "sha256:55ffd6ce583d97dc71dc92e930324c8c0d25aea7e3ade6ae54ef77cedb096811"},
+ {file = "markupsafe-3.0.4-cp315-cp315-musllinux_1_2_ppc64le.whl", hash = "sha256:2cb3dd71fc6be918ad4264346a8ed69485f9b7ed7bf35495d8e22807cd6b8bea"},
+ {file = "markupsafe-3.0.4-cp315-cp315-musllinux_1_2_riscv64.whl", hash = "sha256:94f5407f7bc64fa6463906b896f9904beeeb7dd8dc116ee8e9056c8714ff9916"},
+ {file = "markupsafe-3.0.4-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:2dad610540cb2e6272855c178f08ae9a1c7ac258a7fb71660553a5f104b42741"},
+ {file = "markupsafe-3.0.4-cp315-cp315-win32.whl", hash = "sha256:03470d1a8268e692ecf79ecd565593e59d44219377a7ead61f1f1b94c1f7ff6b"},
+ {file = "markupsafe-3.0.4-cp315-cp315-win_amd64.whl", hash = "sha256:d882a373d8093c2941e01291b7ced96e9cbe4781da9a7751ca7e6c70385e5214"},
+ {file = "markupsafe-3.0.4-cp315-cp315-win_arm64.whl", hash = "sha256:353bd63081912ab8cfa6a0c7d185934cdf8426f04c618bba6bc4b394f2069b67"},
+ {file = "markupsafe-3.0.4-cp315-cp315t-macosx_10_15_x86_64.whl", hash = "sha256:c61750fadcd119d0825bcb7d7d675dd264dcc89cc05292aab5be68ebdbb374ad"},
+ {file = "markupsafe-3.0.4-cp315-cp315t-macosx_11_0_arm64.whl", hash = "sha256:1c0df495a977d10460a94941799c72d5b5ab03d3858d949b55b5a66c8f371c99"},
+ {file = "markupsafe-3.0.4-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:02fa4acbc6a3fc5c693c34d4dd8c1130b7fe99cc915181b0ddd6f72aeb296002"},
+ {file = "markupsafe-3.0.4-cp315-cp315t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:05295589e619b9bed252a86b532b8e27350abc372d18ba89b59375325e91ec1e"},
+ {file = "markupsafe-3.0.4-cp315-cp315t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:be6cb0c799abb0e2ba3e618e6d28ddddf7e485f6c2ce938dfa237daf3905072c"},
+ {file = "markupsafe-3.0.4-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:26e9867520db70d37f7fb421a7f0d8adb40171011fb84ce869afa1a83370dfa8"},
+ {file = "markupsafe-3.0.4-cp315-cp315t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f03460ff076f70ab595bb45a0205ccea1971443575b6920c52e755dec2b3fbfe"},
+ {file = "markupsafe-3.0.4-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:436e3ffc6310d3c41878c601db29098102fe5d8a467c49da4a4125254e0980f2"},
+ {file = "markupsafe-3.0.4-cp315-cp315t-musllinux_1_2_armv7l.whl", hash = "sha256:4e2c4809c14559aa7ef426f27fb35afbb38104c349a903bf8f3600456764bb38"},
+ {file = "markupsafe-3.0.4-cp315-cp315t-musllinux_1_2_ppc64le.whl", hash = "sha256:da2af0d7aebfc2074080d72efa6ab8317c62481ef1f896f65d9999c1c01f4494"},
+ {file = "markupsafe-3.0.4-cp315-cp315t-musllinux_1_2_riscv64.whl", hash = "sha256:aa2c838cc024642cc04c6854232f32b43e5e22833dd11119c1766c7873b8370d"},
+ {file = "markupsafe-3.0.4-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:b91cc9d336957239ff200f30097e6fea2dc6d6fb3c81e853eaa09eac904fd894"},
+ {file = "markupsafe-3.0.4-cp315-cp315t-win32.whl", hash = "sha256:e49fb0d1ce92cfa0cb198cc5b1b11cdf9d0638658e2a2db2687e39db7c87fc78"},
+ {file = "markupsafe-3.0.4-cp315-cp315t-win_amd64.whl", hash = "sha256:4f6e0852a0283b1b1fd776eeb7b766a5f440b3e2bd31ab51af3b400585f3965c"},
+ {file = "markupsafe-3.0.4-cp315-cp315t-win_arm64.whl", hash = "sha256:39dbacefc411633db5b4378b066a9aca70a3d7e2922c9e578d825f844026eeba"},
+ {file = "markupsafe-3.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f291bcf42ae98eb5107edb162c3c998b4a89648fd8e99ed4cbd12705292788cd"},
+ {file = "markupsafe-3.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ac0c7c9f1609b0c4c114feb1d7a3409564c7fb77e360bed9e97e5d25dfeaf868"},
+ {file = "markupsafe-3.0.4-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6768d67d1bce64270e0fdc2e69309d68b9b18ae56ddf6c711d168e9d051c2cac"},
+ {file = "markupsafe-3.0.4-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:14bd2d845d62ab678eaf81da89d7b621b51756c72346745c1a594c09d49207a2"},
+ {file = "markupsafe-3.0.4-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:007e1ffd9bf65bb6ee96df7b258fc632a4868dd5566037986c64781f35a36e98"},
+ {file = "markupsafe-3.0.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5e8b3d0b18fd623afa12ecb2ce8d8becef69f9b5440c6330c7972200e0bb84b0"},
+ {file = "markupsafe-3.0.4-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:57f9947a7e57a081c1e3e0a2dd0d2dcf290a4531450e6f611e30084c222a7295"},
+ {file = "markupsafe-3.0.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:b61687d0828e72bf5cda24a2690188f37170bd31c9359ac97e4e66569f120a16"},
+ {file = "markupsafe-3.0.4-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:0cee7cb0f9a1b6892ea482237d9403b3d1b4603aee057d0ff01f0fac2d019a97"},
+ {file = "markupsafe-3.0.4-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:94e4c421742086aeee4c32a506eec8859d7634aad943f7e6aacf70f813478768"},
+ {file = "markupsafe-3.0.4-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:9240187afb63d2f9ddc3e032c670356fe941f6e20662ea168a5dc3f1f317e1b3"},
+ {file = "markupsafe-3.0.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e841068dc0be4cb6dfb5c890eb88cbdcff2f4a332393c7ec94e8e618bd32c1a8"},
+ {file = "markupsafe-3.0.4-cp39-cp39-win32.whl", hash = "sha256:f61efe1d2fe0de16158a5fe1d1cf3c14bdb6aecd54d8938fd26512c525c1f624"},
+ {file = "markupsafe-3.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:2b2b1e18af909b448bb3cf9e3433366f7a8726271fc214e8b10e0f62a78c724b"},
+ {file = "markupsafe-3.0.4-cp39-cp39-win_arm64.whl", hash = "sha256:6669c1bf34080161ce49c589cc512ef24d4c704ac9d2b2d3667f519c60418378"},
+ {file = "markupsafe-3.0.4.tar.gz", hash = "sha256:2e9ad7dd851bf45fab9f75cbff4cb493fee9979e8d8c7c9c3ee119022518edd6"},
+]
+
[[package]]
name = "mdurl"
version = "0.1.2"
@@ -884,7 +1145,7 @@ version = "26.1"
description = "Core utilities for Python packages"
optional = false
python-versions = ">=3.8"
-groups = ["dev"]
+groups = ["dev", "docs"]
files = [
{file = "packaging-26.1-py3-none-any.whl", hash = "sha256:5d9c0669c6285e491e0ced2eee587eaf67b670d94a19e94e3984a481aba6802f"},
{file = "packaging-26.1.tar.gz", hash = "sha256:f042152b681c4bfac5cae2742a55e103d27ab2ec0f3d88037136b6bfe7c9c5de"},
@@ -1080,7 +1341,7 @@ version = "2.20.0"
description = "Pygments is a syntax highlighting package written in Python."
optional = false
python-versions = ">=3.9"
-groups = ["dev"]
+groups = ["dev", "docs"]
files = [
{file = "pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176"},
{file = "pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f"},
@@ -1199,6 +1460,89 @@ files = [
{file = "pywin32_ctypes-0.2.3-py3-none-any.whl", hash = "sha256:8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8"},
]
+[[package]]
+name = "pyyaml"
+version = "6.0.3"
+description = "YAML parser and emitter for Python"
+optional = false
+python-versions = ">=3.8"
+groups = ["docs"]
+files = [
+ {file = "PyYAML-6.0.3-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:c2514fceb77bc5e7a2f7adfaa1feb2fb311607c9cb518dbc378688ec73d8292f"},
+ {file = "PyYAML-6.0.3-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9c57bb8c96f6d1808c030b1687b9b5fb476abaa47f0db9c0101f5e9f394e97f4"},
+ {file = "PyYAML-6.0.3-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:efd7b85f94a6f21e4932043973a7ba2613b059c4a000551892ac9f1d11f5baf3"},
+ {file = "PyYAML-6.0.3-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22ba7cfcad58ef3ecddc7ed1db3409af68d023b7f940da23c6c2a1890976eda6"},
+ {file = "PyYAML-6.0.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:6344df0d5755a2c9a276d4473ae6b90647e216ab4757f8426893b5dd2ac3f369"},
+ {file = "PyYAML-6.0.3-cp38-cp38-win32.whl", hash = "sha256:3ff07ec89bae51176c0549bc4c63aa6202991da2d9a6129d7aef7f1407d3f295"},
+ {file = "PyYAML-6.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:5cf4e27da7e3fbed4d6c3d8e797387aaad68102272f8f9752883bc32d61cb87b"},
+ {file = "pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b"},
+ {file = "pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956"},
+ {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8"},
+ {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198"},
+ {file = "pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b"},
+ {file = "pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0"},
+ {file = "pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69"},
+ {file = "pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e"},
+ {file = "pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c"},
+ {file = "pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e"},
+ {file = "pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824"},
+ {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c"},
+ {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00"},
+ {file = "pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d"},
+ {file = "pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a"},
+ {file = "pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4"},
+ {file = "pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b"},
+ {file = "pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf"},
+ {file = "pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196"},
+ {file = "pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0"},
+ {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28"},
+ {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c"},
+ {file = "pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc"},
+ {file = "pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e"},
+ {file = "pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea"},
+ {file = "pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5"},
+ {file = "pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b"},
+ {file = "pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd"},
+ {file = "pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8"},
+ {file = "pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1"},
+ {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c"},
+ {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5"},
+ {file = "pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6"},
+ {file = "pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6"},
+ {file = "pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be"},
+ {file = "pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26"},
+ {file = "pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c"},
+ {file = "pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb"},
+ {file = "pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac"},
+ {file = "pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310"},
+ {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7"},
+ {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788"},
+ {file = "pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5"},
+ {file = "pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764"},
+ {file = "pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35"},
+ {file = "pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac"},
+ {file = "pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3"},
+ {file = "pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3"},
+ {file = "pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba"},
+ {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c"},
+ {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702"},
+ {file = "pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c"},
+ {file = "pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065"},
+ {file = "pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65"},
+ {file = "pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9"},
+ {file = "pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b"},
+ {file = "pyyaml-6.0.3-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:b865addae83924361678b652338317d1bd7e79b1f4596f96b96c77a5a34b34da"},
+ {file = "pyyaml-6.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c3355370a2c156cffb25e876646f149d5d68f5e0a3ce86a5084dd0b64a994917"},
+ {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3c5677e12444c15717b902a5798264fa7909e41153cdf9ef7ad571b704a63dd9"},
+ {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5ed875a24292240029e4483f9d4a4b8a1ae08843b9c54f43fcc11e404532a8a5"},
+ {file = "pyyaml-6.0.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0150219816b6a1fa26fb4699fb7daa9caf09eb1999f3b70fb6e786805e80375a"},
+ {file = "pyyaml-6.0.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fa160448684b4e94d80416c0fa4aac48967a969efe22931448d853ada8baf926"},
+ {file = "pyyaml-6.0.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:27c0abcb4a5dac13684a37f76e701e054692a9b2d3064b70f5e4eb54810553d7"},
+ {file = "pyyaml-6.0.3-cp39-cp39-win32.whl", hash = "sha256:1ebe39cb5fc479422b83de611d14e2c0d3bb2a18bbcb01f229ab3cfbd8fee7a0"},
+ {file = "pyyaml-6.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:2e71d11abed7344e42a8849600193d15b6def118602c4c176f748e4583246007"},
+ {file = "pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f"},
+]
+
[[package]]
name = "readme-renderer"
version = "44.0"
@@ -1225,7 +1569,7 @@ version = "2.32.5"
description = "Python HTTP for Humans."
optional = false
python-versions = ">=3.9"
-groups = ["dev"]
+groups = ["dev", "docs"]
files = [
{file = "requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6"},
{file = "requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf"},
@@ -1335,14 +1679,221 @@ files = [
cryptography = ">=2.0"
jeepney = ">=0.6"
+[[package]]
+name = "snowballstemmer"
+version = "3.1.1"
+description = "This package provides 36 stemmers for 34 languages generated from Snowball algorithms."
+optional = false
+python-versions = ">=3.3"
+groups = ["docs"]
+files = [
+ {file = "snowballstemmer-3.1.1-py3-none-any.whl", hash = "sha256:7e207fa178741da09cdee59d3ecec3827ad5f92b1fc5c9ff3755b639f71f5752"},
+ {file = "snowballstemmer-3.1.1.tar.gz", hash = "sha256:e07bbc54a0d798fe6010a12398422e62a8bfbba95c394fd0956ef58cb4d3e260"},
+]
+
+[[package]]
+name = "sphinx"
+version = "7.4.7"
+description = "Python documentation generator"
+optional = false
+python-versions = ">=3.9"
+groups = ["docs"]
+files = [
+ {file = "sphinx-7.4.7-py3-none-any.whl", hash = "sha256:c2419e2135d11f1951cd994d6eb18a1835bd8fdd8429f9ca375dc1f3281bd239"},
+ {file = "sphinx-7.4.7.tar.gz", hash = "sha256:242f92a7ea7e6c5b406fdc2615413890ba9f699114a9c09192d7dfead2ee9cfe"},
+]
+
+[package.dependencies]
+alabaster = ">=0.7.14,<0.8.0"
+babel = ">=2.13"
+colorama = {version = ">=0.4.6", markers = "sys_platform == \"win32\""}
+docutils = ">=0.20,<0.22"
+imagesize = ">=1.3"
+importlib-metadata = {version = ">=6.0", markers = "python_version < \"3.10\""}
+Jinja2 = ">=3.1"
+packaging = ">=23.0"
+Pygments = ">=2.17"
+requests = ">=2.30.0"
+snowballstemmer = ">=2.2"
+sphinxcontrib-applehelp = "*"
+sphinxcontrib-devhelp = "*"
+sphinxcontrib-htmlhelp = ">=2.0.0"
+sphinxcontrib-jsmath = "*"
+sphinxcontrib-qthelp = "*"
+sphinxcontrib-serializinghtml = ">=1.1.9"
+tomli = {version = ">=2", markers = "python_version < \"3.11\""}
+
+[package.extras]
+docs = ["sphinxcontrib-websupport"]
+lint = ["flake8 (>=6.0)", "importlib-metadata (>=6.0)", "mypy (==1.10.1)", "pytest (>=6.0)", "ruff (==0.5.2)", "sphinx-lint (>=0.9)", "tomli (>=2)", "types-docutils (==0.21.0.20240711)", "types-requests (>=2.30.0)"]
+test = ["cython (>=3.0)", "defusedxml (>=0.7.1)", "pytest (>=8.0)", "setuptools (>=70.0)", "typing_extensions (>=4.9)"]
+
+[[package]]
+name = "sphinx-autoapi"
+version = "3.6.1"
+description = "Sphinx API documentation generator"
+optional = false
+python-versions = ">=3.9"
+groups = ["docs"]
+markers = "python_version < \"3.12\""
+files = [
+ {file = "sphinx_autoapi-3.6.1-py3-none-any.whl", hash = "sha256:6b7af0d5650f6eac1f4b85c1eb9f9a4911160ec7138bdc4451c77a5e94d5832c"},
+ {file = "sphinx_autoapi-3.6.1.tar.gz", hash = "sha256:1ff2992b7d5e39ccf92413098a376e0f91e7b4ca532c4f3e71298dbc8a4a9900"},
+]
+
+[package.dependencies]
+astroid = {version = ">=3.0,<4.0", markers = "python_version < \"3.12\""}
+Jinja2 = "*"
+PyYAML = "*"
+sphinx = ">=7.4.0"
+stdlib_list = {version = "*", markers = "python_version < \"3.10\""}
+
+[[package]]
+name = "sphinx-autoapi"
+version = "3.8.1"
+description = "Sphinx API documentation generator"
+optional = false
+python-versions = ">=3.10"
+groups = ["docs"]
+markers = "python_version >= \"3.12\""
+files = [
+ {file = "sphinx_autoapi-3.8.1-py3-none-any.whl", hash = "sha256:9a3bd3ee1ba82d537f1620a3922292d43ee8b9ff9c69bc198965ac4bcd5a6775"},
+ {file = "sphinx_autoapi-3.8.1.tar.gz", hash = "sha256:04643fc50485039294ace8b660d0d1b821a1686824a975725a5106e8cf1fb30b"},
+]
+
+[package.dependencies]
+astroid = ">=3.0"
+Jinja2 = "*"
+PyYAML = "*"
+sphinx = ">=7.4.0"
+
+[[package]]
+name = "sphinxcontrib-applehelp"
+version = "2.0.0"
+description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books"
+optional = false
+python-versions = ">=3.9"
+groups = ["docs"]
+files = [
+ {file = "sphinxcontrib_applehelp-2.0.0-py3-none-any.whl", hash = "sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5"},
+ {file = "sphinxcontrib_applehelp-2.0.0.tar.gz", hash = "sha256:2f29ef331735ce958efa4734873f084941970894c6090408b079c61b2e1c06d1"},
+]
+
+[package.extras]
+lint = ["mypy", "ruff (==0.5.5)", "types-docutils"]
+standalone = ["Sphinx (>=5)"]
+test = ["pytest"]
+
+[[package]]
+name = "sphinxcontrib-devhelp"
+version = "2.0.0"
+description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents"
+optional = false
+python-versions = ">=3.9"
+groups = ["docs"]
+files = [
+ {file = "sphinxcontrib_devhelp-2.0.0-py3-none-any.whl", hash = "sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2"},
+ {file = "sphinxcontrib_devhelp-2.0.0.tar.gz", hash = "sha256:411f5d96d445d1d73bb5d52133377b4248ec79db5c793ce7dbe59e074b4dd1ad"},
+]
+
+[package.extras]
+lint = ["mypy", "ruff (==0.5.5)", "types-docutils"]
+standalone = ["Sphinx (>=5)"]
+test = ["pytest"]
+
+[[package]]
+name = "sphinxcontrib-htmlhelp"
+version = "2.1.0"
+description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files"
+optional = false
+python-versions = ">=3.9"
+groups = ["docs"]
+files = [
+ {file = "sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl", hash = "sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8"},
+ {file = "sphinxcontrib_htmlhelp-2.1.0.tar.gz", hash = "sha256:c9e2916ace8aad64cc13a0d233ee22317f2b9025b9cf3295249fa985cc7082e9"},
+]
+
+[package.extras]
+lint = ["mypy", "ruff (==0.5.5)", "types-docutils"]
+standalone = ["Sphinx (>=5)"]
+test = ["html5lib", "pytest"]
+
+[[package]]
+name = "sphinxcontrib-jsmath"
+version = "1.0.1"
+description = "A sphinx extension which renders display math in HTML via JavaScript"
+optional = false
+python-versions = ">=3.5"
+groups = ["docs"]
+files = [
+ {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"},
+ {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"},
+]
+
+[package.extras]
+test = ["flake8", "mypy", "pytest"]
+
+[[package]]
+name = "sphinxcontrib-qthelp"
+version = "2.0.0"
+description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents"
+optional = false
+python-versions = ">=3.9"
+groups = ["docs"]
+files = [
+ {file = "sphinxcontrib_qthelp-2.0.0-py3-none-any.whl", hash = "sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb"},
+ {file = "sphinxcontrib_qthelp-2.0.0.tar.gz", hash = "sha256:4fe7d0ac8fc171045be623aba3e2a8f613f8682731f9153bb2e40ece16b9bbab"},
+]
+
+[package.extras]
+lint = ["mypy", "ruff (==0.5.5)", "types-docutils"]
+standalone = ["Sphinx (>=5)"]
+test = ["defusedxml (>=0.7.1)", "pytest"]
+
+[[package]]
+name = "sphinxcontrib-serializinghtml"
+version = "2.0.0"
+description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)"
+optional = false
+python-versions = ">=3.9"
+groups = ["docs"]
+files = [
+ {file = "sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl", hash = "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331"},
+ {file = "sphinxcontrib_serializinghtml-2.0.0.tar.gz", hash = "sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d"},
+]
+
+[package.extras]
+lint = ["mypy", "ruff (==0.5.5)", "types-docutils"]
+standalone = ["Sphinx (>=5)"]
+test = ["pytest"]
+
+[[package]]
+name = "stdlib-list"
+version = "0.12.0"
+description = "A list of Python Standard Libraries (2.7 through 3.14)."
+optional = false
+python-versions = ">=3.9"
+groups = ["docs"]
+markers = "python_version == \"3.9\""
+files = [
+ {file = "stdlib_list-0.12.0-py3-none-any.whl", hash = "sha256:df2d11e97f53812a1756fb5510393a11e3b389ebd9239dc831c7f349957f62f2"},
+ {file = "stdlib_list-0.12.0.tar.gz", hash = "sha256:517824f27ee89e591d8ae7c1dd9ff34f672eae50ee886ea31bb8816d77535675"},
+]
+
+[package.extras]
+dev = ["build", "stdlib-list[doc,lint,test]"]
+doc = ["furo", "sphinx"]
+lint = ["mypy", "ruff"]
+support = ["sphobjinv"]
+test = ["coverage[toml]", "pytest", "pytest-cov"]
+
[[package]]
name = "tomli"
version = "2.4.1"
description = "A lil' TOML parser"
optional = false
python-versions = ">=3.8"
-groups = ["dev"]
-markers = "python_full_version <= \"3.11.0a6\""
+groups = ["dev", "docs"]
files = [
{file = "tomli-2.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f8f0fc26ec2cc2b965b7a3b87cd19c5c6b8c5e5f436b984e85f486d652285c30"},
{file = "tomli-2.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4ab97e64ccda8756376892c53a72bd1f964e519c77236368527f758fbc36a53a"},
@@ -1392,6 +1943,7 @@ files = [
{file = "tomli-2.4.1-py3-none-any.whl", hash = "sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe"},
{file = "tomli-2.4.1.tar.gz", hash = "sha256:7c7e1a961a0b2f2472c1ac5b69affa0ae1132c39adcb67aba98568702b9cc23f"},
]
+markers = {dev = "python_full_version <= \"3.11.0a6\"", docs = "python_version < \"3.11\""}
[[package]]
name = "twine"
@@ -1426,12 +1978,12 @@ version = "4.15.0"
description = "Backported and Experimental Type Hints for Python 3.9+"
optional = false
python-versions = ">=3.9"
-groups = ["main", "dev"]
+groups = ["main", "dev", "docs"]
files = [
{file = "typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548"},
{file = "typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"},
]
-markers = {dev = "python_version < \"3.11\""}
+markers = {dev = "python_version < \"3.11\"", docs = "python_version < \"3.11\""}
[[package]]
name = "typing-inspection"
@@ -1454,7 +2006,7 @@ version = "2.6.3"
description = "HTTP library with thread-safe connection pooling, file post, and more."
optional = false
python-versions = ">=3.9"
-groups = ["dev"]
+groups = ["dev", "docs"]
files = [
{file = "urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4"},
{file = "urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed"},
@@ -1472,12 +2024,12 @@ version = "3.23.1"
description = "Backport of pathlib-compatible object wrapper for zip files"
optional = false
python-versions = ">=3.9"
-groups = ["dev"]
-markers = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and python_version < \"3.12\" or python_version == \"3.9\""
+groups = ["dev", "docs"]
files = [
{file = "zipp-3.23.1-py3-none-any.whl", hash = "sha256:0b3596c50a5c700c9cb40ba8d86d9f2cc4807e9bedb06bcdf7fac85633e444dc"},
{file = "zipp-3.23.1.tar.gz", hash = "sha256:32120e378d32cd9714ad503c1d024619063ec28aad2248dc6672ad13edfa5110"},
]
+markers = {dev = "platform_machine != \"ppc64le\" and platform_machine != \"s390x\" and python_version < \"3.12\" or python_version == \"3.9\"", docs = "python_version == \"3.9\""}
[package.extras]
check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""]
@@ -1490,4 +2042,4 @@ type = ["pytest-mypy"]
[metadata]
lock-version = "2.1"
python-versions = ">=3.9"
-content-hash = "eb1259edb835b0f4e14aa8c9a8e009a36cd031454eb6ed17457a9770b46ddb1a"
+content-hash = "9feb04d59a96ed270d64805f47a7cf7999a01b5eae5a047ac8deddaaf1c521f9"
diff --git a/pyproject.toml b/pyproject.toml
index 0996e4f..9b45659 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -19,6 +19,10 @@ httpx = "^0.28.1"
pydantic = "^2.10.6"
jwcrypto = "^1.5.7"
+[tool.poetry.group.docs.dependencies]
+sphinx = ">=7.4,<9"
+sphinx-autoapi = ">=3.4,<4"
+
[tool.poetry.group.dev.dependencies]
pytest = "^7.2"
pytest-cov = "^4.0"
diff --git a/sphinx/Makefile b/sphinx/Makefile
new file mode 100644
index 0000000..76c1bba
--- /dev/null
+++ b/sphinx/Makefile
@@ -0,0 +1,22 @@
+SPHINXOPTS ?=
+SPHINXBUILD ?= sphinx-build
+SOURCEDIR = .
+BUILDDIR = _build
+
+.PHONY: help Makefile html clean
+
+help:
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+
+html:
+ @$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+
+json:
+ @$(SPHINXBUILD) -b json "$(SOURCEDIR)" "json" $(SPHINXOPTS) $(O)
+
+clean:
+ @$(SPHINXBUILD) -M clean "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+ rm -rf reference/
+
+%: Makefile
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
diff --git a/sphinx/_templates/autoapi/python/module.rst b/sphinx/_templates/autoapi/python/module.rst
new file mode 100644
index 0000000..d077234
--- /dev/null
+++ b/sphinx/_templates/autoapi/python/module.rst
@@ -0,0 +1,173 @@
+{% if obj.display %}
+ {% if is_own_page %}
+{{ obj.id }}
+{{ "=" * obj.id|length }}
+
+.. py:module:: {{ obj.name }}
+
+ {% if obj.docstring %}
+.. autoapi-nested-parse::
+
+ {{ obj.docstring|indent(3) }}
+
+ {% endif %}
+
+ {% block submodules %}
+ {% set visible_subpackages = obj.subpackages|selectattr("display")|list %}
+ {% set visible_submodules = obj.submodules|selectattr("display")|list %}
+ {% set visible_submodules = (visible_subpackages + visible_submodules)|sort %}
+ {% if visible_submodules %}
+Submodules
+----------
+
+.. toctree::
+ :maxdepth: 1
+
+ {% for submodule in visible_submodules %}
+ {{ submodule.include_path }}
+ {% endfor %}
+
+
+ {% endif %}
+ {% endblock %}
+ {% block content %}
+ {% set visible_children = obj.children|selectattr("display")|list %}
+ {% if visible_children %}
+ {% set visible_attributes = visible_children|selectattr("type", "equalto", "data")|list %}
+ {% if visible_attributes %}
+ {% if "attribute" in own_page_types or "show-module-summary" in autoapi_options %}
+Attributes
+----------
+
+ {% if "attribute" in own_page_types %}
+.. toctree::
+ :hidden:
+
+ {% for attribute in visible_attributes %}
+ {{ attribute.include_path }}
+ {% endfor %}
+
+ {% endif %}
+.. autoapisummary::
+
+ {% for attribute in visible_attributes %}
+ {{ attribute.id }}
+ {% endfor %}
+ {% endif %}
+
+
+ {% endif %}
+ {% set visible_exceptions = visible_children|selectattr("type", "equalto", "exception")|list %}
+ {% if visible_exceptions %}
+ {% if "exception" in own_page_types or "show-module-summary" in autoapi_options %}
+Exceptions
+----------
+
+ {% if "exception" in own_page_types %}
+.. toctree::
+ :hidden:
+
+ {% for exception in visible_exceptions %}
+ {{ exception.include_path }}
+ {% endfor %}
+
+ {% endif %}
+.. autoapisummary::
+
+ {% for exception in visible_exceptions %}
+ {{ exception.id }}
+ {% endfor %}
+ {% endif %}
+
+
+ {% endif %}
+ {% set visible_classes = visible_children|selectattr("type", "equalto", "class")|list %}
+ {% if visible_classes %}
+ {% if "class" in own_page_types or "show-module-summary" in autoapi_options %}
+Classes
+-------
+
+ {% if "class" in own_page_types %}
+.. toctree::
+ :hidden:
+
+ {% for klass in visible_classes %}
+ {{ klass.include_path }}
+ {% endfor %}
+
+ {% endif %}
+.. autoapisummary::
+
+ {% for klass in visible_classes %}
+ {{ klass.id }}
+ {% endfor %}
+ {% endif %}
+
+
+ {% endif %}
+ {% set visible_functions = visible_children|selectattr("type", "equalto", "function")|list %}
+ {% if visible_functions %}
+ {% if "function" in own_page_types or "show-module-summary" in autoapi_options %}
+Functions
+---------
+
+ {% if "function" in own_page_types %}
+.. toctree::
+ :hidden:
+
+ {% for function in visible_functions %}
+ {{ function.include_path }}
+ {% endfor %}
+
+ {% endif %}
+.. autoapisummary::
+
+ {% for function in visible_functions %}
+ {{ function.id }}
+ {% endfor %}
+ {% endif %}
+
+
+ {% endif %}
+ {% set this_page_children = visible_children|rejectattr("type", "in", own_page_types)|list %}
+ {% if this_page_children %}
+ {% set importable = this_page_children|selectattr("type", "in", ["class", "exception", "function"])|map(attribute="short_name")|list %}
+ {% if importable %}
+.. rubric:: Import
+
+.. code-block:: python
+
+ {% if importable|length == 1 %}
+ from {{ import_root }}.{{ obj.name }} import {{ importable[0] }}
+ {% else %}
+ from {{ import_root }}.{{ obj.name }} import (
+ {% for name in importable %}
+ {{ name }},
+ {% endfor %}
+ )
+ {% endif %}
+
+ {% endif %}
+{{ obj.type|title }} Contents
+{{ "-" * obj.type|length }}---------
+
+ {% for obj_item in this_page_children %}
+{{ obj_item.render()|indent(0) }}
+ {% endfor %}
+ {% endif %}
+ {% endif %}
+ {% endblock %}
+ {% else %}
+.. py:module:: {{ obj.name }}
+
+ {% if obj.docstring %}
+ .. autoapi-nested-parse::
+
+ {{ obj.docstring|indent(6) }}
+
+ {% endif %}
+ {% for obj_item in visible_children %}
+ {{ obj_item.render()|indent(3) }}
+ {% endfor %}
+ {% endif %}
+{% endif %}
diff --git a/sphinx/conf.py b/sphinx/conf.py
new file mode 100644
index 0000000..3185fad
--- /dev/null
+++ b/sphinx/conf.py
@@ -0,0 +1,147 @@
+import ast
+import os
+import sys
+
+from sphinx.ext import intersphinx
+
+sys.path.insert(0, os.path.abspath("../src"))
+
+# -- Project info -------------------------------------------------------
+
+project = "auth0-server-python"
+author = "Auth0"
+copyright = "2024, Auth0"
+with open(os.path.join(os.path.abspath(".."), ".version")) as _version_file:
+ release = _version_file.read().strip()
+
+# -- Extensions ---------------------------------------------------------
+
+extensions = [
+ "autoapi.extension",
+ "sphinx.ext.napoleon",
+ "sphinx.ext.linkcode",
+ "sphinx.ext.intersphinx",
+]
+
+# -- AutoAPI ------------------------------------------------------------
+
+autoapi_dirs = ["../src"]
+autoapi_type = "python"
+autoapi_root = "reference"
+autoapi_ignore = ["**/tests/**", "**/test_*.py"]
+
+autoapi_options = [
+ "members",
+ "undoc-members",
+ "show-inheritance",
+]
+autoapi_member_order = "groupwise"
+autoapi_keep_files = True
+autoapi_template_dir = "_templates/autoapi"
+autoapi_python_class_content = "class"
+
+# Top-level import package, shown in each module's import block.
+IMPORT_ROOT = "auth0_server_python"
+
+
+def autoapi_prepare_jinja_env(jinja_env):
+ jinja_env.globals["import_root"] = IMPORT_ROOT
+
+
+
+def autoapi_skip_member(app, what, name, obj, skip, options):
+ if what == "class" and name.endswith(".Config"):
+ return True
+ return skip
+
+
+# -- Links to other projects ---------------------------------------------
+
+intersphinx_mapping = {
+ "python": ("https://docs.python.org/3", None),
+}
+
+# -- Signatures ---------------------------------------------------------
+
+# Show `Name(...)` not `module.Name(...)`. The import block gives the full path.
+add_module_names = False
+
+# -- Source links -------------------------------------------------------
+
+REPO_ROOT = os.path.abspath("..")
+GITHUB_BLOB_URL = "https://github.com/auth0/auth0-server-python/blob/main"
+
+
+def _definition_line(path, fullname):
+ """Line where ``fullname`` (``Class.method``) is defined as a class or function, or None."""
+ with open(path) as f:
+ nodes = ast.parse(f.read()).body
+ node = None
+ for name in fullname.split("."):
+ node = next(
+ (
+ n
+ for n in nodes
+ if isinstance(n, (ast.ClassDef, ast.FunctionDef, ast.AsyncFunctionDef))
+ and n.name == name
+ ),
+ None,
+ )
+ if node is None:
+ return None
+ nodes = node.body
+ return node.lineno if node else None
+
+
+def linkcode_resolve(domain, info):
+ if domain != "py" or not info.get("module"):
+ return None
+ base = os.path.join(REPO_ROOT, "src", IMPORT_ROOT, *info["module"].split("."))
+ path = base + ".py" if os.path.isfile(base + ".py") else os.path.join(base, "__init__.py")
+ if not os.path.isfile(path):
+ return None
+ # Attributes and fields have no definition of their own, so they get no link.
+ line = _definition_line(path, info.get("fullname", ""))
+ if line is None:
+ return None
+ return f"{GITHUB_BLOB_URL}/{os.path.relpath(path, REPO_ROOT)}#L{line}"
+
+
+# -- Napoleon (docstring style) -----------------------------------------
+
+napoleon_google_docstring = True
+napoleon_use_param = True
+napoleon_use_rtype = True
+napoleon_preprocess_types = True
+
+# -- General ------------------------------------------------------------
+
+templates_path = ["_templates"]
+
+exclude_patterns = ["_build", "_templates", "Thumbs.db", ".DS_Store"]
+
+def _resolve_root_prefixed(app, env, node, contnode):
+ """Resolve annotations that the default lookup misses.
+
+ `auth0_server_python.x.Y` maps to AutoAPI's root-less `x.Y`, and a bare name such
+ as `Any` is looked up as `typing.Any`.
+ """
+ target = node.get("reftarget", "")
+ if node.get("refdomain") != "py":
+ return None
+ prefix = IMPORT_ROOT + "."
+ if target.startswith(prefix):
+ return env.get_domain("py").resolve_xref(
+ env, node.get("refdoc"), app.builder, node["reftype"], target[len(prefix) :], node, contnode
+ )
+ if "." not in target:
+ retargeted = node.copy()
+ retargeted["reftarget"] = "typing." + target
+ retargeted["reftype"] = "obj"
+ return intersphinx.missing_reference(app, env, retargeted, contnode)
+ return None
+
+
+def setup(app):
+ app.connect("autoapi-skip-member", autoapi_skip_member)
+ app.connect("missing-reference", _resolve_root_prefixed)
diff --git a/sphinx/index.rst b/sphinx/index.rst
new file mode 100644
index 0000000..3792bf6
--- /dev/null
+++ b/sphinx/index.rst
@@ -0,0 +1,8 @@
+auth0-server-python
+===================
+
+Auth0 server-side Python SDK: authentication flows, token management, and session handling
+for web applications.
+
+.. toctree::
+ :hidden:
diff --git a/sphinx/json/index.fjson b/sphinx/json/index.fjson
new file mode 100644
index 0000000..72471df
--- /dev/null
+++ b/sphinx/json/index.fjson
@@ -0,0 +1 @@
+{"parents": [], "prev": null, "next": {"link": "reference/", "title": "API Reference"}, "title": "auth0-server-python", "meta": null, "body": " Auth0 server-side Python SDK: authentication flows, token management, and session handling\nfor web applications.auth0-server-python\u00b6
\n
Import
\nfrom auth0_server_python.auth_schemes.bearer_auth import BearerAuth\nBases: httpx.Auth
Base class for all authentication schemes.
\nTo implement a custom authentication scheme, subclass Auth and override\nthe .auth_flow() method.
\nIf the authentication scheme does I/O such as disk access or network calls, or uses\nsynchronization primitives such as locks, you should override .sync_auth_flow()\nand/or .async_auth_flow() instead of .auth_flow() to provide specialized\nimplementations that will be used by Client and AsyncClient respectively.
\nExecute the authentication flow.
\nTo dispatch a request, yield it:
\n`\nyield request\n`
The client will .send() the response back into the flow generator. You can\naccess it like so:
\n`\nresponse = yield request\n`
A return (or reaching the end of the generator) will result in the\nclient returning the last response obtained from the server.
\nYou can dispatch as many requests as is necessary.
\nBearerAuth\nImport
\nfrom auth0_server_python.auth_schemes.client_assertion import (\n build_client_assertion,\n validate_client_assertion_key,\n)\nMint a private_key_jwt client assertion for token-endpoint authentication (RFC 7523).
\nprivate_key \u2013 The client\u2019s private signing key (PKCS8 PEM string or bytes).
client_id \u2013 The Auth0 client ID, used as both the issuer and subject claim.
issuer \u2013 The authorization server issuer identifier, used as the audience claim.
alg \u2013 The signing algorithm (defaults to \u201cRS256\u201d).
The signed client-assertion JWT.
\nVerify the signing key and algorithm can produce a client assertion.
\nprivate_key \u2013 The client\u2019s private signing key (PKCS8 PEM string or bytes).
alg \u2013 The signing algorithm (defaults to \u201cRS256\u201d).
ConfigurationError \u2013 If the key is malformed or does not match the algorithm.
\nImport
\nfrom auth0_server_python.auth_schemes.dpop_auth import (\n DPoPAuth,\n make_dpop_proof_for_token_endpoint,\n)\nBases: httpx.Auth
Base class for all authentication schemes.
\nTo implement a custom authentication scheme, subclass Auth and override\nthe .auth_flow() method.
\nIf the authentication scheme does I/O such as disk access or network calls, or uses\nsynchronization primitives such as locks, you should override .sync_auth_flow()\nand/or .async_auth_flow() instead of .auth_flow() to provide specialized\nimplementations that will be used by Client and AsyncClient respectively.
\nExecute the authentication flow.
\nTo dispatch a request, yield it:
\n`\nyield request\n`
The client will .send() the response back into the flow generator. You can\naccess it like so:
\n`\nresponse = yield request\n`
A return (or reaching the end of the generator) will result in the\nclient returning the last response obtained from the server.
\nYou can dispatch as many requests as is necessary.
\nBuild a DPoP proof JWT for use at the token endpoint (RFC 9449 \u00a74.2).\nUnlike resource-server proofs, token-endpoint proofs do NOT include ath\nbecause no access token exists yet at issuance time.
\nAnonymous Sessions client for auth0-server-python SDK.\nHandles pre-login anon@ identity operations against the Auth0 anonymous session API.
\nImport
\nfrom auth0_server_python.auth_server.anonymous.client import AnonymousClient\nClient for Auth0 anonymous session operations.
\nMint a fresh anon@<uuid> identity.
\noptions \u2013 Optional bundle of audience/scope/metadata, accepted as a\nCreateAnonymousSessionOptions or a plain dict. Explicit keyword\narguments below always win over the same field on options.
audience \u2013 Audience for the session. Falls back to options.audience,\nthen to the client\u2019s configured default, when omitted.
scope \u2013 Scope for the session. Falls back to options.scope, then to\nthe client\u2019s configured default, when omitted.
metadata \u2013 Metadata to attach at creation, up to 1KB. Cannot be\nchanged after creation. Falls back to options.metadata.
store_options \u2013 Options passed to the anonymous store.
The newly created AnonymousSession.
\nConfigurationError \u2013 No anonymous_store configured.
AnonymousSessionCreateError \u2013 Invalid options, local validation\nfailure, or server rejection.
Mint a short-lived transfer ticket from the active session for login injection.
\norigin_domain \u2013 The domain the /authorize URL is being built for.
store_options \u2013 Options passed to the anonymous store.
The minted transfer ticket, or None.
\nReturn stored anonymous session identity without calling Auth0.
\nstore_options \u2013 Options passed to the anonymous store.
\nThe stored AnonymousSessionData, or None when there is no session,\nthe session is corrupt, or (in resolver mode) the stored domain\ndoes not match the current tenant.
\nReturn a valid anonymous access token, renewing or re-minting as needed.
\nstore_options \u2013 Options passed to the anonymous store.
audience \u2013 Audience to retrieve a token for. Falls back to the\nclient\u2019s configured default when omitted.
scope \u2013 Scope to retrieve a token for. Falls back to the client\u2019s\nconfigured default when omitted.
The current or refreshed AnonymousSession.
\nConfigurationError \u2013 No anonymous_store configured.
AnonymousSessionTokenError \u2013 No active session, unrecoverable\nfailure, or expired session (code session_expired).
Clear the locally-held anonymous session without revoking issued tokens.
\nstore_options \u2013 Options passed to the anonymous store.
\nConfigurationError \u2013 No anonymous_store configured.
\nPure helper functions for anonymous session operations.
\nImport
\nfrom auth0_server_python.auth_server.anonymous.helpers import (\n decode_anonymous_sub,\n find_token_set,\n map_anonymous_error,\n normalize_url,\n parse_anonymous_error_body,\n upsert_token_set,\n validate_metadata,\n)\nExtract the sub claim from a JWT access token without verifying the signature.
\naccess_token \u2013 The token to decode.
\nThe sub claim, or None for opaque tokens, non-JWT strings, or\ntokens with no sub claim.
\nReturn the cached token set for an audience/scope pair, or None.
\nMap a server error response to a typed exception.
\nerror_data \u2013 The parsed error response body.
operation \u2013 One of \u2018create\u2019, \u2018token\u2019.
The exception instance. Does not raise it.
\nNormalize a domain-like value for comparison.
\nvalue \u2013 A domain or URL string, or None.
\nThe value lowercased, scheme-qualified, and without a trailing\nslash. Falsy input is returned unchanged.
\nParse an error response body as JSON.
\nresponse \u2013 The HTTP response to parse.
\nThe parsed JSON body, or a fallback dict with \u2018error_description\u2019\nwhen the body is not valid JSON.
\nReturn a copy of context with the token set for entry\u2019s audience/scope replaced.
\nValidate metadata locally before it reaches the network.
\nmetadata \u2013 The metadata dict to validate, or None.
\nAnonymousSessionCreateError \u2013 metadata is not a dict, contains a\na non-JSON-serializable value, or exceeds 1KB.
\nMFA Client for auth0-server-python SDK.\nHandles Multi-Factor Authentication operations against the Auth0 MFA API.
\nImport
\nfrom auth0_server_python.auth_server.mfa_client import MfaClient\nClient for Auth0 MFA API operations.
\nProvides methods for listing authenticators, enrolling new authenticators,\ndeleting authenticators, challenging authenticators, and verifying MFA codes.
\nAll public API methods accept an encrypted mfa_token (as issued by\nMfaRequiredError) and decrypt it internally. Callers never handle the\nraw Auth0 mfa_token directly.
\nInitiates an MFA challenge for user verification.
\noptions \u2013 Dict containing \u2018mfa_token\u2019, \u2018factor_type\u2019 (otp, sms, voice, email, auth0),\nand optionally \u2018authenticator_id\u2019.
store_options \u2013 Optional options passed to the State Store (e.g. request/response).
ChallengeResponse with challenge details.
\nMfaChallengeError \u2013 When the challenge fails.
ConfigurationError \u2013 If neither client_secret nor client_assertion_signing_key is configured.
Decrypt an MFA token and validate TTL.
\nEnrolls a new MFA authenticator for the user.
\noptions \u2013 Dict containing enrollment parameters.\nRequired: \u2018mfa_token\u2019, \u2018factor_type\u2019 (otp, sms, voice, email, auth0).\nOptional: \u2018phone_number\u2019, \u2018email\u2019.
store_options \u2013 Optional options passed to the State Store (e.g. request/response).
OtpEnrollmentResponse or OobEnrollmentResponse.
\nMfaEnrollmentError \u2013 When enrollment fails.
\nLists all MFA authenticators enrolled by the user.
\noptions \u2013 Dict containing \u2018mfa_token\u2019 (raw, decrypted).
store_options \u2013 Optional options passed to the State Store (e.g. request/response).
List of enrolled authenticators.
\nMfaListAuthenticatorsError \u2013 When the request fails.
\nVerifies an MFA code and completes authentication.
\nSupports OTP, OOB (with binding code), and recovery code verification.
\nIf Auth0 returns \u2018mfa_required\u2019 again (chained MFA), raises MfaRequiredError\nwith a raw mfa_token. The framework SDK (e.g. auth0-fastapi) is responsible\nfor encrypting the token before returning it to the client.
\noptions \u2013 Dict containing \u2018mfa_token\u2019 and one of:\n- \u2018otp\u2019: OTP code\n- \u2018oob_code\u2019 + \u2018binding_code\u2019: OOB verification\n- \u2018recovery_code\u2019: Recovery code\n- \u2018persist\u2019: bool (optional, default=False) - Persist tokens to state store\n- \u2018audience\u2019: str (optional, required if persist=True) - Audience for token_set\n- \u2018scope\u2019: str (optional) - Scope for token_set
store_options \u2013 Optional options passed to the State Store (e.g. request/response).
dpop_key \u2013 Optional EC P-256 JWK to DPoP-bind the token. Pass the same\nkey used at login (e.g. given to signin_with_passkey) to preserve\nthe sender constraint through step-up. Never stored by the SDK.
MfaVerifyResponse with access_token, token_type, etc.
\nMfaVerifyError \u2013 When verification fails, or when dpop_key was supplied\nbut the server returned an unbound (Bearer) token.
MfaRequiredError \u2013 When chained MFA is required.
ConfigurationError \u2013 If dpop_key is combined with use_mtls. DPoP and mTLS\nuse incompatible token-binding mechanisms and cannot be used together.
ConfigurationError \u2013 If neither client_secret nor client_assertion_signing_key is configured.
Import
\nfrom auth0_server_python.auth_server.my_account_client import MyAccountClient\nClient for interacting with the Auth0 MyAccount API.
\nComplete the connected account flow after user authorization.
\naccess_token \u2013 User\u2019s access token for authentication
request \u2013 Request containing the auth session, connect code, and redirect URI
Response containing the connected account details including ID, connection, and scopes
\nMyAccountApiError \u2013 If the API returns an error response
ApiError \u2013 If the request fails due to network or other issues
Initiate the connected account flow.
\naccess_token \u2013 User\u2019s access token for authentication
request \u2013 Request containing connection details and configuration
Response containing the connect URI and authentication session details
\nMyAccountApiError \u2013 If the API returns an error response
ApiError \u2013 If the request fails due to network or other issues
Delete an authentication method by ID.
\naccess_token \u2013 User\u2019s access token (scope: delete:me:authentication-methods).
authentication_method_id \u2013 ID of the authentication method to delete.
dpop_key \u2013 Optional EC P-256 key for DPoP-bound token presentation.
MissingRequiredArgumentError \u2013 If access_token or authentication_method_id is not provided.
MyAccountApiError \u2013 If the API returns an error response.
ApiError \u2013 If the request fails due to network or other issues.
Delete a connected account for the authenticated user.
\naccess_token \u2013 User\u2019s access token for authentication
connected_account_id \u2013 ID of the connected account to delete
None
\nMissingRequiredArgumentError \u2013 If access_token or connected_account_id is not provided
MyAccountApiError \u2013 If the API returns an error response
ApiError \u2013 If the request fails due to network or other issues
Step 1 of 2: Start enrollment (POST /me/v1/authentication-methods).
\nFor passkey enrollment, pass the returned authn_params_public_key to\nnavigator.credentials.create(), then call verify_authentication_method()\nwith the auth_session and credential result.
\nRequires scope: create:me:authentication-methods
\nRetrieve a single authentication method by ID.
\naccess_token \u2013 User\u2019s access token (scope: read:me:authentication-methods).
authentication_method_id \u2013 ID of the authentication method to retrieve.
dpop_key \u2013 Optional EC P-256 key for DPoP-bound token presentation.
AuthenticationMethod for the requested ID.
\nMissingRequiredArgumentError \u2013 If access_token or authentication_method_id is not provided.
MyAccountApiError \u2013 If the API returns an error response.
ApiError \u2013 If the request fails due to network or other issues.
Retrieve the list of factors available for enrollment.
\naccess_token \u2013 User\u2019s access token (scope: read:me:factors).
dpop_key \u2013 Optional EC P-256 key for DPoP-bound token presentation.
GetFactorsResponse containing the available factors.
\nMissingRequiredArgumentError \u2013 If access_token is not provided.
MyAccountApiError \u2013 If the API returns an error response.
ApiError \u2013 If the request fails due to network or other issues.
List the user\u2019s enrolled authentication methods.
\naccess_token \u2013 User\u2019s access token (scope: read:me:authentication-methods).
type_filter \u2013 Optional authentication-method type to filter results by.
dpop_key \u2013 Optional EC P-256 key for DPoP-bound token presentation.
ListAuthenticationMethodsResponse containing the enrolled methods.
\nMissingRequiredArgumentError \u2013 If access_token is not provided.
MyAccountApiError \u2013 If the API returns an error response.
ApiError \u2013 If the request fails due to network or other issues.
List available connections that support connected accounts.
\naccess_token \u2013 User\u2019s access token for authentication
from_param \u2013 Optional pagination cursor for fetching next page of results
take \u2013 Optional number of results to return (must be a positive integer)
Response containing the list of available connections and pagination details
\nMissingRequiredArgumentError \u2013 If access_token is not provided
InvalidArgumentError \u2013 If take parameter is not a positive integer
MyAccountApiError \u2013 If the API returns an error response
ApiError \u2013 If the request fails due to network or other issues
List connected accounts for the authenticated user.
\naccess_token \u2013 User\u2019s access token for authentication
connection \u2013 Optional filter to list accounts for a specific connection
from_param \u2013 Optional pagination cursor for fetching next page of results
take \u2013 Optional number of results to return (must be a positive integer)
Response containing the list of connected accounts and pagination details
\nMissingRequiredArgumentError \u2013 If access_token is not provided
InvalidArgumentError \u2013 If take parameter is not a positive integer
MyAccountApiError \u2013 If the API returns an error response
ApiError \u2013 If the request fails due to network or other issues
Update an authentication method by ID.
\naccess_token \u2013 User\u2019s access token (scope: update:me:authentication-methods).
authentication_method_id \u2013 ID of the authentication method to update.
request \u2013 Fields to update on the authentication method.
dpop_key \u2013 Optional EC P-256 key for DPoP-bound token presentation.
AuthenticationMethod reflecting the updated state.
\nMissingRequiredArgumentError \u2013 If access_token, authentication_method_id, or request is not provided.
MyAccountApiError \u2013 If the API returns an error response.
ApiError \u2013 If the request fails due to network or other issues.
Step 2 of 2: Verify enrollment (POST /me/v1/authentication-methods/{id}/verify).
\nRequires scope: create:me:authentication-methods
\nGet the MyAccount API audience URL.
\nThe audience URL for the MyAccount API
\nMyAccountClientMyAccountClient.complete_connect_account()MyAccountClient.connect_account()MyAccountClient.delete_authentication_method()MyAccountClient.delete_connected_account()MyAccountClient.enroll_authentication_method()MyAccountClient.get_authentication_method()MyAccountClient.get_factors()MyAccountClient.list_authentication_methods()MyAccountClient.list_connected_account_connections()MyAccountClient.list_connected_accounts()MyAccountClient.update_authentication_method()MyAccountClient.verify_authentication_method()MyAccountClient.audiencePasswordless Client for auth0-server-python SDK.
\nImplements embedded passwordless login for a client:
\nEmail OTP / SMS OTP - start() sends a code, verify() exchanges it for\ntokens via the passwordless-OTP grant and establishes a server-side session.
Magic link - start(send="link") emails a one-click link. Completion is\nhandled by the standard callback (ServerClient.complete_interactive_login),\nnot by verify().
Tokens never leave the server. The browser holds only the opaque session.
\nImport
\nfrom auth0_server_python.auth_server.passwordless_client import PasswordlessClient\nClient for Auth0 embedded passwordless operations.
\nComposes the parent ServerClient to reuse domain resolution, OIDC\ndiscovery, JWKS/ID-token verification, and session persistence.
Start a passwordless flow by sending an OTP code or a magic link.
\noptions \u2013 StartPasswordlessEmailOptions or\nStartPasswordlessSmsOptions.
store_options \u2013 Options passed to the transaction store (e.g.\nrequest/response). Required for the magic-link flow so the\ntransaction cookie can be written.
PasswordlessStartResult with Auth0\u2019s start response payload.
\nPasswordlessStartError \u2013 When POST /passwordless/start fails.
InvalidArgumentError \u2013 When options is not a recognized type, or\ncaller auth_params contains an SDK-owned or unrecognized key.
MissingRequiredArgumentError \u2013 When a magic link is requested but no\nredirect_uri is configured on the client, or store_options\nis not provided.
ConfigurationError \u2013 When client authentication is not configured.
Verify a passwordless OTP and establish a server-side session.
\nOnly for the OTP flows (email/SMS code). Magic link completes via the\nstandard callback handler, not here.
\noptions \u2013 VerifyPasswordlessOtpOptions.
store_options \u2013 Options passed to the state store (e.g.\nrequest/response) so the session can be written.
Dict containing state_data for the established session.
PasswordlessVerifyError \u2013 When token exchange or ID-token\nverification fails.
MfaRequiredError \u2013 When Auth0 requires MFA before completing login.
ApiError \u2013 When fetching the JWKS used to verify the ID token fails.
SessionExpiredError \u2013 When the token\u2019s session-expiry ceiling is\nalready in the past.
ConfigurationError \u2013 When client authentication is not configured.
Main client for auth0-server-python SDK.\nHandles authentication flows, token management, and user sessions.
\nImport
\nfrom auth0_server_python.auth_server.server_client import (\n ServerClient,\n is_federated_domain,\n)\nBases: Generic[TStoreOptions]
Main client for Auth0 server SDK. Handles authentication flows, session management,\nand token operations using Authlib for OIDC functionality.
\nPerforms backchannel authentication with Auth0.
\nThis method starts a Client-Initiated Backchannel Authentication (CIBA) flow,\nwhich allows an application to request authentication from a user via a separate\ndevice or channel.
\nThen polls the token endpoint until the user has authenticated or the request times out.
\noptions (dict) \u2013
Configuration options for backchannel authentication\n- login_hint (dict): Must contain a \u2018sub\u2019 field (e.g., {\u2018sub\u2019: \u2018user_id\u2019}).\n- binding_message (str, optional): Message to display to the user.\n- authorization_params (dict, optional): Additional authorization parameters.
\n\n\n\n\n
\n- \n
requested_expiry (int, optional): Requested expiry time in seconds, default is 30 secs.
- \n
authorization_details (str, optional): JSON string for RAR.
Token response data from the backchannel authentication
\nApiError \u2013 If the backchannel authentication fails
EnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.
Retrieves a token by exchanging an auth_req_id.
\nauth_req_id (str) \u2013 The authentication request ID obtained from bc-authorize
store_options \u2013 Optional options used to pass to the Transaction and State Store.
AccessTokenError \u2013 If there was an issue requesting the access token.
ConfigurationError \u2013 If no client authentication is configured.
A dictionary containing the token response from Auth0.
\nBuilds the redirect URL that hands the STT to the target app\u2019s login URL.
\ntarget_login_url must be a trusted, app-controlled absolute https URL (http is allowed\nonly for localhost/loopback) - the STT is a single-use credential and must not leak to an\nuntrusted host.
\ntarget_login_url \u2013 The target app\u2019s login URL (absolute, https)
result \u2013 The SessionTransferTokenResult from request_session_transfer_token
organization \u2013 Organization identifier to forward (optional)
A URL string with session_transfer_token (and organization) as query parameters
\nMissingRequiredArgumentError \u2013 If target_login_url is missing or blank
InvalidArgumentError \u2013 If target_login_url is not an absolute https URL, or organization is blank
EnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.
Handles the redirect callback to complete the connect account flow for linking a third-party\naccount to the user\u2019s profile.
\nThis works similar to the redirect from the login flow except it verifies the connect_code\nwith the My Account API rather than the code with the Authorization Server.
\nurl \u2013 The full callback URL including query parameters
store_options \u2013 Optional options used to pass to the Transaction and State Store.
A response from the connect account flow.
\nEnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.
\nCompletes the login process after user is redirected back.
\nurl \u2013 The full callback URL including query parameters
store_options \u2013 Options to pass to the state store
Dictionary containing session data and app state
\nConfigurationError \u2013 If no client authentication is configured.
\nCompletes the user linking process.
\nurl \u2013 The URL from which the query params should be extracted
store_options \u2013 Optional options for the stores
Dictionary containing the original app state
\nEnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.
\nCompletes the user unlinking process.
\nurl \u2013 The URL from which the query params should be extracted
store_options \u2013 Optional options for the stores
Dictionary containing the original app state
\nEnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.
\nExchanges a custom token for Auth0 tokens using RFC 8693.
\nThis method implements the OAuth 2.0 Token Exchange specification,\nallowing you to exchange external custom tokens for Auth0 access tokens.
\noptions \u2013 Configuration for the token exchange
store_options \u2013 Optional options used to pass to the Transaction and State Store.
TokenExchangeResponse containing access_token and metadata
\nCustomTokenExchangeError \u2013 If token exchange fails
MissingRequiredArgumentError \u2013 If required parameters are missing
ConfigurationError \u2013 If no client authentication is configured
Example
\n```python\nresponse = await client.custom_token_exchange(
\n\n\n\n\n\n
\n- CustomTokenExchangeOptions(
- \n
subject_token=\u201dcustom-token-value\u201d,\nsubject_token_type=\u201durn:acme:mcp-token\u201d,\naudience=\u201dhttps://api.example.com\u201d,\nscope=\u201dread:data write:data\u201d
\n)
\n
Deletes a connected account.
\nconnected_account_id (str) \u2013 The ID of the connected account to delete.
store_options \u2013 Optional options used to pass to the Transaction and State Store.
Auth0Error \u2013 If there is an error retrieving the access token.
MyAccountApiError \u2013 If the My Account API returns an error response.
EnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.
Retrieves the access token from the store, or calls Auth0 when the access token\nis expired and a refresh token is available in the store.\nAlso updates the store when a new token was retrieved from Auth0.
\nstore_options \u2013 Optional options used to pass to the Transaction and State Store.
\nThe access token, retrieved from the store or Auth0.
\nAccessTokenError \u2013 If the token is expired and no refresh token is available.
EnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.
Retrieves an access token for a connection.
\nThis method attempts to obtain an access token for a specified connection.\nIt first checks if a refresh token exists in the store.\nIf no refresh token is found, it throws an AccessTokenForConnectionError indicating\nthat the refresh token was not found.
\noptions \u2013 Options for retrieving an access token for a connection.
store_options \u2013 Optional options used to pass to the Transaction and State Store.
The access token for the connection
\nAccessTokenForConnectionError \u2013 If the access token was not found or\nthere was an issue requesting the access token.
EnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.
Retrieve the user session from the store, or None if no session found.
\nstore_options \u2013 Optional options used to pass to the Transaction and State Store.
\nThe session, or None if no session found in the store.
\nEnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.
\nRetrieves a token by exchanging a refresh token.
\noptions \u2013 Dictionary containing the refresh token and any additional options.\nMust include a \u2018refresh_token\u2019 key.
\nAccessTokenError \u2013 If there was an issue requesting the access token.
ConfigurationError \u2013 If no client authentication is configured.
EnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.
A dictionary containing the token response from Auth0.
\nRetrieves a token for a connection.
\noptions \u2013 Options for retrieving an access token for a connection.\nMust include \u2018connection\u2019 and \u2018refresh_token\u2019 keys.\nMay optionally include \u2018login_hint\u2019.
\nAccessTokenForConnectionError \u2013 If there was an issue requesting the access token.
ConfigurationError \u2013 If no client authentication is configured.
EnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.
Dictionary containing the token response with accessToken, expiresAt, and scope.
\nRetrieves the user from the store, or None if no user found.
\nstore_options \u2013 Optional options used to pass to the Transaction and State Store.
\nThe user, or None if no user found in the store.
\nEnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.
\nHandles backchannel logout requests.
\nlogout_token \u2013 The logout token sent by Auth0
store_options \u2013 Options to pass to the state store
Start backchannel authentication with Auth0.
\nThis method starts a Client-Initiated Backchannel Authentication (CIBA) flow,\nwhich allows an application to request authentication from a user via a separate\ndevice or channel.
\noptions (dict) \u2013
Configuration options for backchannel authentication\n- login_hint (dict): Must contain a \u2018sub\u2019 field (e.g., {\u2018sub\u2019: \u2018user_id\u2019}).\n- binding_message (str, optional): Message to display to the user.\n- authorization_params (dict, optional): Additional authorization parameters.
\n\n\n\n\n
\n- \n
requested_expiry (int, optional): Requested expiry time in seconds, default is 30 secs.
- \n
authorization_details (str, optional): JSON string for RAR.
auth_req_id (str): The authentication request ID.
expires_in (int): Time in seconds until the request expires.
interval (int, optional): Polling interval in seconds.
ApiError \u2013 If the backchannel authentication fails
\nRetrieves a list of available connections that can be used connected accounts for the authenticated user.
\nfrom_param (Optional[str], optional) \u2013 A pagination token indicating where to start retrieving results, obtained from a prior request. Defaults to None.
take (Optional[int], optional) \u2013 The maximum number of connections to retrieve. Defaults to None.
store_options \u2013 Optional options used to pass to the Transaction and State Store.
The response object containing the list of connected account connections.
\nAuth0Error \u2013 If there is an error retrieving the access token.
MyAccountApiError \u2013 If the My Account API returns an error response.
EnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.
Retrieves a list of connected accounts for the authenticated user.
\nconnection (Optional[str], optional) \u2013 Filter results to a specific connection. Defaults to None.
from_param (Optional[str], optional) \u2013 A pagination token indicating where to start retrieving results, obtained from a prior request. Defaults to None.
take (Optional[int], optional) \u2013 The maximum number of connections to retrieve. Defaults to None.
store_options \u2013 Optional options used to pass to the Transaction and State Store.
The response object containing the list of connected accounts.
\nAuth0Error \u2013 If there is an error retrieving the access token.
MyAccountApiError \u2013 If the My Account API returns an error response.
EnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.
Logs in using Client-Initiated Backchannel Authentication.
\nNote
\nUsing Client-Initiated Backchannel Authentication requires the feature\nto be enabled in the Auth0 dashboard.
\noptions \u2013 Options used to configure the backchannel login process.
store_options \u2013 Optional options used to pass to the Transaction and State Store.
A dictionary containing the authorizationDetails (when RAR was used).
\nEnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.
\nPerforms token exchange and establishes a user session.
\nThis method combines custom_token_exchange() with session management,\nexchanging a custom token for Auth0 tokens and storing the session state.
\noptions \u2013 Configuration for token exchange and login
store_options \u2013 Optional options for state store (e.g., request/response for cookies)
LoginWithCustomTokenExchangeResult containing session state
\nCustomTokenExchangeError \u2013 If token exchange fails
ApiError \u2013 If session management fails
EnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.
Example
\n```python\nresult = await client.login_with_custom_token_exchange(
\n\n\n\n\n\n
\n- LoginWithCustomTokenExchangeOptions(
- \n
subject_token=\u201dcustom-token-value\u201d,\nsubject_token_type=\u201durn:acme:mcp-token\u201d,\naudience=\u201dhttps://api.example.com\u201d
\n),\nstore_options={\u201crequest\u201d: request, \u201cresponse\u201d: response}
\n
Step 1 of 2: Initiate a passkey login challenge (POST /passkey/challenge).
\nPass the returned authn_params_public_key to navigator.credentials.get(),\nthen call signin_with_passkey() with the auth_session and credential result.
\nusername \u2013 Deprecated and ignored. Auth0 rejects username on the\npasskey login challenge (the user is identified by the selected\ncredential, not by a supplied username), so it is never forwarded.\nRetained for backward compatibility and will be removed in a future\nmajor release. Passing it emits a DeprecationWarning.
connection \u2013 Auth0 database connection name (realm).
organization \u2013 Auth0 organization ID or name.
store_options \u2013 Optional options for domain resolution.
client_ip \u2013 Optional end user IP address, sent as the auth0-forwarded-for header.
PasskeyLoginChallengeResponse with auth_session and authn_params_public_key.
\nPasskeyError \u2013 If the challenge request fails or the request is rate limited.
EnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.
Step 1 of 2: Initiate a passkey signup challenge (POST /passkey/register).
\nPass the returned authn_params_public_key to navigator.credentials.create(),\nthen call signin_with_passkey() with the auth_session and credential result.
\nuser_profile \u2013 Optional user profile data (email, name, username, etc.).\nUse PasskeyUserProfile \u2014 supports extra fields for forward compatibility.
connection \u2013 Auth0 database connection name (realm).
organization \u2013 Auth0 organization ID or name.
user_metadata \u2013 Optional custom metadata added at the root of the request body,\nnot nested inside user_profile (per Auth0 API spec).
store_options \u2013 Optional options for domain resolution.
delivery_method \u2013 Optional channel for the phone verification code, \u201ctext\u201d or \u201cvoice\u201d.
client_ip \u2013 Optional end user IP address, sent as the auth0-forwarded-for header.
PasskeySignupChallengeResponse with auth_session, authn_params_public_key and,\nwhen the connection requires verification, verification_required.
\nInvalidArgumentError \u2013 If delivery_method is set to a value other than \u201ctext\u201d or \u201cvoice\u201d.
PasskeyError \u2013 If the challenge request fails or the request is rate limited.
EnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.
Requests a Session Transfer Token (STT) for impersonation via session transfer.
\nPerforms a custom token exchange against the session_transfer audience. The returned\nSTT is opaque and single-use; hand it to build_session_transfer_redirect and do not\ndecode or store it. The act claim is not on this result.
\nsubject_token \u2013 Your proof of which customer to impersonate (validated by your Action)
subject_token_type \u2013 The subject token type URI routing to your CTE Profile
actor_token \u2013 The acting party\u2019s token; optional. Defaults to the agent session\u2019s ID token
actor_token_type \u2013 Type URI of the actor token; defaults to the ID token URN
scope \u2013 Space-delimited list of scopes (optional)
organization \u2013 Organization identifier (optional)
store_options \u2013 Optional options used to read the agent session and resolve the domain
SessionTransferTokenResult containing the STT and its metadata
\nCustomTokenExchangeError \u2013 If no actor can be resolved or the exchange fails
InvalidArgumentError \u2013 If organization is provided but blank
EnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.
Completes passkey authentication by exchanging the WebAuthn assertion\nfor tokens and establishing a server-side session.
\nThis is step 2 of 2: call passkey_signup_challenge or passkey_login_challenge\nfirst to obtain auth_session and the WebAuthn challenge options.
\nauth_session \u2013 Session credential from passkey_signup_challenge or passkey_login_challenge.
authn_response \u2013 Serialized WebAuthn credential from navigator.credentials.create/get.
store_options \u2013 Options passed to the state store (e.g., request/response for cookies).\nPassed through to the store on every call.
connection \u2013 Auth0 database connection name (realm).
organization \u2013 Auth0 organization ID or name.
scope \u2013 OAuth2 scope string.
audience \u2013 Target API audience.
dpop_key \u2013 Optional EC P-256 JWK for DPoP-bound token exchange. When provided,\nattaches a DPoP proof header so Auth0 issues a DPoP-bound token\n(token_type: DPoP). Required when the tenant mandates DPoP binding.
verification \u2013 Optional signup codes keyed by \u201cemail\u201d or \u201cphone\u201d, not used for login.
client_ip \u2013 Optional end user IP address, sent as the auth0-forwarded-for header.
PasskeyLoginResult containing state_data with user claims and token sets,\nconsistent with complete_interactive_login and login_with_custom_token_exchange.
\nMissingRequiredArgumentError \u2013 If auth_session or authn_response is missing.
ConfigurationError \u2013 If dpop_key is combined with use_mtls. DPoP and mTLS\nuse incompatible token-binding mechanisms and cannot be used together.
InvalidArgumentError \u2013 If verification has a key other than \u201cemail\u201d or \u201cphone\u201d,\nor a code that is not a string.
PasskeyError \u2013 If token exchange or session creation fails, or the request is\nrate limited.
MfaRequiredError \u2013 If the tenant requires step-up MFA after the passkey sign-in.
ApiError \u2013 If the ID token fails signature, audience, expiry or JWKS validation.
IssuerValidationError \u2013 If the ID token issuer does not match the tenant.
OrganizationTokenValidationError \u2013 If an organization was requested but the\ntoken response included no ID token, or the ID token\u2019s org claim does\nnot match.
EnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.
Initiates the connect account flow for linking a third-party account to the user\u2019s profile.
\nThis method generates PKCE parameters, creates a transaction and calls the My Account API\nto create a connect account request, returning /connect url containing a ticket.
\noptions \u2013 Options for retrieving an access token for a connection.
store_options \u2013 Optional options used to pass to the Transaction and State Store.
The a connect URL containing a ticket to redirect the user to.
\nEnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.
\nBegin an Enterprise Connect login from an email address.
\nRuns WebFinger discovery on the email domain. When the domain is managed,\nbuilds an authorization URL with the email as login_hint so Auth0 can\nresolve the connection and organization. When it is not managed, returns\nNone so the caller can fall back to its own login. A static client-level\norganization is never forwarded - Auth0 resolves it from the email.
\noptions \u2013 Enterprise login options carrying the user\u2019s email.
store_options \u2013 Per-request store options threaded through the flow.
The authorization URL to redirect to, or None when the domain is not\nmanaged by Auth0.
\nMissingRequiredArgumentError \u2013 If no email is provided.
InvalidArgumentError \u2013 If the email is not a valid address.
Starts the interactive login process and returns a URL to redirect to.
\noptions \u2013 Configuration options for the login process
store_options \u2013 Store options containing request/response
Authorization URL to redirect the user to
\nConfigurationError \u2013 If no client authentication is configured.
\nStarts the user linking process, and returns a URL to redirect the user-agent to.
\noptions \u2013 Options used to configure the user linking process.
store_options \u2013 Optional options used to pass to the Transaction and State Store.
URL to redirect the user to for authentication.
\nEnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.
\nStarts the user unlinking process, and returns a URL to redirect the user-agent to.
\noptions \u2013 Options used to configure the user unlinking process.
store_options \u2013 Optional options used to pass to the Transaction and State Store.
URL to redirect the user to for authentication.
\nEnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.
\nAccess the anonymous sessions client for pre-login anon@ identity operations.
\nAccess the MFA client for multi-factor authentication operations.
\nAccess the passwordless client for embedded passwordless operations.
\nCheck whether an email domain is Auth0-managed for enterprise SSO via WebFinger.
\nA stateless routing hint, not an authorization decision. Fails closed to False\non any error or non-200/non-404 response. Prefer ServerClient in normal\nuse, which caches results and resolves the domain per request. This standalone\nform is for callers that need a one-off check without a client instance.
\ndomain \u2013 The Auth0 domain to query.
email_domain \u2013 The email domain to check (case-insensitive).
timeout \u2013 Per-request timeout in seconds.
True only when Auth0 reports the domain as a managed OIDC issuer.
\nServerClientServerClient.backchannel_authentication()ServerClient.backchannel_authentication_grant()ServerClient.build_session_transfer_redirect()ServerClient.complete_connect_account()ServerClient.complete_interactive_login()ServerClient.complete_link_user()ServerClient.complete_unlink_user()ServerClient.custom_token_exchange()ServerClient.delete_connected_account()ServerClient.get_access_token()ServerClient.get_access_token_for_connection()ServerClient.get_session()ServerClient.get_token_by_refresh_token()ServerClient.get_token_for_connection()ServerClient.get_user()ServerClient.handle_backchannel_logout()ServerClient.initiate_backchannel_authentication()ServerClient.list_connected_account_connections()ServerClient.list_connected_accounts()ServerClient.login_backchannel()ServerClient.login_with_custom_token_exchange()ServerClient.logout()ServerClient.passkey_login_challenge()ServerClient.passkey_signup_challenge()ServerClient.request_session_transfer_token()ServerClient.signin_with_passkey()ServerClient.start_connect_account()ServerClient.start_enterprise_login()ServerClient.start_interactive_login()ServerClient.start_link_user()ServerClient.start_unlink_user()ServerClient.DEFAULT_AUDIENCE_STATE_KEYServerClient.GRANT_TYPE_PASSKEYServerClient.PASSKEY_CHALLENGE_PATHServerClient.PASSKEY_REGISTER_PATHServerClient.PASSKEY_VERIFICATION_IDENTIFIERSServerClient.anonymousServerClient.mfaServerClient.passwordlessis_federated_domain()ID_TOKEN_TYPEINTERNAL_AUTHORIZE_PARAMSSESSION_TRANSFER_TOKEN_TYPETStoreOptionsWEBFINGER_CACHE_MAX_ENTRIESWEBFINGER_CACHE_TTL_FOUNDWEBFINGER_CACHE_TTL_NOT_FOUNDWEBFINGER_ISSUER_RELloggerType definitions for auth0-server-python SDK.\nThese Pydantic models provide type safety and validation for all SDK data structures.
\nImport
\nfrom auth0_server_python.auth_types import (\n AccessTokenForConnectionOptions,\n AnonymousCreateTokenResponse,\n AnonymousSession,\n AnonymousSessionContext,\n AnonymousSessionData,\n AnonymousTokenResponse,\n AnonymousTokenSetEntry,\n AnonymousTransferTokenResponse,\n AuthenticationMethod,\n AuthenticatorResponse,\n AuthorizationDetails,\n AuthorizationParameters,\n ChallengeOptions,\n ChallengeResponse,\n CompleteConnectAccountRequest,\n CompleteConnectAccountResponse,\n ConnectAccountOptions,\n ConnectAccountRequest,\n ConnectAccountResponse,\n ConnectParams,\n ConnectedAccount,\n ConnectedAccountBase,\n ConnectedAccountConnection,\n ConnectionTokenSet,\n CreateAnonymousSessionOptions,\n CustomTokenExchangeOptions,\n DomainResolverContext,\n EncryptedStoreOptions,\n EnrollAuthenticationMethodRequest,\n EnrollEmailOptions,\n EnrollOobOptions,\n EnrollOtpOptions,\n EnrollmentChallengeResponse,\n Factor,\n GetFactorsResponse,\n InternalStateData,\n ListAuthenticationMethodsResponse,\n ListAuthenticatorsOptions,\n ListConnectedAccountConnectionsResponse,\n ListConnectedAccountsResponse,\n LoginBackchannelOptions,\n LoginBackchannelResult,\n LoginWithCustomTokenExchangeOptions,\n LoginWithCustomTokenExchangeResult,\n LogoutOptions,\n LogoutTokenClaims,\n MfaRequirement,\n MfaRequirements,\n MfaTokenContext,\n MfaVerifyResponse,\n OobEnrollmentResponse,\n OtpEnrollmentResponse,\n PasskeyAuthResponse,\n PasskeyAuthenticatorSelection,\n PasskeyLoginChallengeResponse,\n PasskeyLoginResult,\n PasskeyPubKeyCredParam,\n PasskeyPublicKeyOptions,\n PasskeyRpInfo,\n PasskeySignupChallengeResponse,\n PasskeyTokenResponse,\n PasskeyUserInfo,\n PasskeyUserProfile,\n PasswordlessStartResult,\n ServerClientOptionsBase,\n ServerClientOptionsWithSecret,\n SessionData,\n SessionTransferTokenResult,\n StartEnterpriseLoginOptions,\n StartInteractiveLoginOptions,\n StartLinkUserOptions,\n StartPasswordlessEmailOptions,\n StartPasswordlessSmsOptions,\n StateData,\n TokenExchangeResponse,\n TokenSet,\n TransactionData,\n UpdateAuthenticationMethodRequest,\n UserClaims,\n VerifyAuthenticationMethodRequest,\n VerifyOobOptions,\n VerifyOtpOptions,\n VerifyPasswordlessOtpOptions,\n VerifyRecoveryCodeOptions,\n)\nBases: pydantic.BaseModel
Options for retrieving an access token for a specific connection.
\nBases: AnonymousTokenResponse
Raw response from POST /anonymous/token on the create path.
\nBases: pydantic.BaseModel
Public result of create_session() and the renewal ladder.
\nBases: pydantic.BaseModel
Internal context stored inside the encrypted anonymous session record, rejecting extra fields so a tampered payload raises on decrypt.
\nConfiguration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
\nBases: pydantic.BaseModel
Identity and metadata fields returned by AnonymousClient.get_session(), with no session_token.
\nBases: pydantic.BaseModel
Raw response from POST /anonymous/token.
\nBases: pydantic.BaseModel
One cached access token for a specific audience/scope pair.
\nConfiguration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
\nBases: pydantic.BaseModel
Raw response from POST /anonymous/token on the transfer-ticket path.
\nConfiguration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
\nBases: pydantic.BaseModel
[Models](../concepts/models.md)
\nA base class for creating Pydantic models.
\nThe names of the class variables defined on the model.
\nMetadata about the private attributes of the model.
\nThe synthesized __init__ [Signature][inspect.Signature] of the model.
\nWhether model building is completed, or if there are still undefined fields.
\nThe core schema of the model.
\nWhether the model has a custom __init__ function.
\nMetadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.
\nA dictionary containing metadata about generic Pydantic models.\nThe origin and args items map to the [__origin__][genericalias.__origin__]\nand [__args__][genericalias.__args__] attributes of [generic aliases][types-genericalias],\nand the parameter item maps to the __parameter__ attribute of generic classes.
\nParent namespace of the model, used for automatic rebuilding of models.
\nThe name of the post-init method for the model, if defined.
\nWhether the model is a [RootModel][pydantic.root_model.RootModel].
\nThe pydantic-core SchemaSerializer used to dump instances of the model.
\nThe pydantic-core SchemaValidator used to validate instances of the model.
\nA dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.
\nA dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.
\nA dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.
\nThe names of fields explicitly set during instantiation.
\nValues of private attributes set on the model instance.
\nConfiguration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
\nBases: pydantic.BaseModel
Represents an MFA authenticator enrolled by a user.
\nConfiguration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
\nBases: pydantic.BaseModel
Authorization details returned from Auth0.\nUsed for Resource Access Rights (RAR).
\nBases: pydantic.BaseModel
Parameters used in authorization requests.\nBased on standard OAuth2/OIDC parameters.
\nBases: pydantic.BaseModel
Options for initiating an MFA challenge.
\nBases: pydantic.BaseModel
Response from initiating an MFA challenge.
\nConfiguration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
\nBases: pydantic.BaseModel
[Models](../concepts/models.md)
\nA base class for creating Pydantic models.
\nThe names of the class variables defined on the model.
\nMetadata about the private attributes of the model.
\nThe synthesized __init__ [Signature][inspect.Signature] of the model.
\nWhether model building is completed, or if there are still undefined fields.
\nThe core schema of the model.
\nWhether the model has a custom __init__ function.
\nMetadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.
\nA dictionary containing metadata about generic Pydantic models.\nThe origin and args items map to the [__origin__][genericalias.__origin__]\nand [__args__][genericalias.__args__] attributes of [generic aliases][types-genericalias],\nand the parameter item maps to the __parameter__ attribute of generic classes.
\nParent namespace of the model, used for automatic rebuilding of models.
\nThe name of the post-init method for the model, if defined.
\nWhether the model is a [RootModel][pydantic.root_model.RootModel].
\nThe pydantic-core SchemaSerializer used to dump instances of the model.
\nThe pydantic-core SchemaValidator used to validate instances of the model.
\nA dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.
\nA dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.
\nA dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.
\nThe names of fields explicitly set during instantiation.
\nValues of private attributes set on the model instance.
\nBases: ConnectedAccountBase
[Models](../concepts/models.md)
\nA base class for creating Pydantic models.
\nThe names of the class variables defined on the model.
\nMetadata about the private attributes of the model.
\nThe synthesized __init__ [Signature][inspect.Signature] of the model.
\nWhether model building is completed, or if there are still undefined fields.
\nThe core schema of the model.
\nWhether the model has a custom __init__ function.
\nMetadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.
\nA dictionary containing metadata about generic Pydantic models.\nThe origin and args items map to the [__origin__][genericalias.__origin__]\nand [__args__][genericalias.__args__] attributes of [generic aliases][types-genericalias],\nand the parameter item maps to the __parameter__ attribute of generic classes.
\nParent namespace of the model, used for automatic rebuilding of models.
\nThe name of the post-init method for the model, if defined.
\nWhether the model is a [RootModel][pydantic.root_model.RootModel].
\nThe pydantic-core SchemaSerializer used to dump instances of the model.
\nThe pydantic-core SchemaValidator used to validate instances of the model.
\nA dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.
\nA dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.
\nA dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.
\nThe names of fields explicitly set during instantiation.
\nValues of private attributes set on the model instance.
\nBases: pydantic.BaseModel
[Models](../concepts/models.md)
\nA base class for creating Pydantic models.
\nThe names of the class variables defined on the model.
\nMetadata about the private attributes of the model.
\nThe synthesized __init__ [Signature][inspect.Signature] of the model.
\nWhether model building is completed, or if there are still undefined fields.
\nThe core schema of the model.
\nWhether the model has a custom __init__ function.
\nMetadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.
\nA dictionary containing metadata about generic Pydantic models.\nThe origin and args items map to the [__origin__][genericalias.__origin__]\nand [__args__][genericalias.__args__] attributes of [generic aliases][types-genericalias],\nand the parameter item maps to the __parameter__ attribute of generic classes.
\nParent namespace of the model, used for automatic rebuilding of models.
\nThe name of the post-init method for the model, if defined.
\nWhether the model is a [RootModel][pydantic.root_model.RootModel].
\nThe pydantic-core SchemaSerializer used to dump instances of the model.
\nThe pydantic-core SchemaValidator used to validate instances of the model.
\nA dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.
\nA dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.
\nA dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.
\nThe names of fields explicitly set during instantiation.
\nValues of private attributes set on the model instance.
\nBases: pydantic.BaseModel
[Models](../concepts/models.md)
\nA base class for creating Pydantic models.
\nThe names of the class variables defined on the model.
\nMetadata about the private attributes of the model.
\nThe synthesized __init__ [Signature][inspect.Signature] of the model.
\nWhether model building is completed, or if there are still undefined fields.
\nThe core schema of the model.
\nWhether the model has a custom __init__ function.
\nMetadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.
\nA dictionary containing metadata about generic Pydantic models.\nThe origin and args items map to the [__origin__][genericalias.__origin__]\nand [__args__][genericalias.__args__] attributes of [generic aliases][types-genericalias],\nand the parameter item maps to the __parameter__ attribute of generic classes.
\nParent namespace of the model, used for automatic rebuilding of models.
\nThe name of the post-init method for the model, if defined.
\nWhether the model is a [RootModel][pydantic.root_model.RootModel].
\nThe pydantic-core SchemaSerializer used to dump instances of the model.
\nThe pydantic-core SchemaValidator used to validate instances of the model.
\nA dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.
\nA dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.
\nA dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.
\nThe names of fields explicitly set during instantiation.
\nValues of private attributes set on the model instance.
\nBases: pydantic.BaseModel
[Models](../concepts/models.md)
\nA base class for creating Pydantic models.
\nThe names of the class variables defined on the model.
\nMetadata about the private attributes of the model.
\nThe synthesized __init__ [Signature][inspect.Signature] of the model.
\nWhether model building is completed, or if there are still undefined fields.
\nThe core schema of the model.
\nWhether the model has a custom __init__ function.
\nMetadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.
\nA dictionary containing metadata about generic Pydantic models.\nThe origin and args items map to the [__origin__][genericalias.__origin__]\nand [__args__][genericalias.__args__] attributes of [generic aliases][types-genericalias],\nand the parameter item maps to the __parameter__ attribute of generic classes.
\nParent namespace of the model, used for automatic rebuilding of models.
\nThe name of the post-init method for the model, if defined.
\nWhether the model is a [RootModel][pydantic.root_model.RootModel].
\nThe pydantic-core SchemaSerializer used to dump instances of the model.
\nThe pydantic-core SchemaValidator used to validate instances of the model.
\nA dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.
\nA dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.
\nA dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.
\nThe names of fields explicitly set during instantiation.
\nValues of private attributes set on the model instance.
\nBases: pydantic.BaseModel
[Models](../concepts/models.md)
\nA base class for creating Pydantic models.
\nThe names of the class variables defined on the model.
\nMetadata about the private attributes of the model.
\nThe synthesized __init__ [Signature][inspect.Signature] of the model.
\nWhether model building is completed, or if there are still undefined fields.
\nThe core schema of the model.
\nWhether the model has a custom __init__ function.
\nMetadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.
\nA dictionary containing metadata about generic Pydantic models.\nThe origin and args items map to the [__origin__][genericalias.__origin__]\nand [__args__][genericalias.__args__] attributes of [generic aliases][types-genericalias],\nand the parameter item maps to the __parameter__ attribute of generic classes.
\nParent namespace of the model, used for automatic rebuilding of models.
\nThe name of the post-init method for the model, if defined.
\nWhether the model is a [RootModel][pydantic.root_model.RootModel].
\nThe pydantic-core SchemaSerializer used to dump instances of the model.
\nThe pydantic-core SchemaValidator used to validate instances of the model.
\nA dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.
\nA dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.
\nA dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.
\nThe names of fields explicitly set during instantiation.
\nValues of private attributes set on the model instance.
\nBases: ConnectedAccountBase
[Models](../concepts/models.md)
\nA base class for creating Pydantic models.
\nThe names of the class variables defined on the model.
\nMetadata about the private attributes of the model.
\nThe synthesized __init__ [Signature][inspect.Signature] of the model.
\nWhether model building is completed, or if there are still undefined fields.
\nThe core schema of the model.
\nWhether the model has a custom __init__ function.
\nMetadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.
\nA dictionary containing metadata about generic Pydantic models.\nThe origin and args items map to the [__origin__][genericalias.__origin__]\nand [__args__][genericalias.__args__] attributes of [generic aliases][types-genericalias],\nand the parameter item maps to the __parameter__ attribute of generic classes.
\nParent namespace of the model, used for automatic rebuilding of models.
\nThe name of the post-init method for the model, if defined.
\nWhether the model is a [RootModel][pydantic.root_model.RootModel].
\nThe pydantic-core SchemaSerializer used to dump instances of the model.
\nThe pydantic-core SchemaValidator used to validate instances of the model.
\nA dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.
\nA dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.
\nA dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.
\nThe names of fields explicitly set during instantiation.
\nValues of private attributes set on the model instance.
\nBases: pydantic.BaseModel
[Models](../concepts/models.md)
\nA base class for creating Pydantic models.
\nThe names of the class variables defined on the model.
\nMetadata about the private attributes of the model.
\nThe synthesized __init__ [Signature][inspect.Signature] of the model.
\nWhether model building is completed, or if there are still undefined fields.
\nThe core schema of the model.
\nWhether the model has a custom __init__ function.
\nMetadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.
\nA dictionary containing metadata about generic Pydantic models.\nThe origin and args items map to the [__origin__][genericalias.__origin__]\nand [__args__][genericalias.__args__] attributes of [generic aliases][types-genericalias],\nand the parameter item maps to the __parameter__ attribute of generic classes.
\nParent namespace of the model, used for automatic rebuilding of models.
\nThe name of the post-init method for the model, if defined.
\nWhether the model is a [RootModel][pydantic.root_model.RootModel].
\nThe pydantic-core SchemaSerializer used to dump instances of the model.
\nThe pydantic-core SchemaValidator used to validate instances of the model.
\nA dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.
\nA dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.
\nA dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.
\nThe names of fields explicitly set during instantiation.
\nValues of private attributes set on the model instance.
\nBases: pydantic.BaseModel
[Models](../concepts/models.md)
\nA base class for creating Pydantic models.
\nThe names of the class variables defined on the model.
\nMetadata about the private attributes of the model.
\nThe synthesized __init__ [Signature][inspect.Signature] of the model.
\nWhether model building is completed, or if there are still undefined fields.
\nThe core schema of the model.
\nWhether the model has a custom __init__ function.
\nMetadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.
\nA dictionary containing metadata about generic Pydantic models.\nThe origin and args items map to the [__origin__][genericalias.__origin__]\nand [__args__][genericalias.__args__] attributes of [generic aliases][types-genericalias],\nand the parameter item maps to the __parameter__ attribute of generic classes.
\nParent namespace of the model, used for automatic rebuilding of models.
\nThe name of the post-init method for the model, if defined.
\nWhether the model is a [RootModel][pydantic.root_model.RootModel].
\nThe pydantic-core SchemaSerializer used to dump instances of the model.
\nThe pydantic-core SchemaValidator used to validate instances of the model.
\nA dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.
\nA dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.
\nA dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.
\nThe names of fields explicitly set during instantiation.
\nValues of private attributes set on the model instance.
\nBases: TokenSet
Token set specific to a connection.\nExtends TokenSet with connection-specific information.
\nBases: pydantic.BaseModel
Options bundle for create_session(), carrying audience, scope, and metadata.
\nConfiguration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
\nBases: pydantic.BaseModel
Options for custom token exchange (RFC 8693).
\nsubject_token \u2013 The security token being exchanged
subject_token_type \u2013 Identifier indicating the token format
audience \u2013 Logical name of target service (optional)
scope \u2013 Space-delimited list of scopes (optional)
actor_token \u2013 Security token representing the acting party (optional)
actor_token_type \u2013 Type of actor token (required if actor_token present)
organization \u2013 Organization identifier for the token exchange (optional)
authorization_params \u2013 Additional OAuth parameters (optional)
Bases: pydantic.BaseModel
Context passed to domain resolver function for MCD support.
\nContains request information needed to determine the correct Auth0 domain\nbased on the incoming request\u2019s hostname or headers.
\nThe full request URL (e.g., \u201chttps://a.my-app.com/auth/login\u201d)
\nDictionary of request headers (e.g., {\u201chost\u201d: \u201ca.my-app.com\u201d, \u201cx-forwarded-host\u201d: \u201c\u2026\u201d})
\nExample
\nhost = context.request_headers.get(\u2018host\u2019, \u2018\u2019).split(\u2018:\u2019)[0]\nreturn DOMAIN_MAP.get(host, DEFAULT_DOMAIN)
\nBases: pydantic.BaseModel
Options for encrypted stores.\nContains the secret used for encryption.
\nBases: pydantic.BaseModel
[Models](../concepts/models.md)
\nA base class for creating Pydantic models.
\nThe names of the class variables defined on the model.
\nMetadata about the private attributes of the model.
\nThe synthesized __init__ [Signature][inspect.Signature] of the model.
\nWhether model building is completed, or if there are still undefined fields.
\nThe core schema of the model.
\nWhether the model has a custom __init__ function.
\nMetadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.
\nA dictionary containing metadata about generic Pydantic models.\nThe origin and args items map to the [__origin__][genericalias.__origin__]\nand [__args__][genericalias.__args__] attributes of [generic aliases][types-genericalias],\nand the parameter item maps to the __parameter__ attribute of generic classes.
\nParent namespace of the model, used for automatic rebuilding of models.
\nThe name of the post-init method for the model, if defined.
\nWhether the model is a [RootModel][pydantic.root_model.RootModel].
\nThe pydantic-core SchemaSerializer used to dump instances of the model.
\nThe pydantic-core SchemaValidator used to validate instances of the model.
\nA dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.
\nA dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.
\nA dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.
\nThe names of fields explicitly set during instantiation.
\nValues of private attributes set on the model instance.
\nBases: pydantic.BaseModel
Options for enrolling an email authenticator.
\nBases: pydantic.BaseModel
Options for enrolling an OOB authenticator (SMS, Voice, Push).
\nBases: pydantic.BaseModel
Options for enrolling an OTP authenticator.
\nBases: pydantic.BaseModel
[Models](../concepts/models.md)
\nA base class for creating Pydantic models.
\nThe names of the class variables defined on the model.
\nMetadata about the private attributes of the model.
\nThe synthesized __init__ [Signature][inspect.Signature] of the model.
\nWhether model building is completed, or if there are still undefined fields.
\nThe core schema of the model.
\nWhether the model has a custom __init__ function.
\nMetadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.
\nA dictionary containing metadata about generic Pydantic models.\nThe origin and args items map to the [__origin__][genericalias.__origin__]\nand [__args__][genericalias.__args__] attributes of [generic aliases][types-genericalias],\nand the parameter item maps to the __parameter__ attribute of generic classes.
\nParent namespace of the model, used for automatic rebuilding of models.
\nThe name of the post-init method for the model, if defined.
\nWhether the model is a [RootModel][pydantic.root_model.RootModel].
\nThe pydantic-core SchemaSerializer used to dump instances of the model.
\nThe pydantic-core SchemaValidator used to validate instances of the model.
\nA dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.
\nA dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.
\nA dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.
\nThe names of fields explicitly set during instantiation.
\nValues of private attributes set on the model instance.
\nConfiguration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
\nBases: pydantic.BaseModel
[Models](../concepts/models.md)
\nA base class for creating Pydantic models.
\nThe names of the class variables defined on the model.
\nMetadata about the private attributes of the model.
\nThe synthesized __init__ [Signature][inspect.Signature] of the model.
\nWhether model building is completed, or if there are still undefined fields.
\nThe core schema of the model.
\nWhether the model has a custom __init__ function.
\nMetadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.
\nA dictionary containing metadata about generic Pydantic models.\nThe origin and args items map to the [__origin__][genericalias.__origin__]\nand [__args__][genericalias.__args__] attributes of [generic aliases][types-genericalias],\nand the parameter item maps to the __parameter__ attribute of generic classes.
\nParent namespace of the model, used for automatic rebuilding of models.
\nThe name of the post-init method for the model, if defined.
\nWhether the model is a [RootModel][pydantic.root_model.RootModel].
\nThe pydantic-core SchemaSerializer used to dump instances of the model.
\nThe pydantic-core SchemaValidator used to validate instances of the model.
\nA dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.
\nA dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.
\nA dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.
\nThe names of fields explicitly set during instantiation.
\nValues of private attributes set on the model instance.
\nConfiguration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
\nBases: pydantic.BaseModel
[Models](../concepts/models.md)
\nA base class for creating Pydantic models.
\nThe names of the class variables defined on the model.
\nMetadata about the private attributes of the model.
\nThe synthesized __init__ [Signature][inspect.Signature] of the model.
\nWhether model building is completed, or if there are still undefined fields.
\nThe core schema of the model.
\nWhether the model has a custom __init__ function.
\nMetadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.
\nA dictionary containing metadata about generic Pydantic models.\nThe origin and args items map to the [__origin__][genericalias.__origin__]\nand [__args__][genericalias.__args__] attributes of [generic aliases][types-genericalias],\nand the parameter item maps to the __parameter__ attribute of generic classes.
\nParent namespace of the model, used for automatic rebuilding of models.
\nThe name of the post-init method for the model, if defined.
\nWhether the model is a [RootModel][pydantic.root_model.RootModel].
\nThe pydantic-core SchemaSerializer used to dump instances of the model.
\nThe pydantic-core SchemaValidator used to validate instances of the model.
\nA dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.
\nA dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.
\nA dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.
\nThe names of fields explicitly set during instantiation.
\nValues of private attributes set on the model instance.
\nBases: pydantic.BaseModel
Internal data used for managing state.\nNot meant to be accessed directly by SDK users.
\nBases: pydantic.BaseModel
[Models](../concepts/models.md)
\nA base class for creating Pydantic models.
\nThe names of the class variables defined on the model.
\nMetadata about the private attributes of the model.
\nThe synthesized __init__ [Signature][inspect.Signature] of the model.
\nWhether model building is completed, or if there are still undefined fields.
\nThe core schema of the model.
\nWhether the model has a custom __init__ function.
\nMetadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.
\nA dictionary containing metadata about generic Pydantic models.\nThe origin and args items map to the [__origin__][genericalias.__origin__]\nand [__args__][genericalias.__args__] attributes of [generic aliases][types-genericalias],\nand the parameter item maps to the __parameter__ attribute of generic classes.
\nParent namespace of the model, used for automatic rebuilding of models.
\nThe name of the post-init method for the model, if defined.
\nWhether the model is a [RootModel][pydantic.root_model.RootModel].
\nThe pydantic-core SchemaSerializer used to dump instances of the model.
\nThe pydantic-core SchemaValidator used to validate instances of the model.
\nA dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.
\nA dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.
\nA dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.
\nThe names of fields explicitly set during instantiation.
\nValues of private attributes set on the model instance.
\nBases: pydantic.BaseModel
Options for listing MFA authenticators.
\nBases: pydantic.BaseModel
[Models](../concepts/models.md)
\nA base class for creating Pydantic models.
\nThe names of the class variables defined on the model.
\nMetadata about the private attributes of the model.
\nThe synthesized __init__ [Signature][inspect.Signature] of the model.
\nWhether model building is completed, or if there are still undefined fields.
\nThe core schema of the model.
\nWhether the model has a custom __init__ function.
\nMetadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.
\nA dictionary containing metadata about generic Pydantic models.\nThe origin and args items map to the [__origin__][genericalias.__origin__]\nand [__args__][genericalias.__args__] attributes of [generic aliases][types-genericalias],\nand the parameter item maps to the __parameter__ attribute of generic classes.
\nParent namespace of the model, used for automatic rebuilding of models.
\nThe name of the post-init method for the model, if defined.
\nWhether the model is a [RootModel][pydantic.root_model.RootModel].
\nThe pydantic-core SchemaSerializer used to dump instances of the model.
\nThe pydantic-core SchemaValidator used to validate instances of the model.
\nA dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.
\nA dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.
\nA dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.
\nThe names of fields explicitly set during instantiation.
\nValues of private attributes set on the model instance.
\nBases: pydantic.BaseModel
[Models](../concepts/models.md)
\nA base class for creating Pydantic models.
\nThe names of the class variables defined on the model.
\nMetadata about the private attributes of the model.
\nThe synthesized __init__ [Signature][inspect.Signature] of the model.
\nWhether model building is completed, or if there are still undefined fields.
\nThe core schema of the model.
\nWhether the model has a custom __init__ function.
\nMetadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.
\nA dictionary containing metadata about generic Pydantic models.\nThe origin and args items map to the [__origin__][genericalias.__origin__]\nand [__args__][genericalias.__args__] attributes of [generic aliases][types-genericalias],\nand the parameter item maps to the __parameter__ attribute of generic classes.
\nParent namespace of the model, used for automatic rebuilding of models.
\nThe name of the post-init method for the model, if defined.
\nWhether the model is a [RootModel][pydantic.root_model.RootModel].
\nThe pydantic-core SchemaSerializer used to dump instances of the model.
\nThe pydantic-core SchemaValidator used to validate instances of the model.
\nA dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.
\nA dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.
\nA dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.
\nThe names of fields explicitly set during instantiation.
\nValues of private attributes set on the model instance.
\nBases: pydantic.BaseModel
Options for Client-Initiated Backchannel Authentication.
\nBases: pydantic.BaseModel
Result from Client-Initiated Backchannel Authentication.
\nBases: pydantic.BaseModel
Options for logging in via custom token exchange.
\nCombines token exchange parameters with session management.
\nBases: pydantic.BaseModel
Result from login with custom token exchange.
\nContains session data established after token exchange.
\nBases: pydantic.BaseModel
Options for logout operations.\nConfigures how the logout request is constructed.
\nBases: pydantic.BaseModel
Claims expected in a logout token.\nUsed for backchannel logout processing.
\nBases: pydantic.BaseModel
A single MFA requirement entry.
\nBases: pydantic.BaseModel
MFA requirements from an mfa_required error response.
\nBases: pydantic.BaseModel
Internal context stored inside encrypted mfa_token.
\nBases: pydantic.BaseModel
Response from MFA verification.
\nConfiguration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
\nBases: pydantic.BaseModel
Response when enrolling an OOB authenticator.
\nBases: pydantic.BaseModel
Response when enrolling an OTP authenticator.
\nBases: pydantic.BaseModel
WebAuthn credential returned by the browser, passed to signin_with_passkey.
\nConfiguration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
\nBases: pydantic.BaseModel
Authenticator requirements for a WebAuthn registration.
\nConfiguration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
\nBases: _PasskeyChallengeResponseBase
Login challenge with the auth_session and WebAuthn options for the browser. auth_session is hidden from repr and str.
\nBases: pydantic.BaseModel
Result from signin_with_passkey.
\nContains the session data established after the webauthn token exchange.\nMirrors LoginWithCustomTokenExchangeResult \u2014 passkey sign-in is a complete\nlogin ceremony and creates a server-side session like every other login path.
\nBases: pydantic.BaseModel
Public key type and algorithm the relying party accepts.
\nBases: pydantic.BaseModel
WebAuthn public key options to pass to the browser credentials API.
\nConfiguration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
\nBases: pydantic.BaseModel
Relying party identity for a WebAuthn ceremony.
\nBases: _PasskeyChallengeResponseBase
Signup challenge, with verification_required set when the user must enter codes first. auth_session is hidden from repr and str.
\nBases: pydantic.BaseModel
Token endpoint response for the passkey grant.
\nConfiguration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
\nBases: pydantic.BaseModel
User identity for a WebAuthn registration.
\nConfiguration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
\nBases: pydantic.BaseModel
User profile attributes sent with a passkey signup challenge.
\nConfiguration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
\nBases: pydantic.BaseModel
Success payload from POST /passwordless/start.
\nBases: pydantic.BaseModel
Base options for configuring the Auth0 server client.\nContains core settings required for all clients.
\nBases: ServerClientOptionsBase
Client options using a secret for encryption.\nExtends base options with secret and duration settings.
\nBases: pydantic.BaseModel
Represents a user session with Auth0.\nContains user information and tokens.
\nBases: pydantic.BaseModel
Response from a session transfer token (STT) request.
\nThe opaque, single-use session transfer token
\nFormat of issued token (the session-transfer URN)
\nToken lifetime in seconds
\nToken type as returned by the server (typically \u201cN_A\u201d)
\nGranted scopes (if returned)
\nBases: StartInteractiveLoginOptions
Options for starting an Enterprise Connect login.\nAdds the user\u2019s email, used for WebFinger discovery and as the login hint.
\nBases: pydantic.BaseModel
Options for starting the interactive login process.\nConfigures how the authorization request is constructed.
\nBases: pydantic.BaseModel
[Models](../concepts/models.md)
\nA base class for creating Pydantic models.
\nThe names of the class variables defined on the model.
\nMetadata about the private attributes of the model.
\nThe synthesized __init__ [Signature][inspect.Signature] of the model.
\nWhether model building is completed, or if there are still undefined fields.
\nThe core schema of the model.
\nWhether the model has a custom __init__ function.
\nMetadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.
\nA dictionary containing metadata about generic Pydantic models.\nThe origin and args items map to the [__origin__][genericalias.__origin__]\nand [__args__][genericalias.__args__] attributes of [generic aliases][types-genericalias],\nand the parameter item maps to the __parameter__ attribute of generic classes.
\nParent namespace of the model, used for automatic rebuilding of models.
\nThe name of the post-init method for the model, if defined.
\nWhether the model is a [RootModel][pydantic.root_model.RootModel].
\nThe pydantic-core SchemaSerializer used to dump instances of the model.
\nThe pydantic-core SchemaValidator used to validate instances of the model.
\nA dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.
\nA dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.
\nA dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.
\nThe names of fields explicitly set during instantiation.
\nValues of private attributes set on the model instance.
\nBases: _StartPasswordlessBase
Options for starting an email passwordless flow (OTP code or magic link).
\nBases: _StartPasswordlessBase
Options for starting an SMS passwordless (OTP) flow.
\nBases: SessionData
Complete state data stored in the state store.\nExtends SessionData with internal management information.
\nBases: pydantic.BaseModel
Response from token exchange operation.
\nThe issued access token
\nToken type (typically \u201cBearer\u201d)
\nToken lifetime in seconds
\nGranted scopes (if different from requested)
\nFormat of issued token
\nOpenID Connect ID token (optional)
\nRefresh token (optional)
\nActor claim for delegation/impersonation exchanges (optional)
\nBases: pydantic.BaseModel
Represents a set of tokens issued by Auth0.\nContains the access token and related metadata.
\nBases: pydantic.BaseModel
Represents data for an in-progress authentication transaction.\nUsed during the authorization code flow to correlate requests.
\nBases: pydantic.BaseModel
[Models](../concepts/models.md)
\nA base class for creating Pydantic models.
\nThe names of the class variables defined on the model.
\nMetadata about the private attributes of the model.
\nThe synthesized __init__ [Signature][inspect.Signature] of the model.
\nWhether model building is completed, or if there are still undefined fields.
\nThe core schema of the model.
\nWhether the model has a custom __init__ function.
\nMetadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.
\nA dictionary containing metadata about generic Pydantic models.\nThe origin and args items map to the [__origin__][genericalias.__origin__]\nand [__args__][genericalias.__args__] attributes of [generic aliases][types-genericalias],\nand the parameter item maps to the __parameter__ attribute of generic classes.
\nParent namespace of the model, used for automatic rebuilding of models.
\nThe name of the post-init method for the model, if defined.
\nWhether the model is a [RootModel][pydantic.root_model.RootModel].
\nThe pydantic-core SchemaSerializer used to dump instances of the model.
\nThe pydantic-core SchemaValidator used to validate instances of the model.
\nA dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.
\nA dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.
\nA dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.
\nThe names of fields explicitly set during instantiation.
\nValues of private attributes set on the model instance.
\nBases: pydantic.BaseModel
User profile information as returned by Auth0.\nContains standard OIDC claims about the authenticated user.
\nBases: pydantic.BaseModel
[Models](../concepts/models.md)
\nA base class for creating Pydantic models.
\nThe names of the class variables defined on the model.
\nMetadata about the private attributes of the model.
\nThe synthesized __init__ [Signature][inspect.Signature] of the model.
\nWhether model building is completed, or if there are still undefined fields.
\nThe core schema of the model.
\nWhether the model has a custom __init__ function.
\nMetadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.
\nA dictionary containing metadata about generic Pydantic models.\nThe origin and args items map to the [__origin__][genericalias.__origin__]\nand [__args__][genericalias.__args__] attributes of [generic aliases][types-genericalias],\nand the parameter item maps to the __parameter__ attribute of generic classes.
\nParent namespace of the model, used for automatic rebuilding of models.
\nThe name of the post-init method for the model, if defined.
\nWhether the model is a [RootModel][pydantic.root_model.RootModel].
\nThe pydantic-core SchemaSerializer used to dump instances of the model.
\nThe pydantic-core SchemaValidator used to validate instances of the model.
\nA dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.
\nA dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.
\nA dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.
\nThe names of fields explicitly set during instantiation.
\nValues of private attributes set on the model instance.
\nBases: pydantic.BaseModel
Verify with OOB code + binding code.
\nBases: pydantic.BaseModel
Verify with OTP code.
\nBases: pydantic.BaseModel
Options for verifying a passwordless OTP and establishing a session.
\nExactly one of email / phone_number must be provided and must\nmatch connection (email -> email, sms -> phone_number).
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
\nThe Auth0 username value for the OTP grant (email or phone).
\nBases: pydantic.BaseModel
Verify with recovery code.
\nAccessTokenForConnectionOptions\nAnonymousCreateTokenResponse\nAnonymousSession\nAnonymousSessionContext\nAnonymousSessionData\nAnonymousTokenResponse\nAnonymousTokenSetEntry\nAnonymousTransferTokenResponse\nAuthenticationMethodAuthenticationMethod.__class_vars__AuthenticationMethod.__private_attributes__AuthenticationMethod.__signature__AuthenticationMethod.__pydantic_complete__AuthenticationMethod.__pydantic_core_schema__AuthenticationMethod.__pydantic_custom_init__AuthenticationMethod.__pydantic_decorators__AuthenticationMethod.__pydantic_generic_metadata__AuthenticationMethod.__pydantic_parent_namespace__AuthenticationMethod.__pydantic_post_init__AuthenticationMethod.__pydantic_root_model__AuthenticationMethod.__pydantic_serializer__AuthenticationMethod.__pydantic_validator__AuthenticationMethod.__pydantic_fields__AuthenticationMethod.__pydantic_computed_fields__AuthenticationMethod.__pydantic_extra__AuthenticationMethod.__pydantic_fields_set__AuthenticationMethod.__pydantic_private__AuthenticationMethod.aaguidAuthenticationMethod.confirmedAuthenticationMethod.created_atAuthenticationMethod.credential_backed_upAuthenticationMethod.credential_device_typeAuthenticationMethod.emailAuthenticationMethod.idAuthenticationMethod.identity_user_idAuthenticationMethod.key_idAuthenticationMethod.last_password_resetAuthenticationMethod.model_configAuthenticationMethod.nameAuthenticationMethod.phone_numberAuthenticationMethod.preferred_authentication_methodAuthenticationMethod.public_keyAuthenticationMethod.relying_party_idAuthenticationMethod.transportsAuthenticationMethod.typeAuthenticationMethod.usageAuthenticationMethod.user_agentAuthenticationMethod.user_handleAuthenticatorResponseAuthenticatorResponse.activeAuthenticatorResponse.authenticator_typeAuthenticatorResponse.created_atAuthenticatorResponse.idAuthenticatorResponse.last_authAuthenticatorResponse.model_configAuthenticatorResponse.nameAuthenticatorResponse.oob_channelAuthenticatorResponse.phone_numberAuthenticatorResponse.typeAuthorizationDetails\nAuthorizationParameters\nChallengeOptions\nChallengeResponse\nCompleteConnectAccountRequestCompleteConnectAccountRequest.__class_vars__CompleteConnectAccountRequest.__private_attributes__CompleteConnectAccountRequest.__signature__CompleteConnectAccountRequest.__pydantic_complete__CompleteConnectAccountRequest.__pydantic_core_schema__CompleteConnectAccountRequest.__pydantic_custom_init__CompleteConnectAccountRequest.__pydantic_decorators__CompleteConnectAccountRequest.__pydantic_generic_metadata__CompleteConnectAccountRequest.__pydantic_parent_namespace__CompleteConnectAccountRequest.__pydantic_post_init__CompleteConnectAccountRequest.__pydantic_root_model__CompleteConnectAccountRequest.__pydantic_serializer__CompleteConnectAccountRequest.__pydantic_validator__CompleteConnectAccountRequest.__pydantic_fields__CompleteConnectAccountRequest.__pydantic_computed_fields__CompleteConnectAccountRequest.__pydantic_extra__CompleteConnectAccountRequest.__pydantic_fields_set__CompleteConnectAccountRequest.__pydantic_private__CompleteConnectAccountRequest.auth_sessionCompleteConnectAccountRequest.code_verifierCompleteConnectAccountRequest.connect_codeCompleteConnectAccountRequest.redirect_uriCompleteConnectAccountResponseCompleteConnectAccountResponse.__class_vars__CompleteConnectAccountResponse.__private_attributes__CompleteConnectAccountResponse.__signature__CompleteConnectAccountResponse.__pydantic_complete__CompleteConnectAccountResponse.__pydantic_core_schema__CompleteConnectAccountResponse.__pydantic_custom_init__CompleteConnectAccountResponse.__pydantic_decorators__CompleteConnectAccountResponse.__pydantic_generic_metadata__CompleteConnectAccountResponse.__pydantic_parent_namespace__CompleteConnectAccountResponse.__pydantic_post_init__CompleteConnectAccountResponse.__pydantic_root_model__CompleteConnectAccountResponse.__pydantic_serializer__CompleteConnectAccountResponse.__pydantic_validator__CompleteConnectAccountResponse.__pydantic_fields__CompleteConnectAccountResponse.__pydantic_computed_fields__CompleteConnectAccountResponse.__pydantic_extra__CompleteConnectAccountResponse.__pydantic_fields_set__CompleteConnectAccountResponse.__pydantic_private__CompleteConnectAccountResponse.app_stateConnectAccountOptionsConnectAccountOptions.__class_vars__ConnectAccountOptions.__private_attributes__ConnectAccountOptions.__signature__ConnectAccountOptions.__pydantic_complete__ConnectAccountOptions.__pydantic_core_schema__ConnectAccountOptions.__pydantic_custom_init__ConnectAccountOptions.__pydantic_decorators__ConnectAccountOptions.__pydantic_generic_metadata__ConnectAccountOptions.__pydantic_parent_namespace__ConnectAccountOptions.__pydantic_post_init__ConnectAccountOptions.__pydantic_root_model__ConnectAccountOptions.__pydantic_serializer__ConnectAccountOptions.__pydantic_validator__ConnectAccountOptions.__pydantic_fields__ConnectAccountOptions.__pydantic_computed_fields__ConnectAccountOptions.__pydantic_extra__ConnectAccountOptions.__pydantic_fields_set__ConnectAccountOptions.__pydantic_private__ConnectAccountOptions.app_stateConnectAccountOptions.authorization_paramsConnectAccountOptions.connectionConnectAccountOptions.redirect_uriConnectAccountOptions.scopesConnectAccountRequestConnectAccountRequest.__class_vars__ConnectAccountRequest.__private_attributes__ConnectAccountRequest.__signature__ConnectAccountRequest.__pydantic_complete__ConnectAccountRequest.__pydantic_core_schema__ConnectAccountRequest.__pydantic_custom_init__ConnectAccountRequest.__pydantic_decorators__ConnectAccountRequest.__pydantic_generic_metadata__ConnectAccountRequest.__pydantic_parent_namespace__ConnectAccountRequest.__pydantic_post_init__ConnectAccountRequest.__pydantic_root_model__ConnectAccountRequest.__pydantic_serializer__ConnectAccountRequest.__pydantic_validator__ConnectAccountRequest.__pydantic_fields__ConnectAccountRequest.__pydantic_computed_fields__ConnectAccountRequest.__pydantic_extra__ConnectAccountRequest.__pydantic_fields_set__ConnectAccountRequest.__pydantic_private__ConnectAccountRequest.authorization_paramsConnectAccountRequest.code_challengeConnectAccountRequest.code_challenge_methodConnectAccountRequest.connectionConnectAccountRequest.redirect_uriConnectAccountRequest.scopesConnectAccountRequest.stateConnectAccountResponseConnectAccountResponse.__class_vars__ConnectAccountResponse.__private_attributes__ConnectAccountResponse.__signature__ConnectAccountResponse.__pydantic_complete__ConnectAccountResponse.__pydantic_core_schema__ConnectAccountResponse.__pydantic_custom_init__ConnectAccountResponse.__pydantic_decorators__ConnectAccountResponse.__pydantic_generic_metadata__ConnectAccountResponse.__pydantic_parent_namespace__ConnectAccountResponse.__pydantic_post_init__ConnectAccountResponse.__pydantic_root_model__ConnectAccountResponse.__pydantic_serializer__ConnectAccountResponse.__pydantic_validator__ConnectAccountResponse.__pydantic_fields__ConnectAccountResponse.__pydantic_computed_fields__ConnectAccountResponse.__pydantic_extra__ConnectAccountResponse.__pydantic_fields_set__ConnectAccountResponse.__pydantic_private__ConnectAccountResponse.auth_sessionConnectAccountResponse.connect_paramsConnectAccountResponse.connect_uriConnectAccountResponse.expires_inConnectParamsConnectParams.__class_vars__ConnectParams.__private_attributes__ConnectParams.__signature__ConnectParams.__pydantic_complete__ConnectParams.__pydantic_core_schema__ConnectParams.__pydantic_custom_init__ConnectParams.__pydantic_decorators__ConnectParams.__pydantic_generic_metadata__ConnectParams.__pydantic_parent_namespace__ConnectParams.__pydantic_post_init__ConnectParams.__pydantic_root_model__ConnectParams.__pydantic_serializer__ConnectParams.__pydantic_validator__ConnectParams.__pydantic_fields__ConnectParams.__pydantic_computed_fields__ConnectParams.__pydantic_extra__ConnectParams.__pydantic_fields_set__ConnectParams.__pydantic_private__ConnectParams.ticketConnectedAccountConnectedAccount.__class_vars__ConnectedAccount.__private_attributes__ConnectedAccount.__signature__ConnectedAccount.__pydantic_complete__ConnectedAccount.__pydantic_core_schema__ConnectedAccount.__pydantic_custom_init__ConnectedAccount.__pydantic_decorators__ConnectedAccount.__pydantic_generic_metadata__ConnectedAccount.__pydantic_parent_namespace__ConnectedAccount.__pydantic_post_init__ConnectedAccount.__pydantic_root_model__ConnectedAccount.__pydantic_serializer__ConnectedAccount.__pydantic_validator__ConnectedAccount.__pydantic_fields__ConnectedAccount.__pydantic_computed_fields__ConnectedAccount.__pydantic_extra__ConnectedAccount.__pydantic_fields_set__ConnectedAccount.__pydantic_private__ConnectedAccount.access_typeConnectedAccount.connectionConnectedAccount.created_atConnectedAccount.expires_atConnectedAccount.idConnectedAccount.scopesConnectedAccountBaseConnectedAccountBase.__class_vars__ConnectedAccountBase.__private_attributes__ConnectedAccountBase.__signature__ConnectedAccountBase.__pydantic_complete__ConnectedAccountBase.__pydantic_core_schema__ConnectedAccountBase.__pydantic_custom_init__ConnectedAccountBase.__pydantic_decorators__ConnectedAccountBase.__pydantic_generic_metadata__ConnectedAccountBase.__pydantic_parent_namespace__ConnectedAccountBase.__pydantic_post_init__ConnectedAccountBase.__pydantic_root_model__ConnectedAccountBase.__pydantic_serializer__ConnectedAccountBase.__pydantic_validator__ConnectedAccountBase.__pydantic_fields__ConnectedAccountBase.__pydantic_computed_fields__ConnectedAccountBase.__pydantic_extra__ConnectedAccountBase.__pydantic_fields_set__ConnectedAccountBase.__pydantic_private__ConnectedAccountBase.access_typeConnectedAccountBase.connectionConnectedAccountBase.created_atConnectedAccountBase.expires_atConnectedAccountBase.idConnectedAccountBase.scopesConnectedAccountConnectionConnectedAccountConnection.__class_vars__ConnectedAccountConnection.__private_attributes__ConnectedAccountConnection.__signature__ConnectedAccountConnection.__pydantic_complete__ConnectedAccountConnection.__pydantic_core_schema__ConnectedAccountConnection.__pydantic_custom_init__ConnectedAccountConnection.__pydantic_decorators__ConnectedAccountConnection.__pydantic_generic_metadata__ConnectedAccountConnection.__pydantic_parent_namespace__ConnectedAccountConnection.__pydantic_post_init__ConnectedAccountConnection.__pydantic_root_model__ConnectedAccountConnection.__pydantic_serializer__ConnectedAccountConnection.__pydantic_validator__ConnectedAccountConnection.__pydantic_fields__ConnectedAccountConnection.__pydantic_computed_fields__ConnectedAccountConnection.__pydantic_extra__ConnectedAccountConnection.__pydantic_fields_set__ConnectedAccountConnection.__pydantic_private__ConnectedAccountConnection.nameConnectedAccountConnection.scopesConnectedAccountConnection.strategyConnectionTokenSet\nCreateAnonymousSessionOptions\nCustomTokenExchangeOptionsCustomTokenExchangeOptions.actor_tokenCustomTokenExchangeOptions.actor_token_typeCustomTokenExchangeOptions.audienceCustomTokenExchangeOptions.authorization_paramsCustomTokenExchangeOptions.organizationCustomTokenExchangeOptions.scopeCustomTokenExchangeOptions.subject_tokenCustomTokenExchangeOptions.subject_token_typeDomainResolverContext\nEncryptedStoreOptions\nEnrollAuthenticationMethodRequestEnrollAuthenticationMethodRequest.__class_vars__EnrollAuthenticationMethodRequest.__private_attributes__EnrollAuthenticationMethodRequest.__signature__EnrollAuthenticationMethodRequest.__pydantic_complete__EnrollAuthenticationMethodRequest.__pydantic_core_schema__EnrollAuthenticationMethodRequest.__pydantic_custom_init__EnrollAuthenticationMethodRequest.__pydantic_decorators__EnrollAuthenticationMethodRequest.__pydantic_generic_metadata__EnrollAuthenticationMethodRequest.__pydantic_parent_namespace__EnrollAuthenticationMethodRequest.__pydantic_post_init__EnrollAuthenticationMethodRequest.__pydantic_root_model__EnrollAuthenticationMethodRequest.__pydantic_serializer__EnrollAuthenticationMethodRequest.__pydantic_validator__EnrollAuthenticationMethodRequest.__pydantic_fields__EnrollAuthenticationMethodRequest.__pydantic_computed_fields__EnrollAuthenticationMethodRequest.__pydantic_extra__EnrollAuthenticationMethodRequest.__pydantic_fields_set__EnrollAuthenticationMethodRequest.__pydantic_private__EnrollAuthenticationMethodRequest.connectionEnrollAuthenticationMethodRequest.emailEnrollAuthenticationMethodRequest.identity_user_idEnrollAuthenticationMethodRequest.phone_numberEnrollAuthenticationMethodRequest.preferred_authentication_methodEnrollAuthenticationMethodRequest.typeEnrollEmailOptions\nEnrollOobOptions\nEnrollOtpOptions\nEnrollmentChallengeResponseEnrollmentChallengeResponse.__class_vars__EnrollmentChallengeResponse.__private_attributes__EnrollmentChallengeResponse.__signature__EnrollmentChallengeResponse.__pydantic_complete__EnrollmentChallengeResponse.__pydantic_core_schema__EnrollmentChallengeResponse.__pydantic_custom_init__EnrollmentChallengeResponse.__pydantic_decorators__EnrollmentChallengeResponse.__pydantic_generic_metadata__EnrollmentChallengeResponse.__pydantic_parent_namespace__EnrollmentChallengeResponse.__pydantic_post_init__EnrollmentChallengeResponse.__pydantic_root_model__EnrollmentChallengeResponse.__pydantic_serializer__EnrollmentChallengeResponse.__pydantic_validator__EnrollmentChallengeResponse.__pydantic_fields__EnrollmentChallengeResponse.__pydantic_computed_fields__EnrollmentChallengeResponse.__pydantic_extra__EnrollmentChallengeResponse.__pydantic_fields_set__EnrollmentChallengeResponse.__pydantic_private__EnrollmentChallengeResponse.auth_sessionEnrollmentChallengeResponse.authentication_method_idEnrollmentChallengeResponse.authn_params_public_keyEnrollmentChallengeResponse.model_configFactorFactor.__class_vars__Factor.__private_attributes__Factor.__signature__Factor.__pydantic_complete__Factor.__pydantic_core_schema__Factor.__pydantic_custom_init__Factor.__pydantic_decorators__Factor.__pydantic_generic_metadata__Factor.__pydantic_parent_namespace__Factor.__pydantic_post_init__Factor.__pydantic_root_model__Factor.__pydantic_serializer__Factor.__pydantic_validator__Factor.__pydantic_fields__Factor.__pydantic_computed_fields__Factor.__pydantic_extra__Factor.__pydantic_fields_set__Factor.__pydantic_private__Factor.model_configFactor.typeFactor.usageGetFactorsResponseGetFactorsResponse.__class_vars__GetFactorsResponse.__private_attributes__GetFactorsResponse.__signature__GetFactorsResponse.__pydantic_complete__GetFactorsResponse.__pydantic_core_schema__GetFactorsResponse.__pydantic_custom_init__GetFactorsResponse.__pydantic_decorators__GetFactorsResponse.__pydantic_generic_metadata__GetFactorsResponse.__pydantic_parent_namespace__GetFactorsResponse.__pydantic_post_init__GetFactorsResponse.__pydantic_root_model__GetFactorsResponse.__pydantic_serializer__GetFactorsResponse.__pydantic_validator__GetFactorsResponse.__pydantic_fields__GetFactorsResponse.__pydantic_computed_fields__GetFactorsResponse.__pydantic_extra__GetFactorsResponse.__pydantic_fields_set__GetFactorsResponse.__pydantic_private__GetFactorsResponse.factorsInternalStateData\nListAuthenticationMethodsResponseListAuthenticationMethodsResponse.__class_vars__ListAuthenticationMethodsResponse.__private_attributes__ListAuthenticationMethodsResponse.__signature__ListAuthenticationMethodsResponse.__pydantic_complete__ListAuthenticationMethodsResponse.__pydantic_core_schema__ListAuthenticationMethodsResponse.__pydantic_custom_init__ListAuthenticationMethodsResponse.__pydantic_decorators__ListAuthenticationMethodsResponse.__pydantic_generic_metadata__ListAuthenticationMethodsResponse.__pydantic_parent_namespace__ListAuthenticationMethodsResponse.__pydantic_post_init__ListAuthenticationMethodsResponse.__pydantic_root_model__ListAuthenticationMethodsResponse.__pydantic_serializer__ListAuthenticationMethodsResponse.__pydantic_validator__ListAuthenticationMethodsResponse.__pydantic_fields__ListAuthenticationMethodsResponse.__pydantic_computed_fields__ListAuthenticationMethodsResponse.__pydantic_extra__ListAuthenticationMethodsResponse.__pydantic_fields_set__ListAuthenticationMethodsResponse.__pydantic_private__ListAuthenticationMethodsResponse.authentication_methodsListAuthenticatorsOptions\nListConnectedAccountConnectionsResponseListConnectedAccountConnectionsResponse.__class_vars__ListConnectedAccountConnectionsResponse.__private_attributes__ListConnectedAccountConnectionsResponse.__signature__ListConnectedAccountConnectionsResponse.__pydantic_complete__ListConnectedAccountConnectionsResponse.__pydantic_core_schema__ListConnectedAccountConnectionsResponse.__pydantic_custom_init__ListConnectedAccountConnectionsResponse.__pydantic_decorators__ListConnectedAccountConnectionsResponse.__pydantic_generic_metadata__ListConnectedAccountConnectionsResponse.__pydantic_parent_namespace__ListConnectedAccountConnectionsResponse.__pydantic_post_init__ListConnectedAccountConnectionsResponse.__pydantic_root_model__ListConnectedAccountConnectionsResponse.__pydantic_serializer__ListConnectedAccountConnectionsResponse.__pydantic_validator__ListConnectedAccountConnectionsResponse.__pydantic_fields__ListConnectedAccountConnectionsResponse.__pydantic_computed_fields__ListConnectedAccountConnectionsResponse.__pydantic_extra__ListConnectedAccountConnectionsResponse.__pydantic_fields_set__ListConnectedAccountConnectionsResponse.__pydantic_private__ListConnectedAccountConnectionsResponse.connectionsListConnectedAccountConnectionsResponse.nextListConnectedAccountsResponseListConnectedAccountsResponse.__class_vars__ListConnectedAccountsResponse.__private_attributes__ListConnectedAccountsResponse.__signature__ListConnectedAccountsResponse.__pydantic_complete__ListConnectedAccountsResponse.__pydantic_core_schema__ListConnectedAccountsResponse.__pydantic_custom_init__ListConnectedAccountsResponse.__pydantic_decorators__ListConnectedAccountsResponse.__pydantic_generic_metadata__ListConnectedAccountsResponse.__pydantic_parent_namespace__ListConnectedAccountsResponse.__pydantic_post_init__ListConnectedAccountsResponse.__pydantic_root_model__ListConnectedAccountsResponse.__pydantic_serializer__ListConnectedAccountsResponse.__pydantic_validator__ListConnectedAccountsResponse.__pydantic_fields__ListConnectedAccountsResponse.__pydantic_computed_fields__ListConnectedAccountsResponse.__pydantic_extra__ListConnectedAccountsResponse.__pydantic_fields_set__ListConnectedAccountsResponse.__pydantic_private__ListConnectedAccountsResponse.accountsListConnectedAccountsResponse.nextLoginBackchannelOptions\nLoginBackchannelResult\nLoginWithCustomTokenExchangeOptionsLoginWithCustomTokenExchangeOptions.actor_tokenLoginWithCustomTokenExchangeOptions.actor_token_typeLoginWithCustomTokenExchangeOptions.audienceLoginWithCustomTokenExchangeOptions.authorization_paramsLoginWithCustomTokenExchangeOptions.organizationLoginWithCustomTokenExchangeOptions.scopeLoginWithCustomTokenExchangeOptions.subject_tokenLoginWithCustomTokenExchangeOptions.subject_token_typeLoginWithCustomTokenExchangeResult\nLogoutOptions\nLogoutTokenClaims\nMfaRequirement\nMfaRequirements\nMfaTokenContext\nMfaVerifyResponse\nOobEnrollmentResponse\nOtpEnrollmentResponse\nPasskeyAuthResponse\nPasskeyAuthenticatorSelection\nPasskeyLoginChallengeResponsePasskeyLoginResult\nPasskeyPubKeyCredParam\nPasskeyPublicKeyOptionsPasskeyPublicKeyOptions.authenticator_selectionPasskeyPublicKeyOptions.challengePasskeyPublicKeyOptions.model_configPasskeyPublicKeyOptions.pub_key_cred_paramsPasskeyPublicKeyOptions.rpPasskeyPublicKeyOptions.rp_idPasskeyPublicKeyOptions.timeoutPasskeyPublicKeyOptions.userPasskeyPublicKeyOptions.user_verificationPasskeyRpInfo\nPasskeySignupChallengeResponse\nPasskeyTokenResponse\nPasskeyUserInfo\nPasskeyUserProfile\nPasswordlessStartResult\nServerClientOptionsBaseServerClientOptionsBase.authorization_paramsServerClientOptionsBase.client_assertion_signing_algServerClientOptionsBase.client_assertion_signing_keyServerClientOptionsBase.client_idServerClientOptionsBase.client_secretServerClientOptionsBase.custom_fetchServerClientOptionsBase.domainServerClientOptionsBase.organizationServerClientOptionsBase.state_identifierServerClientOptionsBase.transaction_identifierServerClientOptionsWithSecret\nSessionData\nSessionTransferTokenResultSessionTransferTokenResult.session_transfer_tokenSessionTransferTokenResult.issued_token_typeSessionTransferTokenResult.expires_inSessionTransferTokenResult.token_typeSessionTransferTokenResult.scopeSessionTransferTokenResult.expires_inSessionTransferTokenResult.issued_token_typeSessionTransferTokenResult.scopeSessionTransferTokenResult.session_transfer_tokenSessionTransferTokenResult.token_typeStartEnterpriseLoginOptions\nStartInteractiveLoginOptions\nStartLinkUserOptionsStartLinkUserOptions.__class_vars__StartLinkUserOptions.__private_attributes__StartLinkUserOptions.__signature__StartLinkUserOptions.__pydantic_complete__StartLinkUserOptions.__pydantic_core_schema__StartLinkUserOptions.__pydantic_custom_init__StartLinkUserOptions.__pydantic_decorators__StartLinkUserOptions.__pydantic_generic_metadata__StartLinkUserOptions.__pydantic_parent_namespace__StartLinkUserOptions.__pydantic_post_init__StartLinkUserOptions.__pydantic_root_model__StartLinkUserOptions.__pydantic_serializer__StartLinkUserOptions.__pydantic_validator__StartLinkUserOptions.__pydantic_fields__StartLinkUserOptions.__pydantic_computed_fields__StartLinkUserOptions.__pydantic_extra__StartLinkUserOptions.__pydantic_fields_set__StartLinkUserOptions.__pydantic_private__StartLinkUserOptions.app_stateStartLinkUserOptions.authorization_paramsStartLinkUserOptions.connectionStartLinkUserOptions.connection_scopeStartPasswordlessEmailOptions\nStartPasswordlessSmsOptions\nStateData\nTokenExchangeResponseTokenExchangeResponse.access_tokenTokenExchangeResponse.token_typeTokenExchangeResponse.expires_inTokenExchangeResponse.scopeTokenExchangeResponse.issued_token_typeTokenExchangeResponse.id_tokenTokenExchangeResponse.refresh_tokenTokenExchangeResponse.actTokenExchangeResponse.access_tokenTokenExchangeResponse.actTokenExchangeResponse.expires_inTokenExchangeResponse.id_tokenTokenExchangeResponse.issued_token_typeTokenExchangeResponse.refresh_tokenTokenExchangeResponse.scopeTokenExchangeResponse.token_typeTokenSet\nTransactionData\nUpdateAuthenticationMethodRequestUpdateAuthenticationMethodRequest.__class_vars__UpdateAuthenticationMethodRequest.__private_attributes__UpdateAuthenticationMethodRequest.__signature__UpdateAuthenticationMethodRequest.__pydantic_complete__UpdateAuthenticationMethodRequest.__pydantic_core_schema__UpdateAuthenticationMethodRequest.__pydantic_custom_init__UpdateAuthenticationMethodRequest.__pydantic_decorators__UpdateAuthenticationMethodRequest.__pydantic_generic_metadata__UpdateAuthenticationMethodRequest.__pydantic_parent_namespace__UpdateAuthenticationMethodRequest.__pydantic_post_init__UpdateAuthenticationMethodRequest.__pydantic_root_model__UpdateAuthenticationMethodRequest.__pydantic_serializer__UpdateAuthenticationMethodRequest.__pydantic_validator__UpdateAuthenticationMethodRequest.__pydantic_fields__UpdateAuthenticationMethodRequest.__pydantic_computed_fields__UpdateAuthenticationMethodRequest.__pydantic_extra__UpdateAuthenticationMethodRequest.__pydantic_fields_set__UpdateAuthenticationMethodRequest.__pydantic_private__UpdateAuthenticationMethodRequest.nameUpdateAuthenticationMethodRequest.preferred_authentication_methodUserClaims\nVerifyAuthenticationMethodRequestVerifyAuthenticationMethodRequest.__class_vars__VerifyAuthenticationMethodRequest.__private_attributes__VerifyAuthenticationMethodRequest.__signature__VerifyAuthenticationMethodRequest.__pydantic_complete__VerifyAuthenticationMethodRequest.__pydantic_core_schema__VerifyAuthenticationMethodRequest.__pydantic_custom_init__VerifyAuthenticationMethodRequest.__pydantic_decorators__VerifyAuthenticationMethodRequest.__pydantic_generic_metadata__VerifyAuthenticationMethodRequest.__pydantic_parent_namespace__VerifyAuthenticationMethodRequest.__pydantic_post_init__VerifyAuthenticationMethodRequest.__pydantic_root_model__VerifyAuthenticationMethodRequest.__pydantic_serializer__VerifyAuthenticationMethodRequest.__pydantic_validator__VerifyAuthenticationMethodRequest.__pydantic_fields__VerifyAuthenticationMethodRequest.__pydantic_computed_fields__VerifyAuthenticationMethodRequest.__pydantic_extra__VerifyAuthenticationMethodRequest.__pydantic_fields_set__VerifyAuthenticationMethodRequest.__pydantic_private__VerifyAuthenticationMethodRequest.auth_sessionVerifyAuthenticationMethodRequest.authn_responseVerifyAuthenticationMethodRequest.otp_codeVerifyAuthenticationMethodRequest.passwordVerifyAuthenticationMethodRequest.recovery_codeVerifyOobOptions\nVerifyOtpOptions\nVerifyPasswordlessOtpOptionsVerifyPasswordlessOtpOptions.audienceVerifyPasswordlessOtpOptions.client_ipVerifyPasswordlessOtpOptions.connectionVerifyPasswordlessOtpOptions.emailVerifyPasswordlessOtpOptions.model_configVerifyPasswordlessOtpOptions.phone_numberVerifyPasswordlessOtpOptions.scopeVerifyPasswordlessOtpOptions.usernameVerifyPasswordlessOtpOptions.verification_codeVerifyRecoveryCodeOptions\nChallengeTypeEnrollAuthenticatorOptionsEnrollmentResponseEnrollmentTypeOobChannelPASSWORDLESS_ALLOWED_AUTH_PARAMSPASSWORDLESS_RESERVED_AUTH_PARAMSPasskeyDeliveryMethodPasswordlessConnectionPreferredAuthMethodSESSION_EXPIRY_MAX_PLAUSIBLEStartPasswordlessOptionsVerifyMfaOptionsImport
\nfrom auth0_server_python.encryption.encrypt import (\n decrypt,\n derive_encryption_key,\n encrypt,\n)\nDecrypts the JWE token back to the original payload.
\nDerives a key using HKDF with SHA-256.
\nEncrypts the given payload into a JWE using the direct algorithm and A256CBC-HS512 encryption.
\nError classes for the SDK.\nThese exceptions provide specific error types for different failure scenarios.
\nImport
\nfrom auth0_server_python.error import (\n AccessTokenError,\n AccessTokenForConnectionError,\n AnonymousSessionCreateError,\n AnonymousSessionError,\n AnonymousSessionTokenError,\n ApiError,\n Auth0Error,\n BackchannelLogoutError,\n ConfigurationError,\n CustomTokenExchangeError,\n DomainResolverError,\n EnterpriseConnectError,\n InvalidArgumentError,\n IssuerValidationError,\n MfaApiError,\n MfaChallengeError,\n MfaEnrollmentError,\n MfaListAuthenticatorsError,\n MfaRequiredError,\n MfaTokenExpiredError,\n MfaTokenInvalidError,\n MfaVerifyError,\n MissingRequiredArgumentError,\n MissingTransactionError,\n MyAccountApiError,\n OrganizationTokenValidationError,\n PasskeyError,\n PasswordlessStartError,\n PasswordlessVerifyError,\n PollingApiError,\n SessionExpiredError,\n StartLinkUserError,\n AccessTokenErrorCode,\n AccessTokenForConnectionErrorCode,\n CustomTokenExchangeErrorCode,\n EnterpriseConnectErrorCode,\n PasskeyErrorCode,\n PasswordlessErrorCode,\n)\nBases: Auth0Error
Error raised when there\u2019s an issue with access tokens.
\nBases: Auth0Error
Error when retrieving access tokens for a specific connection fails.
\nBases: AnonymousSessionError
Error thrown when creating or re-minting an anonymous session fails.
\nBases: Auth0Error
Base class for anonymous session errors.
\nBases: AnonymousSessionError
Error thrown when get_token() fails for reasons other than session expiry.
\nBases: Auth0Error
Error raised when an API request to Auth0 fails.\nContains details about the original error from Auth0.
\nBases: Exception
Base class for all Auth0 SDK errors.
\nBases: Auth0Error
Error raised during backchannel logout processing.\nThis can happen when validating or processing logout tokens.
\nBases: Auth0Error
Error raised when SDK configuration is invalid.\nThis includes invalid combinations of parameters or incorrect configuration values.
\nBases: Auth0Error
Error raised during custom token exchange operations.
\nBases: Auth0Error
Error raised when domain resolver function fails or returns invalid value.
\nThis error indicates an issue with the custom domain resolver function\nprovided for MCD (Multiple Custom Domains) support.
\nBases: Auth0Error
Error raised when a session or token method is called on a client\nconfigured for Enterprise Connect, where the SDK owns no session.
\nParents Auth0Error rather than ApiError because the refusal makes no\nrequest to Auth0, so there is no upstream error body to carry.
\nBases: Auth0Error
Error raised when a given argument is an invalid value.
\nBases: Auth0Error
Error raised when token issuer validation fails.\nThis can happen when the issuer claim in a token does not match\nthe expected issuer for the configured domain.
\nBases: Auth0Error
Base class for MFA API errors.
\nBases: MfaApiError
Error thrown when initiating an MFA challenge fails.
\nBases: MfaApiError
Error thrown when enrolling an authenticator fails.
\nBases: MfaApiError
Error thrown when listing authenticators fails.
\nBases: AccessTokenError
Error thrown when MFA step-up is required during token refresh.
\nContains an encrypted mfa_token that can be passed to MfaClient methods.\nThis error is raised in get_access_token() when the token endpoint returns\n\u2018mfa_required\u2019.
\nBases: Auth0Error
Error thrown when the encrypted MFA token has expired.
\nBases: Auth0Error
Error thrown when the encrypted MFA token is invalid or tampered.
\nBases: MfaApiError
Error thrown when MFA verification fails.
\nBases: Auth0Error
Error raised when a required argument is missing.\nIncludes the name of the missing argument in the error message.
\nBases: Auth0Error
Error raised when a required transaction is missing.\nThis typically happens during the callback phase when the transaction\nfrom the initial authorization request cannot be found.
\nBases: Auth0Error
Error raised when an API request to My Account API fails.\nContains details about the original error from Auth0.
\nBases: Auth0Error
Raised when org_id or org_name claim in the ID token fails validation\nagainst the organization value that was requested at login.
\nBases: Auth0Error
Error raised during passkey authentication operations.
\ncode \u2013 Error code, see PasskeyErrorCode.
message \u2013 Human-readable description.
cause \u2013 Underlying exception, if any.
auth_session \u2013 Session to resubmit against, set when Auth0 keeps it alive after a wrong code.
verification_required \u2013 Identifiers whose codes are still unverified.
retry_after \u2013 Seconds from the Retry-After header, None when absent or not whole seconds.
status_code \u2013 HTTP status of an Auth0 error response, None otherwise.
True when a code was wrong but the session is alive, so the caller can resubmit.
\nBases: ApiError
Error raised when POST /passwordless/start fails.
\nBases: ApiError
Error raised when the passwordless OTP token exchange fails.
\nBases: ApiError
Error raised when a polling API request to Auth0 fails.\nContains details about the original error from Auth0 and the requested polling interval.
\nBases: Auth0Error
Error raised when a session is rejected at login because its\nsession_expiry ceiling is already in the past.
\nBases: Auth0Error
Error raised when user linking process fails to start.\nThis typically happens when trying to link accounts without\nhaving an authenticated user first.
\nError codes for access token operations.
\nError codes for connection-specific token operations.
\nError codes for custom token exchange operations.
\nError code for the Enterprise Connect misuse guard.
\nError codes for passkey operations.
\nError codes for passwordless operations.
\nAccessTokenError\nAccessTokenForConnectionError\nAnonymousSessionCreateErrorAnonymousSessionError\nAnonymousSessionTokenErrorApiError\nAuth0Error\nBackchannelLogoutError\nConfigurationError\nCustomTokenExchangeError\nDomainResolverError\nEnterpriseConnectError\nInvalidArgumentError\nIssuerValidationError\nMfaApiError\nMfaChallengeErrorMfaEnrollmentErrorMfaListAuthenticatorsErrorMfaRequiredError\nMfaTokenExpiredError\nMfaTokenInvalidError\nMfaVerifyErrorMissingRequiredArgumentError\nMissingTransactionError\nMyAccountApiError\nOrganizationTokenValidationError\nPasskeyError\nPasswordlessStartError\nPasswordlessVerifyError\nPollingApiError\nSessionExpiredError\nStartLinkUserError\nAccessTokenErrorCodeAccessTokenErrorCode.AUTH_REQ_ID_ERRORAccessTokenErrorCode.DOMAIN_MISMATCHAccessTokenErrorCode.FAILED_TO_REFRESH_TOKENAccessTokenErrorCode.FAILED_TO_REQUEST_TOKENAccessTokenErrorCode.INCORRECT_AUDIENCEAccessTokenErrorCode.MISSING_REFRESH_TOKENAccessTokenErrorCode.MISSING_SESSIONAccessTokenErrorCode.MISSING_SESSION_DOMAINAccessTokenErrorCode.REFRESH_TOKEN_ERRORAccessTokenErrorCode.SESSION_EXPIREDAccessTokenForConnectionErrorCodeAccessTokenForConnectionErrorCode.API_ERRORAccessTokenForConnectionErrorCode.DOMAIN_MISMATCHAccessTokenForConnectionErrorCode.FAILED_TO_RETRIEVEAccessTokenForConnectionErrorCode.FETCH_ERRORAccessTokenForConnectionErrorCode.MISSING_REFRESH_TOKENAccessTokenForConnectionErrorCode.MISSING_SESSION_DOMAINCustomTokenExchangeErrorCodeCustomTokenExchangeErrorCode.ACTOR_UNAVAILABLECustomTokenExchangeErrorCode.INVALID_RESPONSECustomTokenExchangeErrorCode.INVALID_TOKEN_FORMATCustomTokenExchangeErrorCode.MISSING_ACTOR_TOKENCustomTokenExchangeErrorCode.MISSING_ACTOR_TOKEN_TYPECustomTokenExchangeErrorCode.SESSION_TRANSFER_DISABLEDCustomTokenExchangeErrorCode.SETACTOR_REQUIREDCustomTokenExchangeErrorCode.TOKEN_EXCHANGE_FAILEDEnterpriseConnectErrorCode\nPasskeyErrorCode\nPasswordlessErrorCodePasswordlessErrorCode.BAD_CONNECTIONPasswordlessErrorCode.BAD_EMAILPasswordlessErrorCode.DISCOVERY_ERRORPasswordlessErrorCode.INVALID_AUDIENCEPasswordlessErrorCode.INVALID_GRANTPasswordlessErrorCode.INVALID_ISSUERPasswordlessErrorCode.SMS_PROVIDER_ERRORPasswordlessErrorCode.START_FAILEDPasswordlessErrorCode.TOKEN_EXPIREDPasswordlessErrorCode.TOO_MANY_REQUESTSPasswordlessErrorCode.VERIFY_FAILEDThis page contains auto-generated API reference documentation [1].
\nImport
\nfrom auth0_server_python.store.abstract import (\n AbstractDataStore,\n StateStore,\n TransactionStore,\n)\nAbstract base class for data stores.\nProvides common functionality for different store implementations.
\nDecrypt data after retrieval.
\nidentifier \u2013 Unique key used as part of encryption salt
encrypted_data \u2013 Encrypted data to decrypt
Decrypted data
\nDelete data by identifier.
\nidentifier \u2013 Unique key for the stored data
options \u2013 Additional operation-specific options
Encrypt data before storing.
\nidentifier \u2013 Unique key used as part of encryption salt
state_data \u2013 Data to encrypt
Encrypted string representation of the data
\nRetrieve data by identifier.
\nidentifier \u2013 Unique key for the stored data
options \u2013 Additional operation-specific options
The stored data or None if not found
\nStore data with the given identifier.
\nidentifier \u2013 Unique key for the stored data
state \u2013 Data to store
remove_if_expires \u2013 Whether to auto-remove expired data
options \u2013 Additional operation-specific options
Bases: AbstractDataStore[dict[str, Any]]
Abstract store for persistent session data.\nExtends AbstractDataStore with logout token functionality.
\nDelete sessions based on logout token claims.
\nPer the OIDC Back-Channel Logout spec, either sid or sub\n(or both) will be present. Implementations should match on\nwhichever claim is present (OR logic), not require both (AND).
When iss is present in claims (always included by the SDK),\nimplementations should validate that the token\u2019s issuer matches\nthe session\u2019s stored domain before deleting. This prevents\ncross-domain session deletion in MCD deployments.
claims \u2013
Claims from the logout token. Keys:\n- sub: Subject identifier of the user\n- sid: Session identifier\n- iss: Token issuer (always included; compare against
\n\nsession domain before deletion)
\n
options \u2013 Additional operation-specific options
Note
\nDefault implementation raises NotImplementedError.\nConcrete implementations should override this method.
\nBases: AbstractDataStore[dict[str, Any]]
Abstract store for temporary transaction data during auth flows.
\nTelemetry support for auth0-server-python SDK.
\nBuilds and caches the Auth0-Client and User-Agent headers sent\non every HTTP request to Auth0 endpoints.
\nImport
\nfrom auth0_server_python.telemetry import Telemetry\nBuilds telemetry headers for Auth0 HTTP requests.
\nCreate a Telemetry instance with this SDK\u2019s package metadata.
\nImport
\nfrom auth0_server_python.utils.helpers import (\n PKCE,\n State,\n URL,\n build_domain_resolver_context,\n validate_org_claims,\n validate_resolved_domain_value,\n)\nGenerate a PKCE code challenge from a code verifier.
\nGenerate a PKCE code verifier.
\nGenerate a cryptographically secure random string.
\nTrue when the session ceiling is already in the past at login.
\nCompares the ceiling against the ID token iat, or wall-clock now when\niat is absent, using the same leeway as is_session_ceiling_reached. A\nNone ceiling means none was asserted and is never treated as expired.
\nTrue when the session ceiling has been reached (applying negative\nleeway for clock skew). None means no ceiling was asserted, so the\nsession is never expired on this basis.
\nUtility function to update the state with a new response from the token endpoint
\naudience \u2013 The audience of the token endpoint response
state_data \u2013 The existing state data to update, or None if no state data available
token_endpoint_response \u2013 The response from the token endpoint
Updated state data
\nUpdate state data with connection token set information
\noptions \u2013 Options containing connection details
state_data \u2013 Existing state data
token_endpoint_response \u2013 Response from token endpoint
Updated state data
\nBuild a complete URL by appending query parameters to a base URL.
\nbase_url \u2013 The base URL without query parameters.
params \u2013 A dictionary of query parameters to add.
The complete URL with the query parameters appended.
\nCreate an Auth0 logout URL.
\ndomain \u2013 Auth0 domain.
client_id \u2013 Auth0 client ID.
return_to \u2013 Optional URL to redirect to after logout.
federated \u2013 When True, add federated so Auth0 also ends the upstream\nIdP session. Its presence is the signal; the value is ignored.
The complete logout URL.
\nParse the query parameters from a URL.
\nurl \u2013 The URL to parse.
\nA dictionary of query parameters, converting list values to a single string.
\nRequire url to be an absolute https URL (http allowed only for localhost/loopback).
\nRaises MissingRequiredArgumentError if blank, InvalidArgumentError otherwise.
\nBuild DomainResolverContext from store_options.
\nExtracts request information in a framework-agnostic way using duck typing.
\nstore_options \u2013 Dictionary containing \u2018request\u2019 and \u2018response\u2019 objects
\nDomainResolverContext with extracted request data
\nValidate org_id or org_name in token claims against the requested organization.
\n\u2018org_\u2019 prefix \u2192 validate claims[\u2018org_id\u2019] exact match (case-sensitive)
no prefix \u2192 validate claims[\u2018org_name\u2019] case-insensitive match (NFC-normalized)
OrganizationTokenValidationError \u2013 if the claim is missing, not a string, or mismatched.
\nValidate the value returned by domain resolver.
\ndomain_value \u2013 The value returned by the domain resolver
\nThe validated domain string
\nDomainResolverError \u2013 If the returned value is invalid
\nUtility functions for auth0-server-python SDK.\nThese helpers provide common functionality used across the SDK.
\n