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": "
\n

auth0-server-python\u00b6

\n

Auth0 server-side Python SDK: authentication flows, token management, and session handling\nfor web applications.

\n
\n
\n
\n", "metatags": "\n", "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["reference/index", "API Reference", "N", "next"]], "sourcename": "index.rst.txt", "toc": "\n", "display_toc": false, "page_source_suffix": ".rst", "current_page_name": "index", "sidebars": ["about.html", "navigation.html", "relations.html", "searchbox.html", "donate.html"], "alabaster_version": "0.7.16", "alabaster_version_info": [0, 7, 16]} \ No newline at end of file diff --git a/sphinx/json/reference/auth_schemes/bearer_auth/index.fjson b/sphinx/json/reference/auth_schemes/bearer_auth/index.fjson new file mode 100644 index 0000000..34dd672 --- /dev/null +++ b/sphinx/json/reference/auth_schemes/bearer_auth/index.fjson @@ -0,0 +1 @@ +{"parents": [{"link": "../../", "title": "API Reference"}, {"link": "../", "title": "auth_schemes"}], "prev": {"link": "../", "title": "auth_schemes"}, "next": {"link": "../client_assertion/", "title": "auth_schemes.client_assertion"}, "title": "auth_schemes.bearer_auth", "meta": null, "body": "
\n

auth_schemes.bearer_auth\u00b6

\n

Import

\n
from auth0_server_python.auth_schemes.bearer_auth import BearerAuth\n
\n
\n
\n

Module Contents\u00b6

\n
\n
\nclass BearerAuth(token: str)[source]\u00b6
\n

Bases: httpx.Auth

\n

Base class for all authentication schemes.

\n

To implement a custom authentication scheme, subclass Auth and override\nthe .auth_flow() method.

\n

If 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.

\n
\n
\nauth_flow(request)[source]\u00b6
\n

Execute the authentication flow.

\n

To dispatch a request, yield it:

\n

`\nyield request\n`

\n

The client will .send() the response back into the flow generator. You can\naccess it like so:

\n

`\nresponse = yield request\n`

\n

A return (or reaching the end of the generator) will result in the\nclient returning the last response obtained from the server.

\n

You can dispatch as many requests as is necessary.

\n
\n\n
\n
\ntoken\u00b6
\n
\n\n
\n\n
\n
\n", "metatags": "\n", "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["reference/auth_schemes/client_assertion/index", "auth_schemes.client_assertion", "N", "next"], ["reference/auth_schemes/index", "auth_schemes", "P", "previous"]], "sourcename": "reference/auth_schemes/bearer_auth/index.rst.txt", "toc": "\n", "display_toc": true, "page_source_suffix": ".rst", "current_page_name": "reference/auth_schemes/bearer_auth/index", "sidebars": ["about.html", "navigation.html", "relations.html", "searchbox.html", "donate.html"], "alabaster_version": "0.7.16", "alabaster_version_info": [0, 7, 16]} \ No newline at end of file diff --git a/sphinx/json/reference/auth_schemes/client_assertion/index.fjson b/sphinx/json/reference/auth_schemes/client_assertion/index.fjson new file mode 100644 index 0000000..7241bc6 --- /dev/null +++ b/sphinx/json/reference/auth_schemes/client_assertion/index.fjson @@ -0,0 +1 @@ +{"parents": [{"link": "../../", "title": "API Reference"}, {"link": "../", "title": "auth_schemes"}], "prev": {"link": "../bearer_auth/", "title": "auth_schemes.bearer_auth"}, "next": {"link": "../dpop_auth/", "title": "auth_schemes.dpop_auth"}, "title": "auth_schemes.client_assertion", "meta": null, "body": "
\n

auth_schemes.client_assertion\u00b6

\n

Import

\n
from auth0_server_python.auth_schemes.client_assertion import (\n    build_client_assertion,\n    validate_client_assertion_key,\n)\n
\n
\n
\n

Module Contents\u00b6

\n
\n
\nbuild_client_assertion(private_key: str | bytes, client_id: str, issuer: str, alg: str = 'RS256') → str[source]\u00b6
\n

Mint a private_key_jwt client assertion for token-endpoint authentication (RFC 7523).

\n
\n
Parameters:
\n
    \n
  • private_key \u2013 The client\u2019s private signing key (PKCS8 PEM string or bytes).

  • \n
  • client_id \u2013 The Auth0 client ID, used as both the issuer and subject claim.

  • \n
  • issuer \u2013 The authorization server issuer identifier, used as the audience claim.

  • \n
  • alg \u2013 The signing algorithm (defaults to \u201cRS256\u201d).

  • \n
\n
\n
Returns:
\n

The signed client-assertion JWT.

\n
\n
\n
\n\n
\n
\nvalidate_client_assertion_key(private_key: str | bytes, alg: str = 'RS256') → None[source]\u00b6
\n

Verify the signing key and algorithm can produce a client assertion.

\n
\n
Parameters:
\n
    \n
  • private_key \u2013 The client\u2019s private signing key (PKCS8 PEM string or bytes).

  • \n
  • alg \u2013 The signing algorithm (defaults to \u201cRS256\u201d).

  • \n
\n
\n
Raises:
\n

ConfigurationError \u2013 If the key is malformed or does not match the algorithm.

\n
\n
\n
\n\n
\n
\nCLIENT_ASSERTION_TYPE = 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer'\u00b6
\n
\n\n
\n
\n", "metatags": "\n", "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["reference/auth_schemes/dpop_auth/index", "auth_schemes.dpop_auth", "N", "next"], ["reference/auth_schemes/bearer_auth/index", "auth_schemes.bearer_auth", "P", "previous"]], "sourcename": "reference/auth_schemes/client_assertion/index.rst.txt", "toc": "\n", "display_toc": true, "page_source_suffix": ".rst", "current_page_name": "reference/auth_schemes/client_assertion/index", "sidebars": ["about.html", "navigation.html", "relations.html", "searchbox.html", "donate.html"], "alabaster_version": "0.7.16", "alabaster_version_info": [0, 7, 16]} \ No newline at end of file diff --git a/sphinx/json/reference/auth_schemes/dpop_auth/index.fjson b/sphinx/json/reference/auth_schemes/dpop_auth/index.fjson new file mode 100644 index 0000000..08c7a3d --- /dev/null +++ b/sphinx/json/reference/auth_schemes/dpop_auth/index.fjson @@ -0,0 +1 @@ +{"parents": [{"link": "../../", "title": "API Reference"}, {"link": "../", "title": "auth_schemes"}], "prev": {"link": "../client_assertion/", "title": "auth_schemes.client_assertion"}, "next": null, "title": "auth_schemes.dpop_auth", "meta": null, "body": "
\n

auth_schemes.dpop_auth\u00b6

\n

Import

\n
from auth0_server_python.auth_schemes.dpop_auth import (\n    DPoPAuth,\n    make_dpop_proof_for_token_endpoint,\n)\n
\n
\n
\n

Module Contents\u00b6

\n
\n
\nclass DPoPAuth(token: str, key: jwcrypto.jwk.JWK)[source]\u00b6
\n

Bases: httpx.Auth

\n

Base class for all authentication schemes.

\n

To implement a custom authentication scheme, subclass Auth and override\nthe .auth_flow() method.

\n

If 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.

\n
\n
\nauth_flow(request: httpx.Request)[source]\u00b6
\n

Execute the authentication flow.

\n

To dispatch a request, yield it:

\n

`\nyield request\n`

\n

The client will .send() the response back into the flow generator. You can\naccess it like so:

\n

`\nresponse = yield request\n`

\n

A return (or reaching the end of the generator) will result in the\nclient returning the last response obtained from the server.

\n

You can dispatch as many requests as is necessary.

\n
\n\n
\n
\nrequires_request_body = True\u00b6
\n
\n\n
\n\n
\n
\nmake_dpop_proof_for_token_endpoint(key: jwcrypto.jwk.JWK, method: str, url: str, nonce: str | None = None) → str[source]\u00b6
\n

Build 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.

\n
\n\n
\n
\n", "metatags": "\n", "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["reference/auth_schemes/client_assertion/index", "auth_schemes.client_assertion", "P", "previous"]], "sourcename": "reference/auth_schemes/dpop_auth/index.rst.txt", "toc": "\n", "display_toc": true, "page_source_suffix": ".rst", "current_page_name": "reference/auth_schemes/dpop_auth/index", "sidebars": ["about.html", "navigation.html", "relations.html", "searchbox.html", "donate.html"], "alabaster_version": "0.7.16", "alabaster_version_info": [0, 7, 16]} \ No newline at end of file diff --git a/sphinx/json/reference/auth_schemes/index.fjson b/sphinx/json/reference/auth_schemes/index.fjson new file mode 100644 index 0000000..d1494e0 --- /dev/null +++ b/sphinx/json/reference/auth_schemes/index.fjson @@ -0,0 +1 @@ +{"parents": [{"link": "../", "title": "API Reference"}], "prev": {"link": "../auth_server/server_client/", "title": "auth_server.server_client"}, "next": {"link": "bearer_auth/", "title": "auth_schemes.bearer_auth"}, "title": "auth_schemes", "meta": null, "body": "
\n

auth_schemes\u00b6

\n
\n

Submodules\u00b6

\n\n
\n
\n", "metatags": "\n", "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["reference/auth_schemes/bearer_auth/index", "auth_schemes.bearer_auth", "N", "next"], ["reference/auth_server/server_client/index", "auth_server.server_client", "P", "previous"]], "sourcename": "reference/auth_schemes/index.rst.txt", "toc": "\n", "display_toc": true, "page_source_suffix": ".rst", "current_page_name": "reference/auth_schemes/index", "sidebars": ["about.html", "navigation.html", "relations.html", "searchbox.html", "donate.html"], "alabaster_version": "0.7.16", "alabaster_version_info": [0, 7, 16]} \ No newline at end of file diff --git a/sphinx/json/reference/auth_server/anonymous/client/index.fjson b/sphinx/json/reference/auth_server/anonymous/client/index.fjson new file mode 100644 index 0000000..1cbd76b --- /dev/null +++ b/sphinx/json/reference/auth_server/anonymous/client/index.fjson @@ -0,0 +1 @@ +{"parents": [{"link": "../../../", "title": "API Reference"}, {"link": "../../", "title": "auth_server"}, {"link": "../", "title": "auth_server.anonymous"}], "prev": {"link": "../", "title": "auth_server.anonymous"}, "next": {"link": "../helpers/", "title": "auth_server.anonymous.helpers"}, "title": "auth_server.anonymous.client", "meta": null, "body": "
\n

auth_server.anonymous.client\u00b6

\n

Anonymous Sessions client for auth0-server-python SDK.\nHandles pre-login anon@ identity operations against the Auth0 anonymous session API.

\n

Import

\n
from auth0_server_python.auth_server.anonymous.client import AnonymousClient\n
\n
\n
\n

Module Contents\u00b6

\n
\n
\nclass AnonymousClient(domain: str | Callable | None, client_id: str, client_secret: str | None, anonymous_store=None, default_audience: str | None = None, default_scope: str | None = None, headers: dict[str, str] | None = None, client_assertion_signing_key: str | None = None, client_assertion_signing_alg: str | None = None)[source]\u00b6
\n

Client for Auth0 anonymous session operations.

\n
\n
\nasync create_session(options: auth0_server_python.auth_types.CreateAnonymousSessionOptions | dict[str, Any] | None = None, *, audience: str | None = None, scope: str | None = None, metadata: dict[str, Any] | None = None, store_options: dict[str, Any] | None = None) → auth0_server_python.auth_types.AnonymousSession[source]\u00b6
\n

Mint a fresh anon@<uuid> identity.

\n
\n
Parameters:
\n
    \n
  • options \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.

  • \n
  • audience \u2013 Audience for the session. Falls back to options.audience,\nthen to the client\u2019s configured default, when omitted.

  • \n
  • scope \u2013 Scope for the session. Falls back to options.scope, then to\nthe client\u2019s configured default, when omitted.

  • \n
  • metadata \u2013 Metadata to attach at creation, up to 1KB. Cannot be\nchanged after creation. Falls back to options.metadata.

  • \n
  • store_options \u2013 Options passed to the anonymous store.

  • \n
\n
\n
Returns:
\n

The newly created AnonymousSession.

\n
\n
Raises:
\n
\n
\n
\n
\n\n
\n
\nasync exchange_transfer_token_for_injection(origin_domain: str, store_options: dict[str, Any] | None = None) → str | None[source]\u00b6
\n

Mint a short-lived transfer ticket from the active session for login injection.

\n
\n
Parameters:
\n
    \n
  • origin_domain \u2013 The domain the /authorize URL is being built for.

  • \n
  • store_options \u2013 Options passed to the anonymous store.

  • \n
\n
\n
Returns:
\n

The minted transfer ticket, or None.

\n
\n
\n
\n\n
\n
\nasync get_session(store_options: dict[str, Any] | None = None) → auth0_server_python.auth_types.AnonymousSessionData | None[source]\u00b6
\n

Return stored anonymous session identity without calling Auth0.

\n
\n
Parameters:
\n

store_options \u2013 Options passed to the anonymous store.

\n
\n
Returns:
\n

The 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.

\n
\n
\n
\n\n
\n
\nasync get_token(store_options: dict[str, Any] | None = None, *, audience: str | None = None, scope: str | None = None) → auth0_server_python.auth_types.AnonymousSession[source]\u00b6
\n

Return a valid anonymous access token, renewing or re-minting as needed.

\n
\n
Parameters:
\n
    \n
  • store_options \u2013 Options passed to the anonymous store.

  • \n
  • audience \u2013 Audience to retrieve a token for. Falls back to the\nclient\u2019s configured default when omitted.

  • \n
  • scope \u2013 Scope to retrieve a token for. Falls back to the client\u2019s\nconfigured default when omitted.

  • \n
\n
\n
Returns:
\n

The current or refreshed AnonymousSession.

\n
\n
Raises:
\n
\n
\n
\n
\n\n
\n
\nasync logout(store_options: dict[str, Any] | None = None) → None[source]\u00b6
\n

Clear the locally-held anonymous session without revoking issued tokens.

\n
\n
Parameters:
\n

store_options \u2013 Options passed to the anonymous store.

\n
\n
Raises:
\n

ConfigurationError \u2013 No anonymous_store configured.

\n
\n
\n
\n\n
\n\n
\n
\n", "metatags": "\n", "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["reference/auth_server/anonymous/helpers/index", "auth_server.anonymous.helpers", "N", "next"], ["reference/auth_server/anonymous/index", "auth_server.anonymous", "P", "previous"]], "sourcename": "reference/auth_server/anonymous/client/index.rst.txt", "toc": "\n", "display_toc": true, "page_source_suffix": ".rst", "current_page_name": "reference/auth_server/anonymous/client/index", "sidebars": ["about.html", "navigation.html", "relations.html", "searchbox.html", "donate.html"], "alabaster_version": "0.7.16", "alabaster_version_info": [0, 7, 16]} \ No newline at end of file diff --git a/sphinx/json/reference/auth_server/anonymous/helpers/index.fjson b/sphinx/json/reference/auth_server/anonymous/helpers/index.fjson new file mode 100644 index 0000000..3c2fe3a --- /dev/null +++ b/sphinx/json/reference/auth_server/anonymous/helpers/index.fjson @@ -0,0 +1 @@ +{"parents": [{"link": "../../../", "title": "API Reference"}, {"link": "../../", "title": "auth_server"}, {"link": "../", "title": "auth_server.anonymous"}], "prev": {"link": "../client/", "title": "auth_server.anonymous.client"}, "next": {"link": "../../mfa_client/", "title": "auth_server.mfa_client"}, "title": "auth_server.anonymous.helpers", "meta": null, "body": "
\n

auth_server.anonymous.helpers\u00b6

\n

Pure helper functions for anonymous session operations.

\n

Import

\n
from 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)\n
\n
\n
\n

Module Contents\u00b6

\n
\n
\ndecode_anonymous_sub(access_token: str) → str | None[source]\u00b6
\n

Extract the sub claim from a JWT access token without verifying the signature.

\n
\n
Parameters:
\n

access_token \u2013 The token to decode.

\n
\n
Returns:
\n

The sub claim, or None for opaque tokens, non-JWT strings, or\ntokens with no sub claim.

\n
\n
\n
\n\n
\n
\nfind_token_set(token_sets: list, audience: str | None, scope: str | None) → auth0_server_python.auth_types.AnonymousTokenSetEntry | None[source]\u00b6
\n

Return the cached token set for an audience/scope pair, or None.

\n
\n\n
\n
\nmap_anonymous_error(error_data: dict[str, Any], operation: str) → Exception[source]\u00b6
\n

Map a server error response to a typed exception.

\n
\n
Parameters:
\n
    \n
  • error_data \u2013 The parsed error response body.

  • \n
  • operation \u2013 One of \u2018create\u2019, \u2018token\u2019.

  • \n
\n
\n
Returns:
\n

The exception instance. Does not raise it.

\n
\n
\n
\n\n
\n
\nnormalize_url(value: str | None) → str | None[source]\u00b6
\n

Normalize a domain-like value for comparison.

\n
\n
Parameters:
\n

value \u2013 A domain or URL string, or None.

\n
\n
Returns:
\n

The value lowercased, scheme-qualified, and without a trailing\nslash. Falsy input is returned unchanged.

\n
\n
\n
\n\n
\n
\nparse_anonymous_error_body(response: httpx.Response) → dict[str, Any][source]\u00b6
\n

Parse an error response body as JSON.

\n
\n
Parameters:
\n

response \u2013 The HTTP response to parse.

\n
\n
Returns:
\n

The parsed JSON body, or a fallback dict with \u2018error_description\u2019\nwhen the body is not valid JSON.

\n
\n
\n
\n\n
\n
\nupsert_token_set(context: auth0_server_python.auth_types.AnonymousSessionContext, entry: auth0_server_python.auth_types.AnonymousTokenSetEntry) → auth0_server_python.auth_types.AnonymousSessionContext[source]\u00b6
\n

Return a copy of context with the token set for entry\u2019s audience/scope replaced.

\n
\n\n
\n
\nvalidate_metadata(metadata: dict[str, Any] | None) → None[source]\u00b6
\n

Validate metadata locally before it reaches the network.

\n
\n
Parameters:
\n

metadata \u2013 The metadata dict to validate, or None.

\n
\n
Raises:
\n

AnonymousSessionCreateError \u2013 metadata is not a dict, contains a\na non-JSON-serializable value, or exceeds 1KB.

