diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock
index 432bc986..bbf03fac 100644
--- a/.speakeasy/gen.lock
+++ b/.speakeasy/gen.lock
@@ -1,19 +1,19 @@
lockVersion: 2.0.0
id: bfe29c99-6e67-43fe-b928-64d6a5ed6aa8
management:
- docChecksum: 19c77225c9b398357c88fdd1aa813ac8
+ docChecksum: bd158406ac326f036448c41f9115c10d
docVersion: "2026-05-12"
- speakeasyVersion: 1.778.0
- generationVersion: 2.904.2
- releaseVersion: 6.0.1
- configChecksum: fe6acfe1dc4dfb910fe15cfba7ac3323
+ speakeasyVersion: 1.784.0
+ generationVersion: 2.911.0
+ releaseVersion: 6.0.2
+ configChecksum: f4e2d630a902d5cccc5bd347649bea6b
repoURL: https://github.com/clerk/clerk-sdk-python.git
installationURL: https://github.com/clerk/clerk-sdk-python.git
published: true
persistentEdits:
- generation_id: cb1a1ed6-b00f-48d0-90f4-aea52ac0ec8c
- pristine_commit_hash: dc94cac3747b68145eb85f47788a4bcf3a68121b
- pristine_tree_hash: 9e23f0cfde7ee622871907fa6cdc356c9bf0e996
+ generation_id: 62e807ba-8286-486a-8159-7ada592bb9c3
+ pristine_commit_hash: 241a3f34bd6cf91a3531b772ee2d999a8d80e075
+ pristine_tree_hash: 5fef5a9fb407fe0167307e031e149956dd6e0856
features:
python:
additionalDependencies: 1.1.0
@@ -39,8 +39,8 @@ features:
nullables: 1.0.2
openEnums: 1.0.4
responseFormat: 1.1.0
- retries: 3.0.5
- sdkHooks: 1.2.1
+ retries: 3.0.7
+ sdkHooks: 1.2.2
unions: 3.1.6
uploadStreams: 1.0.3
trackedFiles:
@@ -274,40 +274,12 @@ trackedFiles:
pristine_git_object: 5c4b4bd245e9da656bf0f566da530b0f0c047392
docs/models/clerkerror.md:
id: 37808372fb58
- last_write_checksum: sha1:56cf2c72da727631afaff30661076b7403960b1f
- pristine_git_object: 9b4caf7f98be54782293970fadd7a4ea68c43cdf
- docs/models/clerkerrorerrorenterpriseaccountmeta.md:
- id: 6a193374f266
- last_write_checksum: sha1:01a33a92d30ae6158809c167e7c891c7e7ca3dab
- pristine_git_object: e12e48d273f0baf6dc79afc060eb2bb4ce5fa1ce
- docs/models/clerkerrorerrorenterpriseaccountverificationmeta.md:
- id: 61623cb64a01
- last_write_checksum: sha1:6f22bf2352ea0258239e7502f148544d57ed5b01
- pristine_git_object: af28d7d0c644923d22fadc9f417f0ed26a7f3a2f
- docs/models/clerkerrorerrorexternalaccountwithverificationmeta.md:
- id: e48eed675751
- last_write_checksum: sha1:95fe24d9995baa7cdc60e05cef4925dd46fdd7f4
- pristine_git_object: 498e597554ca06793299f5f9cff1ef78839d25a4
- docs/models/clerkerrorerrorexternalaccountwithverificationverificationmeta.md:
- id: "834826456887"
- last_write_checksum: sha1:9f043b122b64b9f54018060a7b2a2db492f4adcd
- pristine_git_object: ef070e0d77b9bc6f659f4b18a2662d4807a88108
- docs/models/clerkerrorerrormeta.md:
- id: d1002cdb9ec6
- last_write_checksum: sha1:99adcd69e14f9eb25a67d28a59cafe2b1b0c2e8f
- pristine_git_object: e705a2f726658e2c29a6a6b3bb42788d3dee4318
- docs/models/clerkerrorerrorsamlaccountmeta.md:
- id: c38a6ee836c4
- last_write_checksum: sha1:4821945ed376d5ca6368f283f97f49bb98f292c1
- pristine_git_object: 2fed9d861c374e00f7d59f3707c686c016cbdee5
+ last_write_checksum: sha1:8e616f8685b8498d8b341035091125cdb2a69a8c
+ pristine_git_object: 1988e02b6e5e6fa8a04dd14f6a5694db71eab8d3
docs/models/clerkerrors.md:
id: 16fd2c5299ee
- last_write_checksum: sha1:eb4659a1e54091c42d9572a271cd535493ed68e8
- pristine_git_object: cbcac9a964648f21598d4acd23040ddcd4e0ca36
- docs/models/clerkerrorsmeta.md:
- id: 8f93565bee8f
- last_write_checksum: sha1:de0c09ae9132e602e7ec24b30d9a94f5128511a0
- pristine_git_object: c82450fb5b28ea15c6ace00ab34b418cda115d42
+ last_write_checksum: sha1:2fb2591b266fb598bcfaf22f7b15fc9d1aab12a1
+ pristine_git_object: 0a6e62e4eb7ca685e1ee4499c9c8905a42f02f34
docs/models/client.md:
id: 67a7a58f44b4
last_write_checksum: sha1:e869f51c209bce6c247e7365e2a942d58d3abe4b
@@ -718,8 +690,8 @@ trackedFiles:
pristine_git_object: 56b7fd148fab8f677d5e6c1e0984cb1e76d1a435
docs/models/createorganizationdomainrequestbody.md:
id: 2008a398a249
- last_write_checksum: sha1:2bc384d8a3622559aba37be0fdd076c951aba1d9
- pristine_git_object: 66443afaf00a0a700a82e3fba875a386f5d5ef99
+ last_write_checksum: sha1:1f501feb3fad305b3de2594323ff30493fea8392
+ pristine_git_object: 4f21b32decb31f381bd6ac10998d13d1ea60e1c4
docs/models/createorganizationinvitationbulkrequest.md:
id: 8e5eeadfd24d
last_write_checksum: sha1:4d51d6bded933764dd07267bb837ff87b2297572
@@ -1042,8 +1014,8 @@ trackedFiles:
pristine_git_object: 8b480db4fa55419c77ae61fa905dc91152c0d18b
docs/models/enrollmentmode.md:
id: 4fc21918c24b
- last_write_checksum: sha1:f50ea90c3c8c03a882c18b82a8e10ac52c9e5a47
- pristine_git_object: 91902752727ab915de72cc96f76bb065bc82bf87
+ last_write_checksum: sha1:745e273965c395f6f21f595df8c84c11707987a0
+ pristine_git_object: 10af00855114a2be91046453700dc32b0a62afe6
docs/models/enterpriseaccount.md:
id: 1021de4770be
last_write_checksum: sha1:e0a66d11c9eb108ca572f57aaf458539c4d12139
@@ -1106,12 +1078,8 @@ trackedFiles:
pristine_git_object: 426585bfa40ded1167119644ab24890026c279f9
docs/models/errorclerkerror.md:
id: 69dfb23789e4
- last_write_checksum: sha1:361ad48720fd71cc6385557da5c5960b781cb9c8
- pristine_git_object: 6ee6750888a2c9d7c8a89833c25cc54234e2760a
- docs/models/errormeta.md:
- id: ee4ec4c0dbc4
- last_write_checksum: sha1:74bf9c9aeb68bd55bf2755bd8ca361ad4a3e3d87
- pristine_git_object: e498afa4b687e2d1c1abfa0d7b0fedd1d51002a0
+ last_write_checksum: sha1:a88dd873933693478d700af74558f5587a55e990
+ pristine_git_object: 4962f77b68c4682115e4745d9968b759c913e527
docs/models/errors.md:
id: 09a4da1e2f9e
last_write_checksum: sha1:206c8d0cdd830f25ad8198abc336e31a9a5ba2e4
@@ -1554,8 +1522,8 @@ trackedFiles:
pristine_git_object: 6f3654f43b6d980761ed3c4670f90a2cc0d691a9
docs/models/listallorganizationdomainsrequest.md:
id: 8423270223c8
- last_write_checksum: sha1:f34527f29c2fd63dd107ec1b6bc4eaa3c957302a
- pristine_git_object: 6191ba434098a2b152e400c13289344d689b6215
+ last_write_checksum: sha1:0f0926ca93203e3b139c4ad69a1fb5efbd42e5e8
+ pristine_git_object: f7abc46568da9a407c91a04bbf0cafbfd0cf2c9c
docs/models/listallowlistidentifiersrequest.md:
id: 66ad0f5fad87
last_write_checksum: sha1:c2873fc83fe41d99dc53084f66b3b05451b8c26a
@@ -1602,8 +1570,8 @@ trackedFiles:
pristine_git_object: 215fb5699807986fd7ea3e389826a5c648f7a44d
docs/models/listorganizationdomainsrequest.md:
id: 02c1f0ce56ab
- last_write_checksum: sha1:9f0e05d4bc59a80bca8758df7af9a600ad92641c
- pristine_git_object: 6c5aa142924734292c911817aa20fe21ef694419
+ last_write_checksum: sha1:d3dedff453fa818a3a9b9ac3da0244e45ee7443a
+ pristine_git_object: ca65f84d70f4a4cff7b42b44adc756e88254f031
docs/models/listorganizationinvitationsqueryparamstatus.md:
id: 5c6517fb97a5
last_write_checksum: sha1:83302351fac9d2c71746f85f78611c884dfcf975
@@ -1732,10 +1700,6 @@ trackedFiles:
id: f50365412494
last_write_checksum: sha1:aeb202644c669b1033633bf29e546eeda3bb7f48
pristine_git_object: 565810f438f2ce1f396e7ef34860cb10e6f8ec02
- docs/models/meta.md:
- id: b5731935642a
- last_write_checksum: sha1:15ebd1eb87ca29dca40f7a85b187c7119e9bc5f8
- pristine_git_object: 93f98d6ad4d1504e6a3849971be592f31f4eea76
docs/models/nextaction.md:
id: 7c8a867e5482
last_write_checksum: sha1:41e0a715b0ebaad962078ce65ebddb36687e740d
@@ -2078,8 +2042,8 @@ trackedFiles:
pristine_git_object: 2e113f48ea54618739c1040356deae926920e0ef
docs/models/queryparamenrollmentmode.md:
id: 3a43269f72ee
- last_write_checksum: sha1:3bbe0a990e2d3d1538e9a5608b0a1c4afb075157
- pristine_git_object: a318c83a5a737b86f3f46eacb6dfc648ec83a2e8
+ last_write_checksum: sha1:e1066aca2d1d59461ee3744deb4bc13122d8c09f
+ pristine_git_object: fefab90ecc8f9eedb7db7ad268a6a9278af725ae
docs/models/queryparampayertype.md:
id: b2f1e150103d
last_write_checksum: sha1:6d0bd4a87f0a0c1442cc4b27e625797ef0878f8c
@@ -2930,8 +2894,8 @@ trackedFiles:
pristine_git_object: b67a2990b893389c16fc3484bd46759bac7fe639
docs/models/updateorganizationdomainrequestbody.md:
id: 740dd4a1631e
- last_write_checksum: sha1:0e3fccad651450367e08a60451c492acaabc5c84
- pristine_git_object: 507bfd3b527656250a8a7fc889e9113cfe8192f6
+ last_write_checksum: sha1:8decc1960d1065fde7c7e2d615e9cdc8547e021a
+ pristine_git_object: e3e368a7d732dc1207977bdd3b40ac8c6c1a4299
docs/models/updateorganizationmembershipmetadatarequest.md:
id: dc497ede0378
last_write_checksum: sha1:cd8c8c062bcfeaad2a5ac05b69c5d1b626d57627
@@ -3174,8 +3138,8 @@ trackedFiles:
pristine_git_object: 8c5f1bb3c5dd31a7fab7afd309afe5a842cebbf6
docs/models/verificationgoogleonetaperrorclerkerror.md:
id: 10131e87b3f0
- last_write_checksum: sha1:0bfaac999719fad5a1fb8ad9c516fa769e81740e
- pristine_git_object: 8de8eace7442362140fb2841cafeabd71bd1b24a
+ last_write_checksum: sha1:26f676714ce099c422826c32246b2d4492cfe617
+ pristine_git_object: 5ff62314e27001e1eede5a5b581110bb4b04e29a
docs/models/verificationgoogleonetapverificationerror.md:
id: 2783e1e19751
last_write_checksum: sha1:54a48fa8643dd3a1d69a47c59b98db9c3b885e99
@@ -3198,12 +3162,12 @@ trackedFiles:
pristine_git_object: f152e68b9981dd06bb233dc6ccda9ce99c23ae8f
docs/models/verificationoautherrorclerkerror.md:
id: f928ca8fcd24
- last_write_checksum: sha1:e799706bbb01204827db018efb74bc16bd7cf2df
- pristine_git_object: d4aceb6b4adc5f20b3124262feee5dc96b2f920d
+ last_write_checksum: sha1:34bed4d1a9006ac59002a3f25fce95d85cd5e2a3
+ pristine_git_object: 2ed5085c1c8b12915280b8691d7da71d4021ba05
docs/models/verificationoautherrorenterpriseaccountclerkerror.md:
id: fafebe046c8b
- last_write_checksum: sha1:b5110ce2b845e7d4bc235de40fe17ab36a7788e6
- pristine_git_object: a4ed5d6aa3e6316ef9c63c48dcec4737dccbf1be
+ last_write_checksum: sha1:83fad7662bc90ba17039b2b38843525a90a75316
+ pristine_git_object: cb0fd23926bf1338b135b06a333d638510ab1d02
docs/models/verificationoauthverificationenterpriseaccounterror.md:
id: 82a1c55d7b59
last_write_checksum: sha1:a456d00b1a26cac9ad8cdf95d12496546b73d627
@@ -3278,16 +3242,16 @@ trackedFiles:
pristine_git_object: 9a00d92979376c403b036348c351f3c4ce56c13d
docs/models/verificationsamlerrorclerkerror.md:
id: a70177ff0d77
- last_write_checksum: sha1:c5766f0540828a0a61f7f9adad7324994e8c5d02
- pristine_git_object: 2600927757949b05776101c4ac00d46c1539ab49
+ last_write_checksum: sha1:9bb20f3a6e2156a7233b1d6fd2e9c93deb6f6a6a
+ pristine_git_object: 77682e426c18455cd24e278cd0a4e7b9d7d2850d
docs/models/verificationsamlerrorenterpriseaccountclerkerror.md:
id: adb0465af148
- last_write_checksum: sha1:298dfaf7d8e8ec7345638e9e83c15923123f5c9f
- pristine_git_object: 6ae3d8e13bf75ef180d4ab2355c869aeb642e4a7
+ last_write_checksum: sha1:9bfc6fd96470c7ec9325379698edbfa47a792a80
+ pristine_git_object: b89f8240be3cc5d43928505392f9cc76905acfea
docs/models/verificationsamlerrorsamlaccountclerkerror.md:
id: b8c46eca04a7
- last_write_checksum: sha1:b627bf7f712517399880abe9697e0934ecf0d8f0
- pristine_git_object: 13b5cb7aa1492e7d0dc103552185d1f1c978673e
+ last_write_checksum: sha1:aa93038367338d6652261d36a14a3f6ef5c76a6a
+ pristine_git_object: df96b967cc8603177efff11b030c9b2316a43b01
docs/models/verificationsamlverificationemailaddresssaml.md:
id: cacd9aa6490c
last_write_checksum: sha1:95ee6e3863ab2d0134c0e7cf956dea7b893753fd
@@ -3678,8 +3642,8 @@ trackedFiles:
pristine_git_object: 42bad19b6651c3a4a29e46065cc43b92dbafeddc
docs/sdks/organizationdomainssdk/README.md:
id: 76a0872c137f
- last_write_checksum: sha1:5b4ded551b03861593f7d66fec8bb2bcd88da653
- pristine_git_object: b4ce48cf225d609efaef5f9376764cb05bd68915
+ last_write_checksum: sha1:3192f245a59c1d091ce221c4e62bf8ba76cd16d3
+ pristine_git_object: 58bbd5745dfc5dba7851432188291d7db20f3f2d
docs/sdks/organizationinvitationssdk/README.md:
id: a75042d035e8
last_write_checksum: sha1:5b8d5a65af4dd05e3947662f1af94650ecd0fe4a
@@ -3742,8 +3706,8 @@ trackedFiles:
pristine_git_object: 3b5b06e9e6e00d8c21aa5de0fa5754acec7173d5
docs/sdks/users/README.md:
id: 5d80027045fe
- last_write_checksum: sha1:c41e2578764578d6792364ca1c5adfdb77cc621a
- pristine_git_object: de4f37112e86d72bce405afee0684dad33a30a7b
+ last_write_checksum: sha1:aefb1439923d45a865463be976ce6acef4a729cc
+ pristine_git_object: 0f43009087ddefbe4f1601c324c4ef15ca0889c8
docs/sdks/waitlistentriessdk/README.md:
id: be78acbbb2f4
last_write_checksum: sha1:08794f1399c6b81cf83ef513816222cb5d12f53c
@@ -3766,8 +3730,8 @@ trackedFiles:
pristine_git_object: 7fd8db13ad9399ab075a5fb70e6da17525ad3ed0
pyproject.toml:
id: 5d07e7d72637
- last_write_checksum: sha1:75412ea1d36bcab69bf5f1c60af01f9dc38ca15f
- pristine_git_object: 0677a7544bd71fb62a10f7285ae5aace2e76ec66
+ last_write_checksum: sha1:076af33934be68acbf53a30c543f2db63fe751d7
+ pristine_git_object: a0b879cfe3625df1b099d58b54fe08fcb3631e30
scripts/prepare_readme.py:
id: e0c5957a6035
last_write_checksum: sha1:419f10ccc385a29136e599315b61a0aa7a1c3e15
@@ -3794,8 +3758,8 @@ trackedFiles:
pristine_git_object: 4926429d3dfb2c34589715971acb070ed3756559
src/clerk_backend_api/_version.py:
id: 9bcb16a88e08
- last_write_checksum: sha1:3610187b4306de73e4c11f2e3bdeb35d51122bff
- pristine_git_object: c5e9e88a7e402d16746577e5d9940633c311fc64
+ last_write_checksum: sha1:a1c31084721653b57a9073e98a6653d5acbf7636
+ pristine_git_object: d0d91c0b019e1406733d8759371b746e4b8b90bd
src/clerk_backend_api/actortokens.py:
id: 3b3f89863233
last_write_checksum: sha1:3b904736e9137a0802a031e590dcb505f9ed0ba6
@@ -3890,8 +3854,8 @@ trackedFiles:
pristine_git_object: 1487f7397b93643052fce28231aefc25905fb076
src/clerk_backend_api/models/__init__.py:
id: 97d9388d85c1
- last_write_checksum: sha1:cf88ff2c844ca5e287113fe3824980c8fdcd8a45
- pristine_git_object: 4740ead9c0650bc89674455af23cfd9ec28d4452
+ last_write_checksum: sha1:3915a7c217d323cfb5dc18de0c19a48ce2e79eee
+ pristine_git_object: ea6a2382b0df6f7c047fa6c44f4400d0ed2732e3
src/clerk_backend_api/models/_verificationresponse.py:
id: 60d0443bfa2c
last_write_checksum: sha1:fe16527d8fc007a482bfc55e6f3ccd67f407d7bf
@@ -3978,12 +3942,12 @@ trackedFiles:
pristine_git_object: 39f2e030f980f78c5c0f2ecd8030ce4d493f9ca5
src/clerk_backend_api/models/clerkerror.py:
id: 2ccb21dde563
- last_write_checksum: sha1:85e4d7b652c239522d472b321e39f5749e121ec8
- pristine_git_object: dd3c123ecc3f6994c7a9b649100e57f689cba3ad
+ last_write_checksum: sha1:1025d9113a0942f90cca3e0723153f6efb92635c
+ pristine_git_object: 0a7859f36bdffe15b95940f0a75a000ebf900cff
src/clerk_backend_api/models/clerkerrors.py:
id: 6d281fef4fc7
- last_write_checksum: sha1:5aae5b16a119642aa3fef28537f02dc47959e3d8
- pristine_git_object: 7658c12b00359d59a39263571e84cf3f2cc18f9b
+ last_write_checksum: sha1:6ec076f8383a82de63947c0fa3d4aabdeb4e0a37
+ pristine_git_object: 10d2accfaf0e14ab5f1e9bb16d4af792bedd7eaf
src/clerk_backend_api/models/client.py:
id: e9612d07140a
last_write_checksum: sha1:550ae5a62ba3d0a68a01b079e09ba14cdeb8f4df
@@ -4138,8 +4102,8 @@ trackedFiles:
pristine_git_object: ecde431dd1e9d5ea8585905d15d8f8b8fe1704f2
src/clerk_backend_api/models/createorganizationdomainop.py:
id: 5a6ae0dba9f8
- last_write_checksum: sha1:1788fded50a6c2ba3d715e6a5fcfd740ba49a039
- pristine_git_object: 572415433882a5e6f3b5518d455f92b5a23e4c5c
+ last_write_checksum: sha1:6602bd3044b0881b0d0ed73f4a421cb3317c89d0
+ pristine_git_object: dc20a32dc14dac66c93fd61095b680a69b2722c7
src/clerk_backend_api/models/createorganizationinvitationbulkop.py:
id: ac16d568c0ae
last_write_checksum: sha1:e1759e1e36086a018500b46287897415c78b38b2
@@ -4322,12 +4286,12 @@ trackedFiles:
pristine_git_object: 7c2cb9ffb835a0b7605b399091244417ff938c8f
src/clerk_backend_api/models/emailaddress.py:
id: 29df9abd37d1
- last_write_checksum: sha1:4fa3ee7ebb012ed3e62de05f89464c5692c4e52e
- pristine_git_object: 7aba58d2afa59c55f14ef6c02d8ffbb28fab9b8f
+ last_write_checksum: sha1:be2e95d56b87a1bebc8957f198761cfb8b60ad81
+ pristine_git_object: a407db7d9de6a923616ab2181ed37dd3190ab906
src/clerk_backend_api/models/enterpriseaccount.py:
id: 76fc27f00649
- last_write_checksum: sha1:d070cdc2af8be851fbc1222dad8d7121a5977eee
- pristine_git_object: 5e04264834b607fb0ec750249f89ed47569ae099
+ last_write_checksum: sha1:774ac484333a64d53d709a12237e70cf8da7c5f1
+ pristine_git_object: 00702cd8522c7a0f563b84a6eb863745598636bf
src/clerk_backend_api/models/enterpriseconnection.py:
id: 0045faf0e373
last_write_checksum: sha1:90ee1126d9c5ce1a1b7236987d27723ae761639d
@@ -4358,8 +4322,8 @@ trackedFiles:
pristine_git_object: e2bb51e244cd1a26f729b8224cdcd11164a507d1
src/clerk_backend_api/models/externalaccountwithverification.py:
id: 79931be73b92
- last_write_checksum: sha1:81e528412f5cf8aeb2982c30cfd35fb0c1fcef24
- pristine_git_object: 59d85ad70e4a3ec035cae960d6f44dd50eeeaa40
+ last_write_checksum: sha1:6b5d18eb13e76e434690d30ecd2fff6cf0294fb6
+ pristine_git_object: 87be398e900d2cee0c88b622ac0f8b910297907c
src/clerk_backend_api/models/featureresponse.py:
id: 40a15826a18c
last_write_checksum: sha1:84f8316b07acef97d9fd656c26de1f8412a1db1a
@@ -4574,8 +4538,8 @@ trackedFiles:
pristine_git_object: 2e30edd845289e450f5278f71491b5a890080aa1
src/clerk_backend_api/models/listallorganizationdomainsop.py:
id: "199866500078"
- last_write_checksum: sha1:ede3d4d15511cc99414da5bbe6e0bf226ad380ff
- pristine_git_object: 8b28daa990d6b1eab9b48ab15be290ab61b8a0a6
+ last_write_checksum: sha1:64b78d30b3d3c7587bd04c5f945f009144ee3348
+ pristine_git_object: 4defa044911200a077cbff300e579c12774632d1
src/clerk_backend_api/models/listallowlistidentifiersop.py:
id: 44ca21651421
last_write_checksum: sha1:4cec79f95de73339984720d7dbbd2e8016dfbfff
@@ -4610,8 +4574,8 @@ trackedFiles:
pristine_git_object: 2e0a53d0dbba346dbe198c3b62aa991229ebcfef
src/clerk_backend_api/models/listorganizationdomainsop.py:
id: 189f8d296b8c
- last_write_checksum: sha1:1a2610c7ef181dbd2d673fb2a8c2bd71851f9e94
- pristine_git_object: 620c8bf3d0716a45e4887fbb8f97532691467d3a
+ last_write_checksum: sha1:17e5d7fbf18d48b0129718ce726d51e933c4f941
+ pristine_git_object: 6c47e453405fe2f2c515cfaa6de9c0643df03971
src/clerk_backend_api/models/listorganizationinvitationsop.py:
id: d7dfd455485d
last_write_checksum: sha1:0deaf695f830146f0d7cfc89aa75be7a9b000a61
@@ -4722,8 +4686,8 @@ trackedFiles:
pristine_git_object: e14ddfc94b626a51175a05dfa9cde4d473ff185d
src/clerk_backend_api/models/organizationdomain.py:
id: 627b7a1a5e5a
- last_write_checksum: sha1:712e4e0c2b711111a51a301a6ccd97575646e900
- pristine_git_object: c15741b2fecd97882cc7d9f1b116c8f4e3907860
+ last_write_checksum: sha1:2271e3ee265687becf215a4cb38bb10c90e610f6
+ pristine_git_object: 4cff8405ecf907aaab9476a0e2f1d4268dacafe5
src/clerk_backend_api/models/organizationdomains.py:
id: 7bd99087d029
last_write_checksum: sha1:d3fed2db47a386709a3f89e37707a5ece87fe3d6
@@ -4946,8 +4910,8 @@ trackedFiles:
pristine_git_object: 4c0586ea03498ce190ecc66ae7e25405f4878633
src/clerk_backend_api/models/samlaccount.py:
id: 49087d16fc62
- last_write_checksum: sha1:649734376b16cba21e19f9443e7e53d5a84eecf9
- pristine_git_object: 0be7a6feab6e8c7dcb3b02af19b308c1296b4df1
+ last_write_checksum: sha1:da0fbcac07fea799716c928c3fe0e2433cec706a
+ pristine_git_object: 0e3b6c5c5d9fa6f47147194c8953f44e35d5dc5d
src/clerk_backend_api/models/samlconnection.py:
id: a329c81c42f3
last_write_checksum: sha1:75af7cff9d93e6a3da5b8bd8e7fe9bfd03b768dd
@@ -5122,8 +5086,8 @@ trackedFiles:
pristine_git_object: 4775edcdb8659a808f1f54bd1bd334c91eb7b195
src/clerk_backend_api/models/updateorganizationdomainop.py:
id: f821cc2481cf
- last_write_checksum: sha1:9597106f1033c03c83275e126e503d23521c1dda
- pristine_git_object: 44b6a62a8d7206bb5e4795b106e2fc9f2f5f0cc2
+ last_write_checksum: sha1:e8c1412653b2a51c4b222d3f3b801d1853c3574c
+ pristine_git_object: ad024fca04a145efbfd3466405434b3d6b846689
src/clerk_backend_api/models/updateorganizationmembershipmetadataop.py:
id: 20595ae3f1a1
last_write_checksum: sha1:4d24811a2c48d34e2ec392b97ab6bbd24f89a32d
@@ -5266,8 +5230,8 @@ trackedFiles:
pristine_git_object: e7d771e5125e97be4c1cd97fe9a773228eb34f97
src/clerk_backend_api/organizationdomains_sdk.py:
id: b3594639c697
- last_write_checksum: sha1:cb51ee7adbebea52d1496b3b8fb8f0b087437a29
- pristine_git_object: 44cb4e8188b2050a69254b88a0f4c1e2b350b8e0
+ last_write_checksum: sha1:6b5cd4f0e43717542757808641a77763c8c065df
+ pristine_git_object: b420fe56d4f7294f05cf4ee815be6ef4d6e59067
src/clerk_backend_api/organizationinvitations_sdk.py:
id: 4ff208f271e3
last_write_checksum: sha1:54e25fabeae538101ca4cd03124862f698c4c502
@@ -5354,8 +5318,8 @@ trackedFiles:
pristine_git_object: a9a640a1a7048736383f96c67c6290c86bf536ee
src/clerk_backend_api/users.py:
id: 6f835640685a
- last_write_checksum: sha1:3d53e41d7e22785a86eba0faf6159e2e15eea89f
- pristine_git_object: ba0c42298427e762fe1cfd71ec5ae4999ef9fa26
+ last_write_checksum: sha1:8286c05bcc7b03af1c804694a2537f0674556605
+ pristine_git_object: 41603abc6be4398897a6b3e8ab3529b393409af1
src/clerk_backend_api/utils/__init__.py:
id: a8b67e49e50a
last_write_checksum: sha1:1970816f2234ecb8785798240b0edced961de971
@@ -5406,8 +5370,8 @@ trackedFiles:
pristine_git_object: 591415af8e64baa410627b507d2740afb5387d13
src/clerk_backend_api/utils/retries.py:
id: c8a5b5c54d76
- last_write_checksum: sha1:471372f5c5d1dd5583239c9cf3c75f1b636e5d87
- pristine_git_object: af07d4e941007af4213c5ec9047ef8a2fca04e5e
+ last_write_checksum: sha1:3585b891142f30a597fbf7a2f0340700babef8e4
+ pristine_git_object: ca7b59efebbbd9545744d0207ef42725c4cc5143
src/clerk_backend_api/utils/security.py:
id: ed2da5f2f80c
last_write_checksum: sha1:c11eef495b6aaa249178c24c796940cc540b7a00
@@ -8219,6 +8183,7 @@ examples:
application/json: {"errors": [{"message": "Invalid input", "long_message": "The input provided does not meet the requirements.", "code": "400_bad_request", "meta": {}}], "meta": {}}
examplesVersion: 1.0.2
generatedTests: {}
+releaseNotes: "## Python SDK Changes:\n* `clerk.clients.list()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.clients.verify()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.clients.get()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.email_addresses.create()`: \n * `response.verification` **Changed** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `clerk.email_addresses.get()`: \n * `response.verification` **Changed** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `clerk.email_addresses.delete()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.email_addresses.update()`: \n * `response.verification` **Changed** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `clerk.email_addresses.prepare_verification()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.email_addresses.attempt_verification()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.email_addresses.replace_for_user()`: \n * `response.verification` **Changed** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `clerk.phone_numbers.create()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.phone_numbers.get()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.phone_numbers.delete()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.phone_numbers.update()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.phone_numbers.prepare_verification()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.phone_numbers.attempt_verification()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.phone_numbers.replace_for_user()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.sessions.list()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.sessions.create()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.sessions.get()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.sessions.refresh()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.sessions.revoke()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.sessions.create_token()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.sessions.create_token_from_template()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.email_sms_templates.list()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.email_sms_templates.get()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.email_sms_templates.revert()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.email_sms_templates.toggle_template_delivery()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.email_and_sms_templates.upsert()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.templates.preview()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.users.list()`: \n * `response.[]` **Changed** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `clerk.users.create()`: \n * `response` **Changed** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `clerk.users.count()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.users.get()`: \n * `response` **Changed** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `clerk.users.update()`: \n * `response` **Changed** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `clerk.users.delete()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.users.ban()`: \n * `response` **Changed** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `clerk.users.unban()`: \n * `response` **Changed** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `clerk.users.bulk_ban()`: \n * `response.[]` **Changed** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `clerk.users.bulk_unban()`: \n * `response.[]` **Changed** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `clerk.users.lock()`: \n * `response` **Changed** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `clerk.users.unlock()`: \n * `response` **Changed** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `clerk.users.set_profile_image()`: \n * `response` **Changed** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `clerk.users.delete_profile_image()`: \n * `response` **Changed** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `clerk.users.update_metadata()`: \n * `response` **Changed** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `clerk.users.replace_metadata()`: \n * `response` **Changed** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `clerk.users.get_billing_subscription()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.users.get_billing_credit_balance()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.users.adjust_billing_credit_balance()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.users.get_o_auth_access_token()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.users.get_organization_memberships()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.users.get_organization_invitations()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.users.verify_password()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.users.verify_totp()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.users.disable_mfa()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.users.delete_backup_codes()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.users.delete_passkey()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.users.delete_web3wallet()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.users.delete_totp()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.users.delete_external_account()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.users.set_password_compromised()`: \n * `response` **Changed** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `clerk.users.unset_password_compromised()`: \n * `response` **Changed** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `clerk.users.get_instance_organization_memberships()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.invitations.create()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.invitations.bulk_create()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.invitations.revoke()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_invitations.get_all()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_invitations.create()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_invitations.list()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_invitations.bulk_create()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_invitations.list_pending()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_invitations.get()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_invitations.revoke()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.allowlist_identifiers.list()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.allowlist_identifiers.create()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.allowlist_identifiers.delete()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.blocklist_identifiers.list()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.blocklist_identifiers.create()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.blocklist_identifiers.delete()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.beta_features.update_instance_settings()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.beta_features.update_production_instance_domain()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.actor_tokens.create()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.actor_tokens.revoke()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.domains.add()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.domains.delete()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.domains.update()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.instance_settings.update()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.instance_settings.update_restrictions()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.instance_settings.update_communication()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.instance_settings.update_o_auth_application_settings()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.instance_settings.change_domain()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.instance_settings.get_organization_settings()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.instance_settings.update_organization_settings()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.instance_settings.update_instance_protect()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.webhooks.create_svix_app()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.webhooks.delete_svix_app()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.webhooks.generate_svix_auth_url()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.jwt_templates.create()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.jwt_templates.get()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.jwt_templates.update()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.jwt_templates.delete()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.machines.list()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.machines.create()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.machines.get()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.machines.update()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.machines.delete()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.machines.get_secret_key()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.machines.rotate_secret_key()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.machines.create_scope()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.machines.delete_scope()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organizations.list()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organizations.create()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organizations.get()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organizations.update()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organizations.delete()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organizations.merge_metadata()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organizations.replace_metadata()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organizations.upload_logo()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organizations.delete_logo()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organizations.get_billing_subscription()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organizations.get_billing_credit_balance()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organizations.adjust_billing_credit_balance()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_roles.list()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_roles.create()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_roles.get()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_roles.update()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_roles.delete()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_roles.assign_permission()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_roles.remove_permission()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_memberships.create()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_memberships.list()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_memberships.update()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_memberships.delete()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_memberships.update_metadata()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_domains.create()`: \n * `response.enrollment_mode.enum(enterprise_sso)` **Added** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_domains.list()`: \n * `response.data[].enrollment_mode.enum(enterprise_sso)` **Added** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_domains.update()`: \n * `response.enrollment_mode.enum(enterprise_sso)` **Added** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_domains.delete()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_domains.verify_ownership()`: \n * `response.enrollment_mode.enum(enterprise_sso)` **Added** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_domains.list_all()`: \n * `request.enrollment_mode` **Changed**\n * `response.data[].enrollment_mode.enum(enterprise_sso)` **Added** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `clerk.proxy_checks.verify()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.redirect_urls.create()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.redirect_urls.get()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.redirect_urls.delete()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.sign_in_tokens.create()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.sign_in_tokens.revoke()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.sign_ups.get()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.sign_ups.update()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.oauth_applications.list()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.oauth_applications.create()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.oauth_applications.get()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.oauth_applications.update()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.oauth_applications.delete()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.oauth_applications.upload_logo()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.oauth_applications.rotate_secret()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.saml_connections.list()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.saml_connections.create()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.saml_connections.get()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.saml_connections.update()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.saml_connections.delete()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.enterprise_connections.list()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.enterprise_connections.create()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.enterprise_connections.get()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.enterprise_connections.update()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.enterprise_connections.delete()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.enterprise_connections.list_test_runs()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.enterprise_connections.create_test_run()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.agent_tasks.create()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.agent_tasks.revoke()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.waitlist_entries.create()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.waitlist_entries.bulk_create()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.waitlist_entries.delete()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.waitlist_entries.invite()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.waitlist_entries.reject()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.billing.list_plans()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.billing.list_prices()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.billing.create_price()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.billing.list_subscription_items()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.billing.cancel_subscription_item()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.billing.extend_subscription_item_free_trial()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.billing.create_price_transition()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.billing.list_statements()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.billing.get_statement()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.billing.get_statement_payment_attempts()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_permissions.list()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_permissions.create()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_permissions.get()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_permissions.update()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.organization_permissions.delete()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.role_sets.list()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.role_sets.create()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.role_sets.get()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.role_sets.update()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.role_sets.replace()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.role_sets.add_roles()`: `error` **Changed** (Breaking ⚠️)\n* `clerk.role_sets.replace_role()`: `error` **Changed** (Breaking ⚠️)\n"
generatedFiles:
- .gitattributes
- .vscode/settings.json
diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml
index 18e7eeb5..e65c7fc3 100644
--- a/.speakeasy/gen.yaml
+++ b/.speakeasy/gen.yaml
@@ -29,7 +29,7 @@ generation:
generateNewTests: false
skipResponseBodyAssertions: false
python:
- version: 6.0.1
+ version: 6.0.2
additionalDependencies:
dev:
pytest: ^8.3.3
@@ -51,6 +51,7 @@ python:
description: Python Client SDK for clerk.dev
enableCustomCodeRegions: true
enumFormat: enum
+ errorSchemaValidation: true
eventStreamClassNames:
async: EventStreamAsync
sync: EventStream
@@ -91,6 +92,7 @@ python:
pytestTimeout: 0
rawResponseHelpers: false
responseFormat: flat
+ responseSchemaValidation: true
sseFlatResponse: false
templateVersion: v2
useAsyncHooks: false
diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock
index 070660d1..3d45010b 100644
--- a/.speakeasy/workflow.lock
+++ b/.speakeasy/workflow.lock
@@ -1,9 +1,9 @@
-speakeasyVersion: 1.778.0
+speakeasyVersion: 1.784.0
sources:
clerk-openapi:
sourceNamespace: clerk-openapi
- sourceRevisionDigest: sha256:96ac7c88f394e98ad840bc4562cb364f44f676023ec99e935d58a22f0d35319c
- sourceBlobDigest: sha256:9ec12f08a39e514255abb67095affd7effd32d748bedaf3ead0889d3d1f0de11
+ sourceRevisionDigest: sha256:c5a6d96ddd6aeeac4a5cb090bcabb15c8a23f5f0b31aeba9f10a299ca8acb905
+ sourceBlobDigest: sha256:8b2ff7232384e78f68bc26862b400fb471e38fbd954d8fe66178925147ed6316
tags:
- latest
- "2026-05-12"
@@ -11,10 +11,10 @@ targets:
clerk-sdk-python:
source: clerk-openapi
sourceNamespace: clerk-openapi
- sourceRevisionDigest: sha256:96ac7c88f394e98ad840bc4562cb364f44f676023ec99e935d58a22f0d35319c
- sourceBlobDigest: sha256:9ec12f08a39e514255abb67095affd7effd32d748bedaf3ead0889d3d1f0de11
+ sourceRevisionDigest: sha256:c5a6d96ddd6aeeac4a5cb090bcabb15c8a23f5f0b31aeba9f10a299ca8acb905
+ sourceBlobDigest: sha256:8b2ff7232384e78f68bc26862b400fb471e38fbd954d8fe66178925147ed6316
codeSamplesNamespace: clerk-openapi-python-code-samples
- codeSamplesRevisionDigest: sha256:ba8996a51d6bb120fde5168fc9c1039ef6515ce2fa82fff28e1b1ba7ecfa29dc
+ codeSamplesRevisionDigest: sha256:9b069f216fc01d0823d5eb604d0bed74b149605bc08738a8fff6f1e205e8d5f2
workflow:
workflowVersion: 1.0.0
speakeasyVersion: latest
diff --git a/README-PYPI.md b/README-PYPI.md
index f7fdb429..702e791a 100644
--- a/README-PYPI.md
+++ b/README-PYPI.md
@@ -713,7 +713,7 @@ with Clerk(
# Depending on the method different errors may be thrown
if isinstance(e, models.ClerkErrors):
print(e.data.errors) # List[clerk_backend_api.ClerkError]
- print(e.data.meta) # Optional[clerk_backend_api.ClerkErrorsMeta]
+ print(e.data.meta) # Optional[Dict[str, Any]]
```
### Error Classes
diff --git a/README.md b/README.md
index 221cfefa..b72d4c1d 100644
--- a/README.md
+++ b/README.md
@@ -713,7 +713,7 @@ with Clerk(
# Depending on the method different errors may be thrown
if isinstance(e, models.ClerkErrors):
print(e.data.errors) # List[clerk_backend_api.ClerkError]
- print(e.data.meta) # Optional[clerk_backend_api.ClerkErrorsMeta]
+ print(e.data.meta) # Optional[Dict[str, Any]]
```
### Error Classes
diff --git a/RELEASES.md b/RELEASES.md
index 1cbb62d8..dc4a36e5 100644
--- a/RELEASES.md
+++ b/RELEASES.md
@@ -638,4 +638,14 @@ Based on:
### Generated
- [python v6.0.1] .
### Releases
-- [PyPI v6.0.1] https://pypi.org/project/clerk-backend-api/6.0.1 - .
\ No newline at end of file
+- [PyPI v6.0.1] https://pypi.org/project/clerk-backend-api/6.0.1 - .
+
+## 2026-06-20 00:54:50
+### Changes
+Based on:
+- OpenAPI Doc
+- Speakeasy CLI 1.784.0 (2.911.0) https://github.com/speakeasy-api/speakeasy
+### Generated
+- [python v6.0.2] .
+### Releases
+- [PyPI v6.0.2] https://pypi.org/project/clerk-backend-api/6.0.2 - .
\ No newline at end of file
diff --git a/docs/models/clerkerror.md b/docs/models/clerkerror.md
index 9b4caf7f..1988e02b 100644
--- a/docs/models/clerkerror.md
+++ b/docs/models/clerkerror.md
@@ -8,4 +8,4 @@
| `message` | *str* | :heavy_check_mark: | N/A | Invalid input |
| `long_message` | *str* | :heavy_check_mark: | N/A | The input provided does not meet the requirements. |
| `code` | *str* | :heavy_check_mark: | N/A | 400_bad_request |
-| `meta` | [Optional[models.Meta]](../models/meta.md) | :heavy_minus_sign: | N/A | {} |
\ No newline at end of file
+| `meta` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | {} |
\ No newline at end of file
diff --git a/docs/models/clerkerrorerrorenterpriseaccountmeta.md b/docs/models/clerkerrorerrorenterpriseaccountmeta.md
deleted file mode 100644
index e12e48d2..00000000
--- a/docs/models/clerkerrorerrorenterpriseaccountmeta.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# ClerkErrorErrorEnterpriseAccountMeta
-
-
-## Fields
-
-| Field | Type | Required | Description |
-| ----------- | ----------- | ----------- | ----------- |
\ No newline at end of file
diff --git a/docs/models/clerkerrorerrorenterpriseaccountverificationmeta.md b/docs/models/clerkerrorerrorenterpriseaccountverificationmeta.md
deleted file mode 100644
index af28d7d0..00000000
--- a/docs/models/clerkerrorerrorenterpriseaccountverificationmeta.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# ClerkErrorErrorEnterpriseAccountVerificationMeta
-
-
-## Fields
-
-| Field | Type | Required | Description |
-| ----------- | ----------- | ----------- | ----------- |
\ No newline at end of file
diff --git a/docs/models/clerkerrorerrorexternalaccountwithverificationmeta.md b/docs/models/clerkerrorerrorexternalaccountwithverificationmeta.md
deleted file mode 100644
index 498e5975..00000000
--- a/docs/models/clerkerrorerrorexternalaccountwithverificationmeta.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# ClerkErrorErrorExternalAccountWithVerificationMeta
-
-
-## Fields
-
-| Field | Type | Required | Description |
-| ----------- | ----------- | ----------- | ----------- |
\ No newline at end of file
diff --git a/docs/models/clerkerrorerrorexternalaccountwithverificationverificationmeta.md b/docs/models/clerkerrorerrorexternalaccountwithverificationverificationmeta.md
deleted file mode 100644
index ef070e0d..00000000
--- a/docs/models/clerkerrorerrorexternalaccountwithverificationverificationmeta.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# ClerkErrorErrorExternalAccountWithVerificationVerificationMeta
-
-
-## Fields
-
-| Field | Type | Required | Description |
-| ----------- | ----------- | ----------- | ----------- |
\ No newline at end of file
diff --git a/docs/models/clerkerrorerrormeta.md b/docs/models/clerkerrorerrormeta.md
deleted file mode 100644
index e705a2f7..00000000
--- a/docs/models/clerkerrorerrormeta.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# ClerkErrorErrorMeta
-
-
-## Fields
-
-| Field | Type | Required | Description |
-| ----------- | ----------- | ----------- | ----------- |
\ No newline at end of file
diff --git a/docs/models/clerkerrorerrorsamlaccountmeta.md b/docs/models/clerkerrorerrorsamlaccountmeta.md
deleted file mode 100644
index 2fed9d86..00000000
--- a/docs/models/clerkerrorerrorsamlaccountmeta.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# ClerkErrorErrorSAMLAccountMeta
-
-
-## Fields
-
-| Field | Type | Required | Description |
-| ----------- | ----------- | ----------- | ----------- |
\ No newline at end of file
diff --git a/docs/models/clerkerrors.md b/docs/models/clerkerrors.md
index cbcac9a9..0a6e62e4 100644
--- a/docs/models/clerkerrors.md
+++ b/docs/models/clerkerrors.md
@@ -8,4 +8,4 @@ Request was not successful
| Field | Type | Required | Description | Example |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `errors` | List[[models.ClerkError](../models/clerkerror.md)] | :heavy_check_mark: | N/A | [
{
"message": "Invalid input",
"long_message": "The input provided does not meet the requirements.",
"code": "400_bad_request",
"clerk_trace_id": "trace_123456789abcd"
}
] |
-| `meta` | [Optional[models.ClerkErrorsMeta]](../models/clerkerrorsmeta.md) | :heavy_minus_sign: | N/A | {} |
\ No newline at end of file
+| `meta` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | {} |
\ No newline at end of file
diff --git a/docs/models/clerkerrorsmeta.md b/docs/models/clerkerrorsmeta.md
deleted file mode 100644
index c82450fb..00000000
--- a/docs/models/clerkerrorsmeta.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# ClerkErrorsMeta
-
-
-## Fields
-
-| Field | Type | Required | Description |
-| ----------- | ----------- | ----------- | ----------- |
\ No newline at end of file
diff --git a/docs/models/createorganizationdomainrequestbody.md b/docs/models/createorganizationdomainrequestbody.md
index 66443afa..4f21b32d 100644
--- a/docs/models/createorganizationdomainrequestbody.md
+++ b/docs/models/createorganizationdomainrequestbody.md
@@ -3,8 +3,8 @@
## Fields
-| Field | Type | Required | Description |
-| ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
-| `name` | *Optional[str]* | :heavy_minus_sign: | The name of the new domain |
-| `enrollment_mode` | *Optional[str]* | :heavy_minus_sign: | The enrollment_mode for the new domain. This can be `automatic_invitation`, `automatic_suggestion` or `manual_invitation` |
-| `verified` | *OptionalNullable[bool]* | :heavy_minus_sign: | The status of domain's verification. Defaults to true |
\ No newline at end of file
+| Field | Type | Required | Description |
+| ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
+| `name` | *Optional[str]* | :heavy_minus_sign: | The name of the new domain |
+| `enrollment_mode` | *Optional[str]* | :heavy_minus_sign: | The enrollment_mode for the new domain. This can be `automatic_invitation`, `automatic_suggestion`, `manual_invitation` or `enterprise_sso` |
+| `verified` | *OptionalNullable[bool]* | :heavy_minus_sign: | The status of domain's verification. Defaults to true |
\ No newline at end of file
diff --git a/docs/models/enrollmentmode.md b/docs/models/enrollmentmode.md
index 91902752..10af0085 100644
--- a/docs/models/enrollmentmode.md
+++ b/docs/models/enrollmentmode.md
@@ -17,4 +17,5 @@ value = EnrollmentMode.MANUAL_INVITATION
| ---------------------- | ---------------------- |
| `MANUAL_INVITATION` | manual_invitation |
| `AUTOMATIC_INVITATION` | automatic_invitation |
-| `AUTOMATIC_SUGGESTION` | automatic_suggestion |
\ No newline at end of file
+| `AUTOMATIC_SUGGESTION` | automatic_suggestion |
+| `ENTERPRISE_SSO` | enterprise_sso |
\ No newline at end of file
diff --git a/docs/models/errorclerkerror.md b/docs/models/errorclerkerror.md
index 6ee67508..4962f77b 100644
--- a/docs/models/errorclerkerror.md
+++ b/docs/models/errorclerkerror.md
@@ -3,9 +3,9 @@
## Fields
-| Field | Type | Required | Description | Example |
-| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- |
-| `message` | *str* | :heavy_check_mark: | N/A | Invalid input |
-| `long_message` | *str* | :heavy_check_mark: | N/A | The input provided does not meet the requirements. |
-| `code` | *str* | :heavy_check_mark: | N/A | 400_bad_request |
-| `meta` | [Optional[models.ErrorMeta]](../models/errormeta.md) | :heavy_minus_sign: | N/A | {} |
\ No newline at end of file
+| Field | Type | Required | Description | Example |
+| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- |
+| `message` | *str* | :heavy_check_mark: | N/A | Invalid input |
+| `long_message` | *str* | :heavy_check_mark: | N/A | The input provided does not meet the requirements. |
+| `code` | *str* | :heavy_check_mark: | N/A | 400_bad_request |
+| `meta` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | {} |
\ No newline at end of file
diff --git a/docs/models/errormeta.md b/docs/models/errormeta.md
deleted file mode 100644
index e498afa4..00000000
--- a/docs/models/errormeta.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# ErrorMeta
-
-
-## Fields
-
-| Field | Type | Required | Description |
-| ----------- | ----------- | ----------- | ----------- |
\ No newline at end of file
diff --git a/docs/models/listallorganizationdomainsrequest.md b/docs/models/listallorganizationdomainsrequest.md
index 6191ba43..f7abc465 100644
--- a/docs/models/listallorganizationdomainsrequest.md
+++ b/docs/models/listallorganizationdomainsrequest.md
@@ -7,7 +7,7 @@
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `organization_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the organization to filter domains by | |
| `verified` | [Optional[models.Verified]](../models/verified.md) | :heavy_minus_sign: | Filter by verification status | |
-| `enrollment_mode` | List[[models.QueryParamEnrollmentMode](../models/queryparamenrollmentmode.md)] | :heavy_minus_sign: | Filter by enrollment mode | |
+| `enrollment_mode` | List[[models.QueryParamEnrollmentMode](../models/queryparamenrollmentmode.md)] | :heavy_minus_sign: | Filter by enrollment mode. Prefix a value with `-` to exclude it instead
(e.g. `-enterprise_sso`). Include and exclude filters can be combined and compose as AND. | |
| `query` | *Optional[str]* | :heavy_minus_sign: | Search domains by name or organization ID.
If the query starts with "org_", it will search by exact organization ID match.
Otherwise, it performs a case-insensitive partial match on the domain name.
Note: An empty string or whitespace-only value is not allowed and will result in a validation error.
| |
| `domains` | List[*str*] | :heavy_minus_sign: | Filter by exact domain names. Accepts multiple values (e.g. domains=example.com&domains=test.org). | |
| `order_by` | *Optional[str]* | :heavy_minus_sign: | Allows to return organization domains in a particular order.
At the moment, you can order the returned domains by their `name` or `created_at`.
In order to specify the direction, you can use the `+/-` symbols prepended to the property to order by.
For example, if you want domains to be returned in descending order according to their `created_at` property, you can use `-created_at`.
If you don't use `+` or `-`, then `+` is implied.
Defaults to `-created_at`.
| |
diff --git a/docs/models/listorganizationdomainsrequest.md b/docs/models/listorganizationdomainsrequest.md
index 6c5aa142..ca65f84d 100644
--- a/docs/models/listorganizationdomainsrequest.md
+++ b/docs/models/listorganizationdomainsrequest.md
@@ -3,10 +3,10 @@
## Fields
-| Field | Type | Required | Description | Example |
-| ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
-| `organization_id` | *str* | :heavy_check_mark: | The organization ID. | |
-| `verified` | *Optional[str]* | :heavy_minus_sign: | Filter domains by their verification status. `true` or `false` | |
-| `enrollment_mode` | *Optional[str]* | :heavy_minus_sign: | Filter domains by their enrollment mode | |
-| `limit` | *Optional[int]* | :heavy_minus_sign: | Applies a limit to the number of results returned.
Can be used for paginating the results together with `offset`. | 20 |
-| `offset` | *Optional[int]* | :heavy_minus_sign: | Skip the first `offset` results when paginating.
Needs to be an integer greater or equal to zero.
To be used in conjunction with `limit`. | 10 |
\ No newline at end of file
+| Field | Type | Required | Description | Example |
+| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `organization_id` | *str* | :heavy_check_mark: | The organization ID. | |
+| `verified` | *Optional[str]* | :heavy_minus_sign: | Filter domains by their verification status. `true` or `false` | |
+| `enrollment_mode` | *Optional[str]* | :heavy_minus_sign: | Filter domains by their enrollment mode. Accepts `automatic_invitation`, `automatic_suggestion`, `manual_invitation` or `enterprise_sso`.
Prefix a value with `-` to exclude it instead (e.g. `-enterprise_sso`). Include and exclude filters can be combined and compose as AND. | |
+| `limit` | *Optional[int]* | :heavy_minus_sign: | Applies a limit to the number of results returned.
Can be used for paginating the results together with `offset`. | 20 |
+| `offset` | *Optional[int]* | :heavy_minus_sign: | Skip the first `offset` results when paginating.
Needs to be an integer greater or equal to zero.
To be used in conjunction with `limit`. | 10 |
\ No newline at end of file
diff --git a/docs/models/meta.md b/docs/models/meta.md
deleted file mode 100644
index 93f98d6a..00000000
--- a/docs/models/meta.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Meta
-
-
-## Fields
-
-| Field | Type | Required | Description |
-| ----------- | ----------- | ----------- | ----------- |
\ No newline at end of file
diff --git a/docs/models/queryparamenrollmentmode.md b/docs/models/queryparamenrollmentmode.md
index a318c83a..fefab90e 100644
--- a/docs/models/queryparamenrollmentmode.md
+++ b/docs/models/queryparamenrollmentmode.md
@@ -11,8 +11,13 @@ value = QueryParamEnrollmentMode.MANUAL_INVITATION
## Values
-| Name | Value |
-| ---------------------- | ---------------------- |
-| `MANUAL_INVITATION` | manual_invitation |
-| `AUTOMATIC_INVITATION` | automatic_invitation |
-| `AUTOMATIC_SUGGESTION` | automatic_suggestion |
\ No newline at end of file
+| Name | Value |
+| ---------------------------- | ---------------------------- |
+| `MANUAL_INVITATION` | manual_invitation |
+| `AUTOMATIC_INVITATION` | automatic_invitation |
+| `AUTOMATIC_SUGGESTION` | automatic_suggestion |
+| `ENTERPRISE_SSO` | enterprise_sso |
+| `MINUS_MANUAL_INVITATION` | -manual_invitation |
+| `MINUS_AUTOMATIC_INVITATION` | -automatic_invitation |
+| `MINUS_AUTOMATIC_SUGGESTION` | -automatic_suggestion |
+| `MINUS_ENTERPRISE_SSO` | -enterprise_sso |
\ No newline at end of file
diff --git a/docs/models/updateorganizationdomainrequestbody.md b/docs/models/updateorganizationdomainrequestbody.md
index 507bfd3b..e3e368a7 100644
--- a/docs/models/updateorganizationdomainrequestbody.md
+++ b/docs/models/updateorganizationdomainrequestbody.md
@@ -3,7 +3,7 @@
## Fields
-| Field | Type | Required | Description |
-| ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
-| `enrollment_mode` | *OptionalNullable[str]* | :heavy_minus_sign: | The enrollment_mode for the new domain. This can be `automatic_invitation`, `automatic_suggestion` or `manual_invitation` |
-| `verified` | *OptionalNullable[bool]* | :heavy_minus_sign: | The status of the domain's verification |
\ No newline at end of file
+| Field | Type | Required | Description |
+| ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
+| `enrollment_mode` | *OptionalNullable[str]* | :heavy_minus_sign: | The enrollment_mode for the new domain. This can be `automatic_invitation`, `automatic_suggestion`, `manual_invitation` or `enterprise_sso` |
+| `verified` | *OptionalNullable[bool]* | :heavy_minus_sign: | The status of the domain's verification |
\ No newline at end of file
diff --git a/docs/models/verificationgoogleonetaperrorclerkerror.md b/docs/models/verificationgoogleonetaperrorclerkerror.md
index 8de8eace..5ff62314 100644
--- a/docs/models/verificationgoogleonetaperrorclerkerror.md
+++ b/docs/models/verificationgoogleonetaperrorclerkerror.md
@@ -3,9 +3,9 @@
## Fields
-| Field | Type | Required | Description | Example |
-| -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `message` | *str* | :heavy_check_mark: | N/A | Invalid input |
-| `long_message` | *str* | :heavy_check_mark: | N/A | The input provided does not meet the requirements. |
-| `code` | *str* | :heavy_check_mark: | N/A | 400_bad_request |
-| `meta` | [Optional[models.ClerkErrorErrorExternalAccountWithVerificationVerificationMeta]](../models/clerkerrorerrorexternalaccountwithverificationverificationmeta.md) | :heavy_minus_sign: | N/A | {} |
\ No newline at end of file
+| Field | Type | Required | Description | Example |
+| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- |
+| `message` | *str* | :heavy_check_mark: | N/A | Invalid input |
+| `long_message` | *str* | :heavy_check_mark: | N/A | The input provided does not meet the requirements. |
+| `code` | *str* | :heavy_check_mark: | N/A | 400_bad_request |
+| `meta` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | {} |
\ No newline at end of file
diff --git a/docs/models/verificationoautherrorclerkerror.md b/docs/models/verificationoautherrorclerkerror.md
index d4aceb6b..2ed5085c 100644
--- a/docs/models/verificationoautherrorclerkerror.md
+++ b/docs/models/verificationoautherrorclerkerror.md
@@ -3,9 +3,9 @@
## Fields
-| Field | Type | Required | Description | Example |
-| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
-| `message` | *str* | :heavy_check_mark: | N/A | Invalid input |
-| `long_message` | *str* | :heavy_check_mark: | N/A | The input provided does not meet the requirements. |
-| `code` | *str* | :heavy_check_mark: | N/A | 400_bad_request |
-| `meta` | [Optional[models.ClerkErrorErrorExternalAccountWithVerificationMeta]](../models/clerkerrorerrorexternalaccountwithverificationmeta.md) | :heavy_minus_sign: | N/A | {} |
\ No newline at end of file
+| Field | Type | Required | Description | Example |
+| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- |
+| `message` | *str* | :heavy_check_mark: | N/A | Invalid input |
+| `long_message` | *str* | :heavy_check_mark: | N/A | The input provided does not meet the requirements. |
+| `code` | *str* | :heavy_check_mark: | N/A | 400_bad_request |
+| `meta` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | {} |
\ No newline at end of file
diff --git a/docs/models/verificationoautherrorenterpriseaccountclerkerror.md b/docs/models/verificationoautherrorenterpriseaccountclerkerror.md
index a4ed5d6a..cb0fd239 100644
--- a/docs/models/verificationoautherrorenterpriseaccountclerkerror.md
+++ b/docs/models/verificationoautherrorenterpriseaccountclerkerror.md
@@ -3,9 +3,9 @@
## Fields
-| Field | Type | Required | Description | Example |
-| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
-| `message` | *str* | :heavy_check_mark: | N/A | Invalid input |
-| `long_message` | *str* | :heavy_check_mark: | N/A | The input provided does not meet the requirements. |
-| `code` | *str* | :heavy_check_mark: | N/A | 400_bad_request |
-| `meta` | [Optional[models.ClerkErrorErrorEnterpriseAccountVerificationMeta]](../models/clerkerrorerrorenterpriseaccountverificationmeta.md) | :heavy_minus_sign: | N/A | {} |
\ No newline at end of file
+| Field | Type | Required | Description | Example |
+| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- |
+| `message` | *str* | :heavy_check_mark: | N/A | Invalid input |
+| `long_message` | *str* | :heavy_check_mark: | N/A | The input provided does not meet the requirements. |
+| `code` | *str* | :heavy_check_mark: | N/A | 400_bad_request |
+| `meta` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | {} |
\ No newline at end of file
diff --git a/docs/models/verificationsamlerrorclerkerror.md b/docs/models/verificationsamlerrorclerkerror.md
index 26009277..77682e42 100644
--- a/docs/models/verificationsamlerrorclerkerror.md
+++ b/docs/models/verificationsamlerrorclerkerror.md
@@ -3,9 +3,9 @@
## Fields
-| Field | Type | Required | Description | Example |
-| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ |
-| `message` | *str* | :heavy_check_mark: | N/A | Invalid input |
-| `long_message` | *str* | :heavy_check_mark: | N/A | The input provided does not meet the requirements. |
-| `code` | *str* | :heavy_check_mark: | N/A | 400_bad_request |
-| `meta` | [Optional[models.ClerkErrorErrorMeta]](../models/clerkerrorerrormeta.md) | :heavy_minus_sign: | N/A | {} |
\ No newline at end of file
+| Field | Type | Required | Description | Example |
+| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- |
+| `message` | *str* | :heavy_check_mark: | N/A | Invalid input |
+| `long_message` | *str* | :heavy_check_mark: | N/A | The input provided does not meet the requirements. |
+| `code` | *str* | :heavy_check_mark: | N/A | 400_bad_request |
+| `meta` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | {} |
\ No newline at end of file
diff --git a/docs/models/verificationsamlerrorenterpriseaccountclerkerror.md b/docs/models/verificationsamlerrorenterpriseaccountclerkerror.md
index 6ae3d8e1..b89f8240 100644
--- a/docs/models/verificationsamlerrorenterpriseaccountclerkerror.md
+++ b/docs/models/verificationsamlerrorenterpriseaccountclerkerror.md
@@ -3,9 +3,9 @@
## Fields
-| Field | Type | Required | Description | Example |
-| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
-| `message` | *str* | :heavy_check_mark: | N/A | Invalid input |
-| `long_message` | *str* | :heavy_check_mark: | N/A | The input provided does not meet the requirements. |
-| `code` | *str* | :heavy_check_mark: | N/A | 400_bad_request |
-| `meta` | [Optional[models.ClerkErrorErrorEnterpriseAccountMeta]](../models/clerkerrorerrorenterpriseaccountmeta.md) | :heavy_minus_sign: | N/A | {} |
\ No newline at end of file
+| Field | Type | Required | Description | Example |
+| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- |
+| `message` | *str* | :heavy_check_mark: | N/A | Invalid input |
+| `long_message` | *str* | :heavy_check_mark: | N/A | The input provided does not meet the requirements. |
+| `code` | *str* | :heavy_check_mark: | N/A | 400_bad_request |
+| `meta` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | {} |
\ No newline at end of file
diff --git a/docs/models/verificationsamlerrorsamlaccountclerkerror.md b/docs/models/verificationsamlerrorsamlaccountclerkerror.md
index 13b5cb7a..df96b967 100644
--- a/docs/models/verificationsamlerrorsamlaccountclerkerror.md
+++ b/docs/models/verificationsamlerrorsamlaccountclerkerror.md
@@ -3,9 +3,9 @@
## Fields
-| Field | Type | Required | Description | Example |
-| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
-| `message` | *str* | :heavy_check_mark: | N/A | Invalid input |
-| `long_message` | *str* | :heavy_check_mark: | N/A | The input provided does not meet the requirements. |
-| `code` | *str* | :heavy_check_mark: | N/A | 400_bad_request |
-| `meta` | [Optional[models.ClerkErrorErrorSAMLAccountMeta]](../models/clerkerrorerrorsamlaccountmeta.md) | :heavy_minus_sign: | N/A | {} |
\ No newline at end of file
+| Field | Type | Required | Description | Example |
+| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- |
+| `message` | *str* | :heavy_check_mark: | N/A | Invalid input |
+| `long_message` | *str* | :heavy_check_mark: | N/A | The input provided does not meet the requirements. |
+| `code` | *str* | :heavy_check_mark: | N/A | 400_bad_request |
+| `meta` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | {} |
\ No newline at end of file
diff --git a/docs/sdks/organizationdomainssdk/README.md b/docs/sdks/organizationdomainssdk/README.md
index b4ce48cf..58bbd574 100644
--- a/docs/sdks/organizationdomainssdk/README.md
+++ b/docs/sdks/organizationdomainssdk/README.md
@@ -35,13 +35,13 @@ with Clerk(
### Parameters
-| Parameter | Type | Required | Description |
-| ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
-| `organization_id` | *str* | :heavy_check_mark: | The ID of the organization where the new domain will be created. |
-| `name` | *Optional[str]* | :heavy_minus_sign: | The name of the new domain |
-| `enrollment_mode` | *Optional[str]* | :heavy_minus_sign: | The enrollment_mode for the new domain. This can be `automatic_invitation`, `automatic_suggestion` or `manual_invitation` |
-| `verified` | *OptionalNullable[bool]* | :heavy_minus_sign: | The status of domain's verification. Defaults to true |
-| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. |
+| Parameter | Type | Required | Description |
+| ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
+| `organization_id` | *str* | :heavy_check_mark: | The ID of the organization where the new domain will be created. |
+| `name` | *Optional[str]* | :heavy_minus_sign: | The name of the new domain |
+| `enrollment_mode` | *Optional[str]* | :heavy_minus_sign: | The enrollment_mode for the new domain. This can be `automatic_invitation`, `automatic_suggestion`, `manual_invitation` or `enterprise_sso` |
+| `verified` | *OptionalNullable[bool]* | :heavy_minus_sign: | The status of domain's verification. Defaults to true |
+| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. |
### Response
@@ -78,14 +78,14 @@ with Clerk(
### Parameters
-| Parameter | Type | Required | Description | Example |
-| ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
-| `organization_id` | *str* | :heavy_check_mark: | The organization ID. | |
-| `verified` | *Optional[str]* | :heavy_minus_sign: | Filter domains by their verification status. `true` or `false` | |
-| `enrollment_mode` | *Optional[str]* | :heavy_minus_sign: | Filter domains by their enrollment mode | |
-| `limit` | *Optional[int]* | :heavy_minus_sign: | Applies a limit to the number of results returned.
Can be used for paginating the results together with `offset`. | 20 |
-| `offset` | *Optional[int]* | :heavy_minus_sign: | Skip the first `offset` results when paginating.
Needs to be an integer greater or equal to zero.
To be used in conjunction with `limit`. | 10 |
-| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | |
+| Parameter | Type | Required | Description | Example |
+| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `organization_id` | *str* | :heavy_check_mark: | The organization ID. | |
+| `verified` | *Optional[str]* | :heavy_minus_sign: | Filter domains by their verification status. `true` or `false` | |
+| `enrollment_mode` | *Optional[str]* | :heavy_minus_sign: | Filter domains by their enrollment mode. Accepts `automatic_invitation`, `automatic_suggestion`, `manual_invitation` or `enterprise_sso`.
Prefix a value with `-` to exclude it instead (e.g. `-enterprise_sso`). Include and exclude filters can be combined and compose as AND. | |
+| `limit` | *Optional[int]* | :heavy_minus_sign: | Applies a limit to the number of results returned.
Can be used for paginating the results together with `offset`. | 20 |
+| `offset` | *Optional[int]* | :heavy_minus_sign: | Skip the first `offset` results when paginating.
Needs to be an integer greater or equal to zero.
To be used in conjunction with `limit`. | 10 |
+| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | |
### Response
@@ -122,13 +122,13 @@ with Clerk(
### Parameters
-| Parameter | Type | Required | Description |
-| ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
-| `organization_id` | *str* | :heavy_check_mark: | The ID of the organization to which the domain belongs |
-| `domain_id` | *str* | :heavy_check_mark: | The ID of the domain |
-| `enrollment_mode` | *OptionalNullable[str]* | :heavy_minus_sign: | The enrollment_mode for the new domain. This can be `automatic_invitation`, `automatic_suggestion` or `manual_invitation` |
-| `verified` | *OptionalNullable[bool]* | :heavy_minus_sign: | The status of the domain's verification |
-| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. |
+| Parameter | Type | Required | Description |
+| ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
+| `organization_id` | *str* | :heavy_check_mark: | The ID of the organization to which the domain belongs |
+| `domain_id` | *str* | :heavy_check_mark: | The ID of the domain |
+| `enrollment_mode` | *OptionalNullable[str]* | :heavy_minus_sign: | The enrollment_mode for the new domain. This can be `automatic_invitation`, `automatic_suggestion`, `manual_invitation` or `enterprise_sso` |
+| `verified` | *OptionalNullable[bool]* | :heavy_minus_sign: | The status of the domain's verification |
+| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. |
### Response
@@ -138,7 +138,7 @@ with Clerk(
| Error Type | Status Code | Content Type |
| ------------------ | ------------------ | ------------------ |
-| models.ClerkErrors | 400, 404, 422 | application/json |
+| models.ClerkErrors | 400, 403, 404, 422 | application/json |
| models.SDKError | 4XX, 5XX | \*/\* |
## delete
@@ -179,7 +179,7 @@ with Clerk(
| Error Type | Status Code | Content Type |
| ------------------ | ------------------ | ------------------ |
-| models.ClerkErrors | 400, 401, 404 | application/json |
+| models.ClerkErrors | 400, 401, 403, 404 | application/json |
| models.SDKError | 4XX, 5XX | \*/\* |
## verify_ownership
@@ -269,7 +269,7 @@ with Clerk(
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `organization_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the organization to filter domains by | |
| `verified` | [Optional[models.Verified]](../../models/verified.md) | :heavy_minus_sign: | Filter by verification status | |
-| `enrollment_mode` | List[[models.QueryParamEnrollmentMode](../../models/queryparamenrollmentmode.md)] | :heavy_minus_sign: | Filter by enrollment mode | |
+| `enrollment_mode` | List[[models.QueryParamEnrollmentMode](../../models/queryparamenrollmentmode.md)] | :heavy_minus_sign: | Filter by enrollment mode. Prefix a value with `-` to exclude it instead
(e.g. `-enterprise_sso`). Include and exclude filters can be combined and compose as AND. | |
| `query` | *Optional[str]* | :heavy_minus_sign: | Search domains by name or organization ID.
If the query starts with "org_", it will search by exact organization ID match.
Otherwise, it performs a case-insensitive partial match on the domain name.
Note: An empty string or whitespace-only value is not allowed and will result in a validation error.
| |
| `domains` | List[*str*] | :heavy_minus_sign: | Filter by exact domain names. Accepts multiple values (e.g. domains=example.com&domains=test.org). | |
| `order_by` | *Optional[str]* | :heavy_minus_sign: | Allows to return organization domains in a particular order.
At the moment, you can order the returned domains by their `name` or `created_at`.
In order to specify the direction, you can use the `+/-` symbols prepended to the property to order by.
For example, if you want domains to be returned in descending order according to their `created_at` property, you can use `-created_at`.
If you don't use `+` or `-`, then `+` is implied.
Defaults to `-created_at`.
| |
diff --git a/docs/sdks/users/README.md b/docs/sdks/users/README.md
index de4f3711..0f430090 100644
--- a/docs/sdks/users/README.md
+++ b/docs/sdks/users/README.md
@@ -1550,6 +1550,8 @@ with Clerk(
Sets the given user's password as no longer compromised. The user will no longer be prompted to reset their password on their next sign-in.
+If the user is in reserved-email password quarantine, the quarantine is preserved and the returned user will still have `requires_password_reset` set to `true`. Reserved-email password quarantine can only be cleared by completing a password reset or changing/removing the password.
+
### Example Usage
diff --git a/pyproject.toml b/pyproject.toml
index 0677a754..a0b879cf 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,7 +1,7 @@
[project]
name = "clerk-backend-api"
-version = "6.0.1"
+version = "6.0.2"
description = "Python Client SDK for clerk.dev"
authors = [{ name = "Clerk" },]
readme = "README-PYPI.md"
diff --git a/src/clerk_backend_api/_version.py b/src/clerk_backend_api/_version.py
index c5e9e88a..d0d91c0b 100644
--- a/src/clerk_backend_api/_version.py
+++ b/src/clerk_backend_api/_version.py
@@ -3,10 +3,10 @@
import importlib.metadata
__title__: str = "clerk-backend-api"
-__version__: str = "6.0.1"
+__version__: str = "6.0.2"
__openapi_doc_version__: str = "2026-05-12"
-__gen_version__: str = "2.904.2"
-__user_agent__: str = "speakeasy-sdk/python 6.0.1 2.904.2 2026-05-12 clerk-backend-api"
+__gen_version__: str = "2.911.0"
+__user_agent__: str = "speakeasy-sdk/python 6.0.2 2.911.0 2026-05-12 clerk-backend-api"
try:
if __package__ is not None:
diff --git a/src/clerk_backend_api/models/__init__.py b/src/clerk_backend_api/models/__init__.py
index 4740ead9..ea6a2382 100644
--- a/src/clerk_backend_api/models/__init__.py
+++ b/src/clerk_backend_api/models/__init__.py
@@ -123,13 +123,8 @@
ChangeProductionInstanceDomainRequestBody,
ChangeProductionInstanceDomainRequestBodyTypedDict,
)
- from .clerkerror import ClerkError, ClerkErrorTypedDict, Meta, MetaTypedDict
- from .clerkerrors import (
- ClerkErrors,
- ClerkErrorsData,
- ClerkErrorsMeta,
- ClerkErrorsMetaTypedDict,
- )
+ from .clerkerror import ClerkError, ClerkErrorTypedDict
+ from .clerkerrors import ClerkErrors, ClerkErrorsData
from .client import Client, ClientTypedDict, Object
from .cnametarget import CNameTarget, CNameTargetTypedDict
from .commercecreditbalanceresponse import (
@@ -635,8 +630,6 @@
from .emailaddress import (
Admin,
AdminTypedDict,
- ClerkErrorErrorMeta,
- ClerkErrorErrorMetaTypedDict,
EmailAddress,
EmailAddressObject,
EmailAddressTypedDict,
@@ -645,8 +638,6 @@
Error,
ErrorClerkError,
ErrorClerkErrorTypedDict,
- ErrorMeta,
- ErrorMetaTypedDict,
ErrorTypedDict,
FromOAuth,
FromOAuthTypedDict,
@@ -686,10 +677,6 @@
VerificationTypedDict,
)
from .enterpriseaccount import (
- ClerkErrorErrorEnterpriseAccountMeta,
- ClerkErrorErrorEnterpriseAccountMetaTypedDict,
- ClerkErrorErrorEnterpriseAccountVerificationMeta,
- ClerkErrorErrorEnterpriseAccountVerificationMetaTypedDict,
EnterpriseAccount,
EnterpriseAccountConnection,
EnterpriseAccountConnection1,
@@ -772,10 +759,6 @@
ExtendFreeTrialRequestTypedDict,
)
from .externalaccountwithverification import (
- ClerkErrorErrorExternalAccountWithVerificationMeta,
- ClerkErrorErrorExternalAccountWithVerificationMetaTypedDict,
- ClerkErrorErrorExternalAccountWithVerificationVerificationMeta,
- ClerkErrorErrorExternalAccountWithVerificationVerificationMetaTypedDict,
ExternalAccountWithVerification,
ExternalAccountWithVerificationObject,
ExternalAccountWithVerificationTypedDict,
@@ -1491,8 +1474,6 @@
RotateOAuthApplicationSecretRequestTypedDict,
)
from .samlaccount import (
- ClerkErrorErrorSAMLAccountMeta,
- ClerkErrorErrorSAMLAccountMetaTypedDict,
SAMLAccount,
SAMLAccountConnection,
SAMLAccountConnection1,
@@ -2118,23 +2099,9 @@
"ClaimsTypedDict",
"ClerkBaseError",
"ClerkError",
- "ClerkErrorErrorEnterpriseAccountMeta",
- "ClerkErrorErrorEnterpriseAccountMetaTypedDict",
- "ClerkErrorErrorEnterpriseAccountVerificationMeta",
- "ClerkErrorErrorEnterpriseAccountVerificationMetaTypedDict",
- "ClerkErrorErrorExternalAccountWithVerificationMeta",
- "ClerkErrorErrorExternalAccountWithVerificationMetaTypedDict",
- "ClerkErrorErrorExternalAccountWithVerificationVerificationMeta",
- "ClerkErrorErrorExternalAccountWithVerificationVerificationMetaTypedDict",
- "ClerkErrorErrorMeta",
- "ClerkErrorErrorMetaTypedDict",
- "ClerkErrorErrorSAMLAccountMeta",
- "ClerkErrorErrorSAMLAccountMetaTypedDict",
"ClerkErrorTypedDict",
"ClerkErrors",
"ClerkErrorsData",
- "ClerkErrorsMeta",
- "ClerkErrorsMetaTypedDict",
"Client",
"ClientTypedDict",
"CodeType",
@@ -2500,8 +2467,6 @@
"Error",
"ErrorClerkError",
"ErrorClerkErrorTypedDict",
- "ErrorMeta",
- "ErrorMetaTypedDict",
"ErrorTypedDict",
"Errors",
"ErrorsTypedDict",
@@ -2781,8 +2746,6 @@
"MergeOrganizationMetadataRequestBody",
"MergeOrganizationMetadataRequestBodyTypedDict",
"MergeOrganizationMetadataRequestTypedDict",
- "Meta",
- "MetaTypedDict",
"NextAction",
"NextInvoice",
"NextInvoiceTypedDict",
@@ -3659,12 +3622,8 @@
"ChangeProductionInstanceDomainRequestBodyTypedDict": ".changeproductioninstancedomainop",
"ClerkError": ".clerkerror",
"ClerkErrorTypedDict": ".clerkerror",
- "Meta": ".clerkerror",
- "MetaTypedDict": ".clerkerror",
"ClerkErrors": ".clerkerrors",
"ClerkErrorsData": ".clerkerrors",
- "ClerkErrorsMeta": ".clerkerrors",
- "ClerkErrorsMetaTypedDict": ".clerkerrors",
"Client": ".client",
"ClientTypedDict": ".client",
"Object": ".client",
@@ -4031,8 +3990,6 @@
"DomainsTypedDict": ".domains",
"Admin": ".emailaddress",
"AdminTypedDict": ".emailaddress",
- "ClerkErrorErrorMeta": ".emailaddress",
- "ClerkErrorErrorMetaTypedDict": ".emailaddress",
"EmailAddress": ".emailaddress",
"EmailAddressObject": ".emailaddress",
"EmailAddressTypedDict": ".emailaddress",
@@ -4041,8 +3998,6 @@
"Error": ".emailaddress",
"ErrorClerkError": ".emailaddress",
"ErrorClerkErrorTypedDict": ".emailaddress",
- "ErrorMeta": ".emailaddress",
- "ErrorMetaTypedDict": ".emailaddress",
"ErrorTypedDict": ".emailaddress",
"FromOAuth": ".emailaddress",
"FromOAuthTypedDict": ".emailaddress",
@@ -4080,10 +4035,6 @@
"VerificationTicketVerificationStatus": ".emailaddress",
"VerificationTicketVerificationStrategy": ".emailaddress",
"VerificationTypedDict": ".emailaddress",
- "ClerkErrorErrorEnterpriseAccountMeta": ".enterpriseaccount",
- "ClerkErrorErrorEnterpriseAccountMetaTypedDict": ".enterpriseaccount",
- "ClerkErrorErrorEnterpriseAccountVerificationMeta": ".enterpriseaccount",
- "ClerkErrorErrorEnterpriseAccountVerificationMetaTypedDict": ".enterpriseaccount",
"EnterpriseAccount": ".enterpriseaccount",
"EnterpriseAccountConnection": ".enterpriseaccount",
"EnterpriseAccountConnection1": ".enterpriseaccount",
@@ -4150,10 +4101,6 @@
"ExtendBillingSubscriptionItemFreeTrialRequestTypedDict": ".extendbillingsubscriptionitemfreetrialop",
"ExtendFreeTrialRequest": ".extendfreetrialrequest",
"ExtendFreeTrialRequestTypedDict": ".extendfreetrialrequest",
- "ClerkErrorErrorExternalAccountWithVerificationMeta": ".externalaccountwithverification",
- "ClerkErrorErrorExternalAccountWithVerificationMetaTypedDict": ".externalaccountwithverification",
- "ClerkErrorErrorExternalAccountWithVerificationVerificationMeta": ".externalaccountwithverification",
- "ClerkErrorErrorExternalAccountWithVerificationVerificationMetaTypedDict": ".externalaccountwithverification",
"ExternalAccountWithVerification": ".externalaccountwithverification",
"ExternalAccountWithVerificationObject": ".externalaccountwithverification",
"ExternalAccountWithVerificationTypedDict": ".externalaccountwithverification",
@@ -4692,8 +4639,6 @@
"RotateMachineSecretKeyRequestTypedDict": ".rotatemachinesecretkeyop",
"RotateOAuthApplicationSecretRequest": ".rotateoauthapplicationsecretop",
"RotateOAuthApplicationSecretRequestTypedDict": ".rotateoauthapplicationsecretop",
- "ClerkErrorErrorSAMLAccountMeta": ".samlaccount",
- "ClerkErrorErrorSAMLAccountMetaTypedDict": ".samlaccount",
"SAMLAccount": ".samlaccount",
"SAMLAccountConnection": ".samlaccount",
"SAMLAccountConnection1": ".samlaccount",
diff --git a/src/clerk_backend_api/models/clerkerror.py b/src/clerk_backend_api/models/clerkerror.py
index dd3c123e..0a7859f3 100644
--- a/src/clerk_backend_api/models/clerkerror.py
+++ b/src/clerk_backend_api/models/clerkerror.py
@@ -3,23 +3,15 @@
from __future__ import annotations
from clerk_backend_api.types import BaseModel, UNSET_SENTINEL
from pydantic import model_serializer
-from typing import Optional
+from typing import Any, Dict, Optional
from typing_extensions import NotRequired, TypedDict
-class MetaTypedDict(TypedDict):
- pass
-
-
-class Meta(BaseModel):
- pass
-
-
class ClerkErrorTypedDict(TypedDict):
message: str
long_message: str
code: str
- meta: NotRequired[MetaTypedDict]
+ meta: NotRequired[Dict[str, Any]]
class ClerkError(BaseModel):
@@ -29,7 +21,7 @@ class ClerkError(BaseModel):
code: str
- meta: Optional[Meta] = None
+ meta: Optional[Dict[str, Any]] = None
@model_serializer(mode="wrap")
def serialize_model(self, handler):
diff --git a/src/clerk_backend_api/models/clerkerrors.py b/src/clerk_backend_api/models/clerkerrors.py
index 7658c12b..10d2accf 100644
--- a/src/clerk_backend_api/models/clerkerrors.py
+++ b/src/clerk_backend_api/models/clerkerrors.py
@@ -6,21 +6,12 @@
from clerk_backend_api.types import BaseModel
from dataclasses import dataclass, field
import httpx
-from typing import List, Optional
-from typing_extensions import TypedDict
-
-
-class ClerkErrorsMetaTypedDict(TypedDict):
- pass
-
-
-class ClerkErrorsMeta(BaseModel):
- pass
+from typing import Any, Dict, List, Optional
class ClerkErrorsData(BaseModel):
errors: List[ClerkError]
- meta: Optional[ClerkErrorsMeta] = None
+ meta: Optional[Dict[str, Any]] = None
@dataclass(unsafe_hash=True)
diff --git a/src/clerk_backend_api/models/createorganizationdomainop.py b/src/clerk_backend_api/models/createorganizationdomainop.py
index 57241543..dc20a32d 100644
--- a/src/clerk_backend_api/models/createorganizationdomainop.py
+++ b/src/clerk_backend_api/models/createorganizationdomainop.py
@@ -18,7 +18,7 @@ class CreateOrganizationDomainRequestBodyTypedDict(TypedDict):
name: NotRequired[str]
r"""The name of the new domain"""
enrollment_mode: NotRequired[str]
- r"""The enrollment_mode for the new domain. This can be `automatic_invitation`, `automatic_suggestion` or `manual_invitation`"""
+ r"""The enrollment_mode for the new domain. This can be `automatic_invitation`, `automatic_suggestion`, `manual_invitation` or `enterprise_sso`"""
verified: NotRequired[Nullable[bool]]
r"""The status of domain's verification. Defaults to true"""
@@ -28,7 +28,7 @@ class CreateOrganizationDomainRequestBody(BaseModel):
r"""The name of the new domain"""
enrollment_mode: Optional[str] = None
- r"""The enrollment_mode for the new domain. This can be `automatic_invitation`, `automatic_suggestion` or `manual_invitation`"""
+ r"""The enrollment_mode for the new domain. This can be `automatic_invitation`, `automatic_suggestion`, `manual_invitation` or `enterprise_sso`"""
verified: OptionalNullable[bool] = UNSET
r"""The status of domain's verification. Defaults to true"""
diff --git a/src/clerk_backend_api/models/emailaddress.py b/src/clerk_backend_api/models/emailaddress.py
index 7aba58d2..a407db7d 100644
--- a/src/clerk_backend_api/models/emailaddress.py
+++ b/src/clerk_backend_api/models/emailaddress.py
@@ -13,7 +13,7 @@
from clerk_backend_api.utils import get_discriminator
from enum import Enum
from pydantic import Discriminator, Tag, field_serializer, model_serializer
-from typing import List, Optional, Union
+from typing import Any, Dict, List, Optional, Union
from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
@@ -159,19 +159,11 @@ class VerificationSamlVerificationStrategy(str, Enum):
SAML = "saml"
-class ClerkErrorErrorMetaTypedDict(TypedDict):
- pass
-
-
-class ClerkErrorErrorMeta(BaseModel):
- pass
-
-
class VerificationSamlErrorClerkErrorTypedDict(TypedDict):
message: str
long_message: str
code: str
- meta: NotRequired[ClerkErrorErrorMetaTypedDict]
+ meta: NotRequired[Dict[str, Any]]
class VerificationSamlErrorClerkError(BaseModel):
@@ -181,57 +173,7 @@ class VerificationSamlErrorClerkError(BaseModel):
code: str
- meta: Optional[ClerkErrorErrorMeta] = None
-
- @model_serializer(mode="wrap")
- def serialize_model(self, handler):
- optional_fields = set(["meta"])
- serialized = handler(self)
- m = {}
-
- for n, f in type(self).model_fields.items():
- k = f.alias or n
- val = serialized.get(k, serialized.get(n))
-
- if val != UNSET_SENTINEL:
- if val is not None or k not in optional_fields:
- m[k] = val
-
- return m
-
-
-class VerificationFromOauthVerificationObject(str, Enum):
- VERIFICATION_FROM_OAUTH = "verification_from_oauth"
-
-
-class VerificationFromOauthVerificationStatus(str, Enum):
- UNVERIFIED = "unverified"
- VERIFIED = "verified"
-
-
-class ErrorMetaTypedDict(TypedDict):
- pass
-
-
-class ErrorMeta(BaseModel):
- pass
-
-
-class ErrorClerkErrorTypedDict(TypedDict):
- message: str
- long_message: str
- code: str
- meta: NotRequired[ErrorMetaTypedDict]
-
-
-class ErrorClerkError(BaseModel):
- message: str
-
- long_message: str
-
- code: str
-
- meta: Optional[ErrorMeta] = None
+ meta: Optional[Dict[str, Any]] = None
@model_serializer(mode="wrap")
def serialize_model(self, handler):
@@ -397,6 +339,48 @@ def serialize_model(self, handler):
return m
+class VerificationFromOauthVerificationObject(str, Enum):
+ VERIFICATION_FROM_OAUTH = "verification_from_oauth"
+
+
+class VerificationFromOauthVerificationStatus(str, Enum):
+ UNVERIFIED = "unverified"
+ VERIFIED = "verified"
+
+
+class ErrorClerkErrorTypedDict(TypedDict):
+ message: str
+ long_message: str
+ code: str
+ meta: NotRequired[Dict[str, Any]]
+
+
+class ErrorClerkError(BaseModel):
+ message: str
+
+ long_message: str
+
+ code: str
+
+ meta: Optional[Dict[str, Any]] = None
+
+ @model_serializer(mode="wrap")
+ def serialize_model(self, handler):
+ optional_fields = set(["meta"])
+ serialized = handler(self)
+ m = {}
+
+ for n, f in type(self).model_fields.items():
+ k = f.alias or n
+ val = serialized.get(k, serialized.get(n))
+
+ if val != UNSET_SENTINEL:
+ if val is not None or k not in optional_fields:
+ m[k] = val
+
+ return m
+
+
ErrorTypedDict = ErrorClerkErrorTypedDict
diff --git a/src/clerk_backend_api/models/enterpriseaccount.py b/src/clerk_backend_api/models/enterpriseaccount.py
index 5e042648..00702cd8 100644
--- a/src/clerk_backend_api/models/enterpriseaccount.py
+++ b/src/clerk_backend_api/models/enterpriseaccount.py
@@ -44,19 +44,11 @@ class VerificationOauthVerificationEnterpriseAccountStatus(
TRANSFERABLE = "transferable"
-class ClerkErrorErrorEnterpriseAccountVerificationMetaTypedDict(TypedDict):
- pass
-
-
-class ClerkErrorErrorEnterpriseAccountVerificationMeta(BaseModel):
- pass
-
-
class VerificationOauthErrorEnterpriseAccountClerkErrorTypedDict(TypedDict):
message: str
long_message: str
code: str
- meta: NotRequired[ClerkErrorErrorEnterpriseAccountVerificationMetaTypedDict]
+ meta: NotRequired[Dict[str, Any]]
class VerificationOauthErrorEnterpriseAccountClerkError(BaseModel):
@@ -66,7 +58,7 @@ class VerificationOauthErrorEnterpriseAccountClerkError(BaseModel):
code: str
- meta: Optional[ClerkErrorErrorEnterpriseAccountVerificationMeta] = None
+ meta: Optional[Dict[str, Any]] = None
@model_serializer(mode="wrap")
def serialize_model(self, handler):
@@ -185,19 +177,11 @@ class VerificationSamlVerificationEnterpriseAccountStrategy(str, Enum):
SAML = "saml"
-class ClerkErrorErrorEnterpriseAccountMetaTypedDict(TypedDict):
- pass
-
-
-class ClerkErrorErrorEnterpriseAccountMeta(BaseModel):
- pass
-
-
class VerificationSamlErrorEnterpriseAccountClerkErrorTypedDict(TypedDict):
message: str
long_message: str
code: str
- meta: NotRequired[ClerkErrorErrorEnterpriseAccountMetaTypedDict]
+ meta: NotRequired[Dict[str, Any]]
class VerificationSamlErrorEnterpriseAccountClerkError(BaseModel):
@@ -207,7 +191,7 @@ class VerificationSamlErrorEnterpriseAccountClerkError(BaseModel):
code: str
- meta: Optional[ClerkErrorErrorEnterpriseAccountMeta] = None
+ meta: Optional[Dict[str, Any]] = None
@model_serializer(mode="wrap")
def serialize_model(self, handler):
diff --git a/src/clerk_backend_api/models/externalaccountwithverification.py b/src/clerk_backend_api/models/externalaccountwithverification.py
index 59d85ad7..87be398e 100644
--- a/src/clerk_backend_api/models/externalaccountwithverification.py
+++ b/src/clerk_backend_api/models/externalaccountwithverification.py
@@ -38,23 +38,11 @@ class VerificationGoogleOneTapVerificationStrategy(str, Enum):
GOOGLE_ONE_TAP = "google_one_tap"
-class ClerkErrorErrorExternalAccountWithVerificationVerificationMetaTypedDict(
- TypedDict
-):
- pass
-
-
-class ClerkErrorErrorExternalAccountWithVerificationVerificationMeta(BaseModel):
- pass
-
-
class VerificationGoogleOneTapErrorClerkErrorTypedDict(TypedDict):
message: str
long_message: str
code: str
- meta: NotRequired[
- ClerkErrorErrorExternalAccountWithVerificationVerificationMetaTypedDict
- ]
+ meta: NotRequired[Dict[str, Any]]
class VerificationGoogleOneTapErrorClerkError(BaseModel):
@@ -64,9 +52,7 @@ class VerificationGoogleOneTapErrorClerkError(BaseModel):
code: str
- meta: Optional[ClerkErrorErrorExternalAccountWithVerificationVerificationMeta] = (
- None
- )
+ meta: Optional[Dict[str, Any]] = None
@model_serializer(mode="wrap")
def serialize_model(self, handler):
@@ -156,19 +142,11 @@ class VerificationOauthVerificationStatus(str, Enum, metaclass=utils.OpenEnumMet
TRANSFERABLE = "transferable"
-class ClerkErrorErrorExternalAccountWithVerificationMetaTypedDict(TypedDict):
- pass
-
-
-class ClerkErrorErrorExternalAccountWithVerificationMeta(BaseModel):
- pass
-
-
class VerificationOauthErrorClerkErrorTypedDict(TypedDict):
message: str
long_message: str
code: str
- meta: NotRequired[ClerkErrorErrorExternalAccountWithVerificationMetaTypedDict]
+ meta: NotRequired[Dict[str, Any]]
class VerificationOauthErrorClerkError(BaseModel):
@@ -178,7 +156,7 @@ class VerificationOauthErrorClerkError(BaseModel):
code: str
- meta: Optional[ClerkErrorErrorExternalAccountWithVerificationMeta] = None
+ meta: Optional[Dict[str, Any]] = None
@model_serializer(mode="wrap")
def serialize_model(self, handler):
diff --git a/src/clerk_backend_api/models/listallorganizationdomainsop.py b/src/clerk_backend_api/models/listallorganizationdomainsop.py
index 8b28daa9..4defa044 100644
--- a/src/clerk_backend_api/models/listallorganizationdomainsop.py
+++ b/src/clerk_backend_api/models/listallorganizationdomainsop.py
@@ -20,6 +20,11 @@ class QueryParamEnrollmentMode(str, Enum):
MANUAL_INVITATION = "manual_invitation"
AUTOMATIC_INVITATION = "automatic_invitation"
AUTOMATIC_SUGGESTION = "automatic_suggestion"
+ ENTERPRISE_SSO = "enterprise_sso"
+ MINUS_MANUAL_INVITATION = "-manual_invitation"
+ MINUS_AUTOMATIC_INVITATION = "-automatic_invitation"
+ MINUS_AUTOMATIC_SUGGESTION = "-automatic_suggestion"
+ MINUS_ENTERPRISE_SSO = "-enterprise_sso"
class ListAllOrganizationDomainsRequestTypedDict(TypedDict):
@@ -28,7 +33,9 @@ class ListAllOrganizationDomainsRequestTypedDict(TypedDict):
verified: NotRequired[Verified]
r"""Filter by verification status"""
enrollment_mode: NotRequired[List[QueryParamEnrollmentMode]]
- r"""Filter by enrollment mode"""
+ r"""Filter by enrollment mode. Prefix a value with `-` to exclude it instead
+ (e.g. `-enterprise_sso`). Include and exclude filters can be combined and compose as AND.
+ """
query: NotRequired[str]
r"""Search domains by name or organization ID.
If the query starts with \"org_\", it will search by exact organization ID match.
@@ -76,7 +83,9 @@ class ListAllOrganizationDomainsRequest(BaseModel):
Optional[List[QueryParamEnrollmentMode]],
FieldMetadata(query=QueryParamMetadata(style="form", explode=False)),
] = None
- r"""Filter by enrollment mode"""
+ r"""Filter by enrollment mode. Prefix a value with `-` to exclude it instead
+ (e.g. `-enterprise_sso`). Include and exclude filters can be combined and compose as AND.
+ """
query: Annotated[
Optional[str],
diff --git a/src/clerk_backend_api/models/listorganizationdomainsop.py b/src/clerk_backend_api/models/listorganizationdomainsop.py
index 620c8bf3..6c47e453 100644
--- a/src/clerk_backend_api/models/listorganizationdomainsop.py
+++ b/src/clerk_backend_api/models/listorganizationdomainsop.py
@@ -14,7 +14,9 @@ class ListOrganizationDomainsRequestTypedDict(TypedDict):
verified: NotRequired[str]
r"""Filter domains by their verification status. `true` or `false`"""
enrollment_mode: NotRequired[str]
- r"""Filter domains by their enrollment mode"""
+ r"""Filter domains by their enrollment mode. Accepts `automatic_invitation`, `automatic_suggestion`, `manual_invitation` or `enterprise_sso`.
+ Prefix a value with `-` to exclude it instead (e.g. `-enterprise_sso`). Include and exclude filters can be combined and compose as AND.
+ """
limit: NotRequired[int]
r"""Applies a limit to the number of results returned.
Can be used for paginating the results together with `offset`.
@@ -42,7 +44,9 @@ class ListOrganizationDomainsRequest(BaseModel):
Optional[str],
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
] = None
- r"""Filter domains by their enrollment mode"""
+ r"""Filter domains by their enrollment mode. Accepts `automatic_invitation`, `automatic_suggestion`, `manual_invitation` or `enterprise_sso`.
+ Prefix a value with `-` to exclude it instead (e.g. `-enterprise_sso`). Include and exclude filters can be combined and compose as AND.
+ """
limit: Annotated[
Optional[int],
diff --git a/src/clerk_backend_api/models/organizationdomain.py b/src/clerk_backend_api/models/organizationdomain.py
index c15741b2..4cff8405 100644
--- a/src/clerk_backend_api/models/organizationdomain.py
+++ b/src/clerk_backend_api/models/organizationdomain.py
@@ -27,6 +27,7 @@ class EnrollmentMode(str, Enum):
MANUAL_INVITATION = "manual_invitation"
AUTOMATIC_INVITATION = "automatic_invitation"
AUTOMATIC_SUGGESTION = "automatic_suggestion"
+ ENTERPRISE_SSO = "enterprise_sso"
class AffiliationVerificationTypedDict(TypedDict):
diff --git a/src/clerk_backend_api/models/samlaccount.py b/src/clerk_backend_api/models/samlaccount.py
index 0be7a6fe..0e3b6c5c 100644
--- a/src/clerk_backend_api/models/samlaccount.py
+++ b/src/clerk_backend_api/models/samlaccount.py
@@ -112,19 +112,11 @@ class VerificationSAMLVerificationSAMLAccountStrategy(str, Enum):
SAML = "saml"
-class ClerkErrorErrorSAMLAccountMetaTypedDict(TypedDict):
- pass
-
-
-class ClerkErrorErrorSAMLAccountMeta(BaseModel):
- pass
-
-
class VerificationSAMLErrorSAMLAccountClerkErrorTypedDict(TypedDict):
message: str
long_message: str
code: str
- meta: NotRequired[ClerkErrorErrorSAMLAccountMetaTypedDict]
+ meta: NotRequired[Dict[str, Any]]
class VerificationSAMLErrorSAMLAccountClerkError(BaseModel):
@@ -134,7 +126,7 @@ class VerificationSAMLErrorSAMLAccountClerkError(BaseModel):
code: str
- meta: Optional[ClerkErrorErrorSAMLAccountMeta] = None
+ meta: Optional[Dict[str, Any]] = None
@model_serializer(mode="wrap")
def serialize_model(self, handler):
diff --git a/src/clerk_backend_api/models/updateorganizationdomainop.py b/src/clerk_backend_api/models/updateorganizationdomainop.py
index 44b6a62a..ad024fca 100644
--- a/src/clerk_backend_api/models/updateorganizationdomainop.py
+++ b/src/clerk_backend_api/models/updateorganizationdomainop.py
@@ -15,14 +15,14 @@
class UpdateOrganizationDomainRequestBodyTypedDict(TypedDict):
enrollment_mode: NotRequired[Nullable[str]]
- r"""The enrollment_mode for the new domain. This can be `automatic_invitation`, `automatic_suggestion` or `manual_invitation`"""
+ r"""The enrollment_mode for the new domain. This can be `automatic_invitation`, `automatic_suggestion`, `manual_invitation` or `enterprise_sso`"""
verified: NotRequired[Nullable[bool]]
r"""The status of the domain's verification"""
class UpdateOrganizationDomainRequestBody(BaseModel):
enrollment_mode: OptionalNullable[str] = UNSET
- r"""The enrollment_mode for the new domain. This can be `automatic_invitation`, `automatic_suggestion` or `manual_invitation`"""
+ r"""The enrollment_mode for the new domain. This can be `automatic_invitation`, `automatic_suggestion`, `manual_invitation` or `enterprise_sso`"""
verified: OptionalNullable[bool] = UNSET
r"""The status of the domain's verification"""
diff --git a/src/clerk_backend_api/organizationdomains_sdk.py b/src/clerk_backend_api/organizationdomains_sdk.py
index 44cb4e81..b420fe56 100644
--- a/src/clerk_backend_api/organizationdomains_sdk.py
+++ b/src/clerk_backend_api/organizationdomains_sdk.py
@@ -27,7 +27,7 @@ def create(
:param organization_id: The ID of the organization where the new domain will be created.
:param name: The name of the new domain
- :param enrollment_mode: The enrollment_mode for the new domain. This can be `automatic_invitation`, `automatic_suggestion` or `manual_invitation`
+ :param enrollment_mode: The enrollment_mode for the new domain. This can be `automatic_invitation`, `automatic_suggestion`, `manual_invitation` or `enterprise_sso`
:param verified: The status of domain's verification. Defaults to true
:param retries: Override the default retry configuration for this method
:param server_url: Override the default server URL for this method
@@ -137,7 +137,7 @@ async def create_async(
:param organization_id: The ID of the organization where the new domain will be created.
:param name: The name of the new domain
- :param enrollment_mode: The enrollment_mode for the new domain. This can be `automatic_invitation`, `automatic_suggestion` or `manual_invitation`
+ :param enrollment_mode: The enrollment_mode for the new domain. This can be `automatic_invitation`, `automatic_suggestion`, `manual_invitation` or `enterprise_sso`
:param verified: The status of domain's verification. Defaults to true
:param retries: Override the default retry configuration for this method
:param server_url: Override the default server URL for this method
@@ -248,7 +248,8 @@ def list(
:param organization_id: The organization ID.
:param verified: Filter domains by their verification status. `true` or `false`
- :param enrollment_mode: Filter domains by their enrollment mode
+ :param enrollment_mode: Filter domains by their enrollment mode. Accepts `automatic_invitation`, `automatic_suggestion`, `manual_invitation` or `enterprise_sso`.
+ Prefix a value with `-` to exclude it instead (e.g. `-enterprise_sso`). Include and exclude filters can be combined and compose as AND.
:param limit: Applies a limit to the number of results returned.
Can be used for paginating the results together with `offset`.
:param offset: Skip the first `offset` results when paginating.
@@ -353,7 +354,8 @@ async def list_async(
:param organization_id: The organization ID.
:param verified: Filter domains by their verification status. `true` or `false`
- :param enrollment_mode: Filter domains by their enrollment mode
+ :param enrollment_mode: Filter domains by their enrollment mode. Accepts `automatic_invitation`, `automatic_suggestion`, `manual_invitation` or `enterprise_sso`.
+ Prefix a value with `-` to exclude it instead (e.g. `-enterprise_sso`). Include and exclude filters can be combined and compose as AND.
:param limit: Applies a limit to the number of results returned.
Can be used for paginating the results together with `offset`.
:param offset: Skip the first `offset` results when paginating.
@@ -457,7 +459,7 @@ def update(
:param organization_id: The ID of the organization to which the domain belongs
:param domain_id: The ID of the domain
- :param enrollment_mode: The enrollment_mode for the new domain. This can be `automatic_invitation`, `automatic_suggestion` or `manual_invitation`
+ :param enrollment_mode: The enrollment_mode for the new domain. This can be `automatic_invitation`, `automatic_suggestion`, `manual_invitation` or `enterprise_sso`
:param verified: The status of the domain's verification
:param retries: Override the default retry configuration for this method
:param server_url: Override the default server URL for this method
@@ -535,7 +537,9 @@ def update(
response_data: Any = None
if utils.match_response(http_res, "200", "application/json"):
return unmarshal_json_response(models.OrganizationDomain, http_res)
- if utils.match_response(http_res, ["400", "404", "422"], "application/json"):
+ if utils.match_response(
+ http_res, ["400", "403", "404", "422"], "application/json"
+ ):
response_data = unmarshal_json_response(models.ClerkErrorsData, http_res)
raise models.ClerkErrors(response_data, http_res)
if utils.match_response(http_res, "4XX", "*"):
@@ -565,7 +569,7 @@ async def update_async(
:param organization_id: The ID of the organization to which the domain belongs
:param domain_id: The ID of the domain
- :param enrollment_mode: The enrollment_mode for the new domain. This can be `automatic_invitation`, `automatic_suggestion` or `manual_invitation`
+ :param enrollment_mode: The enrollment_mode for the new domain. This can be `automatic_invitation`, `automatic_suggestion`, `manual_invitation` or `enterprise_sso`
:param verified: The status of the domain's verification
:param retries: Override the default retry configuration for this method
:param server_url: Override the default server URL for this method
@@ -643,7 +647,9 @@ async def update_async(
response_data: Any = None
if utils.match_response(http_res, "200", "application/json"):
return unmarshal_json_response(models.OrganizationDomain, http_res)
- if utils.match_response(http_res, ["400", "404", "422"], "application/json"):
+ if utils.match_response(
+ http_res, ["400", "403", "404", "422"], "application/json"
+ ):
response_data = unmarshal_json_response(models.ClerkErrorsData, http_res)
raise models.ClerkErrors(response_data, http_res)
if utils.match_response(http_res, "4XX", "*"):
@@ -736,7 +742,9 @@ def delete(
response_data: Any = None
if utils.match_response(http_res, "200", "application/json"):
return unmarshal_json_response(models.DeletedObject, http_res)
- if utils.match_response(http_res, ["400", "401", "404"], "application/json"):
+ if utils.match_response(
+ http_res, ["400", "401", "403", "404"], "application/json"
+ ):
response_data = unmarshal_json_response(models.ClerkErrorsData, http_res)
raise models.ClerkErrors(response_data, http_res)
if utils.match_response(http_res, "4XX", "*"):
@@ -829,7 +837,9 @@ async def delete_async(
response_data: Any = None
if utils.match_response(http_res, "200", "application/json"):
return unmarshal_json_response(models.DeletedObject, http_res)
- if utils.match_response(http_res, ["400", "401", "404"], "application/json"):
+ if utils.match_response(
+ http_res, ["400", "401", "403", "404"], "application/json"
+ ):
response_data = unmarshal_json_response(models.ClerkErrorsData, http_res)
raise models.ClerkErrors(response_data, http_res)
if utils.match_response(http_res, "4XX", "*"):
@@ -1069,7 +1079,8 @@ def list_all(
:param organization_id: The ID of the organization to filter domains by
:param verified: Filter by verification status
- :param enrollment_mode: Filter by enrollment mode
+ :param enrollment_mode: Filter by enrollment mode. Prefix a value with `-` to exclude it instead
+ (e.g. `-enterprise_sso`). Include and exclude filters can be combined and compose as AND.
:param query: Search domains by name or organization ID.
If the query starts with \"org_\", it will search by exact organization ID match.
Otherwise, it performs a case-insensitive partial match on the domain name.
@@ -1202,7 +1213,8 @@ async def list_all_async(
:param organization_id: The ID of the organization to filter domains by
:param verified: Filter by verification status
- :param enrollment_mode: Filter by enrollment mode
+ :param enrollment_mode: Filter by enrollment mode. Prefix a value with `-` to exclude it instead
+ (e.g. `-enterprise_sso`). Include and exclude filters can be combined and compose as AND.
:param query: Search domains by name or organization ID.
If the query starts with \"org_\", it will search by exact organization ID match.
Otherwise, it performs a case-insensitive partial match on the domain name.
diff --git a/src/clerk_backend_api/users.py b/src/clerk_backend_api/users.py
index ba0c4229..41603abc 100644
--- a/src/clerk_backend_api/users.py
+++ b/src/clerk_backend_api/users.py
@@ -6652,6 +6652,8 @@ def unset_password_compromised(
Sets the given user's password as no longer compromised. The user will no longer be prompted to reset their password on their next sign-in.
+ If the user is in reserved-email password quarantine, the quarantine is preserved and the returned user will still have `requires_password_reset` set to `true`. Reserved-email password quarantine can only be cleared by completing a password reset or changing/removing the password.
+
:param user_id: The ID of the user to unset the compromised status for
:param retries: Override the default retry configuration for this method
:param server_url: Override the default server URL for this method
@@ -6744,6 +6746,8 @@ async def unset_password_compromised_async(
Sets the given user's password as no longer compromised. The user will no longer be prompted to reset their password on their next sign-in.
+ If the user is in reserved-email password quarantine, the quarantine is preserved and the returned user will still have `requires_password_reset` set to `true`. Reserved-email password quarantine can only be cleared by completing a password reset or changing/removing the password.
+
:param user_id: The ID of the user to unset the compromised status for
:param retries: Override the default retry configuration for this method
:param server_url: Override the default server URL for this method
diff --git a/src/clerk_backend_api/utils/retries.py b/src/clerk_backend_api/utils/retries.py
index af07d4e9..ca7b59ef 100644
--- a/src/clerk_backend_api/utils/retries.py
+++ b/src/clerk_backend_api/utils/retries.py
@@ -11,10 +11,13 @@
class BackoffStrategy:
+ """Exponential backoff strategy configuration."""
+
initial_interval: int
max_interval: int
exponent: float
max_elapsed_time: int
+ jitter_ms: Optional[int]
def __init__(
self,
@@ -22,24 +25,63 @@ def __init__(
max_interval: int,
exponent: float,
max_elapsed_time: int,
+ jitter_ms: Optional[int] = None,
):
+ """Initialize a backoff strategy.
+
+ Args:
+ initial_interval: Initial retry interval in milliseconds.
+ max_interval: Maximum retry interval in milliseconds.
+ exponent: Base of the exponential backoff; the interval grows as
+ ``initial_interval * exponent ** retries``.
+ max_elapsed_time: Maximum total elapsed time in milliseconds.
+ jitter_ms: Additive jitter bound in milliseconds. When set, adds a random
+ value in ``[0, jitter_ms]`` to each computed backoff interval (default
+ ``+[0, 1s]``).
+
+ Note:
+ When a response carries a ``Retry-After`` or ``retry-after-ms`` header,
+ that delay is used as-is and the sleep-shaping parameters
+ (``initial_interval``, ``max_interval``, ``exponent``, ``jitter_ms``) are
+ ignored for that attempt.
+ """
+ if jitter_ms is not None and jitter_ms < 0:
+ raise ValueError("jitter_ms must be >= 0")
self.initial_interval = initial_interval
self.max_interval = max_interval
self.exponent = exponent
self.max_elapsed_time = max_elapsed_time
+ self.jitter_ms = jitter_ms
class RetryConfig:
+ """Runtime retry configuration."""
+
strategy: str
backoff: BackoffStrategy
retry_connection_errors: bool
+ status_codes_override: Optional[List[str]]
def __init__(
- self, strategy: str, backoff: BackoffStrategy, retry_connection_errors: bool
+ self,
+ strategy: str,
+ backoff: BackoffStrategy,
+ retry_connection_errors: bool,
+ status_codes_override: Optional[List[str]] = None,
):
+ """Initialize a retry configuration.
+
+ Args:
+ strategy: Retry strategy: ``"none"`` or ``"backoff"``.
+ backoff: Backoff parameters.
+ retry_connection_errors: Whether to also retry transport-level connection errors.
+ status_codes_override: Retryable HTTP status codes that take precedence over the
+ per-operation defaults when non-empty.
+ """
self.strategy = strategy
self.backoff = backoff
self.retry_connection_errors = retry_connection_errors
+ self.status_codes_override = status_codes_override
class Retries:
@@ -48,7 +90,7 @@ class Retries:
def __init__(self, config: RetryConfig, status_codes: List[str]):
self.config = config
- self.status_codes = status_codes
+ self.status_codes = config.status_codes_override or status_codes
class TemporaryError(Exception):
@@ -93,12 +135,28 @@ def _parse_retry_after_header(response: httpx.Response) -> Optional[int]:
return None
+def _parse_retry_after_ms_header(response: httpx.Response) -> Optional[int]:
+ retry_after_ms_header = response.headers.get("retry-after-ms")
+ if not retry_after_ms_header:
+ return None
+
+ try:
+ milliseconds = float(retry_after_ms_header)
+ if milliseconds >= 0:
+ return round(milliseconds)
+ except (OverflowError, ValueError):
+ pass
+
+ return None
+
+
def _get_sleep_interval(
exception: Exception,
initial_interval: int,
max_interval: int,
exponent: float,
retries: int,
+ jitter_ms: Optional[int] = None,
) -> float:
"""Get sleep interval for retry with exponential backoff.
@@ -108,6 +166,7 @@ def _get_sleep_interval(
max_interval: Maximum retry interval in milliseconds.
exponent: Base for exponential backoff calculation.
retries: Current retry attempt count.
+ jitter_ms: Additive jitter bound in ms; see ``BackoffStrategy.jitter_ms``.
Returns:
Sleep interval in seconds.
@@ -119,7 +178,11 @@ def _get_sleep_interval(
):
return exception.retry_after / 1000
- sleep = (initial_interval / 1000) * exponent**retries + random.uniform(0, 1)
+ sleep = (initial_interval / 1000) * exponent**retries
+ if jitter_ms is not None:
+ sleep += random.uniform(0, jitter_ms / 1000)
+ else:
+ sleep += random.uniform(0, 1)
return min(sleep, max_interval / 1000)
@@ -162,6 +225,7 @@ def do_request() -> httpx.Response:
retries.config.backoff.max_interval,
retries.config.backoff.exponent,
retries.config.backoff.max_elapsed_time,
+ retries.config.backoff.jitter_ms,
)
return func()
@@ -206,6 +270,7 @@ async def do_request() -> httpx.Response:
retries.config.backoff.max_interval,
retries.config.backoff.exponent,
retries.config.backoff.max_elapsed_time,
+ retries.config.backoff.jitter_ms,
)
return await func()
@@ -217,6 +282,7 @@ def retry_with_backoff(
max_interval=60000,
exponent=1.5,
max_elapsed_time=3600000,
+ jitter_ms=None,
):
start = round(time.time() * 1000)
retries = 0
@@ -234,8 +300,17 @@ def retry_with_backoff(
raise
+ if isinstance(exception, TemporaryError):
+ retry_after_ms = _parse_retry_after_ms_header(exception.response)
+ if retry_after_ms is not None:
+ exception.retry_after = retry_after_ms
sleep = _get_sleep_interval(
- exception, initial_interval, max_interval, exponent, retries
+ exception,
+ initial_interval,
+ max_interval,
+ exponent,
+ retries,
+ jitter_ms=jitter_ms,
)
time.sleep(sleep)
retries += 1
@@ -247,6 +322,7 @@ async def retry_with_backoff_async(
max_interval=60000,
exponent=1.5,
max_elapsed_time=3600000,
+ jitter_ms=None,
):
start = round(time.time() * 1000)
retries = 0
@@ -264,8 +340,17 @@ async def retry_with_backoff_async(
raise
+ if isinstance(exception, TemporaryError):
+ retry_after_ms = _parse_retry_after_ms_header(exception.response)
+ if retry_after_ms is not None:
+ exception.retry_after = retry_after_ms
sleep = _get_sleep_interval(
- exception, initial_interval, max_interval, exponent, retries
+ exception,
+ initial_interval,
+ max_interval,
+ exponent,
+ retries,
+ jitter_ms=jitter_ms,
)
await asyncio.sleep(sleep)
retries += 1