\n
\n
\n
\n\n
\n
\nANON_IDENTIFIER = '_a0_anon'\u00b6
\n
\n\n
\n
\nTRANSFER_AUDIENCE = 'urn:auth0:anon_transfer'\u00b6
\n
\n\n
\n
\n", "metatags": "\n", "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["reference/auth_server/mfa_client/index", "auth_server.mfa_client", "N", "next"], ["reference/auth_server/anonymous/client/index", "auth_server.anonymous.client", "P", "previous"]], "sourcename": "reference/auth_server/anonymous/helpers/index.rst.txt", "toc": "\n", "display_toc": true, "page_source_suffix": ".rst", "current_page_name": "reference/auth_server/anonymous/helpers/index", "sidebars": ["about.html", "navigation.html", "relations.html", "searchbox.html", "donate.html"], "alabaster_version": "0.7.16", "alabaster_version_info": [0, 7, 16]} \ No newline at end of file diff --git a/sphinx/json/reference/auth_server/anonymous/index.fjson b/sphinx/json/reference/auth_server/anonymous/index.fjson new file mode 100644 index 0000000..d944008 --- /dev/null +++ b/sphinx/json/reference/auth_server/anonymous/index.fjson @@ -0,0 +1 @@ +{"parents": [{"link": "../../", "title": "API Reference"}, {"link": "../", "title": "auth_server"}], "prev": {"link": "../", "title": "auth_server"}, "next": {"link": "client/", "title": "auth_server.anonymous.client"}, "title": "auth_server.anonymous", "meta": null, "body": "
\n

auth_server.anonymous\u00b6

\n
\n

Submodules\u00b6

\n\n
\n
\n", "metatags": "\n", "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["reference/auth_server/anonymous/client/index", "auth_server.anonymous.client", "N", "next"], ["reference/auth_server/index", "auth_server", "P", "previous"]], "sourcename": "reference/auth_server/anonymous/index.rst.txt", "toc": "\n", "display_toc": true, "page_source_suffix": ".rst", "current_page_name": "reference/auth_server/anonymous/index", "sidebars": ["about.html", "navigation.html", "relations.html", "searchbox.html", "donate.html"], "alabaster_version": "0.7.16", "alabaster_version_info": [0, 7, 16]} \ No newline at end of file diff --git a/sphinx/json/reference/auth_server/index.fjson b/sphinx/json/reference/auth_server/index.fjson new file mode 100644 index 0000000..d4e2a3a --- /dev/null +++ b/sphinx/json/reference/auth_server/index.fjson @@ -0,0 +1 @@ +{"parents": [{"link": "../", "title": "API Reference"}], "prev": {"link": "../auth_types/", "title": "auth_types"}, "next": {"link": "anonymous/", "title": "auth_server.anonymous"}, "title": "auth_server", "meta": null, "body": "
\n

auth_server\u00b6

\n
\n

Submodules\u00b6

\n\n
\n
\n", "metatags": "\n", "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["reference/auth_server/anonymous/index", "auth_server.anonymous", "N", "next"], ["reference/auth_types/index", "auth_types", "P", "previous"]], "sourcename": "reference/auth_server/index.rst.txt", "toc": "\n", "display_toc": true, "page_source_suffix": ".rst", "current_page_name": "reference/auth_server/index", "sidebars": ["about.html", "navigation.html", "relations.html", "searchbox.html", "donate.html"], "alabaster_version": "0.7.16", "alabaster_version_info": [0, 7, 16]} \ No newline at end of file diff --git a/sphinx/json/reference/auth_server/mfa_client/index.fjson b/sphinx/json/reference/auth_server/mfa_client/index.fjson new file mode 100644 index 0000000..31f1574 --- /dev/null +++ b/sphinx/json/reference/auth_server/mfa_client/index.fjson @@ -0,0 +1 @@ +{"parents": [{"link": "../../", "title": "API Reference"}, {"link": "../", "title": "auth_server"}], "prev": {"link": "../anonymous/helpers/", "title": "auth_server.anonymous.helpers"}, "next": {"link": "../my_account_client/", "title": "auth_server.my_account_client"}, "title": "auth_server.mfa_client", "meta": {}, "body": "
\n

auth_server.mfa_client\u00b6

\n

MFA Client for auth0-server-python SDK.\nHandles Multi-Factor Authentication operations against the Auth0 MFA API.

\n

Import

\n
from auth0_server_python.auth_server.mfa_client import MfaClient\n
\n
\n
\n

Module Contents\u00b6

\n
\n
\nclass MfaClient(domain: str | collections.abc.Callable | None, client_id: str, client_secret: str, secret: str, state_store=None, state_identifier: str = '_a0_session', headers: dict[str, str] | None = None, session_establisher: collections.abc.Callable[Ellipsis, collections.abc.Awaitable[None]] | None = None, mfa_token_ttl: int = DEFAULT_MFA_TOKEN_TTL, apply_client_authentication: collections.abc.Callable | None = None, use_mtls: bool = False, ssl_context: ssl.SSLContext | None = None, token_endpoint_resolver: collections.abc.Callable[Ellipsis, collections.abc.Awaitable[str]] | None = None)[source]\u00b6
\n

Client for Auth0 MFA API operations.

\n

Provides methods for listing authenticators, enrolling new authenticators,\ndeleting authenticators, challenging authenticators, and verifying MFA codes.

\n

All 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.

\n
\n
\nasync challenge_authenticator(options: dict[str, Any], store_options: dict[str, Any] | None = None) → auth0_server_python.auth_types.ChallengeResponse[source]\u00b6
\n

Initiates an MFA challenge for user verification.

\n
\n
Parameters:
\n
    \n
  • options \u2013 Dict containing \u2018mfa_token\u2019, \u2018factor_type\u2019 (otp, sms, voice, email, auth0),\nand optionally \u2018authenticator_id\u2019.

  • \n
  • store_options \u2013 Optional options passed to the State Store (e.g. request/response).

  • \n
\n
\n
Returns:
\n

ChallengeResponse with challenge details.

\n
\n
Raises:
\n
\n
\n
\n
\n\n
\n
\ndecrypt_mfa_token(encrypted_token: str) → auth0_server_python.auth_types.MfaTokenContext[source]\u00b6
\n

Decrypt an MFA token and validate TTL.

\n
\n\n
\n
\nasync enroll_authenticator(options: dict[str, Any], store_options: dict[str, Any] | None = None) → auth0_server_python.auth_types.EnrollmentResponse[source]\u00b6
\n

Enrolls a new MFA authenticator for the user.

\n
\n
Parameters:
\n
    \n
  • options \u2013 Dict containing enrollment parameters.\nRequired: \u2018mfa_token\u2019, \u2018factor_type\u2019 (otp, sms, voice, email, auth0).\nOptional: \u2018phone_number\u2019, \u2018email\u2019.

  • \n
  • store_options \u2013 Optional options passed to the State Store (e.g. request/response).

  • \n
\n
\n
Returns:
\n

OtpEnrollmentResponse or OobEnrollmentResponse.

\n
\n
Raises:
\n

MfaEnrollmentError \u2013 When enrollment fails.

\n
\n
\n
\n\n
\n
\nasync list_authenticators(options: dict[str, Any], store_options: dict[str, Any] | None = None) → list[auth0_server_python.auth_types.AuthenticatorResponse][source]\u00b6
\n

Lists all MFA authenticators enrolled by the user.

\n
\n
Parameters:
\n
    \n
  • options \u2013 Dict containing \u2018mfa_token\u2019 (raw, decrypted).

  • \n
  • store_options \u2013 Optional options passed to the State Store (e.g. request/response).

  • \n
\n
\n
Returns:
\n

List of enrolled authenticators.

\n
\n
Raises:
\n

MfaListAuthenticatorsError \u2013 When the request fails.

\n
\n
\n
\n\n
\n
\nasync verify(options: dict[str, Any], store_options: dict[str, Any] | None = None, dpop_key: jwcrypto.jwk.JWK | None = None) → auth0_server_python.auth_types.MfaVerifyResponse[source]\u00b6
\n

Verifies an MFA code and completes authentication.

\n

Supports OTP, OOB (with binding code), and recovery code verification.

\n

If 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.

\n
\n
Parameters:
\n
    \n
  • options \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

  • \n
  • store_options \u2013 Optional options passed to the State Store (e.g. request/response).

  • \n
  • 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.

  • \n
\n
\n
Returns:
\n

MfaVerifyResponse with access_token, token_type, etc.

\n
\n
Raises:
\n
    \n
  • MfaVerifyError \u2013 When verification fails, or when dpop_key was supplied\nbut the server returned an unbound (Bearer) token.

  • \n
  • MfaRequiredError \u2013 When chained MFA is required.

  • \n
  • ConfigurationError \u2013 If dpop_key is combined with use_mtls. DPoP and mTLS\nuse incompatible token-binding mechanisms and cannot be used together.

  • \n
  • ConfigurationError \u2013 If neither client_secret nor client_assertion_signing_key is configured.

  • \n
\n
\n
\n
\n\n
\n\n
\n
\nDEFAULT_MFA_TOKEN_TTL = 300\u00b6
\n
\n\n
\n
\nMFA_PENDING_IDENTIFIER = '_a0_mfa_pending'\u00b6
\n
\n\n
\n
\n", "metatags": "\n", "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["reference/auth_server/my_account_client/index", "auth_server.my_account_client", "N", "next"], ["reference/auth_server/anonymous/helpers/index", "auth_server.anonymous.helpers", "P", "previous"]], "sourcename": "reference/auth_server/mfa_client/index.rst.txt", "toc": "\n", "display_toc": true, "page_source_suffix": ".rst", "current_page_name": "reference/auth_server/mfa_client/index", "sidebars": ["about.html", "navigation.html", "relations.html", "searchbox.html", "donate.html"], "alabaster_version": "0.7.16", "alabaster_version_info": [0, 7, 16]} \ No newline at end of file diff --git a/sphinx/json/reference/auth_server/my_account_client/index.fjson b/sphinx/json/reference/auth_server/my_account_client/index.fjson new file mode 100644 index 0000000..4321cd0 --- /dev/null +++ b/sphinx/json/reference/auth_server/my_account_client/index.fjson @@ -0,0 +1 @@ +{"parents": [{"link": "../../", "title": "API Reference"}, {"link": "../", "title": "auth_server"}], "prev": {"link": "../mfa_client/", "title": "auth_server.mfa_client"}, "next": {"link": "../passwordless_client/", "title": "auth_server.passwordless_client"}, "title": "auth_server.my_account_client", "meta": {}, "body": "
\n

auth_server.my_account_client\u00b6

\n

Import

\n
from auth0_server_python.auth_server.my_account_client import MyAccountClient\n
\n
\n
\n

Module Contents\u00b6

\n
\n
\nclass MyAccountClient(domain: str, headers: dict[str, str] | None = None, ssl_context: ssl.SSLContext | None = None)[source]\u00b6
\n

Client for interacting with the Auth0 MyAccount API.

\n
\n
\nasync complete_connect_account(access_token: str, request: auth0_server_python.auth_types.CompleteConnectAccountRequest) → auth0_server_python.auth_types.CompleteConnectAccountResponse[source]\u00b6
\n

Complete the connected account flow after user authorization.

\n
\n
Parameters:
\n
    \n
  • access_token \u2013 User\u2019s access token for authentication

  • \n
  • request \u2013 Request containing the auth session, connect code, and redirect URI

  • \n
\n
\n
Returns:
\n

Response containing the connected account details including ID, connection, and scopes

\n
\n
Raises:
\n
    \n
  • MyAccountApiError \u2013 If the API returns an error response

  • \n
  • ApiError \u2013 If the request fails due to network or other issues

  • \n
\n
\n
\n
\n\n
\n
\nasync connect_account(access_token: str, request: auth0_server_python.auth_types.ConnectAccountRequest) → auth0_server_python.auth_types.ConnectAccountResponse[source]\u00b6
\n

Initiate the connected account flow.

\n
\n
Parameters:
\n
    \n
  • access_token \u2013 User\u2019s access token for authentication

  • \n
  • request \u2013 Request containing connection details and configuration

  • \n
\n
\n
Returns:
\n

Response containing the connect URI and authentication session details

\n
\n
Raises:
\n
    \n
  • MyAccountApiError \u2013 If the API returns an error response

  • \n
  • ApiError \u2013 If the request fails due to network or other issues

  • \n
\n
\n
\n
\n\n
\n
\nasync delete_authentication_method(access_token: str, authentication_method_id: str, dpop_key: jwcrypto.jwk.JWK | None = None) → None[source]\u00b6
\n

Delete an authentication method by ID.

\n
\n
Parameters:
\n
    \n
  • access_token \u2013 User\u2019s access token (scope: delete:me:authentication-methods).

  • \n
  • authentication_method_id \u2013 ID of the authentication method to delete.

  • \n
  • dpop_key \u2013 Optional EC P-256 key for DPoP-bound token presentation.

  • \n
\n
\n
Raises:
\n
\n
\n
\n
\n\n
\n
\nasync delete_connected_account(access_token: str, connected_account_id: str) → None[source]\u00b6
\n

Delete a connected account for the authenticated user.

\n
\n
Parameters:
\n
    \n
  • access_token \u2013 User\u2019s access token for authentication

  • \n
  • connected_account_id \u2013 ID of the connected account to delete

  • \n
\n
\n
Returns:
\n

None

\n
\n
Raises:
\n
\n
\n
\n
\n\n
\n
\nasync enroll_authentication_method(access_token: str, request: auth0_server_python.auth_types.EnrollAuthenticationMethodRequest, dpop_key: jwcrypto.jwk.JWK | None = None) → auth0_server_python.auth_types.EnrollmentChallengeResponse[source]\u00b6
\n

Step 1 of 2: Start enrollment (POST /me/v1/authentication-methods).

\n

For 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.

\n

Requires scope: create:me:authentication-methods

\n
\n\n
\n
\nasync get_authentication_method(access_token: str, authentication_method_id: str, dpop_key: jwcrypto.jwk.JWK | None = None) → auth0_server_python.auth_types.AuthenticationMethod[source]\u00b6
\n

Retrieve a single authentication method by ID.

\n
\n
Parameters:
\n
    \n
  • access_token \u2013 User\u2019s access token (scope: read:me:authentication-methods).

  • \n
  • authentication_method_id \u2013 ID of the authentication method to retrieve.

  • \n
  • dpop_key \u2013 Optional EC P-256 key for DPoP-bound token presentation.

  • \n
\n
\n
Returns:
\n

AuthenticationMethod for the requested ID.

\n
\n
Raises:
\n
\n
\n
\n
\n\n
\n
\nasync get_factors(access_token: str, dpop_key: jwcrypto.jwk.JWK | None = None) → auth0_server_python.auth_types.GetFactorsResponse[source]\u00b6
\n

Retrieve the list of factors available for enrollment.

\n
\n
Parameters:
\n
    \n
  • access_token \u2013 User\u2019s access token (scope: read:me:factors).

  • \n
  • dpop_key \u2013 Optional EC P-256 key for DPoP-bound token presentation.

  • \n
\n
\n
Returns:
\n

GetFactorsResponse containing the available factors.

\n
\n
Raises:
\n
\n
\n
\n
\n\n
\n
\nasync list_authentication_methods(access_token: str, type_filter: str | None = None, dpop_key: jwcrypto.jwk.JWK | None = None) → auth0_server_python.auth_types.ListAuthenticationMethodsResponse[source]\u00b6
\n

List the user\u2019s enrolled authentication methods.

\n
\n
Parameters:
\n
    \n
  • access_token \u2013 User\u2019s access token (scope: read:me:authentication-methods).

  • \n
  • type_filter \u2013 Optional authentication-method type to filter results by.

  • \n
  • dpop_key \u2013 Optional EC P-256 key for DPoP-bound token presentation.

  • \n
\n
\n
Returns:
\n

ListAuthenticationMethodsResponse containing the enrolled methods.

\n
\n
Raises:
\n
\n
\n
\n
\n\n
\n
\nasync list_connected_account_connections(access_token: str, from_param: str | None = None, take: int | None = None) → auth0_server_python.auth_types.ListConnectedAccountConnectionsResponse[source]\u00b6
\n

List available connections that support connected accounts.

\n
\n
Parameters:
\n
    \n
  • access_token \u2013 User\u2019s access token for authentication

  • \n
  • from_param \u2013 Optional pagination cursor for fetching next page of results

  • \n
  • take \u2013 Optional number of results to return (must be a positive integer)

  • \n
\n
\n
Returns:
\n

Response containing the list of available connections and pagination details

\n
\n
Raises:
\n
\n
\n
\n
\n\n
\n
\nasync list_connected_accounts(access_token: str, connection: str | None = None, from_param: str | None = None, take: int | None = None) → auth0_server_python.auth_types.ListConnectedAccountsResponse[source]\u00b6
\n

List connected accounts for the authenticated user.

\n
\n
Parameters:
\n
    \n
  • access_token \u2013 User\u2019s access token for authentication

  • \n
  • connection \u2013 Optional filter to list accounts for a specific connection

  • \n
  • from_param \u2013 Optional pagination cursor for fetching next page of results

  • \n
  • take \u2013 Optional number of results to return (must be a positive integer)

  • \n
\n
\n
Returns:
\n

Response containing the list of connected accounts and pagination details

\n
\n
Raises:
\n
\n
\n
\n
\n\n
\n
\nasync update_authentication_method(access_token: str, authentication_method_id: str, request: auth0_server_python.auth_types.UpdateAuthenticationMethodRequest, dpop_key: jwcrypto.jwk.JWK | None = None) → auth0_server_python.auth_types.AuthenticationMethod[source]\u00b6
\n

Update an authentication method by ID.

\n
\n
Parameters:
\n
    \n
  • access_token \u2013 User\u2019s access token (scope: update:me:authentication-methods).

  • \n
  • authentication_method_id \u2013 ID of the authentication method to update.

  • \n
  • request \u2013 Fields to update on the authentication method.

  • \n
  • dpop_key \u2013 Optional EC P-256 key for DPoP-bound token presentation.

  • \n
\n
\n
Returns:
\n

AuthenticationMethod reflecting the updated state.

\n
\n
Raises:
\n
\n
\n
\n
\n\n
\n
\nasync verify_authentication_method(access_token: str, authentication_method_id: str, request: auth0_server_python.auth_types.VerifyAuthenticationMethodRequest, dpop_key: jwcrypto.jwk.JWK | None = None) → auth0_server_python.auth_types.AuthenticationMethod[source]\u00b6
\n

Step 2 of 2: Verify enrollment (POST /me/v1/authentication-methods/{id}/verify).

\n

Requires scope: create:me:authentication-methods

\n
\n\n
\n
\nproperty audience[source]\u00b6
\n

Get the MyAccount API audience URL.

\n
\n
Returns:
\n

The audience URL for the MyAccount API

\n
\n
\n
\n\n
\n\n
\n
\n", "metatags": "\n", "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["reference/auth_server/passwordless_client/index", "auth_server.passwordless_client", "N", "next"], ["reference/auth_server/mfa_client/index", "auth_server.mfa_client", "P", "previous"]], "sourcename": "reference/auth_server/my_account_client/index.rst.txt", "toc": "\n", "display_toc": true, "page_source_suffix": ".rst", "current_page_name": "reference/auth_server/my_account_client/index", "sidebars": ["about.html", "navigation.html", "relations.html", "searchbox.html", "donate.html"], "alabaster_version": "0.7.16", "alabaster_version_info": [0, 7, 16]} \ No newline at end of file diff --git a/sphinx/json/reference/auth_server/passwordless_client/index.fjson b/sphinx/json/reference/auth_server/passwordless_client/index.fjson new file mode 100644 index 0000000..7fe6ecd --- /dev/null +++ b/sphinx/json/reference/auth_server/passwordless_client/index.fjson @@ -0,0 +1 @@ +{"parents": [{"link": "../../", "title": "API Reference"}, {"link": "../", "title": "auth_server"}], "prev": {"link": "../my_account_client/", "title": "auth_server.my_account_client"}, "next": {"link": "../server_client/", "title": "auth_server.server_client"}, "title": "auth_server.passwordless_client", "meta": {}, "body": "
\n

auth_server.passwordless_client\u00b6

\n

Passwordless Client for auth0-server-python SDK.

\n

Implements embedded passwordless login for a client:

\n\n

Tokens never leave the server. The browser holds only the opaque session.

\n

Import

\n
from auth0_server_python.auth_server.passwordless_client import PasswordlessClient\n
\n
\n
\n

Module Contents\u00b6

\n
\n
\nclass PasswordlessClient(server_client: auth0_server_python.auth_server.server_client.ServerClient)[source]\u00b6
\n

Client for Auth0 embedded passwordless operations.

\n

Composes the parent ServerClient to reuse domain resolution, OIDC\ndiscovery, JWKS/ID-token verification, and session persistence.

\n
\n
\nasync start(options: auth0_server_python.auth_types.StartPasswordlessOptions, store_options: dict[str, Any] | None = None) → auth0_server_python.auth_types.PasswordlessStartResult[source]\u00b6
\n

Start a passwordless flow by sending an OTP code or a magic link.

\n
\n
Parameters:
\n
    \n
  • options \u2013 StartPasswordlessEmailOptions or\nStartPasswordlessSmsOptions.

  • \n
  • 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.

  • \n
\n
\n
Returns:
\n

PasswordlessStartResult with Auth0\u2019s start response payload.

\n
\n
Raises:
\n
\n
\n
\n
\n\n
\n
\nasync verify(options: auth0_server_python.auth_types.VerifyPasswordlessOtpOptions, store_options: dict[str, Any] | None = None) → dict[str, Any][source]\u00b6
\n

Verify a passwordless OTP and establish a server-side session.

\n

Only for the OTP flows (email/SMS code). Magic link completes via the\nstandard callback handler, not here.

\n
\n
Parameters:
\n
    \n
  • options \u2013 VerifyPasswordlessOtpOptions.

  • \n
  • store_options \u2013 Options passed to the state store (e.g.\nrequest/response) so the session can be written.

  • \n
\n
\n
Returns:
\n

Dict containing state_data for the established session.

\n
\n
Raises:
\n
\n
\n
\n
\n\n
\n\n
\n
\nDEFAULT_PASSWORDLESS_EMAIL_SCOPE = 'openid profile email'\u00b6
\n
\n\n
\n
\nDEFAULT_PASSWORDLESS_SMS_SCOPE = 'openid profile'\u00b6
\n
\n\n
\n
\nFORWARDED_FOR_HEADER = 'auth0-forwarded-for'\u00b6
\n
\n\n
\n
\nPASSWORDLESS_OTP_GRANT_TYPE = 'http://auth0.com/oauth/grant-type/passwordless/otp'\u00b6
\n
\n\n
\n
\n", "metatags": "\n", "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["reference/auth_server/server_client/index", "auth_server.server_client", "N", "next"], ["reference/auth_server/my_account_client/index", "auth_server.my_account_client", "P", "previous"]], "sourcename": "reference/auth_server/passwordless_client/index.rst.txt", "toc": "\n", "display_toc": true, "page_source_suffix": ".rst", "current_page_name": "reference/auth_server/passwordless_client/index", "sidebars": ["about.html", "navigation.html", "relations.html", "searchbox.html", "donate.html"], "alabaster_version": "0.7.16", "alabaster_version_info": [0, 7, 16]} \ No newline at end of file diff --git a/sphinx/json/reference/auth_server/server_client/index.fjson b/sphinx/json/reference/auth_server/server_client/index.fjson new file mode 100644 index 0000000..fb0797a --- /dev/null +++ b/sphinx/json/reference/auth_server/server_client/index.fjson @@ -0,0 +1 @@ +{"parents": [{"link": "../../", "title": "API Reference"}, {"link": "../", "title": "auth_server"}], "prev": {"link": "../passwordless_client/", "title": "auth_server.passwordless_client"}, "next": {"link": "../../auth_schemes/", "title": "auth_schemes"}, "title": "auth_server.server_client", "meta": {}, "body": "
\n

auth_server.server_client\u00b6

\n

Main client for auth0-server-python SDK.\nHandles authentication flows, token management, and user sessions.

\n

Import

\n
from auth0_server_python.auth_server.server_client import (\n    ServerClient,\n    is_federated_domain,\n)\n
\n
\n
\n

Module Contents\u00b6

\n
\n
\nclass ServerClient(domain: str | Callable[[dict[str, Any] | None], str] = None, client_id: str = None, client_secret: str = None, client_assertion_signing_key: str | None = None, client_assertion_signing_alg: str | None = None, redirect_uri: str | None = None, secret: str = None, transaction_store=None, state_store=None, anonymous_store=None, transaction_identifier: str = '_a0_tx', state_identifier: str = '_a0_session', authorization_params: dict[str, Any] | None = None, pushed_authorization_requests: bool = False, organization: str | None = None, mfa_token_ttl: int = DEFAULT_MFA_TOKEN_TTL, enterprise_connect: bool = False, use_mtls: bool = False, ssl_context: ssl.SSLContext | None = None, clear_anonymous_session_on_login: bool = True)[source]\u00b6
\n

Bases: Generic[TStoreOptions]

\n

Main client for Auth0 server SDK. Handles authentication flows, session management,\nand token operations using Authlib for OIDC functionality.

\n
\n
\nasync backchannel_authentication(options: dict[str, Any], store_options: dict[str, Any] | None = None) → dict[str, Any][source]\u00b6
\n

Performs backchannel authentication with Auth0.

\n

This 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.

\n

Then polls the token endpoint until the user has authenticated or the request times out.

\n
\n
Parameters:
\n

options (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
  • requested_expiry (int, optional): Requested expiry time in seconds, default is 30 secs.

  • \n
  • authorization_details (str, optional): JSON string for RAR.

  • \n
\n
\n

\n
\n
Returns:
\n

Token response data from the backchannel authentication

\n
\n
Raises:
\n
\n
\n
\n
\n\n
\n
\nasync backchannel_authentication_grant(auth_req_id: str, store_options: dict[str, Any] | None = None) → dict[str, Any][source]\u00b6
\n

Retrieves a token by exchanging an auth_req_id.

\n
\n
Parameters:
\n
    \n
  • auth_req_id (str) \u2013 The authentication request ID obtained from bc-authorize

  • \n
  • store_options \u2013 Optional options used to pass to the Transaction and State Store.

  • \n
\n
\n
Raises:
\n
\n
\n
Returns:
\n

A dictionary containing the token response from Auth0.

\n
\n
\n
\n\n
\n
\nbuild_session_transfer_redirect(target_login_url: str, result: auth0_server_python.auth_types.SessionTransferTokenResult, organization: str | None = None) → str[source]\u00b6
\n

Builds the redirect URL that hands the STT to the target app\u2019s login URL.

\n

target_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.

\n
\n
Parameters:
\n
    \n
  • target_login_url \u2013 The target app\u2019s login URL (absolute, https)

  • \n
  • result \u2013 The SessionTransferTokenResult from request_session_transfer_token

  • \n
  • organization \u2013 Organization identifier to forward (optional)

  • \n
\n
\n
Returns:
\n

A URL string with session_transfer_token (and organization) as query parameters

\n
\n
Raises:
\n
\n
\n
\n
\n\n
\n
\nasync complete_connect_account(url: str, store_options: dict = None) → auth0_server_python.auth_types.CompleteConnectAccountResponse[source]\u00b6
\n

Handles the redirect callback to complete the connect account flow for linking a third-party\naccount to the user\u2019s profile.

\n

This 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.

\n
\n
Parameters:
\n
    \n
  • url \u2013 The full callback URL including query parameters

  • \n
  • store_options \u2013 Optional options used to pass to the Transaction and State Store.

  • \n
\n
\n
Returns:
\n

A response from the connect account flow.

\n
\n
Raises:
\n

EnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.

\n
\n
\n
\n\n
\n
\nasync complete_interactive_login(url: str, store_options: dict = None) → dict[str, Any][source]\u00b6
\n

Completes the login process after user is redirected back.

\n
\n
Parameters:
\n
    \n
  • url \u2013 The full callback URL including query parameters

  • \n
  • store_options \u2013 Options to pass to the state store

  • \n
\n
\n
Returns:
\n

Dictionary containing session data and app state

\n
\n
Raises:
\n

ConfigurationError \u2013 If no client authentication is configured.

\n
\n
\n
\n\n
\n\n

Completes the user linking process.

\n
\n
Parameters:
\n
    \n
  • url \u2013 The URL from which the query params should be extracted

  • \n
  • store_options \u2013 Optional options for the stores

  • \n
\n
\n
Returns:
\n

Dictionary containing the original app state

\n
\n
Raises:
\n

EnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.

\n
\n
\n
\n\n
\n\n

Completes the user unlinking process.

\n
\n
Parameters:
\n
    \n
  • url \u2013 The URL from which the query params should be extracted

  • \n
  • store_options \u2013 Optional options for the stores

  • \n
\n
\n
Returns:
\n

Dictionary containing the original app state

\n
\n
Raises:
\n

EnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.

\n
\n
\n
\n\n
\n
\nasync custom_token_exchange(options: auth0_server_python.auth_types.CustomTokenExchangeOptions, store_options: dict[str, Any] | None = None) → auth0_server_python.auth_types.TokenExchangeResponse[source]\u00b6
\n

Exchanges a custom token for Auth0 tokens using RFC 8693.

\n

This method implements the OAuth 2.0 Token Exchange specification,\nallowing you to exchange external custom tokens for Auth0 access tokens.

\n
\n
Parameters:
\n
    \n
  • options \u2013 Configuration for the token exchange

  • \n
  • store_options \u2013 Optional options used to pass to the Transaction and State Store.

  • \n
\n
\n
Returns:
\n

TokenExchangeResponse containing access_token and metadata

\n
\n
Raises:
\n
\n
\n
\n

Example

\n

```python\nresponse = await client.custom_token_exchange(

\n
\n
\n
CustomTokenExchangeOptions(

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
\n

)

\n
\n

)\nprint(response.access_token)\n```

\n
\n
See:

https://datatracker.ietf.org/doc/html/rfc8693

\n
\n
\n
\n\n
\n
\nasync delete_connected_account(connected_account_id: str, store_options: dict = None) → None[source]\u00b6
\n

Deletes a connected account.

\n
\n
Parameters:
\n
    \n
  • connected_account_id (str) \u2013 The ID of the connected account to delete.

  • \n
  • store_options \u2013 Optional options used to pass to the Transaction and State Store.

  • \n
\n
\n
Raises:
\n
\n
\n
\n
\n\n
\n
\nasync get_access_token(store_options: dict[str, Any] | None = None, audience: str | None = None, scope: str | None = None) → str[source]\u00b6
\n

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.

\n
\n
Parameters:
\n

store_options \u2013 Optional options used to pass to the Transaction and State Store.

\n
\n
Returns:
\n

The access token, retrieved from the store or Auth0.

\n
\n
Raises:
\n
\n
\n
\n
\n\n
\n
\nasync get_access_token_for_connection(options: dict[str, Any], store_options: dict[str, Any] | None = None) → str[source]\u00b6
\n

Retrieves an access token for a connection.

\n

This 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.

\n
\n
Parameters:
\n
    \n
  • options \u2013 Options for retrieving an access token for a connection.

  • \n
  • store_options \u2013 Optional options used to pass to the Transaction and State Store.

  • \n
\n
\n
Returns:
\n

The access token for the connection

\n
\n
Raises:
\n
\n
\n
\n
\n\n
\n
\nasync get_session(store_options: dict[str, Any] | None = None) → dict[str, Any] | None[source]\u00b6
\n

Retrieve the user session from the store, or None if no session found.

\n
\n
Parameters:
\n

store_options \u2013 Optional options used to pass to the Transaction and State Store.

\n
\n
Returns:
\n

The session, or None if no session found in the store.

\n
\n
Raises:
\n

EnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.

\n
\n
\n
\n\n
\n
\nasync get_token_by_refresh_token(options: dict[str, Any]) → dict[str, Any][source]\u00b6
\n

Retrieves a token by exchanging a refresh token.

\n
\n
Parameters:
\n

options \u2013 Dictionary containing the refresh token and any additional options.\nMust include a \u2018refresh_token\u2019 key.

\n
\n
Raises:
\n
\n
\n
Returns:
\n

A dictionary containing the token response from Auth0.

\n
\n
\n
\n\n
\n
\nasync get_token_for_connection(options: dict[str, Any]) → dict[str, Any][source]\u00b6
\n

Retrieves a token for a connection.

\n
\n
Parameters:
\n

options \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.

\n
\n
Raises:
\n
\n
\n
Returns:
\n

Dictionary containing the token response with accessToken, expiresAt, and scope.

\n
\n
\n
\n\n
\n
\nasync get_user(store_options: dict[str, Any] | None = None) → dict[str, Any] | None[source]\u00b6
\n

Retrieves the user from the store, or None if no user found.

\n
\n
Parameters:
\n

store_options \u2013 Optional options used to pass to the Transaction and State Store.

\n
\n
Returns:
\n

The user, or None if no user found in the store.

\n
\n
Raises:
\n

EnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.

\n
\n
\n
\n\n
\n
\nasync handle_backchannel_logout(logout_token: str, store_options: dict[str, Any] | None = None) → None[source]\u00b6
\n

Handles backchannel logout requests.

\n
\n
Parameters:
\n
    \n
  • logout_token \u2013 The logout token sent by Auth0

  • \n
  • store_options \u2013 Options to pass to the state store

  • \n
\n
\n
\n
\n\n
\n
\nasync initiate_backchannel_authentication(options: dict[str, Any], store_options: dict[str, Any] | None = None) → dict[str, Any][source]\u00b6
\n

Start backchannel authentication with Auth0.

\n

This 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.

\n
\n
Parameters:
\n

options (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
  • requested_expiry (int, optional): Requested expiry time in seconds, default is 30 secs.

  • \n
  • authorization_details (str, optional): JSON string for RAR.

  • \n
\n
\n

\n
\n
Returns:
\n

\n
Response data from the bc-authorize backchannel authentication
    \n
  • auth_req_id (str): The authentication request ID.

  • \n
  • expires_in (int): Time in seconds until the request expires.

  • \n
  • interval (int, optional): Polling interval in seconds.

  • \n
\n
\n
\n

\n
\n
Return type:
\n

dict

\n
\n
Raises:
\n

ApiError \u2013 If the backchannel authentication fails

\n
\n
\n
\n
See:

https://auth0.com/docs/get-started/authentication-and-authorization-flow/client-initiated-backchannel-authentication-flow

\n
\n
\n
\n\n
\n
\nasync list_connected_account_connections(from_param: str | None = None, take: int | None = None, store_options: dict = None) → auth0_server_python.auth_types.ListConnectedAccountConnectionsResponse[source]\u00b6
\n

Retrieves a list of available connections that can be used connected accounts for the authenticated user.

\n
\n
Parameters:
\n
    \n
  • from_param (Optional[str], optional) \u2013 A pagination token indicating where to start retrieving results, obtained from a prior request. Defaults to None.

  • \n
  • take (Optional[int], optional) \u2013 The maximum number of connections to retrieve. Defaults to None.

  • \n
  • store_options \u2013 Optional options used to pass to the Transaction and State Store.

  • \n
\n
\n
Returns:
\n

The response object containing the list of connected account connections.

\n
\n
Return type:
\n

ListConnectedAccountConnectionsResponse

\n
\n
Raises:
\n
\n
\n
\n
\n\n
\n
\nasync list_connected_accounts(connection: str | None = None, from_param: str | None = None, take: int | None = None, store_options: dict = None) → auth0_server_python.auth_types.ListConnectedAccountsResponse[source]\u00b6
\n

Retrieves a list of connected accounts for the authenticated user.

\n
\n
Parameters:
\n
    \n
  • connection (Optional[str], optional) \u2013 Filter results to a specific connection. Defaults to None.

  • \n
  • from_param (Optional[str], optional) \u2013 A pagination token indicating where to start retrieving results, obtained from a prior request. Defaults to None.

  • \n
  • take (Optional[int], optional) \u2013 The maximum number of connections to retrieve. Defaults to None.

  • \n
  • store_options \u2013 Optional options used to pass to the Transaction and State Store.

  • \n
\n
\n
Returns:
\n

The response object containing the list of connected accounts.

\n
\n
Return type:
\n

ListConnectedAccountsResponse

\n
\n
Raises:
\n
\n
\n
\n
\n\n
\n
\nasync login_backchannel(options: dict[str, Any], store_options: dict[str, Any] | None = None) → dict[str, Any][source]\u00b6
\n

Logs in using Client-Initiated Backchannel Authentication.

\n
\n

Note

\n

Using Client-Initiated Backchannel Authentication requires the feature\nto be enabled in the Auth0 dashboard.

\n
\n
\n
See:

https://auth0.com/docs/get-started/authentication-and-authorization-flow/client-initiated-backchannel-authentication-flow

\n
\n
\n
\n
Parameters:
\n
    \n
  • options \u2013 Options used to configure the backchannel login process.

  • \n
  • store_options \u2013 Optional options used to pass to the Transaction and State Store.

  • \n
\n
\n
Returns:
\n

A dictionary containing the authorizationDetails (when RAR was used).

\n
\n
Raises:
\n

EnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.

\n
\n
\n
\n\n
\n
\nasync login_with_custom_token_exchange(options: auth0_server_python.auth_types.LoginWithCustomTokenExchangeOptions, store_options: dict[str, Any] | None = None) → auth0_server_python.auth_types.LoginWithCustomTokenExchangeResult[source]\u00b6
\n

Performs token exchange and establishes a user session.

\n

This method combines custom_token_exchange() with session management,\nexchanging a custom token for Auth0 tokens and storing the session state.

\n
\n
Parameters:
\n
    \n
  • options \u2013 Configuration for token exchange and login

  • \n
  • store_options \u2013 Optional options for state store (e.g., request/response for cookies)

  • \n
\n
\n
Returns:
\n

LoginWithCustomTokenExchangeResult containing session state

\n
\n
Raises:
\n
\n
\n
\n

Example

\n

```python\nresult = await client.login_with_custom_token_exchange(

\n
\n
\n
LoginWithCustomTokenExchangeOptions(

subject_token=\u201dcustom-token-value\u201d,\nsubject_token_type=\u201durn:acme:mcp-token\u201d,\naudience=\u201dhttps://api.example.com\u201d

\n
\n
\n

),\nstore_options={\u201crequest\u201d: request, \u201cresponse\u201d: response}

\n
\n

)\nprint(result.state_data[\u201cuser\u201d])\n```

\n
\n
See:

https://datatracker.ietf.org/doc/html/rfc8693

\n
\n
\n
\n\n
\n
\nasync logout(options: auth0_server_python.auth_types.LogoutOptions | None = None, store_options: dict[str, Any] | None = None) → str[source]\u00b6
\n
\n\n
\n
\nasync passkey_login_challenge(username: str | None = None, connection: str | None = None, organization: str | None = None, store_options: dict[str, Any] | None = None, client_ip: str | None = None) → auth0_server_python.auth_types.PasskeyLoginChallengeResponse[source]\u00b6
\n

Step 1 of 2: Initiate a passkey login challenge (POST /passkey/challenge).

\n

Pass the returned authn_params_public_key to navigator.credentials.get(),\nthen call signin_with_passkey() with the auth_session and credential result.

\n
\n
Parameters:
\n
    \n
  • username \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.

  • \n
  • connection \u2013 Auth0 database connection name (realm).

  • \n
  • organization \u2013 Auth0 organization ID or name.

  • \n
  • store_options \u2013 Optional options for domain resolution.

  • \n
  • client_ip \u2013 Optional end user IP address, sent as the auth0-forwarded-for header.

  • \n
\n
\n
Returns:
\n

PasskeyLoginChallengeResponse with auth_session and authn_params_public_key.

\n
\n
Raises:
\n
\n
\n
\n
\n\n
\n
\nasync passkey_signup_challenge(user_profile: auth0_server_python.auth_types.PasskeyUserProfile | None = None, connection: str | None = None, organization: str | None = None, user_metadata: dict[str, Any] | None = None, store_options: dict[str, Any] | None = None, delivery_method: auth0_server_python.auth_types.PasskeyDeliveryMethod | None = None, client_ip: str | None = None) → auth0_server_python.auth_types.PasskeySignupChallengeResponse[source]\u00b6
\n

Step 1 of 2: Initiate a passkey signup challenge (POST /passkey/register).

\n

Pass the returned authn_params_public_key to navigator.credentials.create(),\nthen call signin_with_passkey() with the auth_session and credential result.

\n
\n
Parameters:
\n
    \n
  • user_profile \u2013 Optional user profile data (email, name, username, etc.).\nUse PasskeyUserProfile \u2014 supports extra fields for forward compatibility.

  • \n
  • connection \u2013 Auth0 database connection name (realm).

  • \n
  • organization \u2013 Auth0 organization ID or name.

  • \n
  • user_metadata \u2013 Optional custom metadata added at the root of the request body,\nnot nested inside user_profile (per Auth0 API spec).

  • \n
  • store_options \u2013 Optional options for domain resolution.

  • \n
  • delivery_method \u2013 Optional channel for the phone verification code, \u201ctext\u201d or \u201cvoice\u201d.

  • \n
  • client_ip \u2013 Optional end user IP address, sent as the auth0-forwarded-for header.

  • \n
\n
\n
Returns:
\n

PasskeySignupChallengeResponse with auth_session, authn_params_public_key and,\nwhen the connection requires verification, verification_required.

\n
\n
Raises:
\n
    \n
  • InvalidArgumentError \u2013 If delivery_method is set to a value other than \u201ctext\u201d or \u201cvoice\u201d.

  • \n
  • PasskeyError \u2013 If the challenge request fails or the request is rate limited.

  • \n
  • EnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.

  • \n
\n
\n
\n
\n\n
\n
\nasync request_session_transfer_token(subject_token: str, subject_token_type: str, actor_token: str | None = None, actor_token_type: str | None = None, scope: str | None = None, organization: str | None = None, store_options: dict[str, Any] | None = None) → auth0_server_python.auth_types.SessionTransferTokenResult[source]\u00b6
\n

Requests a Session Transfer Token (STT) for impersonation via session transfer.

\n

Performs 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.

\n
\n
Parameters:
\n
    \n
  • subject_token \u2013 Your proof of which customer to impersonate (validated by your Action)

  • \n
  • subject_token_type \u2013 The subject token type URI routing to your CTE Profile

  • \n
  • actor_token \u2013 The acting party\u2019s token; optional. Defaults to the agent session\u2019s ID token

  • \n
  • actor_token_type \u2013 Type URI of the actor token; defaults to the ID token URN

  • \n
  • scope \u2013 Space-delimited list of scopes (optional)

  • \n
  • organization \u2013 Organization identifier (optional)

  • \n
  • store_options \u2013 Optional options used to read the agent session and resolve the domain

  • \n
\n
\n
Returns:
\n

SessionTransferTokenResult containing the STT and its metadata

\n
\n
Raises:
\n
\n
\n
\n
\n\n
\n
\nasync signin_with_passkey(auth_session: str, authn_response: auth0_server_python.auth_types.PasskeyAuthResponse, store_options: dict[str, Any] | None = None, connection: str | None = None, organization: str | None = None, scope: str | None = None, audience: str | None = None, dpop_key: jwcrypto.jwk.JWK | None = None, verification: dict[str, str | None] | None = None, client_ip: str | None = None) → auth0_server_python.auth_types.PasskeyLoginResult[source]\u00b6
\n

Completes passkey authentication by exchanging the WebAuthn assertion\nfor tokens and establishing a server-side session.

\n

This is step 2 of 2: call passkey_signup_challenge or passkey_login_challenge\nfirst to obtain auth_session and the WebAuthn challenge options.

\n
\n
Parameters:
\n
    \n
  • auth_session \u2013 Session credential from passkey_signup_challenge or passkey_login_challenge.

  • \n
  • authn_response \u2013 Serialized WebAuthn credential from navigator.credentials.create/get.

  • \n
  • store_options \u2013 Options passed to the state store (e.g., request/response for cookies).\nPassed through to the store on every call.

  • \n
  • connection \u2013 Auth0 database connection name (realm).

  • \n
  • organization \u2013 Auth0 organization ID or name.

  • \n
  • scope \u2013 OAuth2 scope string.

  • \n
  • audience \u2013 Target API audience.

  • \n
  • 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.

  • \n
  • verification \u2013 Optional signup codes keyed by \u201cemail\u201d or \u201cphone\u201d, not used for login.

  • \n
  • client_ip \u2013 Optional end user IP address, sent as the auth0-forwarded-for header.

  • \n
\n
\n
Returns:
\n

PasskeyLoginResult containing state_data with user claims and token sets,\nconsistent with complete_interactive_login and login_with_custom_token_exchange.

\n
\n
Raises:
\n
    \n
  • MissingRequiredArgumentError \u2013 If auth_session or authn_response is missing.

  • \n
  • ConfigurationError \u2013 If dpop_key is combined with use_mtls. DPoP and mTLS\nuse incompatible token-binding mechanisms and cannot be used together.

  • \n
  • InvalidArgumentError \u2013 If verification has a key other than \u201cemail\u201d or \u201cphone\u201d,\nor a code that is not a string.

  • \n
  • PasskeyError \u2013 If token exchange or session creation fails, or the request is\nrate limited.

  • \n
  • MfaRequiredError \u2013 If the tenant requires step-up MFA after the passkey sign-in.

  • \n
  • ApiError \u2013 If the ID token fails signature, audience, expiry or JWKS validation.

  • \n
  • IssuerValidationError \u2013 If the ID token issuer does not match the tenant.

  • \n
  • 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.

  • \n
  • EnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.

  • \n
\n
\n
\n
\n\n
\n
\nasync start_connect_account(options: auth0_server_python.auth_types.ConnectAccountOptions, store_options: dict = None) → str[source]\u00b6
\n

Initiates the connect account flow for linking a third-party account to the user\u2019s profile.

\n

This 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.

\n
\n
Parameters:
\n
    \n
  • options \u2013 Options for retrieving an access token for a connection.

  • \n
  • store_options \u2013 Optional options used to pass to the Transaction and State Store.

  • \n
\n
\n
Returns:
\n

The a connect URL containing a ticket to redirect the user to.

\n
\n
Raises:
\n

EnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.

\n
\n
\n
\n\n
\n
\nasync start_enterprise_login(options: auth0_server_python.auth_types.StartEnterpriseLoginOptions, store_options: dict[str, Any] | None = None) → str | None[source]\u00b6
\n

Begin an Enterprise Connect login from an email address.

\n

Runs 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.

\n
\n
Parameters:
\n
    \n
  • options \u2013 Enterprise login options carrying the user\u2019s email.

  • \n
  • store_options \u2013 Per-request store options threaded through the flow.

  • \n
\n
\n
Returns:
\n

The authorization URL to redirect to, or None when the domain is not\nmanaged by Auth0.

\n
\n
Raises:
\n
\n
\n
\n
\n\n
\n
\nasync start_interactive_login(options: auth0_server_python.auth_types.StartInteractiveLoginOptions | None = None, store_options: dict = None) → str[source]\u00b6
\n

Starts the interactive login process and returns a URL to redirect to.

\n
\n
Parameters:
\n
    \n
  • options \u2013 Configuration options for the login process

  • \n
  • store_options \u2013 Store options containing request/response

  • \n
\n
\n
Returns:
\n

Authorization URL to redirect the user to

\n
\n
Raises:
\n

ConfigurationError \u2013 If no client authentication is configured.

\n
\n
\n
\n\n
\n\n

Starts the user linking process, and returns a URL to redirect the user-agent to.

\n
\n
Parameters:
\n
    \n
  • options \u2013 Options used to configure the user linking process.

  • \n
  • store_options \u2013 Optional options used to pass to the Transaction and State Store.

  • \n
\n
\n
Returns:
\n

URL to redirect the user to for authentication.

\n
\n
Raises:
\n

EnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.

\n
\n
\n
\n\n
\n\n

Starts the user unlinking process, and returns a URL to redirect the user-agent to.

\n
\n
Parameters:
\n
    \n
  • options \u2013 Options used to configure the user unlinking process.

  • \n
  • store_options \u2013 Optional options used to pass to the Transaction and State Store.

  • \n
\n
\n
Returns:
\n

URL to redirect the user to for authentication.

\n
\n
Raises:
\n

EnterpriseConnectError \u2013 If the client is configured for Enterprise Connect.

\n
\n
\n
\n\n
\n
\nDEFAULT_AUDIENCE_STATE_KEY = 'default'\u00b6
\n
\n\n
\n
\nGRANT_TYPE_PASSKEY = 'urn:okta:params:oauth:grant-type:webauthn'\u00b6
\n
\n\n
\n
\nPASSKEY_CHALLENGE_PATH = '/passkey/challenge'\u00b6
\n
\n\n
\n
\nPASSKEY_REGISTER_PATH = '/passkey/register'\u00b6
\n
\n\n
\n
\nPASSKEY_VERIFICATION_IDENTIFIERS = ('email', 'phone')\u00b6
\n
\n\n
\n
\nproperty anonymous: auth0_server_python.auth_server.anonymous.AnonymousClient[source]\u00b6
\n

Access the anonymous sessions client for pre-login anon@ identity operations.

\n
\n\n
\n
\nproperty mfa: auth0_server_python.auth_server.mfa_client.MfaClient[source]\u00b6
\n

Access the MFA client for multi-factor authentication operations.

\n
\n\n
\n
\nproperty passwordless: auth0_server_python.auth_server.passwordless_client.PasswordlessClient[source]\u00b6
\n

Access the passwordless client for embedded passwordless operations.

\n
\n\n
\n\n
\n
\nasync is_federated_domain(domain: str, email_domain: str, timeout: float = 5.0) → bool[source]\u00b6
\n

Check whether an email domain is Auth0-managed for enterprise SSO via WebFinger.

\n

A 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.

\n
\n
Parameters:
\n
    \n
  • domain \u2013 The Auth0 domain to query.

  • \n
  • email_domain \u2013 The email domain to check (case-insensitive).

  • \n
  • timeout \u2013 Per-request timeout in seconds.

  • \n
\n
\n
Returns:
\n

True only when Auth0 reports the domain as a managed OIDC issuer.

\n
\n
\n
\n\n
\n
\nID_TOKEN_TYPE = 'urn:ietf:params:oauth:token-type:id_token'\u00b6
\n
\n\n
\n
\nINTERNAL_AUTHORIZE_PARAMS = ['client_id', 'response_type', 'code_challenge', 'code_challenge_method', 'state', 'nonce',...\u00b6
\n
\n\n
\n
\nSESSION_TRANSFER_TOKEN_TYPE = 'urn:auth0:params:oauth:token-type:session_transfer_token'\u00b6
\n
\n\n
\n
\nTStoreOptions\u00b6
\n
\n\n
\n
\nWEBFINGER_CACHE_MAX_ENTRIES = 1000\u00b6
\n
\n\n
\n
\nWEBFINGER_CACHE_TTL_FOUND = 60\u00b6
\n
\n\n
\n
\nWEBFINGER_CACHE_TTL_NOT_FOUND = 15\u00b6
\n
\n\n
\n
\nWEBFINGER_ISSUER_REL = 'http://openid.net/specs/connect/1.0/issuer'\u00b6
\n
\n\n
\n
\nlogger\u00b6
\n
\n\n
\n
\n", "metatags": "\n", "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["reference/auth_schemes/index", "auth_schemes", "N", "next"], ["reference/auth_server/passwordless_client/index", "auth_server.passwordless_client", "P", "previous"]], "sourcename": "reference/auth_server/server_client/index.rst.txt", "toc": "\n", "display_toc": true, "page_source_suffix": ".rst", "current_page_name": "reference/auth_server/server_client/index", "sidebars": ["about.html", "navigation.html", "relations.html", "searchbox.html", "donate.html"], "alabaster_version": "0.7.16", "alabaster_version_info": [0, 7, 16]} \ No newline at end of file diff --git a/sphinx/json/reference/auth_types/index.fjson b/sphinx/json/reference/auth_types/index.fjson new file mode 100644 index 0000000..25bc546 --- /dev/null +++ b/sphinx/json/reference/auth_types/index.fjson @@ -0,0 +1 @@ +{"parents": [{"link": "../", "title": "API Reference"}], "prev": {"link": "../encryption/encrypt/", "title": "encryption.encrypt"}, "next": {"link": "../auth_server/", "title": "auth_server"}, "title": "auth_types", "meta": null, "body": "
\n

auth_types\u00b6

\n

Type definitions for auth0-server-python SDK.\nThese Pydantic models provide type safety and validation for all SDK data structures.

\n

Import

\n
from 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)\n
\n
\n
\n

Package Contents\u00b6

\n
\n
\nclass AccessTokenForConnectionOptions(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Options for retrieving an access token for a specific connection.

\n
\n
\nconnection: str\u00b6
\n
\n\n
\n
\nlogin_hint: str | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass AnonymousCreateTokenResponse(/, **data: Any)[source]\u00b6
\n

Bases: AnonymousTokenResponse

\n

Raw response from POST /anonymous/token on the create path.

\n
\n
\nsession_token: str\u00b6
\n
\n\n
\n\n
\n
\nclass AnonymousSession(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Public result of create_session() and the renewal ladder.

\n
\n
\naccess_token: str\u00b6
\n
\n\n
\n
\nexpires_at: int\u00b6
\n
\n\n
\n
\nmetadata: dict[str, Any] | None = None\u00b6
\n
\n\n
\n
\nscope: str | None = None\u00b6
\n
\n\n
\n
\nsession_expires_at: int | None = None\u00b6
\n
\n\n
\n
\nsub: str | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass AnonymousSessionContext(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Internal context stored inside the encrypted anonymous session record, rejecting extra fields so a tampered payload raises on decrypt.

\n
\n
\ncreated_at: int\u00b6
\n
\n\n
\n
\ndomain: str | None = None\u00b6
\n
\n\n
\n
\nmetadata: dict[str, Any] | None = None\u00b6
\n
\n\n
\n
\nmodel_config\u00b6
\n

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

\n
\n\n
\n
\nsession_expires_at: int | None = None\u00b6
\n
\n\n
\n
\nsession_token: str\u00b6
\n
\n\n
\n
\nsub: str | None = None\u00b6
\n
\n\n
\n
\ntoken_sets: list[AnonymousTokenSetEntry] = None\u00b6
\n
\n\n
\n\n
\n
\nclass AnonymousSessionData(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Identity and metadata fields returned by AnonymousClient.get_session(), with no session_token.

\n
\n
\ncreated_at: int\u00b6
\n
\n\n
\n
\ndomain: str | None = None\u00b6
\n
\n\n
\n
\nmetadata: dict[str, Any] | None = None\u00b6
\n
\n\n
\n
\nsession_expires_at: int | None = None\u00b6
\n
\n\n
\n
\nsub: str | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass AnonymousTokenResponse(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Raw response from POST /anonymous/token.

\n
\n
\naccess_token: str\u00b6
\n
\n\n
\n
\nexpires_in: int\u00b6
\n
\n\n
\n
\nscope: str | None = None\u00b6
\n
\n\n
\n
\nsession_expires_in: int | None = None\u00b6
\n
\n\n
\n
\nsession_token: str | None = None\u00b6
\n
\n\n
\n
\ntoken_type: str = 'Bearer'\u00b6
\n
\n\n
\n\n
\n
\nclass AnonymousTokenSetEntry(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

One cached access token for a specific audience/scope pair.

\n
\n
\naccess_token: str\u00b6
\n
\n\n
\n
\naudience: str | None = None\u00b6
\n
\n\n
\n
\nexpires_at: int\u00b6
\n
\n\n
\n
\ngranted_scope: str | None = None\u00b6
\n
\n\n
\n
\nmodel_config\u00b6
\n

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

\n
\n\n
\n
\nscope: str | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass AnonymousTransferTokenResponse(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Raw response from POST /anonymous/token on the transfer-ticket path.

\n
\n
\nanon_transfer_token: str\u00b6
\n
\n\n
\n
\nexpires_in: int | None = None\u00b6
\n
\n\n
\n
\nmodel_config\u00b6
\n

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

\n
\n\n
\n
\ntoken_type: str | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass AuthenticationMethod(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n
\n
!!! abstract \u201cUsage Documentation\u201d

[Models](../concepts/models.md)

\n
\n
\n

A base class for creating Pydantic models.

\n
\n
\n__class_vars__\u00b6
\n

The names of the class variables defined on the model.

\n
\n\n
\n
\n__private_attributes__\u00b6
\n

Metadata about the private attributes of the model.

\n
\n\n
\n
\n__signature__\u00b6
\n

The synthesized __init__ [Signature][inspect.Signature] of the model.

\n
\n\n
\n
\n__pydantic_complete__\u00b6
\n

Whether model building is completed, or if there are still undefined fields.

\n
\n\n
\n
\n__pydantic_core_schema__\u00b6
\n

The core schema of the model.

\n
\n\n
\n
\n__pydantic_custom_init__\u00b6
\n

Whether the model has a custom __init__ function.

\n
\n\n
\n
\n__pydantic_decorators__\u00b6
\n

Metadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

\n
\n\n
\n
\n__pydantic_generic_metadata__\u00b6
\n

A 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.

\n
\n\n
\n
\n__pydantic_parent_namespace__\u00b6
\n

Parent namespace of the model, used for automatic rebuilding of models.

\n
\n\n
\n
\n__pydantic_post_init__\u00b6
\n

The name of the post-init method for the model, if defined.

\n
\n\n
\n
\n__pydantic_root_model__\u00b6
\n

Whether the model is a [RootModel][pydantic.root_model.RootModel].

\n
\n\n
\n
\n__pydantic_serializer__\u00b6
\n

The pydantic-core SchemaSerializer used to dump instances of the model.

\n
\n\n
\n
\n__pydantic_validator__\u00b6
\n

The pydantic-core SchemaValidator used to validate instances of the model.

\n
\n\n
\n
\n__pydantic_fields__\u00b6
\n

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.

\n
\n\n
\n
\n__pydantic_computed_fields__\u00b6
\n

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

\n
\n\n
\n
\n__pydantic_extra__\u00b6
\n

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.

\n
\n\n
\n
\n__pydantic_fields_set__\u00b6
\n

The names of fields explicitly set during instantiation.

\n
\n\n
\n
\n__pydantic_private__\u00b6
\n

Values of private attributes set on the model instance.

\n
\n\n
\n
\naaguid: str | None = None\u00b6
\n
\n\n
\n
\nconfirmed: bool | None = None\u00b6
\n
\n\n
\n
\ncreated_at: str\u00b6
\n
\n\n
\n
\ncredential_backed_up: bool | None = None\u00b6
\n
\n\n
\n
\ncredential_device_type: str | None = None\u00b6
\n
\n\n
\n
\nemail: str | None = None\u00b6
\n
\n\n
\n
\nid: str\u00b6
\n
\n\n
\n
\nidentity_user_id: str | None = None\u00b6
\n
\n\n
\n
\nkey_id: str | None = None\u00b6
\n
\n\n
\n
\nlast_password_reset: str | None = None\u00b6
\n
\n\n
\n
\nmodel_config\u00b6
\n

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

\n
\n\n
\n
\nname: str | None = None\u00b6
\n
\n\n
\n
\nphone_number: str | None = None\u00b6
\n
\n\n
\n
\npreferred_authentication_method: str | None = None\u00b6
\n
\n\n
\n
\npublic_key: str | None = None\u00b6
\n
\n\n
\n
\nrelying_party_id: str | None = None\u00b6
\n
\n\n
\n
\ntransports: list[str] | None = None\u00b6
\n
\n\n
\n
\ntype: str\u00b6
\n
\n\n
\n
\nusage: list[str] | None = None\u00b6
\n
\n\n
\n
\nuser_agent: str | None = None\u00b6
\n
\n\n
\n
\nuser_handle: str | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass AuthenticatorResponse(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Represents an MFA authenticator enrolled by a user.

\n
\n
\nactive: bool\u00b6
\n
\n\n
\n
\nauthenticator_type: str\u00b6
\n
\n\n
\n
\ncreated_at: str | None = None\u00b6
\n
\n\n
\n
\nid: str\u00b6
\n
\n\n
\n
\nlast_auth: str | None = None\u00b6
\n
\n\n
\n
\nmodel_config\u00b6
\n

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

\n
\n\n
\n
\nname: str | None = None\u00b6
\n
\n\n
\n
\noob_channel: OobChannel | None = None\u00b6
\n
\n\n
\n
\nphone_number: str | None = None\u00b6
\n
\n\n
\n
\ntype: str | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass AuthorizationDetails(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Authorization details returned from Auth0.\nUsed for Resource Access Rights (RAR).

\n
\n
\nactions: list[str] | None = None\u00b6
\n
\n\n
\n
\ndatatypes: list[str] | None = None\u00b6
\n
\n\n
\n
\nidentifier: str | None = None\u00b6
\n
\n\n
\n
\nlocations: list[str] | None = None\u00b6
\n
\n\n
\n
\ntype: str\u00b6
\n
\n\n
\n\n
\n
\nclass AuthorizationParameters(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Parameters used in authorization requests.\nBased on standard OAuth2/OIDC parameters.

\n
\n
\naudience: str | None = None\u00b6
\n
\n\n
\n
\nexperiment_id: str | None = None\u00b6
\n
\n\n
\n
\nredirect_uri: str | None = None\u00b6
\n
\n\n
\n
\nscope: str | None = None\u00b6
\n
\n\n
\n
\nsegment_id: str | None = None\u00b6
\n
\n\n
\n
\nvariation_id: str | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass ChallengeOptions(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Options for initiating an MFA challenge.

\n
\n
\nauthenticator_id: str | None = None\u00b6
\n
\n\n
\n
\nchallenge_type: ChallengeType\u00b6
\n
\n\n
\n
\nmfa_token: str\u00b6
\n
\n\n
\n\n
\n
\nclass ChallengeResponse(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Response from initiating an MFA challenge.

\n
\n
\nbinding_method: str | None = None\u00b6
\n
\n\n
\n
\nchallenge_type: str\u00b6
\n
\n\n
\n
\nexpires_in: int | None = None\u00b6
\n
\n\n
\n
\nmodel_config\u00b6
\n

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

\n
\n\n
\n
\noob_code: str | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass CompleteConnectAccountRequest(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n
\n
!!! abstract \u201cUsage Documentation\u201d

[Models](../concepts/models.md)

\n
\n
\n

A base class for creating Pydantic models.

\n
\n
\n__class_vars__\u00b6
\n

The names of the class variables defined on the model.

\n
\n\n
\n
\n__private_attributes__\u00b6
\n

Metadata about the private attributes of the model.

\n
\n\n
\n
\n__signature__\u00b6
\n

The synthesized __init__ [Signature][inspect.Signature] of the model.

\n
\n\n
\n
\n__pydantic_complete__\u00b6
\n

Whether model building is completed, or if there are still undefined fields.

\n
\n\n
\n
\n__pydantic_core_schema__\u00b6
\n

The core schema of the model.

\n
\n\n
\n
\n__pydantic_custom_init__\u00b6
\n

Whether the model has a custom __init__ function.

\n
\n\n
\n
\n__pydantic_decorators__\u00b6
\n

Metadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

\n
\n\n
\n
\n__pydantic_generic_metadata__\u00b6
\n

A 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.

\n
\n\n
\n
\n__pydantic_parent_namespace__\u00b6
\n

Parent namespace of the model, used for automatic rebuilding of models.

\n
\n\n
\n
\n__pydantic_post_init__\u00b6
\n

The name of the post-init method for the model, if defined.

\n
\n\n
\n
\n__pydantic_root_model__\u00b6
\n

Whether the model is a [RootModel][pydantic.root_model.RootModel].

\n
\n\n
\n
\n__pydantic_serializer__\u00b6
\n

The pydantic-core SchemaSerializer used to dump instances of the model.

\n
\n\n
\n
\n__pydantic_validator__\u00b6
\n

The pydantic-core SchemaValidator used to validate instances of the model.

\n
\n\n
\n
\n__pydantic_fields__\u00b6
\n

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.

\n
\n\n
\n
\n__pydantic_computed_fields__\u00b6
\n

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

\n
\n\n
\n
\n__pydantic_extra__\u00b6
\n

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.

\n
\n\n
\n
\n__pydantic_fields_set__\u00b6
\n

The names of fields explicitly set during instantiation.

\n
\n\n
\n
\n__pydantic_private__\u00b6
\n

Values of private attributes set on the model instance.

\n
\n\n
\n
\nauth_session: str\u00b6
\n
\n\n
\n
\ncode_verifier: str | None = None\u00b6
\n
\n\n
\n
\nconnect_code: str\u00b6
\n
\n\n
\n
\nredirect_uri: str\u00b6
\n
\n\n
\n\n
\n
\nclass CompleteConnectAccountResponse(/, **data: Any)[source]\u00b6
\n

Bases: ConnectedAccountBase

\n
\n
!!! abstract \u201cUsage Documentation\u201d

[Models](../concepts/models.md)

\n
\n
\n

A base class for creating Pydantic models.

\n
\n
\n__class_vars__\u00b6
\n

The names of the class variables defined on the model.

\n
\n\n
\n
\n__private_attributes__\u00b6
\n

Metadata about the private attributes of the model.

\n
\n\n
\n
\n__signature__\u00b6
\n

The synthesized __init__ [Signature][inspect.Signature] of the model.

\n
\n\n
\n
\n__pydantic_complete__\u00b6
\n

Whether model building is completed, or if there are still undefined fields.

\n
\n\n
\n
\n__pydantic_core_schema__\u00b6
\n

The core schema of the model.

\n
\n\n
\n
\n__pydantic_custom_init__\u00b6
\n

Whether the model has a custom __init__ function.

\n
\n\n
\n
\n__pydantic_decorators__\u00b6
\n

Metadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

\n
\n\n
\n
\n__pydantic_generic_metadata__\u00b6
\n

A 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.

\n
\n\n
\n
\n__pydantic_parent_namespace__\u00b6
\n

Parent namespace of the model, used for automatic rebuilding of models.

\n
\n\n
\n
\n__pydantic_post_init__\u00b6
\n

The name of the post-init method for the model, if defined.

\n
\n\n
\n
\n__pydantic_root_model__\u00b6
\n

Whether the model is a [RootModel][pydantic.root_model.RootModel].

\n
\n\n
\n
\n__pydantic_serializer__\u00b6
\n

The pydantic-core SchemaSerializer used to dump instances of the model.

\n
\n\n
\n
\n__pydantic_validator__\u00b6
\n

The pydantic-core SchemaValidator used to validate instances of the model.

\n
\n\n
\n
\n__pydantic_fields__\u00b6
\n

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.

\n
\n\n
\n
\n__pydantic_computed_fields__\u00b6
\n

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

\n
\n\n
\n
\n__pydantic_extra__\u00b6
\n

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.

\n
\n\n
\n
\n__pydantic_fields_set__\u00b6
\n

The names of fields explicitly set during instantiation.

\n
\n\n
\n
\n__pydantic_private__\u00b6
\n

Values of private attributes set on the model instance.

\n
\n\n
\n
\napp_state: Any | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass ConnectAccountOptions(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n
\n
!!! abstract \u201cUsage Documentation\u201d

[Models](../concepts/models.md)

\n
\n
\n

A base class for creating Pydantic models.

\n
\n
\n__class_vars__\u00b6
\n

The names of the class variables defined on the model.

\n
\n\n
\n
\n__private_attributes__\u00b6
\n

Metadata about the private attributes of the model.

\n
\n\n
\n
\n__signature__\u00b6
\n

The synthesized __init__ [Signature][inspect.Signature] of the model.

\n
\n\n
\n
\n__pydantic_complete__\u00b6
\n

Whether model building is completed, or if there are still undefined fields.

\n
\n\n
\n
\n__pydantic_core_schema__\u00b6
\n

The core schema of the model.

\n
\n\n
\n
\n__pydantic_custom_init__\u00b6
\n

Whether the model has a custom __init__ function.

\n
\n\n
\n
\n__pydantic_decorators__\u00b6
\n

Metadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

\n
\n\n
\n
\n__pydantic_generic_metadata__\u00b6
\n

A 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.

\n
\n\n
\n
\n__pydantic_parent_namespace__\u00b6
\n

Parent namespace of the model, used for automatic rebuilding of models.

\n
\n\n
\n
\n__pydantic_post_init__\u00b6
\n

The name of the post-init method for the model, if defined.

\n
\n\n
\n
\n__pydantic_root_model__\u00b6
\n

Whether the model is a [RootModel][pydantic.root_model.RootModel].

\n
\n\n
\n
\n__pydantic_serializer__\u00b6
\n

The pydantic-core SchemaSerializer used to dump instances of the model.

\n
\n\n
\n
\n__pydantic_validator__\u00b6
\n

The pydantic-core SchemaValidator used to validate instances of the model.

\n
\n\n
\n
\n__pydantic_fields__\u00b6
\n

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.

\n
\n\n
\n
\n__pydantic_computed_fields__\u00b6
\n

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

\n
\n\n
\n
\n__pydantic_extra__\u00b6
\n

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.

\n
\n\n
\n
\n__pydantic_fields_set__\u00b6
\n

The names of fields explicitly set during instantiation.

\n
\n\n
\n
\n__pydantic_private__\u00b6
\n

Values of private attributes set on the model instance.

\n
\n\n
\n
\napp_state: Any | None = None\u00b6
\n
\n\n
\n
\nauthorization_params: dict[str, Any] | None = None\u00b6
\n
\n\n
\n
\nconnection: str\u00b6
\n
\n\n
\n
\nredirect_uri: str | None = None\u00b6
\n
\n\n
\n
\nscopes: list[str] | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass ConnectAccountRequest(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n
\n
!!! abstract \u201cUsage Documentation\u201d

[Models](../concepts/models.md)

\n
\n
\n

A base class for creating Pydantic models.

\n
\n
\n__class_vars__\u00b6
\n

The names of the class variables defined on the model.

\n
\n\n
\n
\n__private_attributes__\u00b6
\n

Metadata about the private attributes of the model.

\n
\n\n
\n
\n__signature__\u00b6
\n

The synthesized __init__ [Signature][inspect.Signature] of the model.

\n
\n\n
\n
\n__pydantic_complete__\u00b6
\n

Whether model building is completed, or if there are still undefined fields.

\n
\n\n
\n
\n__pydantic_core_schema__\u00b6
\n

The core schema of the model.

\n
\n\n
\n
\n__pydantic_custom_init__\u00b6
\n

Whether the model has a custom __init__ function.

\n
\n\n
\n
\n__pydantic_decorators__\u00b6
\n

Metadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

\n
\n\n
\n
\n__pydantic_generic_metadata__\u00b6
\n

A 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.

\n
\n\n
\n
\n__pydantic_parent_namespace__\u00b6
\n

Parent namespace of the model, used for automatic rebuilding of models.

\n
\n\n
\n
\n__pydantic_post_init__\u00b6
\n

The name of the post-init method for the model, if defined.

\n
\n\n
\n
\n__pydantic_root_model__\u00b6
\n

Whether the model is a [RootModel][pydantic.root_model.RootModel].

\n
\n\n
\n
\n__pydantic_serializer__\u00b6
\n

The pydantic-core SchemaSerializer used to dump instances of the model.

\n
\n\n
\n
\n__pydantic_validator__\u00b6
\n

The pydantic-core SchemaValidator used to validate instances of the model.

\n
\n\n
\n
\n__pydantic_fields__\u00b6
\n

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.

\n
\n\n
\n
\n__pydantic_computed_fields__\u00b6
\n

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

\n
\n\n
\n
\n__pydantic_extra__\u00b6
\n

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.

\n
\n\n
\n
\n__pydantic_fields_set__\u00b6
\n

The names of fields explicitly set during instantiation.

\n
\n\n
\n
\n__pydantic_private__\u00b6
\n

Values of private attributes set on the model instance.

\n
\n\n
\n
\nauthorization_params: dict[str, Any] | None = None\u00b6
\n
\n\n
\n
\ncode_challenge: str | None = None\u00b6
\n
\n\n
\n
\ncode_challenge_method: str | None = 'S256'\u00b6
\n
\n\n
\n
\nconnection: str\u00b6
\n
\n\n
\n
\nredirect_uri: str | None = None\u00b6
\n
\n\n
\n
\nscopes: list[str] | None = None\u00b6
\n
\n\n
\n
\nstate: str | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass ConnectAccountResponse(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n
\n
!!! abstract \u201cUsage Documentation\u201d

[Models](../concepts/models.md)

\n
\n
\n

A base class for creating Pydantic models.

\n
\n
\n__class_vars__\u00b6
\n

The names of the class variables defined on the model.

\n
\n\n
\n
\n__private_attributes__\u00b6
\n

Metadata about the private attributes of the model.

\n
\n\n
\n
\n__signature__\u00b6
\n

The synthesized __init__ [Signature][inspect.Signature] of the model.

\n
\n\n
\n
\n__pydantic_complete__\u00b6
\n

Whether model building is completed, or if there are still undefined fields.

\n
\n\n
\n
\n__pydantic_core_schema__\u00b6
\n

The core schema of the model.

\n
\n\n
\n
\n__pydantic_custom_init__\u00b6
\n

Whether the model has a custom __init__ function.

\n
\n\n
\n
\n__pydantic_decorators__\u00b6
\n

Metadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

\n
\n\n
\n
\n__pydantic_generic_metadata__\u00b6
\n

A 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.

\n
\n\n
\n
\n__pydantic_parent_namespace__\u00b6
\n

Parent namespace of the model, used for automatic rebuilding of models.

\n
\n\n
\n
\n__pydantic_post_init__\u00b6
\n

The name of the post-init method for the model, if defined.

\n
\n\n
\n
\n__pydantic_root_model__\u00b6
\n

Whether the model is a [RootModel][pydantic.root_model.RootModel].

\n
\n\n
\n
\n__pydantic_serializer__\u00b6
\n

The pydantic-core SchemaSerializer used to dump instances of the model.

\n
\n\n
\n
\n__pydantic_validator__\u00b6
\n

The pydantic-core SchemaValidator used to validate instances of the model.

\n
\n\n
\n
\n__pydantic_fields__\u00b6
\n

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.

\n
\n\n
\n
\n__pydantic_computed_fields__\u00b6
\n

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

\n
\n\n
\n
\n__pydantic_extra__\u00b6
\n

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.

\n
\n\n
\n
\n__pydantic_fields_set__\u00b6
\n

The names of fields explicitly set during instantiation.

\n
\n\n
\n
\n__pydantic_private__\u00b6
\n

Values of private attributes set on the model instance.

\n
\n\n
\n
\nauth_session: str\u00b6
\n
\n\n
\n
\nconnect_params: ConnectParams\u00b6
\n
\n\n
\n
\nconnect_uri: str\u00b6
\n
\n\n
\n
\nexpires_in: int\u00b6
\n
\n\n
\n\n
\n
\nclass ConnectParams(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n
\n
!!! abstract \u201cUsage Documentation\u201d

[Models](../concepts/models.md)

\n
\n
\n

A base class for creating Pydantic models.

\n
\n
\n__class_vars__\u00b6
\n

The names of the class variables defined on the model.

\n
\n\n
\n
\n__private_attributes__\u00b6
\n

Metadata about the private attributes of the model.

\n
\n\n
\n
\n__signature__\u00b6
\n

The synthesized __init__ [Signature][inspect.Signature] of the model.

\n
\n\n
\n
\n__pydantic_complete__\u00b6
\n

Whether model building is completed, or if there are still undefined fields.

\n
\n\n
\n
\n__pydantic_core_schema__\u00b6
\n

The core schema of the model.

\n
\n\n
\n
\n__pydantic_custom_init__\u00b6
\n

Whether the model has a custom __init__ function.

\n
\n\n
\n
\n__pydantic_decorators__\u00b6
\n

Metadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

\n
\n\n
\n
\n__pydantic_generic_metadata__\u00b6
\n

A 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.

\n
\n\n
\n
\n__pydantic_parent_namespace__\u00b6
\n

Parent namespace of the model, used for automatic rebuilding of models.

\n
\n\n
\n
\n__pydantic_post_init__\u00b6
\n

The name of the post-init method for the model, if defined.

\n
\n\n
\n
\n__pydantic_root_model__\u00b6
\n

Whether the model is a [RootModel][pydantic.root_model.RootModel].

\n
\n\n
\n
\n__pydantic_serializer__\u00b6
\n

The pydantic-core SchemaSerializer used to dump instances of the model.

\n
\n\n
\n
\n__pydantic_validator__\u00b6
\n

The pydantic-core SchemaValidator used to validate instances of the model.

\n
\n\n
\n
\n__pydantic_fields__\u00b6
\n

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.

\n
\n\n
\n
\n__pydantic_computed_fields__\u00b6
\n

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

\n
\n\n
\n
\n__pydantic_extra__\u00b6
\n

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.

\n
\n\n
\n
\n__pydantic_fields_set__\u00b6
\n

The names of fields explicitly set during instantiation.

\n
\n\n
\n
\n__pydantic_private__\u00b6
\n

Values of private attributes set on the model instance.

\n
\n\n
\n
\nticket: str\u00b6
\n
\n\n
\n\n
\n
\nclass ConnectedAccount(/, **data: Any)[source]\u00b6
\n

Bases: ConnectedAccountBase

\n
\n
!!! abstract \u201cUsage Documentation\u201d

[Models](../concepts/models.md)

\n
\n
\n

A base class for creating Pydantic models.

\n
\n
\n__class_vars__\u00b6
\n

The names of the class variables defined on the model.

\n
\n\n
\n
\n__private_attributes__\u00b6
\n

Metadata about the private attributes of the model.

\n
\n\n
\n
\n__signature__\u00b6
\n

The synthesized __init__ [Signature][inspect.Signature] of the model.

\n
\n\n
\n
\n__pydantic_complete__\u00b6
\n

Whether model building is completed, or if there are still undefined fields.

\n
\n\n
\n
\n__pydantic_core_schema__\u00b6
\n

The core schema of the model.

\n
\n\n
\n
\n__pydantic_custom_init__\u00b6
\n

Whether the model has a custom __init__ function.

\n
\n\n
\n
\n__pydantic_decorators__\u00b6
\n

Metadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

\n
\n\n
\n
\n__pydantic_generic_metadata__\u00b6
\n

A 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.

\n
\n\n
\n
\n__pydantic_parent_namespace__\u00b6
\n

Parent namespace of the model, used for automatic rebuilding of models.

\n
\n\n
\n
\n__pydantic_post_init__\u00b6
\n

The name of the post-init method for the model, if defined.

\n
\n\n
\n
\n__pydantic_root_model__\u00b6
\n

Whether the model is a [RootModel][pydantic.root_model.RootModel].

\n
\n\n
\n
\n__pydantic_serializer__\u00b6
\n

The pydantic-core SchemaSerializer used to dump instances of the model.

\n
\n\n
\n
\n__pydantic_validator__\u00b6
\n

The pydantic-core SchemaValidator used to validate instances of the model.

\n
\n\n
\n
\n__pydantic_fields__\u00b6
\n

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.

\n
\n\n
\n
\n__pydantic_computed_fields__\u00b6
\n

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

\n
\n\n
\n
\n__pydantic_extra__\u00b6
\n

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.

\n
\n\n
\n
\n__pydantic_fields_set__\u00b6
\n

The names of fields explicitly set during instantiation.

\n
\n\n
\n
\n__pydantic_private__\u00b6
\n

Values of private attributes set on the model instance.

\n
\n\n
\n
\naccess_type: str\u00b6
\n
\n\n
\n
\nconnection: str\u00b6
\n
\n\n
\n
\ncreated_at: str\u00b6
\n
\n\n
\n
\nexpires_at: str | None = None\u00b6
\n
\n\n
\n
\nid: str\u00b6
\n
\n\n
\n
\nscopes: list[str]\u00b6
\n
\n\n
\n\n
\n
\nclass ConnectedAccountBase(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n
\n
!!! abstract \u201cUsage Documentation\u201d

[Models](../concepts/models.md)

\n
\n
\n

A base class for creating Pydantic models.

\n
\n
\n__class_vars__\u00b6
\n

The names of the class variables defined on the model.

\n
\n\n
\n
\n__private_attributes__\u00b6
\n

Metadata about the private attributes of the model.

\n
\n\n
\n
\n__signature__\u00b6
\n

The synthesized __init__ [Signature][inspect.Signature] of the model.

\n
\n\n
\n
\n__pydantic_complete__\u00b6
\n

Whether model building is completed, or if there are still undefined fields.

\n
\n\n
\n
\n__pydantic_core_schema__\u00b6
\n

The core schema of the model.

\n
\n\n
\n
\n__pydantic_custom_init__\u00b6
\n

Whether the model has a custom __init__ function.

\n
\n\n
\n
\n__pydantic_decorators__\u00b6
\n

Metadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

\n
\n\n
\n
\n__pydantic_generic_metadata__\u00b6
\n

A 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.

\n
\n\n
\n
\n__pydantic_parent_namespace__\u00b6
\n

Parent namespace of the model, used for automatic rebuilding of models.

\n
\n\n
\n
\n__pydantic_post_init__\u00b6
\n

The name of the post-init method for the model, if defined.

\n
\n\n
\n
\n__pydantic_root_model__\u00b6
\n

Whether the model is a [RootModel][pydantic.root_model.RootModel].

\n
\n\n
\n
\n__pydantic_serializer__\u00b6
\n

The pydantic-core SchemaSerializer used to dump instances of the model.

\n
\n\n
\n
\n__pydantic_validator__\u00b6
\n

The pydantic-core SchemaValidator used to validate instances of the model.

\n
\n\n
\n
\n__pydantic_fields__\u00b6
\n

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.

\n
\n\n
\n
\n__pydantic_computed_fields__\u00b6
\n

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

\n
\n\n
\n
\n__pydantic_extra__\u00b6
\n

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.

\n
\n\n
\n
\n__pydantic_fields_set__\u00b6
\n

The names of fields explicitly set during instantiation.

\n
\n\n
\n
\n__pydantic_private__\u00b6
\n

Values of private attributes set on the model instance.

\n
\n\n
\n
\naccess_type: str\u00b6
\n
\n\n
\n
\nconnection: str\u00b6
\n
\n\n
\n
\ncreated_at: str\u00b6
\n
\n\n
\n
\nexpires_at: str | None = None\u00b6
\n
\n\n
\n
\nid: str\u00b6
\n
\n\n
\n
\nscopes: list[str]\u00b6
\n
\n\n
\n\n
\n
\nclass ConnectedAccountConnection(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n
\n
!!! abstract \u201cUsage Documentation\u201d

[Models](../concepts/models.md)

\n
\n
\n

A base class for creating Pydantic models.

\n
\n
\n__class_vars__\u00b6
\n

The names of the class variables defined on the model.

\n
\n\n
\n
\n__private_attributes__\u00b6
\n

Metadata about the private attributes of the model.

\n
\n\n
\n
\n__signature__\u00b6
\n

The synthesized __init__ [Signature][inspect.Signature] of the model.

\n
\n\n
\n
\n__pydantic_complete__\u00b6
\n

Whether model building is completed, or if there are still undefined fields.

\n
\n\n
\n
\n__pydantic_core_schema__\u00b6
\n

The core schema of the model.

\n
\n\n
\n
\n__pydantic_custom_init__\u00b6
\n

Whether the model has a custom __init__ function.

\n
\n\n
\n
\n__pydantic_decorators__\u00b6
\n

Metadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

\n
\n\n
\n
\n__pydantic_generic_metadata__\u00b6
\n

A 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.

\n
\n\n
\n
\n__pydantic_parent_namespace__\u00b6
\n

Parent namespace of the model, used for automatic rebuilding of models.

\n
\n\n
\n
\n__pydantic_post_init__\u00b6
\n

The name of the post-init method for the model, if defined.

\n
\n\n
\n
\n__pydantic_root_model__\u00b6
\n

Whether the model is a [RootModel][pydantic.root_model.RootModel].

\n
\n\n
\n
\n__pydantic_serializer__\u00b6
\n

The pydantic-core SchemaSerializer used to dump instances of the model.

\n
\n\n
\n
\n__pydantic_validator__\u00b6
\n

The pydantic-core SchemaValidator used to validate instances of the model.

\n
\n\n
\n
\n__pydantic_fields__\u00b6
\n

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.

\n
\n\n
\n
\n__pydantic_computed_fields__\u00b6
\n

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

\n
\n\n
\n
\n__pydantic_extra__\u00b6
\n

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.

\n
\n\n
\n
\n__pydantic_fields_set__\u00b6
\n

The names of fields explicitly set during instantiation.

\n
\n\n
\n
\n__pydantic_private__\u00b6
\n

Values of private attributes set on the model instance.

\n
\n\n
\n
\nname: str\u00b6
\n
\n\n
\n
\nscopes: list[str] | None = None\u00b6
\n
\n\n
\n
\nstrategy: str\u00b6
\n
\n\n
\n\n
\n
\nclass ConnectionTokenSet(/, **data: Any)[source]\u00b6
\n

Bases: TokenSet

\n

Token set specific to a connection.\nExtends TokenSet with connection-specific information.

\n
\n
\nconnection: str\u00b6
\n
\n\n
\n
\nlogin_hint: str\u00b6
\n
\n\n
\n\n
\n
\nclass CreateAnonymousSessionOptions(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Options bundle for create_session(), carrying audience, scope, and metadata.

\n
\n
\naudience: str | None = None\u00b6
\n
\n\n
\n
\nmetadata: dict[str, Any] | None = None\u00b6
\n
\n\n
\n
\nmodel_config\u00b6
\n

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

\n
\n\n
\n
\nscope: str | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass CustomTokenExchangeOptions(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Options for custom token exchange (RFC 8693).

\n
\n
Parameters:
\n
    \n
  • subject_token \u2013 The security token being exchanged

  • \n
  • subject_token_type \u2013 Identifier indicating the token format

  • \n
  • audience \u2013 Logical name of target service (optional)

  • \n
  • scope \u2013 Space-delimited list of scopes (optional)

  • \n
  • actor_token \u2013 Security token representing the acting party (optional)

  • \n
  • actor_token_type \u2013 Type of actor token (required if actor_token present)

  • \n
  • organization \u2013 Organization identifier for the token exchange (optional)

  • \n
  • authorization_params \u2013 Additional OAuth parameters (optional)

  • \n
\n
\n
\n
\n
\nactor_token: str | None = None\u00b6
\n
\n\n
\n
\nactor_token_type: str | None = None\u00b6
\n
\n\n
\n
\naudience: str | None = None\u00b6
\n
\n\n
\n
\nauthorization_params: dict[str, Any] | None = None\u00b6
\n
\n\n
\n
\norganization: str | None = None\u00b6
\n
\n\n
\n
\nscope: str | None = None\u00b6
\n
\n\n
\n
\nsubject_token: str\u00b6
\n
\n\n
\n
\nsubject_token_type: str\u00b6
\n
\n\n
\n\n
\n
\nclass DomainResolverContext(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Context passed to domain resolver function for MCD support.

\n

Contains request information needed to determine the correct Auth0 domain\nbased on the incoming request\u2019s hostname or headers.

\n
\n
\nrequest_url\u00b6
\n

The full request URL (e.g., \u201chttps://a.my-app.com/auth/login\u201d)

\n
\n\n
\n
\nrequest_headers\u00b6
\n

Dictionary of request headers (e.g., {\u201chost\u201d: \u201ca.my-app.com\u201d, \u201cx-forwarded-host\u201d: \u201c\u2026\u201d})

\n
\n\n

Example

\n
\n
async def domain_resolver(context: DomainResolverContext) -> str:

host = context.request_headers.get(\u2018host\u2019, \u2018\u2019).split(\u2018:\u2019)[0]\nreturn DOMAIN_MAP.get(host, DEFAULT_DOMAIN)

\n
\n
\n
\n
\nrequest_headers: dict[str, str] | None = None\u00b6
\n
\n\n
\n
\nrequest_url: str | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass EncryptedStoreOptions(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Options for encrypted stores.\nContains the secret used for encryption.

\n
\n
\nsecret: str\u00b6
\n
\n\n
\n\n
\n
\nclass EnrollAuthenticationMethodRequest(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n
\n
!!! abstract \u201cUsage Documentation\u201d

[Models](../concepts/models.md)

\n
\n
\n

A base class for creating Pydantic models.

\n
\n
\n__class_vars__\u00b6
\n

The names of the class variables defined on the model.

\n
\n\n
\n
\n__private_attributes__\u00b6
\n

Metadata about the private attributes of the model.

\n
\n\n
\n
\n__signature__\u00b6
\n

The synthesized __init__ [Signature][inspect.Signature] of the model.

\n
\n\n
\n
\n__pydantic_complete__\u00b6
\n

Whether model building is completed, or if there are still undefined fields.

\n
\n\n
\n
\n__pydantic_core_schema__\u00b6
\n

The core schema of the model.

\n
\n\n
\n
\n__pydantic_custom_init__\u00b6
\n

Whether the model has a custom __init__ function.

\n
\n\n
\n
\n__pydantic_decorators__\u00b6
\n

Metadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

\n
\n\n
\n
\n__pydantic_generic_metadata__\u00b6
\n

A 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.

\n
\n\n
\n
\n__pydantic_parent_namespace__\u00b6
\n

Parent namespace of the model, used for automatic rebuilding of models.

\n
\n\n
\n
\n__pydantic_post_init__\u00b6
\n

The name of the post-init method for the model, if defined.

\n
\n\n
\n
\n__pydantic_root_model__\u00b6
\n

Whether the model is a [RootModel][pydantic.root_model.RootModel].

\n
\n\n
\n
\n__pydantic_serializer__\u00b6
\n

The pydantic-core SchemaSerializer used to dump instances of the model.

\n
\n\n
\n
\n__pydantic_validator__\u00b6
\n

The pydantic-core SchemaValidator used to validate instances of the model.

\n
\n\n
\n
\n__pydantic_fields__\u00b6
\n

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.

\n
\n\n
\n
\n__pydantic_computed_fields__\u00b6
\n

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

\n
\n\n
\n
\n__pydantic_extra__\u00b6
\n

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.

\n
\n\n
\n
\n__pydantic_fields_set__\u00b6
\n

The names of fields explicitly set during instantiation.

\n
\n\n
\n
\n__pydantic_private__\u00b6
\n

Values of private attributes set on the model instance.

\n
\n\n
\n
\nconnection: str | None = None\u00b6
\n
\n\n
\n
\nemail: str | None = None\u00b6
\n
\n\n
\n
\nidentity_user_id: str | None = None\u00b6
\n
\n\n
\n
\nphone_number: str | None = None\u00b6
\n
\n\n
\n
\npreferred_authentication_method: PreferredAuthMethod | None = None\u00b6
\n
\n\n
\n
\ntype: EnrollmentType\u00b6
\n
\n\n
\n\n
\n
\nclass EnrollEmailOptions(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Options for enrolling an email authenticator.

\n
\n
\nauthenticator_types: list[str]\u00b6
\n
\n\n
\n
\nemail: str | None = None\u00b6
\n
\n\n
\n
\nmfa_token: str\u00b6
\n
\n\n
\n
\noob_channels: list[OobChannel]\u00b6
\n
\n\n
\n\n
\n
\nclass EnrollOobOptions(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Options for enrolling an OOB authenticator (SMS, Voice, Push).

\n
\n
\nauthenticator_types: list[str]\u00b6
\n
\n\n
\n
\nmfa_token: str\u00b6
\n
\n\n
\n
\noob_channels: list[OobChannel]\u00b6
\n
\n\n
\n
\nphone_number: str | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass EnrollOtpOptions(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Options for enrolling an OTP authenticator.

\n
\n
\nauthenticator_types: list[str]\u00b6
\n
\n\n
\n
\nmfa_token: str\u00b6
\n
\n\n
\n\n
\n
\nclass EnrollmentChallengeResponse(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n
\n
!!! abstract \u201cUsage Documentation\u201d

[Models](../concepts/models.md)

\n
\n
\n

A base class for creating Pydantic models.

\n
\n
\n__class_vars__\u00b6
\n

The names of the class variables defined on the model.

\n
\n\n
\n
\n__private_attributes__\u00b6
\n

Metadata about the private attributes of the model.

\n
\n\n
\n
\n__signature__\u00b6
\n

The synthesized __init__ [Signature][inspect.Signature] of the model.

\n
\n\n
\n
\n__pydantic_complete__\u00b6
\n

Whether model building is completed, or if there are still undefined fields.

\n
\n\n
\n
\n__pydantic_core_schema__\u00b6
\n

The core schema of the model.

\n
\n\n
\n
\n__pydantic_custom_init__\u00b6
\n

Whether the model has a custom __init__ function.

\n
\n\n
\n
\n__pydantic_decorators__\u00b6
\n

Metadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

\n
\n\n
\n
\n__pydantic_generic_metadata__\u00b6
\n

A 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.

\n
\n\n
\n
\n__pydantic_parent_namespace__\u00b6
\n

Parent namespace of the model, used for automatic rebuilding of models.

\n
\n\n
\n
\n__pydantic_post_init__\u00b6
\n

The name of the post-init method for the model, if defined.

\n
\n\n
\n
\n__pydantic_root_model__\u00b6
\n

Whether the model is a [RootModel][pydantic.root_model.RootModel].

\n
\n\n
\n
\n__pydantic_serializer__\u00b6
\n

The pydantic-core SchemaSerializer used to dump instances of the model.

\n
\n\n
\n
\n__pydantic_validator__\u00b6
\n

The pydantic-core SchemaValidator used to validate instances of the model.

\n
\n\n
\n
\n__pydantic_fields__\u00b6
\n

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.

\n
\n\n
\n
\n__pydantic_computed_fields__\u00b6
\n

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

\n
\n\n
\n
\n__pydantic_extra__\u00b6
\n

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.

\n
\n\n
\n
\n__pydantic_fields_set__\u00b6
\n

The names of fields explicitly set during instantiation.

\n
\n\n
\n
\n__pydantic_private__\u00b6
\n

Values of private attributes set on the model instance.

\n
\n\n
\n
\nauth_session: str\u00b6
\n
\n\n
\n
\nauthentication_method_id: str\u00b6
\n
\n\n
\n
\nauthn_params_public_key: PasskeyPublicKeyOptions | None = None\u00b6
\n
\n\n
\n
\nmodel_config\u00b6
\n

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

\n
\n\n
\n\n
\n
\nclass Factor(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n
\n
!!! abstract \u201cUsage Documentation\u201d

[Models](../concepts/models.md)

\n
\n
\n

A base class for creating Pydantic models.

\n
\n
\n__class_vars__\u00b6
\n

The names of the class variables defined on the model.

\n
\n\n
\n
\n__private_attributes__\u00b6
\n

Metadata about the private attributes of the model.

\n
\n\n
\n
\n__signature__\u00b6
\n

The synthesized __init__ [Signature][inspect.Signature] of the model.

\n
\n\n
\n
\n__pydantic_complete__\u00b6
\n

Whether model building is completed, or if there are still undefined fields.

\n
\n\n
\n
\n__pydantic_core_schema__\u00b6
\n

The core schema of the model.

\n
\n\n
\n
\n__pydantic_custom_init__\u00b6
\n

Whether the model has a custom __init__ function.

\n
\n\n
\n
\n__pydantic_decorators__\u00b6
\n

Metadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

\n
\n\n
\n
\n__pydantic_generic_metadata__\u00b6
\n

A 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.

\n
\n\n
\n
\n__pydantic_parent_namespace__\u00b6
\n

Parent namespace of the model, used for automatic rebuilding of models.

\n
\n\n
\n
\n__pydantic_post_init__\u00b6
\n

The name of the post-init method for the model, if defined.

\n
\n\n
\n
\n__pydantic_root_model__\u00b6
\n

Whether the model is a [RootModel][pydantic.root_model.RootModel].

\n
\n\n
\n
\n__pydantic_serializer__\u00b6
\n

The pydantic-core SchemaSerializer used to dump instances of the model.

\n
\n\n
\n
\n__pydantic_validator__\u00b6
\n

The pydantic-core SchemaValidator used to validate instances of the model.

\n
\n\n
\n
\n__pydantic_fields__\u00b6
\n

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.

\n
\n\n
\n
\n__pydantic_computed_fields__\u00b6
\n

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

\n
\n\n
\n
\n__pydantic_extra__\u00b6
\n

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.

\n
\n\n
\n
\n__pydantic_fields_set__\u00b6
\n

The names of fields explicitly set during instantiation.

\n
\n\n
\n
\n__pydantic_private__\u00b6
\n

Values of private attributes set on the model instance.

\n
\n\n
\n
\nmodel_config\u00b6
\n

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

\n
\n\n
\n
\ntype: str\u00b6
\n
\n\n
\n
\nusage: list[str] | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass GetFactorsResponse(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n
\n
!!! abstract \u201cUsage Documentation\u201d

[Models](../concepts/models.md)

\n
\n
\n

A base class for creating Pydantic models.

\n
\n
\n__class_vars__\u00b6
\n

The names of the class variables defined on the model.

\n
\n\n
\n
\n__private_attributes__\u00b6
\n

Metadata about the private attributes of the model.

\n
\n\n
\n
\n__signature__\u00b6
\n

The synthesized __init__ [Signature][inspect.Signature] of the model.

\n
\n\n
\n
\n__pydantic_complete__\u00b6
\n

Whether model building is completed, or if there are still undefined fields.

\n
\n\n
\n
\n__pydantic_core_schema__\u00b6
\n

The core schema of the model.

\n
\n\n
\n
\n__pydantic_custom_init__\u00b6
\n

Whether the model has a custom __init__ function.

\n
\n\n
\n
\n__pydantic_decorators__\u00b6
\n

Metadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

\n
\n\n
\n
\n__pydantic_generic_metadata__\u00b6
\n

A 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.

\n
\n\n
\n
\n__pydantic_parent_namespace__\u00b6
\n

Parent namespace of the model, used for automatic rebuilding of models.

\n
\n\n
\n
\n__pydantic_post_init__\u00b6
\n

The name of the post-init method for the model, if defined.

\n
\n\n
\n
\n__pydantic_root_model__\u00b6
\n

Whether the model is a [RootModel][pydantic.root_model.RootModel].

\n
\n\n
\n
\n__pydantic_serializer__\u00b6
\n

The pydantic-core SchemaSerializer used to dump instances of the model.

\n
\n\n
\n
\n__pydantic_validator__\u00b6
\n

The pydantic-core SchemaValidator used to validate instances of the model.

\n
\n\n
\n
\n__pydantic_fields__\u00b6
\n

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.

\n
\n\n
\n
\n__pydantic_computed_fields__\u00b6
\n

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

\n
\n\n
\n
\n__pydantic_extra__\u00b6
\n

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.

\n
\n\n
\n
\n__pydantic_fields_set__\u00b6
\n

The names of fields explicitly set during instantiation.

\n
\n\n
\n
\n__pydantic_private__\u00b6
\n

Values of private attributes set on the model instance.

\n
\n\n
\n
\nfactors: list[Factor]\u00b6
\n
\n\n
\n\n
\n
\nclass InternalStateData(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Internal data used for managing state.\nNot meant to be accessed directly by SDK users.

\n
\n
\ncreated_at: int\u00b6
\n
\n\n
\n
\nsession_expires_at: int | None = None\u00b6
\n
\n\n
\n
\nsid: str\u00b6
\n
\n\n
\n\n
\n
\nclass ListAuthenticationMethodsResponse(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n
\n
!!! abstract \u201cUsage Documentation\u201d

[Models](../concepts/models.md)

\n
\n
\n

A base class for creating Pydantic models.

\n
\n
\n__class_vars__\u00b6
\n

The names of the class variables defined on the model.

\n
\n\n
\n
\n__private_attributes__\u00b6
\n

Metadata about the private attributes of the model.

\n
\n\n
\n
\n__signature__\u00b6
\n

The synthesized __init__ [Signature][inspect.Signature] of the model.

\n
\n\n
\n
\n__pydantic_complete__\u00b6
\n

Whether model building is completed, or if there are still undefined fields.

\n
\n\n
\n
\n__pydantic_core_schema__\u00b6
\n

The core schema of the model.

\n
\n\n
\n
\n__pydantic_custom_init__\u00b6
\n

Whether the model has a custom __init__ function.

\n
\n\n
\n
\n__pydantic_decorators__\u00b6
\n

Metadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

\n
\n\n
\n
\n__pydantic_generic_metadata__\u00b6
\n

A 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.

\n
\n\n
\n
\n__pydantic_parent_namespace__\u00b6
\n

Parent namespace of the model, used for automatic rebuilding of models.

\n
\n\n
\n
\n__pydantic_post_init__\u00b6
\n

The name of the post-init method for the model, if defined.

\n
\n\n
\n
\n__pydantic_root_model__\u00b6
\n

Whether the model is a [RootModel][pydantic.root_model.RootModel].

\n
\n\n
\n
\n__pydantic_serializer__\u00b6
\n

The pydantic-core SchemaSerializer used to dump instances of the model.

\n
\n\n
\n
\n__pydantic_validator__\u00b6
\n

The pydantic-core SchemaValidator used to validate instances of the model.

\n
\n\n
\n
\n__pydantic_fields__\u00b6
\n

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.

\n
\n\n
\n
\n__pydantic_computed_fields__\u00b6
\n

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

\n
\n\n
\n
\n__pydantic_extra__\u00b6
\n

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.

\n
\n\n
\n
\n__pydantic_fields_set__\u00b6
\n

The names of fields explicitly set during instantiation.

\n
\n\n
\n
\n__pydantic_private__\u00b6
\n

Values of private attributes set on the model instance.

\n
\n\n
\n
\nauthentication_methods: list[AuthenticationMethod]\u00b6
\n
\n\n
\n\n
\n
\nclass ListAuthenticatorsOptions(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Options for listing MFA authenticators.

\n
\n
\nmfa_token: str\u00b6
\n
\n\n
\n\n
\n
\nclass ListConnectedAccountConnectionsResponse(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n
\n
!!! abstract \u201cUsage Documentation\u201d

[Models](../concepts/models.md)

\n
\n
\n

A base class for creating Pydantic models.

\n
\n
\n__class_vars__\u00b6
\n

The names of the class variables defined on the model.

\n
\n\n
\n
\n__private_attributes__\u00b6
\n

Metadata about the private attributes of the model.

\n
\n\n
\n
\n__signature__\u00b6
\n

The synthesized __init__ [Signature][inspect.Signature] of the model.

\n
\n\n
\n
\n__pydantic_complete__\u00b6
\n

Whether model building is completed, or if there are still undefined fields.

\n
\n\n
\n
\n__pydantic_core_schema__\u00b6
\n

The core schema of the model.

\n
\n\n
\n
\n__pydantic_custom_init__\u00b6
\n

Whether the model has a custom __init__ function.

\n
\n\n
\n
\n__pydantic_decorators__\u00b6
\n

Metadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

\n
\n\n
\n
\n__pydantic_generic_metadata__\u00b6
\n

A 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.

\n
\n\n
\n
\n__pydantic_parent_namespace__\u00b6
\n

Parent namespace of the model, used for automatic rebuilding of models.

\n
\n\n
\n
\n__pydantic_post_init__\u00b6
\n

The name of the post-init method for the model, if defined.

\n
\n\n
\n
\n__pydantic_root_model__\u00b6
\n

Whether the model is a [RootModel][pydantic.root_model.RootModel].

\n
\n\n
\n
\n__pydantic_serializer__\u00b6
\n

The pydantic-core SchemaSerializer used to dump instances of the model.

\n
\n\n
\n
\n__pydantic_validator__\u00b6
\n

The pydantic-core SchemaValidator used to validate instances of the model.

\n
\n\n
\n
\n__pydantic_fields__\u00b6
\n

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.

\n
\n\n
\n
\n__pydantic_computed_fields__\u00b6
\n

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

\n
\n\n
\n
\n__pydantic_extra__\u00b6
\n

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.

\n
\n\n
\n
\n__pydantic_fields_set__\u00b6
\n

The names of fields explicitly set during instantiation.

\n
\n\n
\n
\n__pydantic_private__\u00b6
\n

Values of private attributes set on the model instance.

\n
\n\n
\n
\nconnections: list[ConnectedAccountConnection]\u00b6
\n
\n\n
\n
\nnext: str | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass ListConnectedAccountsResponse(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n
\n
!!! abstract \u201cUsage Documentation\u201d

[Models](../concepts/models.md)

\n
\n
\n

A base class for creating Pydantic models.

\n
\n
\n__class_vars__\u00b6
\n

The names of the class variables defined on the model.

\n
\n\n
\n
\n__private_attributes__\u00b6
\n

Metadata about the private attributes of the model.

\n
\n\n
\n
\n__signature__\u00b6
\n

The synthesized __init__ [Signature][inspect.Signature] of the model.

\n
\n\n
\n
\n__pydantic_complete__\u00b6
\n

Whether model building is completed, or if there are still undefined fields.

\n
\n\n
\n
\n__pydantic_core_schema__\u00b6
\n

The core schema of the model.

\n
\n\n
\n
\n__pydantic_custom_init__\u00b6
\n

Whether the model has a custom __init__ function.

\n
\n\n
\n
\n__pydantic_decorators__\u00b6
\n

Metadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

\n
\n\n
\n
\n__pydantic_generic_metadata__\u00b6
\n

A 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.

\n
\n\n
\n
\n__pydantic_parent_namespace__\u00b6
\n

Parent namespace of the model, used for automatic rebuilding of models.

\n
\n\n
\n
\n__pydantic_post_init__\u00b6
\n

The name of the post-init method for the model, if defined.

\n
\n\n
\n
\n__pydantic_root_model__\u00b6
\n

Whether the model is a [RootModel][pydantic.root_model.RootModel].

\n
\n\n
\n
\n__pydantic_serializer__\u00b6
\n

The pydantic-core SchemaSerializer used to dump instances of the model.

\n
\n\n
\n
\n__pydantic_validator__\u00b6
\n

The pydantic-core SchemaValidator used to validate instances of the model.

\n
\n\n
\n
\n__pydantic_fields__\u00b6
\n

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.

\n
\n\n
\n
\n__pydantic_computed_fields__\u00b6
\n

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

\n
\n\n
\n
\n__pydantic_extra__\u00b6
\n

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.

\n
\n\n
\n
\n__pydantic_fields_set__\u00b6
\n

The names of fields explicitly set during instantiation.

\n
\n\n
\n
\n__pydantic_private__\u00b6
\n

Values of private attributes set on the model instance.

\n
\n\n
\n
\naccounts: list[ConnectedAccount]\u00b6
\n
\n\n
\n
\nnext: str | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass LoginBackchannelOptions(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Options for Client-Initiated Backchannel Authentication.

\n
\n
\nauthorization_params: dict[str, Any] | None = None\u00b6
\n
\n\n
\n
\nbinding_message: str\u00b6
\n
\n\n
\n
\nlogin_hint: dict[str, str]\u00b6
\n
\n\n
\n\n
\n
\nclass LoginBackchannelResult(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Result from Client-Initiated Backchannel Authentication.

\n
\n
\nauthorization_details: list[AuthorizationDetails] | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass LoginWithCustomTokenExchangeOptions(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Options for logging in via custom token exchange.

\n

Combines token exchange parameters with session management.

\n
\n
\nactor_token: str | None = None\u00b6
\n
\n\n
\n
\nactor_token_type: str | None = None\u00b6
\n
\n\n
\n
\naudience: str | None = None\u00b6
\n
\n\n
\n
\nauthorization_params: dict[str, Any] | None = None\u00b6
\n
\n\n
\n
\norganization: str | None = None\u00b6
\n
\n\n
\n
\nscope: str | None = None\u00b6
\n
\n\n
\n
\nsubject_token: str\u00b6
\n
\n\n
\n
\nsubject_token_type: str\u00b6
\n
\n\n
\n\n
\n
\nclass LoginWithCustomTokenExchangeResult(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Result from login with custom token exchange.

\n

Contains session data established after token exchange.

\n
\n
\nauthorization_details: list[AuthorizationDetails] | None = None\u00b6
\n
\n\n
\n
\nstate_data: dict[str, Any]\u00b6
\n
\n\n
\n\n
\n
\nclass LogoutOptions(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Options for logout operations.\nConfigures how the logout request is constructed.

\n
\n
\nfederated: bool | None = False\u00b6
\n
\n\n
\n
\nreturn_to: str | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass LogoutTokenClaims(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Claims expected in a logout token.\nUsed for backchannel logout processing.

\n
\n
\niss: str | None = None\u00b6
\n
\n\n
\n
\nsid: str\u00b6
\n
\n\n
\n
\nsub: str\u00b6
\n
\n\n
\n\n
\n
\nclass MfaRequirement(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

A single MFA requirement entry.

\n
\n
\ntype: str\u00b6
\n
\n\n
\n\n
\n
\nclass MfaRequirements(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

MFA requirements from an mfa_required error response.

\n
\n
\nchallenge: list[MfaRequirement] | None = None\u00b6
\n
\n\n
\n
\nenroll: list[MfaRequirement] | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass MfaTokenContext(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Internal context stored inside encrypted mfa_token.

\n
\n
\naudience: str\u00b6
\n
\n\n
\n
\ncreated_at: int\u00b6
\n
\n\n
\n
\nmfa_requirements: MfaRequirements | None = None\u00b6
\n
\n\n
\n
\nmfa_token: str\u00b6
\n
\n\n
\n
\nscope: str\u00b6
\n
\n\n
\n\n
\n
\nclass MfaVerifyResponse(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Response from MFA verification.

\n
\n
\naccess_token: str\u00b6
\n
\n\n
\n
\naudience: str | None = None\u00b6
\n
\n\n
\n
\nexpires_in: int\u00b6
\n
\n\n
\n
\nid_token: str | None = None\u00b6
\n
\n\n
\n
\nmodel_config\u00b6
\n

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

\n
\n\n
\n
\nrecovery_code: str | None = None\u00b6
\n
\n\n
\n
\nrefresh_token: str | None = None\u00b6
\n
\n\n
\n
\nscope: str | None = None\u00b6
\n
\n\n
\n
\ntoken_type: str = 'Bearer'\u00b6
\n
\n\n
\n\n
\n
\nclass OobEnrollmentResponse(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Response when enrolling an OOB authenticator.

\n
\n
\nauthenticator_type: Literal['oob']\u00b6
\n
\n\n
\n
\nbarcode_uri: str | None = None\u00b6
\n
\n\n
\n
\nbinding_method: str | None = None\u00b6
\n
\n\n
\n
\nid: str | None = None\u00b6
\n
\n\n
\n
\noob_channel: OobChannel\u00b6
\n
\n\n
\n
\noob_code: str | None = None\u00b6
\n
\n\n
\n
\nrecovery_codes: list[str] | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass OtpEnrollmentResponse(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Response when enrolling an OTP authenticator.

\n
\n
\nauthenticator_type: Literal['otp']\u00b6
\n
\n\n
\n
\nbarcode_uri: str\u00b6
\n
\n\n
\n
\nid: str | None = None\u00b6
\n
\n\n
\n
\nrecovery_codes: list[str] | None = None\u00b6
\n
\n\n
\n
\nsecret: str\u00b6
\n
\n\n
\n\n
\n
\nclass PasskeyAuthResponse(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

WebAuthn credential returned by the browser, passed to signin_with_passkey.

\n
\n
\nauthenticator_attachment: str | None = None\u00b6
\n
\n\n
\n
\nclient_extension_results: dict[str, Any] | None = None\u00b6
\n
\n\n
\n
\nid: str\u00b6
\n
\n\n
\n
\nmodel_config\u00b6
\n

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

\n
\n\n
\n
\nraw_id: str = None\u00b6
\n
\n\n
\n
\nresponse: dict[str, str]\u00b6
\n
\n\n
\n
\ntype: str\u00b6
\n
\n\n
\n\n
\n
\nclass PasskeyAuthenticatorSelection(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Authenticator requirements for a WebAuthn registration.

\n
\n
\nmodel_config\u00b6
\n

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

\n
\n\n
\n
\nresident_key: str | None = None\u00b6
\n
\n\n
\n
\nuser_verification: str | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass PasskeyLoginChallengeResponse(/, **data: Any)[source]\u00b6
\n

Bases: _PasskeyChallengeResponseBase

\n

Login challenge with the auth_session and WebAuthn options for the browser. auth_session is hidden from repr and str.

\n
\n\n
\n
\nclass PasskeyLoginResult(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Result from signin_with_passkey.

\n

Contains 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.

\n
\n
\nstate_data: dict[str, Any]\u00b6
\n
\n\n
\n\n
\n
\nclass PasskeyPubKeyCredParam(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Public key type and algorithm the relying party accepts.

\n
\n
\nalg: int\u00b6
\n
\n\n
\n
\ntype: str\u00b6
\n
\n\n
\n\n
\n
\nclass PasskeyPublicKeyOptions(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

WebAuthn public key options to pass to the browser credentials API.

\n
\n
\nauthenticator_selection: PasskeyAuthenticatorSelection | None = None\u00b6
\n
\n\n
\n
\nchallenge: str\u00b6
\n
\n\n
\n
\nmodel_config\u00b6
\n

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

\n
\n\n
\n
\npub_key_cred_params: list[PasskeyPubKeyCredParam] | None = None\u00b6
\n
\n\n
\n
\nrp: PasskeyRpInfo | None = None\u00b6
\n
\n\n
\n
\nrp_id: str | None = None\u00b6
\n
\n\n
\n
\ntimeout: int | None = None\u00b6
\n
\n\n
\n
\nuser: PasskeyUserInfo | None = None\u00b6
\n
\n\n
\n
\nuser_verification: str | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass PasskeyRpInfo(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Relying party identity for a WebAuthn ceremony.

\n
\n
\nid: str\u00b6
\n
\n\n
\n
\nname: str\u00b6
\n
\n\n
\n\n
\n
\nclass PasskeySignupChallengeResponse(/, **data: Any)[source]\u00b6
\n

Bases: _PasskeyChallengeResponseBase

\n

Signup challenge, with verification_required set when the user must enter codes first. auth_session is hidden from repr and str.

\n
\n
\nverification_required: list[str] | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass PasskeyTokenResponse(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Token endpoint response for the passkey grant.

\n
\n
\naccess_token: str\u00b6
\n
\n\n
\n
\nexpires_at: int\u00b6
\n
\n\n
\n
\nexpires_in: int\u00b6
\n
\n\n
\n
\nid_token: str | None = None\u00b6
\n
\n\n
\n
\nmodel_config\u00b6
\n

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

\n
\n\n
\n
\nrefresh_token: str | None = None\u00b6
\n
\n\n
\n
\nscope: str | None = None\u00b6
\n
\n\n
\n
\ntoken_type: str = 'Bearer'\u00b6
\n
\n\n
\n\n
\n
\nclass PasskeyUserInfo(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

User identity for a WebAuthn registration.

\n
\n
\ndisplay_name: str | None = None\u00b6
\n
\n\n
\n
\nid: str\u00b6
\n
\n\n
\n
\nmodel_config\u00b6
\n

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

\n
\n\n
\n
\nname: str\u00b6
\n
\n\n
\n\n
\n
\nclass PasskeyUserProfile(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

User profile attributes sent with a passkey signup challenge.

\n
\n
\nemail: str | None = None\u00b6
\n
\n\n
\n
\nfamily_name: str | None = None\u00b6
\n
\n\n
\n
\ngiven_name: str | None = None\u00b6
\n
\n\n
\n
\nmodel_config\u00b6
\n

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

\n
\n\n
\n
\nname: str | None = None\u00b6
\n
\n\n
\n
\nnickname: str | None = None\u00b6
\n
\n\n
\n
\nphone_number: str | None = None\u00b6
\n
\n\n
\n
\npicture: str | None = None\u00b6
\n
\n\n
\n
\nusername: str | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass PasswordlessStartResult(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Success payload from POST /passwordless/start.

\n
\n
\nid: str | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass ServerClientOptionsBase(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Base options for configuring the Auth0 server client.\nContains core settings required for all clients.

\n
\n
\nauthorization_params: dict[str, Any] | None = None\u00b6
\n
\n\n
\n
\nclient_assertion_signing_alg: str | None = None\u00b6
\n
\n\n
\n
\nclient_assertion_signing_key: str | None = None\u00b6
\n
\n\n
\n
\nclient_id: str\u00b6
\n
\n\n
\n
\nclient_secret: str\u00b6
\n
\n\n
\n
\ncustom_fetch: Any | None = None\u00b6
\n
\n\n
\n
\ndomain: str\u00b6
\n
\n\n
\n
\norganization: str | None = None\u00b6
\n
\n\n
\n
\nstate_identifier: str | None = '_a0_session'\u00b6
\n
\n\n
\n
\ntransaction_identifier: str | None = '_a0_tx'\u00b6
\n
\n\n
\n\n
\n
\nclass ServerClientOptionsWithSecret(/, **data: Any)[source]\u00b6
\n

Bases: ServerClientOptionsBase

\n

Client options using a secret for encryption.\nExtends base options with secret and duration settings.

\n
\n
\nsecret: str\u00b6
\n
\n\n
\n
\nstate_absolute_duration: int | None = 259200\u00b6
\n
\n\n
\n\n
\n
\nclass SessionData(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Represents a user session with Auth0.\nContains user information and tokens.

\n
\n
\nconnection_token_sets: list[ConnectionTokenSet] = None\u00b6
\n
\n\n
\n
\ndomain: str | None = None\u00b6
\n
\n\n
\n
\nid_token: str | None = None\u00b6
\n
\n\n
\n
\nrefresh_token: str | None = None\u00b6
\n
\n\n
\n
\ntoken_sets: list[TokenSet] = None\u00b6
\n
\n\n
\n
\nuser: UserClaims | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass SessionTransferTokenResult(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Response from a session transfer token (STT) request.

\n
\n
\nsession_transfer_token\u00b6
\n

The opaque, single-use session transfer token

\n
\n\n
\n
\nissued_token_type\u00b6
\n

Format of issued token (the session-transfer URN)

\n
\n\n
\n
\nexpires_in\u00b6
\n

Token lifetime in seconds

\n
\n\n
\n
\ntoken_type\u00b6
\n

Token type as returned by the server (typically \u201cN_A\u201d)

\n
\n\n
\n
\nscope\u00b6
\n

Granted scopes (if returned)

\n
\n\n
\n
\nexpires_in: int\u00b6
\n
\n\n
\n
\nissued_token_type: str\u00b6
\n
\n\n
\n
\nscope: str | None = None\u00b6
\n
\n\n
\n
\nsession_transfer_token: str\u00b6
\n
\n\n
\n
\ntoken_type: str | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass StartEnterpriseLoginOptions(/, **data: Any)[source]\u00b6
\n

Bases: StartInteractiveLoginOptions

\n

Options for starting an Enterprise Connect login.\nAdds the user\u2019s email, used for WebFinger discovery and as the login hint.

\n
\n
\nemail: str\u00b6
\n
\n\n
\n\n
\n
\nclass StartInteractiveLoginOptions(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Options for starting the interactive login process.\nConfigures how the authorization request is constructed.

\n
\n
\napp_state: Any | None = None\u00b6
\n
\n\n
\n
\nauthorization_params: dict[str, Any] | None = None\u00b6
\n
\n\n
\n
\ninvitation: str | None = None\u00b6
\n
\n\n
\n
\norganization: str | None = None\u00b6
\n
\n\n
\n
\npushed_authorization_requests: bool | None = False\u00b6
\n
\n\n
\n\n
\n
\nclass StartLinkUserOptions(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n
\n
!!! abstract \u201cUsage Documentation\u201d

[Models](../concepts/models.md)

\n
\n
\n

A base class for creating Pydantic models.

\n
\n
\n__class_vars__\u00b6
\n

The names of the class variables defined on the model.

\n
\n\n
\n
\n__private_attributes__\u00b6
\n

Metadata about the private attributes of the model.

\n
\n\n
\n
\n__signature__\u00b6
\n

The synthesized __init__ [Signature][inspect.Signature] of the model.

\n
\n\n
\n
\n__pydantic_complete__\u00b6
\n

Whether model building is completed, or if there are still undefined fields.

\n
\n\n
\n
\n__pydantic_core_schema__\u00b6
\n

The core schema of the model.

\n
\n\n
\n
\n__pydantic_custom_init__\u00b6
\n

Whether the model has a custom __init__ function.

\n
\n\n
\n
\n__pydantic_decorators__\u00b6
\n

Metadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

\n
\n\n
\n
\n__pydantic_generic_metadata__\u00b6
\n

A 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.

\n
\n\n
\n
\n__pydantic_parent_namespace__\u00b6
\n

Parent namespace of the model, used for automatic rebuilding of models.

\n
\n\n
\n
\n__pydantic_post_init__\u00b6
\n

The name of the post-init method for the model, if defined.

\n
\n\n
\n
\n__pydantic_root_model__\u00b6
\n

Whether the model is a [RootModel][pydantic.root_model.RootModel].

\n
\n\n
\n
\n__pydantic_serializer__\u00b6
\n

The pydantic-core SchemaSerializer used to dump instances of the model.

\n
\n\n
\n
\n__pydantic_validator__\u00b6
\n

The pydantic-core SchemaValidator used to validate instances of the model.

\n
\n\n
\n
\n__pydantic_fields__\u00b6
\n

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.

\n
\n\n
\n
\n__pydantic_computed_fields__\u00b6
\n

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

\n
\n\n
\n
\n__pydantic_extra__\u00b6
\n

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.

\n
\n\n
\n
\n__pydantic_fields_set__\u00b6
\n

The names of fields explicitly set during instantiation.

\n
\n\n
\n
\n__pydantic_private__\u00b6
\n

Values of private attributes set on the model instance.

\n
\n\n
\n
\napp_state: Any | None = None\u00b6
\n
\n\n
\n
\nauthorization_params: dict[str, Any] | None = None\u00b6
\n
\n\n
\n
\nconnection: str\u00b6
\n
\n\n
\n
\nconnection_scope: str | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass StartPasswordlessEmailOptions(/, **data: Any)[source]\u00b6
\n

Bases: _StartPasswordlessBase

\n

Options for starting an email passwordless flow (OTP code or magic link).

\n
\n
\nconnection: Literal['email'] = 'email'\u00b6
\n
\n\n
\n
\nemail: str\u00b6
\n
\n\n
\n
\nsend: Literal['code', 'link'] = 'code'\u00b6
\n
\n\n
\n\n
\n
\nclass StartPasswordlessSmsOptions(/, **data: Any)[source]\u00b6
\n

Bases: _StartPasswordlessBase

\n

Options for starting an SMS passwordless (OTP) flow.

\n
\n
\nconnection: Literal['sms'] = 'sms'\u00b6
\n
\n\n
\n
\nphone_number: str\u00b6
\n
\n\n
\n\n
\n
\nclass StateData(/, **data: Any)[source]\u00b6
\n

Bases: SessionData

\n

Complete state data stored in the state store.\nExtends SessionData with internal management information.

\n
\n
\ninternal: InternalStateData\u00b6
\n
\n\n
\n\n
\n
\nclass TokenExchangeResponse(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Response from token exchange operation.

\n
\n
\naccess_token\u00b6
\n

The issued access token

\n
\n\n
\n
\ntoken_type\u00b6
\n

Token type (typically \u201cBearer\u201d)

\n
\n\n
\n
\nexpires_in\u00b6
\n

Token lifetime in seconds

\n
\n\n
\n
\nscope\u00b6
\n

Granted scopes (if different from requested)

\n
\n\n
\n
\nissued_token_type\u00b6
\n

Format of issued token

\n
\n\n
\n
\nid_token\u00b6
\n

OpenID Connect ID token (optional)

\n
\n\n
\n
\nrefresh_token\u00b6
\n

Refresh token (optional)

\n
\n\n
\n
\nact\u00b6
\n

Actor claim for delegation/impersonation exchanges (optional)

\n
\n\n
\n
\naccess_token: str\u00b6
\n
\n\n
\n
\nact: dict[str, Any] | None = None\u00b6
\n
\n\n
\n
\nexpires_in: int\u00b6
\n
\n\n
\n
\nid_token: str | None = None\u00b6
\n
\n\n
\n
\nissued_token_type: str | None = None\u00b6
\n
\n\n
\n
\nrefresh_token: str | None = None\u00b6
\n
\n\n
\n
\nscope: str | None = None\u00b6
\n
\n\n
\n
\ntoken_type: str = 'Bearer'\u00b6
\n
\n\n
\n\n
\n
\nclass TokenSet(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Represents a set of tokens issued by Auth0.\nContains the access token and related metadata.

\n
\n
\naccess_token: str\u00b6
\n
\n\n
\n
\naudience: str\u00b6
\n
\n\n
\n
\nexpires_at: int\u00b6
\n
\n\n
\n
\nscope: str | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass TransactionData(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Represents data for an in-progress authentication transaction.\nUsed during the authorization code flow to correlate requests.

\n
\n
\napp_state: Any | None = None\u00b6
\n
\n\n
\n
\naudience: str | None = None\u00b6
\n
\n\n
\n
\nauth_session: str | None = None\u00b6
\n
\n\n
\n
\ncode_verifier: str | None = None\u00b6
\n
\n\n
\n
\ndomain: str | None = None\u00b6
\n
\n\n
\n
\norganization: str | None = None\u00b6
\n
\n\n
\n
\nredirect_uri: str | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass UpdateAuthenticationMethodRequest(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n
\n
!!! abstract \u201cUsage Documentation\u201d

[Models](../concepts/models.md)

\n
\n
\n

A base class for creating Pydantic models.

\n
\n
\n__class_vars__\u00b6
\n

The names of the class variables defined on the model.

\n
\n\n
\n
\n__private_attributes__\u00b6
\n

Metadata about the private attributes of the model.

\n
\n\n
\n
\n__signature__\u00b6
\n

The synthesized __init__ [Signature][inspect.Signature] of the model.

\n
\n\n
\n
\n__pydantic_complete__\u00b6
\n

Whether model building is completed, or if there are still undefined fields.

\n
\n\n
\n
\n__pydantic_core_schema__\u00b6
\n

The core schema of the model.

\n
\n\n
\n
\n__pydantic_custom_init__\u00b6
\n

Whether the model has a custom __init__ function.

\n
\n\n
\n
\n__pydantic_decorators__\u00b6
\n

Metadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

\n
\n\n
\n
\n__pydantic_generic_metadata__\u00b6
\n

A 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.

\n
\n\n
\n
\n__pydantic_parent_namespace__\u00b6
\n

Parent namespace of the model, used for automatic rebuilding of models.

\n
\n\n
\n
\n__pydantic_post_init__\u00b6
\n

The name of the post-init method for the model, if defined.

\n
\n\n
\n
\n__pydantic_root_model__\u00b6
\n

Whether the model is a [RootModel][pydantic.root_model.RootModel].

\n
\n\n
\n
\n__pydantic_serializer__\u00b6
\n

The pydantic-core SchemaSerializer used to dump instances of the model.

\n
\n\n
\n
\n__pydantic_validator__\u00b6
\n

The pydantic-core SchemaValidator used to validate instances of the model.

\n
\n\n
\n
\n__pydantic_fields__\u00b6
\n

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.

\n
\n\n
\n
\n__pydantic_computed_fields__\u00b6
\n

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

\n
\n\n
\n
\n__pydantic_extra__\u00b6
\n

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.

\n
\n\n
\n
\n__pydantic_fields_set__\u00b6
\n

The names of fields explicitly set during instantiation.

\n
\n\n
\n
\n__pydantic_private__\u00b6
\n

Values of private attributes set on the model instance.

\n
\n\n
\n
\nname: str | None = None\u00b6
\n
\n\n
\n
\npreferred_authentication_method: str | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass UserClaims(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

User profile information as returned by Auth0.\nContains standard OIDC claims about the authenticated user.

\n
\n
\nemail: str | None = None\u00b6
\n
\n\n
\n
\nemail_verified: bool | None = None\u00b6
\n
\n\n
\n
\nfamily_name: str | None = None\u00b6
\n
\n\n
\n
\ngiven_name: str | None = None\u00b6
\n
\n\n
\n
\nname: str | None = None\u00b6
\n
\n\n
\n
\nnickname: str | None = None\u00b6
\n
\n\n
\n
\norg_id: str | None = None\u00b6
\n
\n\n
\n
\norg_name: str | None = None\u00b6
\n
\n\n
\n
\npicture: str | None = None\u00b6
\n
\n\n
\n
\nsession_expiry: int | None = None\u00b6
\n
\n\n
\n
\nsub: str\u00b6
\n
\n\n
\n\n
\n
\nclass VerifyAuthenticationMethodRequest(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n
\n
!!! abstract \u201cUsage Documentation\u201d

[Models](../concepts/models.md)

\n
\n
\n

A base class for creating Pydantic models.

\n
\n
\n__class_vars__\u00b6
\n

The names of the class variables defined on the model.

\n
\n\n
\n
\n__private_attributes__\u00b6
\n

Metadata about the private attributes of the model.

\n
\n\n
\n
\n__signature__\u00b6
\n

The synthesized __init__ [Signature][inspect.Signature] of the model.

\n
\n\n
\n
\n__pydantic_complete__\u00b6
\n

Whether model building is completed, or if there are still undefined fields.

\n
\n\n
\n
\n__pydantic_core_schema__\u00b6
\n

The core schema of the model.

\n
\n\n
\n
\n__pydantic_custom_init__\u00b6
\n

Whether the model has a custom __init__ function.

\n
\n\n
\n
\n__pydantic_decorators__\u00b6
\n

Metadata containing the decorators defined on the model.\nThis replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

\n
\n\n
\n
\n__pydantic_generic_metadata__\u00b6
\n

A 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.

\n
\n\n
\n
\n__pydantic_parent_namespace__\u00b6
\n

Parent namespace of the model, used for automatic rebuilding of models.

\n
\n\n
\n
\n__pydantic_post_init__\u00b6
\n

The name of the post-init method for the model, if defined.

\n
\n\n
\n
\n__pydantic_root_model__\u00b6
\n

Whether the model is a [RootModel][pydantic.root_model.RootModel].

\n
\n\n
\n
\n__pydantic_serializer__\u00b6
\n

The pydantic-core SchemaSerializer used to dump instances of the model.

\n
\n\n
\n
\n__pydantic_validator__\u00b6
\n

The pydantic-core SchemaValidator used to validate instances of the model.

\n
\n\n
\n
\n__pydantic_fields__\u00b6
\n

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.

\n
\n\n
\n
\n__pydantic_computed_fields__\u00b6
\n

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

\n
\n\n
\n
\n__pydantic_extra__\u00b6
\n

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra]\nis set to \u2018allow\u2019.

\n
\n\n
\n
\n__pydantic_fields_set__\u00b6
\n

The names of fields explicitly set during instantiation.

\n
\n\n
\n
\n__pydantic_private__\u00b6
\n

Values of private attributes set on the model instance.

\n
\n\n
\n
\nauth_session: str\u00b6
\n
\n\n
\n
\nauthn_response: PasskeyAuthResponse | None = None\u00b6
\n
\n\n
\n
\notp_code: str | None = None\u00b6
\n
\n\n
\n
\npassword: str | None = None\u00b6
\n
\n\n
\n
\nrecovery_code: str | None = None\u00b6
\n
\n\n
\n\n
\n
\nclass VerifyOobOptions(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Verify with OOB code + binding code.

\n
\n
\nbinding_code: str\u00b6
\n
\n\n
\n
\nmfa_token: str\u00b6
\n
\n\n
\n
\noob_code: str\u00b6
\n
\n\n
\n\n
\n
\nclass VerifyOtpOptions(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Verify with OTP code.

\n
\n
\nmfa_token: str\u00b6
\n
\n\n
\n
\notp: str\u00b6
\n
\n\n
\n\n
\n
\nclass VerifyPasswordlessOtpOptions(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Options for verifying a passwordless OTP and establishing a session.

\n

Exactly one of email / phone_number must be provided and must\nmatch connection (email -> email, sms -> phone_number).

\n
\n
\naudience: str | None = None\u00b6
\n
\n\n
\n
\nclient_ip: str | None = None\u00b6
\n
\n\n
\n
\nconnection: PasswordlessConnection\u00b6
\n
\n\n
\n
\nemail: str | None = None\u00b6
\n
\n\n
\n
\nmodel_config\u00b6
\n

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

\n
\n\n
\n
\nphone_number: str | None = None\u00b6
\n
\n\n
\n
\nscope: str | None = None\u00b6
\n
\n\n
\n
\nproperty username: str[source]\u00b6
\n

The Auth0 username value for the OTP grant (email or phone).

\n
\n\n
\n
\nverification_code: str\u00b6
\n
\n\n
\n\n
\n
\nclass VerifyRecoveryCodeOptions(/, **data: Any)[source]\u00b6
\n

Bases: pydantic.BaseModel

\n

Verify with recovery code.

\n
\n
\nmfa_token: str\u00b6
\n
\n\n
\n
\nrecovery_code: str\u00b6
\n
\n\n
\n\n
\n
\nChallengeType\u00b6
\n
\n\n
\n
\nEnrollAuthenticatorOptions\u00b6
\n
\n\n
\n
\nEnrollmentResponse\u00b6
\n
\n\n
\n
\nEnrollmentType\u00b6
\n
\n\n
\n
\nOobChannel\u00b6
\n
\n\n
\n
\nPASSWORDLESS_ALLOWED_AUTH_PARAMS\u00b6
\n
\n\n
\n
\nPASSWORDLESS_RESERVED_AUTH_PARAMS\u00b6
\n
\n\n
\n
\nPasskeyDeliveryMethod\u00b6
\n
\n\n
\n
\nPasswordlessConnection\u00b6
\n
\n\n
\n
\nPreferredAuthMethod\u00b6
\n
\n\n
\n
\nSESSION_EXPIRY_MAX_PLAUSIBLE = 10000000000\u00b6
\n
\n\n
\n
\nStartPasswordlessOptions\u00b6
\n
\n\n
\n
\nVerifyMfaOptions\u00b6
\n
\n\n
\n
\n", "metatags": "\n", "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["reference/auth_server/index", "auth_server", "N", "next"], ["reference/encryption/encrypt/index", "encryption.encrypt", "P", "previous"]], "sourcename": "reference/auth_types/index.rst.txt", "toc": "\n", "display_toc": true, "page_source_suffix": ".rst", "current_page_name": "reference/auth_types/index", "sidebars": ["about.html", "navigation.html", "relations.html", "searchbox.html", "donate.html"], "alabaster_version": "0.7.16", "alabaster_version_info": [0, 7, 16]} \ No newline at end of file diff --git a/sphinx/json/reference/encryption/encrypt/index.fjson b/sphinx/json/reference/encryption/encrypt/index.fjson new file mode 100644 index 0000000..0c54ad9 --- /dev/null +++ b/sphinx/json/reference/encryption/encrypt/index.fjson @@ -0,0 +1 @@ +{"parents": [{"link": "../../", "title": "API Reference"}, {"link": "../", "title": "encryption"}], "prev": {"link": "../", "title": "encryption"}, "next": {"link": "../../auth_types/", "title": "auth_types"}, "title": "encryption.encrypt", "meta": null, "body": "
\n

encryption.encrypt\u00b6

\n

Import

\n
from auth0_server_python.encryption.encrypt import (\n    decrypt,\n    derive_encryption_key,\n    encrypt,\n)\n
\n
\n
\n

Module Contents\u00b6

\n
\n
\ndecrypt(token: str, secret: str, salt: str) → dict[source]\u00b6
\n

Decrypts the JWE token back to the original payload.

\n
\n\n
\n
\nderive_encryption_key(secret: bytes, salt: bytes) → bytes[source]\u00b6
\n

Derives a key using HKDF with SHA-256.

\n
\n\n
\n
\nencrypt(payload: dict, secret: str, salt: str) → str[source]\u00b6
\n

Encrypts the given payload into a JWE using the direct algorithm and A256CBC-HS512 encryption.

\n
\n\n
\n
\nALG = 'dir'\u00b6
\n
\n\n
\n
\nBYTE_LENGTH = 64\u00b6
\n
\n\n
\n
\nDIGEST\u00b6
\n
\n\n
\n
\nENC = 'A256CBC-HS512'\u00b6
\n
\n\n
\n
\nENCRYPTION_INFO = b'Auth0 Generated Encryption'\u00b6
\n
\n\n
\n
\n", "metatags": "\n", "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["reference/auth_types/index", "auth_types", "N", "next"], ["reference/encryption/index", "encryption", "P", "previous"]], "sourcename": "reference/encryption/encrypt/index.rst.txt", "toc": "\n", "display_toc": true, "page_source_suffix": ".rst", "current_page_name": "reference/encryption/encrypt/index", "sidebars": ["about.html", "navigation.html", "relations.html", "searchbox.html", "donate.html"], "alabaster_version": "0.7.16", "alabaster_version_info": [0, 7, 16]} \ No newline at end of file diff --git a/sphinx/json/reference/encryption/index.fjson b/sphinx/json/reference/encryption/index.fjson new file mode 100644 index 0000000..532b6d3 --- /dev/null +++ b/sphinx/json/reference/encryption/index.fjson @@ -0,0 +1 @@ +{"parents": [{"link": "../", "title": "API Reference"}], "prev": {"link": "../telemetry/", "title": "telemetry"}, "next": {"link": "encrypt/", "title": "encryption.encrypt"}, "title": "encryption", "meta": null, "body": "
\n

encryption\u00b6

\n
\n

Submodules\u00b6

\n\n
\n
\n", "metatags": "\n", "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["reference/encryption/encrypt/index", "encryption.encrypt", "N", "next"], ["reference/telemetry/index", "telemetry", "P", "previous"]], "sourcename": "reference/encryption/index.rst.txt", "toc": "\n", "display_toc": true, "page_source_suffix": ".rst", "current_page_name": "reference/encryption/index", "sidebars": ["about.html", "navigation.html", "relations.html", "searchbox.html", "donate.html"], "alabaster_version": "0.7.16", "alabaster_version_info": [0, 7, 16]} \ No newline at end of file diff --git a/sphinx/json/reference/error/index.fjson b/sphinx/json/reference/error/index.fjson new file mode 100644 index 0000000..c425292 --- /dev/null +++ b/sphinx/json/reference/error/index.fjson @@ -0,0 +1 @@ +{"parents": [{"link": "../", "title": "API Reference"}], "prev": {"link": "../utils/helpers/", "title": "utils.helpers"}, "next": {"link": "../store/", "title": "store"}, "title": "error", "meta": null, "body": "
\n

error\u00b6

\n

Error classes for the SDK.\nThese exceptions provide specific error types for different failure scenarios.

\n

Import

\n
from 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)\n
\n
\n
\n

Package Contents\u00b6

\n
\n
\nexception AccessTokenError(code: str, message: str, cause=None)[source]\u00b6
\n

Bases: Auth0Error

\n

Error raised when there\u2019s an issue with access tokens.

\n
\n
\ncause = None\u00b6
\n
\n\n
\n
\ncode\u00b6
\n
\n\n
\n
\nname = 'AccessTokenError'\u00b6
\n
\n\n
\n\n
\n
\nexception AccessTokenForConnectionError(code: str, message: str)[source]\u00b6
\n

Bases: Auth0Error

\n

Error when retrieving access tokens for a specific connection fails.

\n
\n
\ncode\u00b6
\n
\n\n
\n
\nname = 'AccessTokenForConnectionError'\u00b6
\n
\n\n
\n\n
\n
\nexception AnonymousSessionCreateError(message: str, code: str = 'anonymous_create_error', cause: dict | None = None)[source]\u00b6
\n

Bases: AnonymousSessionError

\n

Error thrown when creating or re-minting an anonymous session fails.

\n
\n\n
\n
\nexception AnonymousSessionError(code: str, message: str, cause: dict[str, Any] | None = None)[source]\u00b6
\n

Bases: Auth0Error

\n

Base class for anonymous session errors.

\n
\n
\ncause = None\u00b6
\n
\n\n
\n
\ncode\u00b6
\n
\n\n
\n\n
\n
\nexception AnonymousSessionTokenError(message: str, code: str = 'anonymous_token_error', cause: dict | None = None)[source]\u00b6
\n

Bases: AnonymousSessionError

\n

Error thrown when get_token() fails for reasons other than session expiry.

\n
\n\n
\n
\nexception ApiError(code: str, message: str, cause=None)[source]\u00b6
\n

Bases: Auth0Error

\n

Error raised when an API request to Auth0 fails.\nContains details about the original error from Auth0.

\n
\n
\ncause = None\u00b6
\n
\n\n
\n
\ncode\u00b6
\n
\n\n
\n\n
\n
\nexception Auth0Error(message=None)[source]\u00b6
\n

Bases: Exception

\n

Base class for all Auth0 SDK errors.

\n
\n
\nmessage = None\u00b6
\n
\n\n
\n\n
\n
\nexception BackchannelLogoutError(message: str)[source]\u00b6
\n

Bases: Auth0Error

\n

Error raised during backchannel logout processing.\nThis can happen when validating or processing logout tokens.

\n
\n
\ncode = 'backchannel_logout_error'\u00b6
\n
\n\n
\n
\nname = 'BackchannelLogoutError'\u00b6
\n
\n\n
\n\n
\n
\nexception ConfigurationError(message: str)[source]\u00b6
\n

Bases: Auth0Error

\n

Error raised when SDK configuration is invalid.\nThis includes invalid combinations of parameters or incorrect configuration values.

\n
\n
\ncode = 'configuration_error'\u00b6
\n
\n\n
\n
\nname = 'ConfigurationError'\u00b6
\n
\n\n
\n\n
\n
\nexception CustomTokenExchangeError(code: str, message: str, cause=None)[source]\u00b6
\n

Bases: Auth0Error

\n

Error raised during custom token exchange operations.

\n
\n
\ncause = None\u00b6
\n
\n\n
\n
\ncode\u00b6
\n
\n\n
\n
\nname = 'CustomTokenExchangeError'\u00b6
\n
\n\n
\n\n
\n
\nexception DomainResolverError(message: str, original_error: Exception = None)[source]\u00b6
\n

Bases: Auth0Error

\n

Error raised when domain resolver function fails or returns invalid value.

\n

This error indicates an issue with the custom domain resolver function\nprovided for MCD (Multiple Custom Domains) support.

\n
\n
\ncode = 'domain_resolver_error'\u00b6
\n
\n\n
\n
\nname = 'DomainResolverError'\u00b6
\n
\n\n
\n
\noriginal_error = None\u00b6
\n
\n\n
\n\n
\n
\nexception EnterpriseConnectError(code: str, message: str, cause=None)[source]\u00b6
\n

Bases: Auth0Error

\n

Error raised when a session or token method is called on a client\nconfigured for Enterprise Connect, where the SDK owns no session.

\n

Parents Auth0Error rather than ApiError because the refusal makes no\nrequest to Auth0, so there is no upstream error body to carry.

\n
\n
\ncause = None\u00b6
\n
\n\n
\n
\ncode\u00b6
\n
\n\n
\n
\nname = 'EnterpriseConnectError'\u00b6
\n
\n\n
\n\n
\n
\nexception InvalidArgumentError(argument: str, message: str)[source]\u00b6
\n

Bases: Auth0Error

\n

Error raised when a given argument is an invalid value.

\n
\n
\nargument\u00b6
\n
\n\n
\n
\ncode = 'invalid_argument'\u00b6
\n
\n\n
\n
\nname = 'InvalidArgumentError'\u00b6
\n
\n\n
\n\n
\n
\nexception IssuerValidationError(message: str)[source]\u00b6
\n

Bases: Auth0Error

\n

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.

\n
\n
\ncode = 'issuer_validation_error'\u00b6
\n
\n\n
\n
\nname = 'IssuerValidationError'\u00b6
\n
\n\n
\n\n
\n
\nexception MfaApiError(code: str, message: str, cause: dict[str, Any] | None = None)[source]\u00b6
\n

Bases: Auth0Error

\n

Base class for MFA API errors.

\n
\n
\ncause = None\u00b6
\n
\n\n
\n
\ncode\u00b6
\n
\n\n
\n\n
\n
\nexception MfaChallengeError(message: str, cause: dict | None = None)[source]\u00b6
\n

Bases: MfaApiError

\n

Error thrown when initiating an MFA challenge fails.

\n
\n\n
\n
\nexception MfaEnrollmentError(message: str, cause: dict | None = None)[source]\u00b6
\n

Bases: MfaApiError

\n

Error thrown when enrolling an authenticator fails.

\n
\n\n
\n
\nexception MfaListAuthenticatorsError(message: str, cause: dict | None = None)[source]\u00b6
\n

Bases: MfaApiError

\n

Error thrown when listing authenticators fails.

\n
\n\n
\n
\nexception MfaRequiredError(message: str, mfa_token: str, mfa_requirements=None, cause: Exception | None = None)[source]\u00b6
\n

Bases: AccessTokenError

\n

Error thrown when MFA step-up is required during token refresh.

\n

Contains 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.

\n
\n
\nmfa_requirements = None\u00b6
\n
\n\n
\n
\nmfa_token\u00b6
\n
\n\n
\n\n
\n
\nexception MfaTokenExpiredError[source]\u00b6
\n

Bases: Auth0Error

\n

Error thrown when the encrypted MFA token has expired.

\n
\n
\ncode = 'mfa_token_expired'\u00b6
\n
\n\n
\n\n
\n
\nexception MfaTokenInvalidError[source]\u00b6
\n

Bases: Auth0Error

\n

Error thrown when the encrypted MFA token is invalid or tampered.

\n
\n
\ncode = 'mfa_token_invalid'\u00b6
\n
\n\n
\n\n
\n
\nexception MfaVerifyError(message: str, cause: dict | None = None)[source]\u00b6
\n

Bases: MfaApiError

\n

Error thrown when MFA verification fails.

\n
\n\n
\n
\nexception MissingRequiredArgumentError(argument: str)[source]\u00b6
\n

Bases: Auth0Error

\n

Error raised when a required argument is missing.\nIncludes the name of the missing argument in the error message.

\n
\n
\nargument\u00b6
\n
\n\n
\n
\ncode = 'missing_required_argument_error'\u00b6
\n
\n\n
\n
\nname = 'MissingRequiredArgumentError'\u00b6
\n
\n\n
\n\n
\n
\nexception MissingTransactionError(message=None)[source]\u00b6
\n

Bases: Auth0Error

\n

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.

\n
\n
\ncode = 'missing_transaction_error'\u00b6
\n
\n\n
\n
\nname = 'MissingTransactionError'\u00b6
\n
\n\n
\n\n
\n
\nexception MyAccountApiError(title: str | None, type: str | None, detail: str | None, status: int | None, validation_errors: list[dict[str, str]] | None = None)[source]\u00b6
\n

Bases: Auth0Error

\n

Error raised when an API request to My Account API fails.\nContains details about the original error from Auth0.

\n
\n
\ndetail\u00b6
\n
\n\n
\n
\nstatus\u00b6
\n
\n\n
\n
\ntitle\u00b6
\n
\n\n
\n
\ntype\u00b6
\n
\n\n
\n
\nvalidation_errors = None\u00b6
\n
\n\n
\n\n
\n
\nexception OrganizationTokenValidationError(message: str)[source]\u00b6
\n

Bases: Auth0Error

\n

Raised when org_id or org_name claim in the ID token fails validation\nagainst the organization value that was requested at login.

\n
\n
\ncode = 'organization_token_validation_error'\u00b6
\n
\n\n
\n
\nname = 'OrganizationTokenValidationError'\u00b6
\n
\n\n
\n\n
\n
\nexception PasskeyError(code: str, message: str, cause=None, auth_session: str | None = None, verification_required: list[str] | None = None, retry_after: int | None = None, status_code: int | None = None)[source]\u00b6
\n

Bases: Auth0Error

\n

Error raised during passkey authentication operations.

\n
\n
Parameters:
\n
    \n
  • code \u2013 Error code, see PasskeyErrorCode.

  • \n
  • message \u2013 Human-readable description.

  • \n
  • cause \u2013 Underlying exception, if any.

  • \n
  • auth_session \u2013 Session to resubmit against, set when Auth0 keeps it alive after a wrong code.

  • \n
  • verification_required \u2013 Identifiers whose codes are still unverified.

  • \n
  • retry_after \u2013 Seconds from the Retry-After header, None when absent or not whole seconds.

  • \n
  • status_code \u2013 HTTP status of an Auth0 error response, None otherwise.

  • \n
\n
\n
\n
\n
\nauth_session = None\u00b6
\n
\n\n
\n
\ncause = None\u00b6
\n
\n\n
\n
\ncode\u00b6
\n
\n\n
\n
\nproperty is_verification_retryable: bool[source]\u00b6
\n

True when a code was wrong but the session is alive, so the caller can resubmit.

\n
\n\n
\n
\nname = 'PasskeyError'\u00b6
\n
\n\n
\n
\nretry_after = None\u00b6
\n
\n\n
\n
\nstatus_code = None\u00b6
\n
\n\n
\n
\nverification_required = None\u00b6
\n
\n\n
\n\n
\n
\nexception PasswordlessStartError(code: str, message: str, cause=None, retry_after: int | None = None)[source]\u00b6
\n

Bases: ApiError

\n

Error raised when POST /passwordless/start fails.

\n
\n
\nname = 'PasswordlessStartError'\u00b6
\n
\n\n
\n
\nretry_after = None\u00b6
\n
\n\n
\n\n
\n
\nexception PasswordlessVerifyError(code: str, message: str, cause=None, retry_after: int | None = None)[source]\u00b6
\n

Bases: ApiError

\n

Error raised when the passwordless OTP token exchange fails.

\n
\n
\nname = 'PasswordlessVerifyError'\u00b6
\n
\n\n
\n
\nretry_after = None\u00b6
\n
\n\n
\n\n
\n
\nexception PollingApiError(code: str, message: str, interval: int | None, cause=None)[source]\u00b6
\n

Bases: ApiError

\n

Error raised when a polling API request to Auth0 fails.\nContains details about the original error from Auth0 and the requested polling interval.

\n
\n
\ninterval\u00b6
\n
\n\n
\n\n
\n
\nexception SessionExpiredError(message: str | None = None, cause=None)[source]\u00b6
\n

Bases: Auth0Error

\n

Error raised when a session is rejected at login because its\nsession_expiry ceiling is already in the past.

\n
\n
\ncause = None\u00b6
\n
\n\n
\n
\ncode = 'session_expired'\u00b6
\n
\n\n
\n
\nname = 'SessionExpiredError'\u00b6
\n
\n\n
\n\n
\n
\nexception StartLinkUserError(message: str)[source]\u00b6
\n

Bases: Auth0Error

\n

Error raised when user linking process fails to start.\nThis typically happens when trying to link accounts without\nhaving an authenticated user first.

\n
\n
\ncode = 'start_link_user_error'\u00b6
\n
\n\n
\n
\nname = 'StartLinkUserError'\u00b6
\n
\n\n
\n\n
\n
\nclass AccessTokenErrorCode[source]\u00b6
\n

Error codes for access token operations.

\n
\n
\nAUTH_REQ_ID_ERROR = 'auth_req_id_error'\u00b6
\n
\n\n
\n
\nDOMAIN_MISMATCH = 'domain_mismatch'\u00b6
\n
\n\n
\n
\nFAILED_TO_REFRESH_TOKEN = 'failed_to_refresh_token'\u00b6
\n
\n\n
\n
\nFAILED_TO_REQUEST_TOKEN = 'failed_to_request_token'\u00b6
\n
\n\n
\n
\nINCORRECT_AUDIENCE = 'incorrect_audience'\u00b6
\n
\n\n
\n
\nMISSING_REFRESH_TOKEN = 'missing_refresh_token'\u00b6
\n
\n\n
\n
\nMISSING_SESSION = 'missing_session'\u00b6
\n
\n\n
\n
\nMISSING_SESSION_DOMAIN = 'missing_session_domain'\u00b6
\n
\n\n
\n
\nREFRESH_TOKEN_ERROR = 'refresh_token_error'\u00b6
\n
\n\n
\n
\nSESSION_EXPIRED = 'session_expired'\u00b6
\n
\n\n
\n\n
\n
\nclass AccessTokenForConnectionErrorCode[source]\u00b6
\n

Error codes for connection-specific token operations.

\n
\n
\nAPI_ERROR = 'api_error'\u00b6
\n
\n\n
\n
\nDOMAIN_MISMATCH = 'domain_mismatch'\u00b6
\n
\n\n
\n
\nFAILED_TO_RETRIEVE = 'failed_to_retrieve'\u00b6
\n
\n\n
\n
\nFETCH_ERROR = 'retrieval_error'\u00b6
\n
\n\n
\n
\nMISSING_REFRESH_TOKEN = 'missing_refresh_token'\u00b6
\n
\n\n
\n
\nMISSING_SESSION_DOMAIN = 'missing_session_domain'\u00b6
\n
\n\n
\n\n
\n
\nclass CustomTokenExchangeErrorCode[source]\u00b6
\n

Error codes for custom token exchange operations.

\n
\n
\nACTOR_UNAVAILABLE = 'actor_unavailable'\u00b6
\n
\n\n
\n
\nINVALID_RESPONSE = 'invalid_response'\u00b6
\n
\n\n
\n
\nINVALID_TOKEN_FORMAT = 'invalid_token_format'\u00b6
\n
\n\n
\n
\nMISSING_ACTOR_TOKEN = 'missing_actor_token'\u00b6
\n
\n\n
\n
\nMISSING_ACTOR_TOKEN_TYPE = 'missing_actor_token_type'\u00b6
\n
\n\n
\n
\nSESSION_TRANSFER_DISABLED = 'session_transfer_disabled'\u00b6
\n
\n\n
\n
\nSETACTOR_REQUIRED = 'setactor_required'\u00b6
\n
\n\n
\n
\nTOKEN_EXCHANGE_FAILED = 'token_exchange_failed'\u00b6
\n
\n\n
\n\n
\n
\nclass EnterpriseConnectErrorCode[source]\u00b6
\n

Error code for the Enterprise Connect misuse guard.

\n
\n
\nNOT_SUPPORTED = 'enterprise_connect_not_supported'\u00b6
\n
\n\n
\n\n
\n
\nclass PasskeyErrorCode[source]\u00b6
\n

Error codes for passkey operations.

\n
\n
\nCHALLENGE_FAILED = 'passkey_challenge_error'\u00b6
\n
\n\n
\n
\nINVALID_GRANT = 'invalid_grant'\u00b6
\n
\n\n
\n
\nINVALID_REQUEST = 'invalid_request'\u00b6
\n
\n\n
\n
\nINVALID_RESPONSE = 'invalid_response'\u00b6
\n
\n\n
\n
\nTOKEN_EXCHANGE_FAILED = 'passkey_token_error'\u00b6
\n
\n\n
\n\n
\n
\nclass PasswordlessErrorCode[source]\u00b6
\n

Error codes for passwordless operations.

\n
\n
\nBAD_CONNECTION = 'bad.connection'\u00b6
\n
\n\n
\n
\nBAD_EMAIL = 'bad.email'\u00b6
\n
\n\n
\n
\nDISCOVERY_ERROR = 'discovery_error'\u00b6
\n
\n\n
\n
\nINVALID_AUDIENCE = 'invalid_audience'\u00b6
\n
\n\n
\n
\nINVALID_GRANT = 'invalid_grant'\u00b6
\n
\n\n
\n
\nINVALID_ISSUER = 'invalid_issuer'\u00b6
\n
\n\n
\n
\nSMS_PROVIDER_ERROR = 'sms_provider_error'\u00b6
\n
\n\n
\n
\nSTART_FAILED = 'passwordless_start_failed'\u00b6
\n
\n\n
\n
\nTOKEN_EXPIRED = 'token_expired'\u00b6
\n
\n\n
\n
\nTOO_MANY_REQUESTS = 'too_many_requests'\u00b6
\n
\n\n
\n
\nVERIFY_FAILED = 'passwordless_verify_failed'\u00b6
\n
\n\n
\n\n
\n
\n", "metatags": "\n", "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["reference/store/index", "store", "N", "next"], ["reference/utils/helpers/index", "utils.helpers", "P", "previous"]], "sourcename": "reference/error/index.rst.txt", "toc": "\n", "display_toc": true, "page_source_suffix": ".rst", "current_page_name": "reference/error/index", "sidebars": ["about.html", "navigation.html", "relations.html", "searchbox.html", "donate.html"], "alabaster_version": "0.7.16", "alabaster_version_info": [0, 7, 16]} \ No newline at end of file diff --git a/sphinx/json/reference/index.fjson b/sphinx/json/reference/index.fjson new file mode 100644 index 0000000..22d4874 --- /dev/null +++ b/sphinx/json/reference/index.fjson @@ -0,0 +1 @@ +{"parents": [], "prev": {"link": "../", "title": "auth0-server-python"}, "next": {"link": "utils/", "title": "utils"}, "title": "API Reference", "meta": null, "body": "
\n

API Reference\u00b6

\n

This page contains auto-generated API reference documentation [1].

\n
\n\n
\n\n
\n", "metatags": "\n", "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["reference/utils/index", "utils", "N", "next"], ["index", "auth0-server-python", "P", "previous"]], "sourcename": "reference/index.rst.txt", "toc": "\n", "display_toc": false, "page_source_suffix": ".rst", "current_page_name": "reference/index", "sidebars": ["about.html", "navigation.html", "relations.html", "searchbox.html", "donate.html"], "alabaster_version": "0.7.16", "alabaster_version_info": [0, 7, 16]} \ No newline at end of file diff --git a/sphinx/json/reference/store/abstract/index.fjson b/sphinx/json/reference/store/abstract/index.fjson new file mode 100644 index 0000000..8e338f6 --- /dev/null +++ b/sphinx/json/reference/store/abstract/index.fjson @@ -0,0 +1 @@ +{"parents": [{"link": "../../", "title": "API Reference"}, {"link": "../", "title": "store"}], "prev": {"link": "../", "title": "store"}, "next": {"link": "../../telemetry/", "title": "telemetry"}, "title": "store.abstract", "meta": {}, "body": "
\n

store.abstract\u00b6

\n

Import

\n
from auth0_server_python.store.abstract import (\n    AbstractDataStore,\n    StateStore,\n    TransactionStore,\n)\n
\n
\n
\n

Module Contents\u00b6

\n
\n
\nclass AbstractDataStore(options: dict[str, Any])[source]\u00b6
\n

Bases: Generic[T], abc.ABC

\n

Abstract base class for data stores.\nProvides common functionality for different store implementations.

\n
\n
\ndecrypt(identifier: str, encrypted_data: str) → T[source]\u00b6
\n

Decrypt data after retrieval.

\n
\n
Parameters:
\n
    \n
  • identifier \u2013 Unique key used as part of encryption salt

  • \n
  • encrypted_data \u2013 Encrypted data to decrypt

  • \n
\n
\n
Returns:
\n

Decrypted data

\n
\n
\n
\n\n
\n
\nabstract delete(identifier: str, options: dict[str, Any] | None = None) → None[source]\u00b6
\n
\n
Async:
\n

\n
\n

Delete data by identifier.

\n
\n
Parameters:
\n
    \n
  • identifier \u2013 Unique key for the stored data

  • \n
  • options \u2013 Additional operation-specific options

  • \n
\n
\n
\n
\n\n
\n
\nencrypt(identifier: str, state_data: dict[str, Any]) → T[source]\u00b6
\n

Encrypt data before storing.

\n
\n
Parameters:
\n
    \n
  • identifier \u2013 Unique key used as part of encryption salt

  • \n
  • state_data \u2013 Data to encrypt

  • \n
\n
\n
Returns:
\n

Encrypted string representation of the data

\n
\n
\n
\n\n
\n
\nabstract get(identifier: str, options: dict[str, Any] | None = None) → T | None[source]\u00b6
\n
\n
Async:
\n

\n
\n

Retrieve data by identifier.

\n
\n
Parameters:
\n
    \n
  • identifier \u2013 Unique key for the stored data

  • \n
  • options \u2013 Additional operation-specific options

  • \n
\n
\n
Returns:
\n

The stored data or None if not found

\n
\n
\n
\n\n
\n
\nabstract set(identifier: str, state: T, remove_if_expires: bool = False, options: dict[str, Any] | None = None) → None[source]\u00b6
\n
\n
Async:
\n

\n
\n

Store data with the given identifier.

\n
\n
Parameters:
\n
    \n
  • identifier \u2013 Unique key for the stored data

  • \n
  • state \u2013 Data to store

  • \n
  • remove_if_expires \u2013 Whether to auto-remove expired data

  • \n
  • options \u2013 Additional operation-specific options

  • \n
\n
\n
\n
\n\n
\n\n
\n
\nclass StateStore(options: dict[str, Any])[source]\u00b6
\n

Bases: AbstractDataStore[dict[str, Any]]

\n

Abstract store for persistent session data.\nExtends AbstractDataStore with logout token functionality.

\n
\n
\nabstract delete_by_logout_token(claims: dict[str, Any], options: dict[str, Any] | None = None) → None[source]\u00b6
\n
\n
Async:
\n

\n
\n

Delete sessions based on logout token claims.

\n

Per 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).

\n

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.

\n
\n
Parameters:
\n
    \n
  • 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
    \n

    session domain before deletion)

    \n
    \n

  • \n
  • options \u2013 Additional operation-specific options

  • \n
\n
\n
\n
\n

Note

\n

Default implementation raises NotImplementedError.\nConcrete implementations should override this method.

\n
\n
\n\n
\n\n
\n
\nclass TransactionStore(options: dict[str, Any])[source]\u00b6
\n

Bases: AbstractDataStore[dict[str, Any]]

\n

Abstract store for temporary transaction data during auth flows.

\n
\n\n
\n
\nT\u00b6
\n
\n\n
\n
\n", "metatags": "\n", "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["reference/telemetry/index", "telemetry", "N", "next"], ["reference/store/index", "store", "P", "previous"]], "sourcename": "reference/store/abstract/index.rst.txt", "toc": "\n", "display_toc": true, "page_source_suffix": ".rst", "current_page_name": "reference/store/abstract/index", "sidebars": ["about.html", "navigation.html", "relations.html", "searchbox.html", "donate.html"], "alabaster_version": "0.7.16", "alabaster_version_info": [0, 7, 16]} \ No newline at end of file diff --git a/sphinx/json/reference/store/index.fjson b/sphinx/json/reference/store/index.fjson new file mode 100644 index 0000000..6732b53 --- /dev/null +++ b/sphinx/json/reference/store/index.fjson @@ -0,0 +1 @@ +{"parents": [{"link": "../", "title": "API Reference"}], "prev": {"link": "../error/", "title": "error"}, "next": {"link": "abstract/", "title": "store.abstract"}, "title": "store", "meta": {}, "body": "
\n

store\u00b6

\n
\n

Submodules\u00b6

\n\n
\n
\n", "metatags": "\n", "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["reference/store/abstract/index", "store.abstract", "N", "next"], ["reference/error/index", "error", "P", "previous"]], "sourcename": "reference/store/index.rst.txt", "toc": "\n", "display_toc": true, "page_source_suffix": ".rst", "current_page_name": "reference/store/index", "sidebars": ["about.html", "navigation.html", "relations.html", "searchbox.html", "donate.html"], "alabaster_version": "0.7.16", "alabaster_version_info": [0, 7, 16]} \ No newline at end of file diff --git a/sphinx/json/reference/telemetry/index.fjson b/sphinx/json/reference/telemetry/index.fjson new file mode 100644 index 0000000..712dc23 --- /dev/null +++ b/sphinx/json/reference/telemetry/index.fjson @@ -0,0 +1 @@ +{"parents": [{"link": "../", "title": "API Reference"}], "prev": {"link": "../store/abstract/", "title": "store.abstract"}, "next": {"link": "../encryption/", "title": "encryption"}, "title": "telemetry", "meta": {}, "body": "
\n

telemetry\u00b6

\n

Telemetry support for auth0-server-python SDK.

\n

Builds and caches the Auth0-Client and User-Agent headers sent\non every HTTP request to Auth0 endpoints.

\n

Import

\n
from auth0_server_python.telemetry import Telemetry\n
\n
\n
\n

Module Contents\u00b6

\n
\n
\nclass Telemetry(name: str, version: str, env: dict[str, str] | None = None)[source]\u00b6
\n

Builds telemetry headers for Auth0 HTTP requests.

\n
\n
\nstatic default() → Telemetry[source]\u00b6
\n

Create a Telemetry instance with this SDK\u2019s package metadata.

\n
\n\n
\n
\nenv = None\u00b6
\n
\n\n
\n
\nheaders: dict[str, str]\u00b6
\n
\n\n
\n
\nname\u00b6
\n
\n\n
\n
\nversion\u00b6
\n
\n\n
\n\n
\n
\n", "metatags": "\n", "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["reference/encryption/index", "encryption", "N", "next"], ["reference/store/abstract/index", "store.abstract", "P", "previous"]], "sourcename": "reference/telemetry/index.rst.txt", "toc": "\n", "display_toc": true, "page_source_suffix": ".rst", "current_page_name": "reference/telemetry/index", "sidebars": ["about.html", "navigation.html", "relations.html", "searchbox.html", "donate.html"], "alabaster_version": "0.7.16", "alabaster_version_info": [0, 7, 16]} \ No newline at end of file diff --git a/sphinx/json/reference/utils/helpers/index.fjson b/sphinx/json/reference/utils/helpers/index.fjson new file mode 100644 index 0000000..3542578 --- /dev/null +++ b/sphinx/json/reference/utils/helpers/index.fjson @@ -0,0 +1 @@ +{"parents": [{"link": "../../", "title": "API Reference"}, {"link": "../", "title": "utils"}], "prev": {"link": "../", "title": "utils"}, "next": {"link": "../../error/", "title": "error"}, "title": "utils.helpers", "meta": {}, "body": "
\n

utils.helpers\u00b6

\n

Import

\n
from 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)\n
\n
\n
\n

Module Contents\u00b6

\n
\n
\nclass PKCE[source]\u00b6
\n
\n
\nclassmethod generate_code_challenge(code_verifier: str) → str[source]\u00b6
\n

Generate a PKCE code challenge from a code verifier.

\n
\n\n
\n
\nclassmethod generate_code_verifier(length: int = 64) → str[source]\u00b6
\n

Generate a PKCE code verifier.

\n
\n\n
\n
\nclassmethod generate_random_string(length: int = 64) → str[source]\u00b6
\n

Generate a cryptographically secure random string.

\n
\n\n
\n\n
\n
\nclass State[source]\u00b6
\n
\n
\nclassmethod is_session_ceiling_in_past(session_expires_at: int | None, issued_at: int | None = None) → bool[source]\u00b6
\n

True when the session ceiling is already in the past at login.

\n

Compares 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.

\n
\n\n
\n
\nclassmethod is_session_ceiling_reached(session_expires_at: int | None) → bool[source]\u00b6
\n

True 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.

\n
\n\n
\n
\nclassmethod update_state_data(audience: str, state_data: dict[str, Any] | None, token_endpoint_response: dict[str, Any]) → dict[str, Any][source]\u00b6
\n

Utility function to update the state with a new response from the token endpoint

\n
\n
Parameters:
\n
    \n
  • audience \u2013 The audience of the token endpoint response

  • \n
  • state_data \u2013 The existing state data to update, or None if no state data available

  • \n
  • token_endpoint_response \u2013 The response from the token endpoint

  • \n
\n
\n
Returns:
\n

Updated state data

\n
\n
\n
\n\n
\n
\nclassmethod update_state_data_for_connection_token_set(options: dict[str, Any], state_data: dict[str, Any], token_endpoint_response: dict[str, Any]) → dict[str, Any][source]\u00b6
\n

Update state data with connection token set information

\n
\n
Parameters:
\n
    \n
  • options \u2013 Options containing connection details

  • \n
  • state_data \u2013 Existing state data

  • \n
  • token_endpoint_response \u2013 Response from token endpoint

  • \n
\n
\n
Returns:
\n

Updated state data

\n
\n
\n
\n\n
\n
\nSESSION_EXPIRY_LEEWAY_SECONDS = 30\u00b6
\n
\n\n
\n\n
\n
\nclass URL[source]\u00b6
\n
\n
\nstatic build_url(base_url: str, params: dict[str, Any]) → str[source]\u00b6
\n

Build a complete URL by appending query parameters to a base URL.

\n
\n
Parameters:
\n
    \n
  • base_url \u2013 The base URL without query parameters.

  • \n
  • params \u2013 A dictionary of query parameters to add.

  • \n
\n
\n
Returns:
\n

The complete URL with the query parameters appended.

\n
\n
\n
\n\n
\n
\nstatic create_logout_url(domain: str, client_id: str, return_to: str | None = None, federated: bool = False) → str[source]\u00b6
\n

Create an Auth0 logout URL.

\n
\n
Parameters:
\n
    \n
  • domain \u2013 Auth0 domain.

  • \n
  • client_id \u2013 Auth0 client ID.

  • \n
  • return_to \u2013 Optional URL to redirect to after logout.

  • \n
  • federated \u2013 When True, add federated so Auth0 also ends the upstream\nIdP session. Its presence is the signal; the value is ignored.

  • \n
\n
\n
Returns:
\n

The complete logout URL.

\n
\n
\n
\n\n
\n
\nstatic parse_url_params(url: str) → dict[str, str][source]\u00b6
\n

Parse the query parameters from a URL.

\n
\n
Parameters:
\n

url \u2013 The URL to parse.

\n
\n
Returns:
\n

A dictionary of query parameters, converting list values to a single string.

\n
\n
\n
\n\n
\n
\nstatic validate_https_redirect_target(url: str, name: str) → None[source]\u00b6
\n

Require url to be an absolute https URL (http allowed only for localhost/loopback).

\n

Raises MissingRequiredArgumentError if blank, InvalidArgumentError otherwise.

\n
\n\n
\n\n
\n
\nbuild_domain_resolver_context(store_options: dict[str, Any] | None) → auth0_server_python.auth_types.DomainResolverContext[source]\u00b6
\n

Build DomainResolverContext from store_options.

\n

Extracts request information in a framework-agnostic way using duck typing.

\n
\n
Parameters:
\n

store_options \u2013 Dictionary containing \u2018request\u2019 and \u2018response\u2019 objects

\n
\n
Returns:
\n

DomainResolverContext with extracted request data

\n
\n
\n
\n\n
\n
\nvalidate_org_claims(claims: dict, expected_org: str) → None[source]\u00b6
\n

Validate org_id or org_name in token claims against the requested organization.

\n
\n
Uses expected_org prefix to determine which claim to check:
    \n
  • \u2018org_\u2019 prefix \u2192 validate claims[\u2018org_id\u2019] exact match (case-sensitive)

  • \n
  • no prefix \u2192 validate claims[\u2018org_name\u2019] case-insensitive match (NFC-normalized)

  • \n
\n
\n
\n
\n
Raises:
\n

OrganizationTokenValidationError \u2013 if the claim is missing, not a string, or mismatched.

\n
\n
\n
\n\n
\n
\nvalidate_resolved_domain_value(domain_value: Any) → str[source]\u00b6
\n

Validate the value returned by domain resolver.

\n
\n
Parameters:
\n

domain_value \u2013 The value returned by the domain resolver

\n
\n
Returns:
\n

The validated domain string

\n
\n
Raises:
\n

DomainResolverError \u2013 If the returned value is invalid

\n
\n
\n
\n\n
\n
\n", "metatags": "\n", "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["reference/error/index", "error", "N", "next"], ["reference/utils/index", "utils", "P", "previous"]], "sourcename": "reference/utils/helpers/index.rst.txt", "toc": "\n", "display_toc": true, "page_source_suffix": ".rst", "current_page_name": "reference/utils/helpers/index", "sidebars": ["about.html", "navigation.html", "relations.html", "searchbox.html", "donate.html"], "alabaster_version": "0.7.16", "alabaster_version_info": [0, 7, 16]} \ No newline at end of file diff --git a/sphinx/json/reference/utils/index.fjson b/sphinx/json/reference/utils/index.fjson new file mode 100644 index 0000000..a5eec3a --- /dev/null +++ b/sphinx/json/reference/utils/index.fjson @@ -0,0 +1 @@ +{"parents": [{"link": "../", "title": "API Reference"}], "prev": {"link": "../", "title": "API Reference"}, "next": {"link": "helpers/", "title": "utils.helpers"}, "title": "utils", "meta": {}, "body": "
\n

utils\u00b6

\n

Utility functions for auth0-server-python SDK.\nThese helpers provide common functionality used across the SDK.

\n
\n

Submodules\u00b6

\n\n
\n
\n", "metatags": "\n", "rellinks": [["genindex", "General Index", "I", "index"], ["py-modindex", "Python Module Index", "", "modules"], ["reference/utils/helpers/index", "utils.helpers", "N", "next"], ["reference/index", "API Reference", "P", "previous"]], "sourcename": "reference/utils/index.rst.txt", "toc": "\n", "display_toc": true, "page_source_suffix": ".rst", "current_page_name": "reference/utils/index", "sidebars": ["about.html", "navigation.html", "relations.html", "searchbox.html", "donate.html"], "alabaster_version": "0.7.16", "alabaster_version_info": [0, 7, 16]} \ No newline at end of file diff --git a/sphinx/requirements.txt b/sphinx/requirements.txt new file mode 100644 index 0000000..be78006 --- /dev/null +++ b/sphinx/requirements.txt @@ -0,0 +1,2 @@ +sphinx>=7.4,<9 +sphinx-autoapi>=3.4,<4