diff --git a/.fern/replay.lock b/.fern/replay.lock index cd037ea3..eb9e8fea 100644 --- a/.fern/replay.lock +++ b/.fern/replay.lock @@ -12,22 +12,35 @@ generations: cli_version: unknown generator_versions: {} base_branch_head: de316f0260ef1fa7c3626cbe771b167fd119439c -current_generation: ffe61f6a098cb25a875019a37f2615045b97344e + - commit_sha: c1c18146c845e6c7916d0490f7ef02807f9bfebf + tree_hash: 3d199802452b0a49c14a6d80c86c09387d926ea6 + timestamp: 2026-05-18T05:04:12.235Z + cli_version: unknown + generator_versions: + fernapi/fern-python-sdk: 5.12.10 + base_branch_head: 3b19ca9899d758100ca38524af2cb079832fdc56 + - commit_sha: 812b8ca16fc2740001f9839ce5c88f85fed87c6e + tree_hash: 24be5645b7a89574a130a72ceec1f410c757ae6c + timestamp: 2026-05-19T12:25:04.138Z + cli_version: unknown + generator_versions: + fernapi/fern-python-sdk: 5.12.10 +current_generation: 812b8ca16fc2740001f9839ce5c88f85fed87c6e patches: - id: patch-4894603d - content_hash: sha256:07bdd182f3a0fcf3bb41c2edeae2ae065fc98ce0dcae83201bde3e2140f9882d + content_hash: sha256:85d8e392938ef0338e526c1cc9abe95cc3b51986f1145d7b25ceef95605d282c original_commit: 4894603d03409962bc60a34712de8abffe919e2c original_message: "chore: Restore custom wiring in management/__init__.py" original_author: Kunal Dawar - base_generation: ffe61f6a098cb25a875019a37f2615045b97344e + base_generation: 812b8ca16fc2740001f9839ce5c88f85fed87c6e files: - src/auth0/management/__init__.py patch_content: | diff --git a/src/auth0/management/__init__.py b/src/auth0/management/__init__.py - index b333886..e20a000 100644 + index 46338c3..4fd6baf 100644 --- a/src/auth0/management/__init__.py +++ b/src/auth0/management/__init__.py - @@ -2732,6 +2732,8 @@ if typing.TYPE_CHECKING: + @@ -2743,6 +2743,8 @@ if typing.TYPE_CHECKING: from .environment import Auth0Environment from .event_streams import EventStreamsCreateRequest from .version import __version__ @@ -36,7 +49,7 @@ patches: _dynamic_imports: typing.Dict[str, str] = { "Action": ".types", "ActionBase": ".types", - @@ -2792,6 +2794,8 @@ _dynamic_imports: typing.Dict[str, str] = { + @@ -2803,6 +2805,8 @@ _dynamic_imports: typing.Dict[str, str] = { "AssociateOrganizationClientGrantResponseContent": ".types", "AsyncApprovalNotificationsChannelsEnum": ".types", "AsyncAuth0": ".client", @@ -45,15 +58,15 @@ patches: "AttackProtectionCaptchaArkoseResponseContent": ".types", "AttackProtectionCaptchaAuthChallengeRequest": ".types", "AttackProtectionCaptchaAuthChallengeResponseContent": ".types", - @@ -3747,6 +3751,7 @@ _dynamic_imports: typing.Dict[str, str] = { - "CreatedUserAuthenticationMethodTypeEnum": ".types", + @@ -3761,6 +3765,7 @@ _dynamic_imports: typing.Dict[str, str] = { + "CredentialDeviceTypeEnum": ".types", "CredentialId": ".types", "CustomDomain": ".types", + "CustomDomainHeader": ".management_client", "CustomDomainCustomClientIpHeader": ".types", "CustomDomainCustomClientIpHeaderEnum": ".types", "CustomDomainProvisioningTypeEnum": ".types", - @@ -5002,6 +5007,7 @@ _dynamic_imports: typing.Dict[str, str] = { + @@ -5020,6 +5025,7 @@ _dynamic_imports: typing.Dict[str, str] = { "LogStreamSumoEnum": ".types", "LogStreamSumoResponseSchema": ".types", "LogStreamSumoSink": ".types", @@ -61,15 +74,15 @@ patches: "MdlPresentationProperties": ".types", "MdlPresentationRequest": ".types", "MdlPresentationRequestProperties": ".types", - @@ -5228,6 +5234,7 @@ _dynamic_imports: typing.Dict[str, str] = { + @@ -5246,6 +5252,7 @@ _dynamic_imports: typing.Dict[str, str] = { "TokenQuota": ".types", "TokenQuotaClientCredentials": ".types", "TokenQuotaConfiguration": ".types", + "TokenProvider": ".token_provider", "TooManyRequestsError": ".errors", - "TwilioProviderConfiguration": ".types", - "TwilioProviderCredentials": ".types", - @@ -5539,6 +5546,8 @@ __all__ = [ + "TooManyRequestsSchema": ".types", + "TooManyRequestsSchemaError": ".types", + @@ -5561,6 +5568,8 @@ __all__ = [ "AssociateOrganizationClientGrantResponseContent", "AsyncApprovalNotificationsChannelsEnum", "AsyncAuth0", @@ -78,15 +91,7 @@ patches: "AttackProtectionCaptchaArkoseResponseContent", "AttackProtectionCaptchaAuthChallengeRequest", "AttackProtectionCaptchaAuthChallengeResponseContent", - @@ -6494,6 +6503,7 @@ __all__ = [ - "CreatedUserAuthenticationMethodTypeEnum", - "CredentialId", - "CustomDomain", - + "CustomDomainHeader", - "CustomDomainCustomClientIpHeader", - "CustomDomainCustomClientIpHeaderEnum", - "CustomDomainProvisioningTypeEnum", - @@ -7749,6 +7759,7 @@ __all__ = [ + @@ -7778,6 +7787,7 @@ __all__ = [ "LogStreamSumoEnum", "LogStreamSumoResponseSchema", "LogStreamSumoSink", @@ -94,7 +99,7 @@ patches: "MdlPresentationProperties", "MdlPresentationRequest", "MdlPresentationRequestProperties", - @@ -7972,6 +7983,7 @@ __all__ = [ + @@ -8001,6 +8011,7 @@ __all__ = [ "TestEventDataContent", "TokenExchangeProfileResponseContent", "TokenExchangeProfileTypeEnum", @@ -187,6 +192,8 @@ patches: AttackProtectionUpdateCaptchaRecaptchaV2, AuthenticationMethodTypeEnum, AuthenticationTypeEnum, + BadRequestSchema, + BadRequestSchemaError, BotDetectionAllowlist, BotDetectionChallengePolicyPasswordFlowEnum, BotDetectionChallengePolicyPasswordResetFlowEnum, @@ -1119,6 +1126,7 @@ patches: CreateVerificationEmailResponseContent, CreatedAuthenticationMethodTypeEnum, CreatedUserAuthenticationMethodTypeEnum, + CredentialDeviceTypeEnum, CredentialId, CustomDomain, CustomDomainCustomClientIpHeader, @@ -1571,6 +1579,8 @@ patches: ExpressConfiguration, ExpressConfigurationOrNull, ExtensibilityEmailProviderCredentials, + FedCmLogin, + FedCmLoginGoogle, FederatedConnectionTokenSet, FlowAction, FlowActionActivecampaign, @@ -1972,6 +1982,8 @@ patches: FlowsVaultConnectionSetupTypeBasicAuthEnum, FlowsVaultConnectionSetupTypeOauthClientCredentialsEnum, FlowsVaultConnectionSummary, + ForbiddenSchema, + ForbiddenSchemaError, FormBlock, FormBlockDivider, FormBlockDividerConfig, @@ -2592,9 +2604,13 @@ patches: TokenQuota, TokenQuotaClientCredentials, TokenQuotaConfiguration, + TooManyRequestsSchema, + TooManyRequestsSchemaError, TwilioProviderConfiguration, TwilioProviderCredentials, TwilioProviderDeliveryMethodEnum, + UnauthorizedSchema, + UnauthorizedSchemaError, UniversalLoginExperienceEnum, UpdateActionBindingsResponseContent, UpdateActionModuleResponseContent, @@ -2921,6 +2937,8 @@ patches: "AuthenticationMethodTypeEnum": ".types", "AuthenticationTypeEnum": ".types", "BadRequestError": ".errors", + "BadRequestSchema": ".types", + "BadRequestSchemaError": ".types", "BotDetectionAllowlist": ".types", "BotDetectionChallengePolicyPasswordFlowEnum": ".types", "BotDetectionChallengePolicyPasswordResetFlowEnum": ".types", @@ -3855,6 +3873,7 @@ patches: "CreateVerificationEmailResponseContent": ".types", "CreatedAuthenticationMethodTypeEnum": ".types", "CreatedUserAuthenticationMethodTypeEnum": ".types", + "CredentialDeviceTypeEnum": ".types", "CredentialId": ".types", "CustomDomain": ".types", "CustomDomainHeader": ".management_client", @@ -4311,6 +4330,8 @@ patches: "ExpressConfiguration": ".types", "ExpressConfigurationOrNull": ".types", "ExtensibilityEmailProviderCredentials": ".types", + "FedCmLogin": ".types", + "FedCmLoginGoogle": ".types", "FederatedConnectionTokenSet": ".types", "FlowAction": ".types", "FlowActionActivecampaign": ".types", @@ -4713,6 +4734,8 @@ patches: "FlowsVaultConnectionSetupTypeOauthClientCredentialsEnum": ".types", "FlowsVaultConnectionSummary": ".types", "ForbiddenError": ".errors", + "ForbiddenSchema": ".types", + "ForbiddenSchemaError": ".types", "FormBlock": ".types", "FormBlockDivider": ".types", "FormBlockDividerConfig": ".types", @@ -5342,10 +5365,14 @@ patches: "TokenQuotaConfiguration": ".types", "TokenProvider": ".token_provider", "TooManyRequestsError": ".errors", + "TooManyRequestsSchema": ".types", + "TooManyRequestsSchemaError": ".types", "TwilioProviderConfiguration": ".types", "TwilioProviderCredentials": ".types", "TwilioProviderDeliveryMethodEnum": ".types", "UnauthorizedError": ".errors", + "UnauthorizedSchema": ".types", + "UnauthorizedSchemaError": ".types", "UniversalLoginExperienceEnum": ".types", "UpdateActionBindingsResponseContent": ".types", "UpdateActionModuleResponseContent": ".types", @@ -5673,6 +5700,8 @@ patches: "AuthenticationMethodTypeEnum", "AuthenticationTypeEnum", "BadRequestError", + "BadRequestSchema", + "BadRequestSchemaError", "BotDetectionAllowlist", "BotDetectionChallengePolicyPasswordFlowEnum", "BotDetectionChallengePolicyPasswordResetFlowEnum", @@ -6607,9 +6636,9 @@ patches: "CreateVerificationEmailResponseContent", "CreatedAuthenticationMethodTypeEnum", "CreatedUserAuthenticationMethodTypeEnum", + "CredentialDeviceTypeEnum", "CredentialId", "CustomDomain", - "CustomDomainHeader", "CustomDomainCustomClientIpHeader", "CustomDomainCustomClientIpHeaderEnum", "CustomDomainProvisioningTypeEnum", @@ -7063,6 +7092,8 @@ patches: "ExpressConfiguration", "ExpressConfigurationOrNull", "ExtensibilityEmailProviderCredentials", + "FedCmLogin", + "FedCmLoginGoogle", "FederatedConnectionTokenSet", "FlowAction", "FlowActionActivecampaign", @@ -7465,6 +7496,8 @@ patches: "FlowsVaultConnectionSetupTypeOauthClientCredentialsEnum", "FlowsVaultConnectionSummary", "ForbiddenError", + "ForbiddenSchema", + "ForbiddenSchemaError", "FormBlock", "FormBlockDivider", "FormBlockDividerConfig", @@ -8094,10 +8127,14 @@ patches: "TokenQuotaClientCredentials", "TokenQuotaConfiguration", "TooManyRequestsError", + "TooManyRequestsSchema", + "TooManyRequestsSchemaError", "TwilioProviderConfiguration", "TwilioProviderCredentials", "TwilioProviderDeliveryMethodEnum", "UnauthorizedError", + "UnauthorizedSchema", + "UnauthorizedSchemaError", "UniversalLoginExperienceEnum", "UpdateActionBindingsResponseContent", "UpdateActionModuleResponseContent", @@ -8321,3 +8358,842 @@ patches: "users", "verifiable_credentials", ] + - id: patch-f182694f + content_hash: sha256:5b0050902cba2aa5b86585d4eabba3987354307a1721cf12a9a94422ee371470 + original_commit: f182694f50720cacb568ff5c7a1894b0dd972373 + original_message: "fix: Add top-level `py.typed` marker to resolve IDE import errors (#829)" + original_author: Snehil Kishore + base_generation: 812b8ca16fc2740001f9839ce5c88f85fed87c6e + files: + - src/auth0/py.typed + patch_content: |+ + From f182694f50720cacb568ff5c7a1894b0dd972373 Mon Sep 17 00:00:00 2001 + From: Snehil Kishore + Date: Mon, 4 May 2026 15:36:32 +0530 + Subject: [PATCH] fix: Add top-level `py.typed` marker to resolve IDE import + errors (#829) + + ## Changes + + - Adds a `py.typed` marker at the root package level + (`src/auth0/py.typed`). + + The marker previously only existed under `src/auth0/management/`, + causing IDEs like PyCharm to fall back to outdated [typeshed + stubs](https://github.com/python/typeshed/pull/14697) and report + unresolved imports for `ManagementClient`, `ApiError`, and other + classes. A root-level marker signals IDEs to use the package's own + inline types instead. + + Closes #824 + Related: #804, #793 + --- + .fernignore | 3 ++- + src/auth0/py.typed | 0 + 2 files changed, 2 insertions(+), 1 deletion(-) + create mode 100644 src/auth0/py.typed + + diff --git a/.fernignore b/.fernignore + index f0e9481..9c29793 100644 + --- a/.fernignore + +++ b/.fernignore + @@ -16,8 +16,9 @@ CHANGELOG.md + src/auth0/authentication/ + tests/authentication/ + + -# Root auth0 __init__.py + +# Root auth0 __init__.py and py.typed marker + src/auth0/__init__.py + +src/auth0/py.typed + + # Telemetry customization (Auth0 format with dynamic versioning) + src/auth0/management/core/client_wrapper.py + diff --git a/src/auth0/py.typed b/src/auth0/py.typed + new file mode 100644 + index 0000000..e69de29 + -- + 2.52.0 + + theirs_snapshot: + src/auth0/py.typed: "" + user_owned: true + - id: patch-1026b4d8 + content_hash: sha256:d1944b0fa60d6251e0f6411e9ea7255795874b63e979590195c9c52cb9e48c77 + original_commit: 1026b4d84790f1037f99df904ddf58d68f944224 + original_message: Release 5.4.0 (#838) + original_author: Snehil Kishore + base_generation: 812b8ca16fc2740001f9839ce5c88f85fed87c6e + files: + - .version + - CHANGELOG.md + - pyproject.toml + patch_content: |+ + From 1026b4d84790f1037f99df904ddf58d68f944224 Mon Sep 17 00:00:00 2001 + From: Snehil Kishore + Date: Mon, 4 May 2026 16:34:45 +0530 + Subject: [PATCH] Release 5.4.0 (#838) + + **Added** + - chore: Add events module, async token support, and connection retry + resilience [\#835](https://github.com/auth0/auth0-python/pull/835) + ([fern-api[bot]](https://github.com/apps/fern-api)) + + **Changed** + - [fern-replay] Initialize Replay for SDK customizations + [\#833](https://github.com/auth0/auth0-python/pull/833) + ([fern-api[bot]](https://github.com/apps/fern-api), + [developerkunal](https://github.com/developerkunal)) + + **Fixed** + - fix: Add top-level `py.typed` marker to resolve IDE import errors + [\#829](https://github.com/auth0/auth0-python/pull/829) + ([kishore7snehil](https://github.com/kishore7snehil)) + --- + .version | 2 +- + CHANGELOG.md | 12 ++++++++++++ + pyproject.toml | 2 +- + 3 files changed, 14 insertions(+), 2 deletions(-) + + diff --git a/.version b/.version + index e230c83..1e20ec3 100644 + --- a/.version + +++ b/.version + @@ -1 +1 @@ + -5.3.0 + \ No newline at end of file + +5.4.0 + \ No newline at end of file + diff --git a/CHANGELOG.md b/CHANGELOG.md + index 061116a..025b731 100644 + --- a/CHANGELOG.md + +++ b/CHANGELOG.md + @@ -1,5 +1,17 @@ + # Change Log + + +## [5.4.0](https://github.com/auth0/auth0-python/tree/5.4.0) (2026-05-04) + +[Full Changelog](https://github.com/auth0/auth0-python/compare/5.3.0...5.4.0) + + + +**Added** + +- chore: Add events module, async token support, and connection retry resilience [\#835](https://github.com/auth0/auth0-python/pull/835) ([fern-api[bot]](https://github.com/apps/fern-api)) + + + +**Changed** + +- [fern-replay] Initialize Replay for SDK customizations [\#833](https://github.com/auth0/auth0-python/pull/833) ([fern-api[bot]](https://github.com/apps/fern-api), [developerkunal](https://github.com/developerkunal)) + + + +**Fixed** + +- fix: Add top-level `py.typed` marker to resolve IDE import errors [\#829](https://github.com/auth0/auth0-python/pull/829) ([kishore7snehil](https://github.com/kishore7snehil)) + + + ## [5.3.0](https://github.com/auth0/auth0-python/tree/5.3.0) (2026-04-09) + [Full Changelog](https://github.com/auth0/auth0-python/compare/5.2.0...5.3.0) + + diff --git a/pyproject.toml b/pyproject.toml + index eabea62..c96a12b 100644 + --- a/pyproject.toml + +++ b/pyproject.toml + @@ -3,7 +3,7 @@ name = "auth0-python" + + [tool.poetry] + name = "auth0-python" + -version = "5.3.0" + +version = "5.4.0" + description = "Auth0 Python SDK - Management and Authentication APIs" + readme = "README.md" + authors = ["Auth0 "] + -- + 2.52.0 + + theirs_snapshot: + .version: 5.4.0 + CHANGELOG.md: | + # Change Log + + ## [5.4.0](https://github.com/auth0/auth0-python/tree/5.4.0) (2026-05-04) + [Full Changelog](https://github.com/auth0/auth0-python/compare/5.3.0...5.4.0) + + **Added** + - chore: Add events module, async token support, and connection retry resilience [\#835](https://github.com/auth0/auth0-python/pull/835) ([fern-api[bot]](https://github.com/apps/fern-api)) + + **Changed** + - [fern-replay] Initialize Replay for SDK customizations [\#833](https://github.com/auth0/auth0-python/pull/833) ([fern-api[bot]](https://github.com/apps/fern-api), [developerkunal](https://github.com/developerkunal)) + + **Fixed** + - fix: Add top-level `py.typed` marker to resolve IDE import errors [\#829](https://github.com/auth0/auth0-python/pull/829) ([kishore7snehil](https://github.com/kishore7snehil)) + + ## [5.3.0](https://github.com/auth0/auth0-python/tree/5.3.0) (2026-04-09) + [Full Changelog](https://github.com/auth0/auth0-python/compare/5.2.0...5.3.0) + + **Added** + - feat: Add CIMD support, organization connections, group deletion, refresh token listing; remove AOL/Flickr/Yammer providers [\#816](https://github.com/auth0/auth0-python/pull/816) ([fern-api[bot]](https://github.com/apps/fern-api)) + - feat:Add `Auth0-Custom-Domain` header support for Multiple Custom Domains (MCD) [\#799](https://github.com/auth0/auth0-python/pull/799) ([kishore7snehil](https://github.com/kishore7snehil)) + + ## [5.2.0](https://github.com/auth0/auth0-python/tree/5.2.0) (2026-03-30) + [Full Changelog](https://github.com/auth0/auth0-python/compare/5.1.0...5.2.0) + + **⚠️ Breaking: Python 3.8 support dropped** + - Python 3.8 reached end-of-life in October 2024. This release requires **Python >=3.9.2**. Users on Python 3.8 should remain on v5.1.0 until they upgrade their Python version. [\#808](https://github.com/auth0/auth0-python/pull/808) ([kishore7snehil](https://github.com/kishore7snehil)) + + **Added** + - feat: Add default domain endpoints, connection key provisioning, tenant SCIM listing; remove MiiCard/Renren providers [\#801](https://github.com/auth0/auth0-python/pull/801) ([fern-api[bot]](https://github.com/apps/fern-api)) + - feat: Add client_info support for custom telemetry in Authentication and Management clients [\#802](https://github.com/auth0/auth0-python/pull/802) ([kishore7snehil](https://github.com/kishore7snehil)) + - feat: Add SDK logging infrastructure with configurable log levels and header redaction [\#785](https://github.com/auth0/auth0-python/pull/785) ([fern-api[bot]](https://github.com/apps/fern-api)) + + **Fixed** + - fix: Pagination page advancement incorrectly skipping pages [\#785](https://github.com/auth0/auth0-python/pull/785) ([fern-api[bot]](https://github.com/apps/fern-api)) + + **Changed** + - chore: Update ruff, aiohttp, cryptography, urllib3, codecov-action; replace Snyk with SCA scan [\#808](https://github.com/auth0/auth0-python/pull/808) ([kishore7snehil](https://github.com/kishore7snehil)) + + ## [5.1.0](https://github.com/auth0/auth0-python/tree/5.1.0) (2026-02-11) + [Full Changelog](https://github.com/auth0/auth0-python/compare/5.0.0...5.1.0) + + **Fixed** + - fix: Remove placeholder defaults from optional parameters + additional updates [\#778](https://github.com/auth0/auth0-python/pull/778) ([fern-api[bot]](https://github.com/apps/fern-api)) + + ## [5.0.0](https://github.com/auth0/auth0-python/tree/5.0.0) (2026-02-04) + [Full Changelog](https://github.com/auth0/auth0-python/compare/4.13.0...5.0.0) + + 📢 This is the official v5.0.0 release with significant improvements and breaking changes. + + **Breaking Changes** + + - **Complete rewrite of Management API client** - Generated from Auth0's OpenAPI specifications using [Fern](https://buildwithfern.com) + - **Python 3.7 support dropped** - Minimum required version is now Python 3.8 + - **Management API client restructured** - Methods organized into modular sub-clients for better discoverability + - **Method signatures changed** - Consistent and predictable naming conventions across all endpoints + - **Response types changed** - Strongly-typed Pydantic models replace generic dictionaries + - **Import paths changed** - `from auth0.management.core.api_error import ApiError` instead of `from auth0.exceptions import Auth0Error` + - **Pagination defaults changed** - `include_totals=True` is now the default for list operations + - **Client initialization simplified** - `ManagementClient` takes `domain` instead of full `base_url` + + **Added** + + - First-class async support with `AsyncAuth0` and `AsyncManagementClient` + - Automatic token management with client credentials in `ManagementClient` + - Built-in pagination support with `include_totals=True` by default + - Type-safe request/response objects using Pydantic models + - Better IntelliSense and code completion support + - Comprehensive API reference documentation + - Migration guide for upgrading from v4.x + + **Changed** + + - Management API client fully regenerated using Fern + - Package structure reorganized with hierarchical sub-clients + - Error handling updated to use `ApiError` base class + - Documentation updated with v5 examples + + **Note** + + - Authentication API remains **fully backward compatible** - no changes required + - See [v5_MIGRATION_GUIDE.md](https://github.com/auth0/auth0-python/blob/master/v5_MIGRATION_GUIDE.md) for detailed upgrade instructions + + + ## [4.13.0](https://github.com/auth0/auth0-python/tree/4.13.0) (2025-09-17) + [Full Changelog](https://github.com/auth0/auth0-python/compare/4.12.0...4.13.0) + + **Added** + - fix(backchannel): expose headers on `slow_down` errors (HTTP 429s) [\#744](https://github.com/auth0/auth0-python/pull/744) ([pmalouin](https://github.com/pmalouin)) + + ## [4.12.0](https://github.com/auth0/auth0-python/tree/4.12.0) (2025-09-15) + [Full Changelog](https://github.com/auth0/auth0-python/compare/4.11.0...4.12.0) + + **Added** + - Updates for CIBA with email [\#720](https://github.com/auth0/auth0-python/pull/720) ([adamjmcgrath](https://github.com/adamjmcgrath)) + + ## [4.11.0](https://github.com/auth0/auth0-python/tree/4.11.0) (2025-09-11) + [Full Changelog](https://github.com/auth0/auth0-python/compare/4.10.0...4.11.0) + + **Added** + - feat: Support For Network ACL Endpoints [\#706](https://github.com/auth0/auth0-python/pull/706) ([kishore7snehil](https://github.com/kishore7snehil)) + + **Fixed** + - chore: fix workflow syntax errors and update dependencies [\#724](https://github.com/auth0/auth0-python/pull/724) ([kishore7snehil](https://github.com/kishore7snehil)) + + ## [4.10.0](https://github.com/auth0/auth0-python/tree/4.10.0) (2025-06-05) + [Full Changelog](https://github.com/auth0/auth0-python/compare/4.9.0...4.10.0) + + **Added** + - chore: merge community PRs – bugfixes, features, and dependency upgrades [\#696](https://github.com/auth0/auth0-python/pull/696) ([kishore7snehil](https://github.com/kishore7snehil)) + + **Fixed** + - fix: handle `authorization_details` in back_channel_login [\#695](https://github.com/auth0/auth0-python/pull/695) ([kishore7snehil](https://github.com/kishore7snehil)) + + ## [4.9.0](https://github.com/auth0/auth0-python/tree/4.9.0) (2025-04-01) + [Full Changelog](https://github.com/auth0/auth0-python/compare/4.8.1...4.9.0) + + **Added** + - feat: Federated Connections Support [\#682](https://github.com/auth0/auth0-python/pull/682) ([kishore7snehil](https://github.com/kishore7snehil)) + - Adding Support For CIBA with RAR [\#679](https://github.com/auth0/auth0-python/pull/679) ([kishore7snehil](https://github.com/kishore7snehil)) + + ## [4.8.1](https://github.com/auth0/auth0-python/tree/4.8.1) (2025-02-24) + [Full Changelog](https://github.com/auth0/auth0-python/compare/4.8.0...4.8.1) + + **Fixed** + - Fix: Unauthorized Access Error For PAR [\#671](https://github.com/auth0/auth0-python/pull/671) ([kishore7snehil](https://github.com/kishore7snehil)) + + ## [4.8.0](https://github.com/auth0/auth0-python/tree/4.8.0) (2025-01-29) + [Full Changelog](https://github.com/auth0/auth0-python/compare/4.7.2...4.8.0) + + **Added** + - Adding Support For RAR and JAR Requests [\#659](https://github.com/auth0/auth0-python/pull/659) ([kishore7snehil](https://github.com/kishore7snehil)) + - Adding Support For Back Channel Login [\#643](https://github.com/auth0/auth0-python/pull/643) ([kishore7snehil](https://github.com/kishore7snehil)) + + **Fixed** + - Consolidated Community PRs and Dependency Upgrades [\#660](https://github.com/auth0/auth0-python/pull/660) ([kishore7snehil](https://github.com/kishore7snehil)) + - [fix typo in docstring](https://github.com/auth0/auth0-python/pull/637) ([@CarlosEduR ](https://github.com/CarlosEduR)) + - [Added support for "include_totals" to all_organization_member_roles](https://github.com/auth0/auth0-python/pull/635) ([@jpayton-cx](https://github.com/jpayton-cx)) + - [Fixed Version Table](https://github.com/auth0/auth0-python/pull/633) ([@sanchez](https://github.com/sanchez)) + - [Remove upper bounds on all python dependency versions](https://github.com/auth0/auth0-python/pull/628) ([@ngfeldman](https://github.com/ngfeldman)) + - [Adding secrets to Codecov Action Upload](https://github.com/auth0/auth0-python/pull/624) ([@developerkunal](https://github.com/developerkunal)) + - Updating Dependancies And Workflow Action Versions [\#653](https://github.com/auth0/auth0-python/pull/653) ([kishore7snehil](https://github.com/kishore7snehil)) + - Fixing the Github Workflow Issues [\#644](https://github.com/auth0/auth0-python/pull/644) ([kishore7snehil](https://github.com/kishore7snehil)) + + ## [4.7.2](https://github.com/auth0/auth0-python/tree/4.7.2) (2024-09-10) + [Full Changelog](https://github.com/auth0/auth0-python/compare/4.7.1...4.7.2) + + **Security** + - Update cryptography requirements.txt [\#630](https://github.com/auth0/auth0-python/pull/630) ([duedares-rvj](https://github.com/duedares-rvj)) + + ## [4.7.1](https://github.com/auth0/auth0-python/tree/4.7.1) (2024-02-26) + [Full Changelog](https://github.com/auth0/auth0-python/compare/4.7.0...4.7.1) + + **Security** + - Update cryptography requirements.txt [\#597](https://github.com/auth0/auth0-python/pull/597) ([skjensen](https://github.com/skjensen)) + + ## [4.7.0](https://github.com/auth0/auth0-python/tree/4.7.0) (2023-12-05) + [Full Changelog](https://github.com/auth0/auth0-python/compare/4.6.1...4.7.0) + + **⚠️ BREAKING CHANGES** + - Add python 3.12 support, drop 3.7 [\#562](https://github.com/auth0/auth0-python/pull/562) ([adamjmcgrath](https://github.com/adamjmcgrath)) + + **Added** + - [SDK-4138] Add support for Pushed Authorization Requests (PAR) [\#560](https://github.com/auth0/auth0-python/pull/560) ([adamjmcgrath](https://github.com/adamjmcgrath)) + + ## [4.6.1](https://github.com/auth0/auth0-python/tree/4.6.1) (2023-11-29) + [Full Changelog](https://github.com/auth0/auth0-python/compare/4.6.0...4.6.1) + + **Fixed** + - Fix rest_async and async tests [\#556](https://github.com/auth0/auth0-python/pull/556) ([adamjmcgrath](https://github.com/adamjmcgrath)) + - fix type hint for link_user_account [\#552](https://github.com/auth0/auth0-python/pull/552) ([tzzh](https://github.com/tzzh)) + + ## [4.6.0](https://github.com/auth0/auth0-python/tree/4.6.0) (2023-11-09) + [Full Changelog](https://github.com/auth0/auth0-python/compare/4.5.0...4.6.0) + + **Added** + - [SDK-4544] Add orgs in client credentials support [\#549](https://github.com/auth0/auth0-python/pull/549) ([adamjmcgrath](https://github.com/adamjmcgrath)) + - Authentication API, the Database classs, Add the organization param to the change_password method [\#539](https://github.com/auth0/auth0-python/pull/539) ([shchotse](https://github.com/shchotse)) + - Retry all methods on 429 [\#518](https://github.com/auth0/auth0-python/pull/518) ([adamjmcgrath](https://github.com/adamjmcgrath)) + + ## [4.5.0](https://github.com/auth0/auth0-python/tree/4.5.0) (2023-10-20) + [Full Changelog](https://github.com/auth0/auth0-python/compare/4.4.2...4.5.0) + + **Added** + - [SDK-4656] Add fields to all_organization_members [\#537](https://github.com/auth0/auth0-python/pull/537) ([adamjmcgrath](https://github.com/adamjmcgrath)) + + ## [4.4.2](https://github.com/auth0/auth0-python/tree/4.4.2) (2023-08-31) + [Full Changelog](https://github.com/auth0/auth0-python/compare/4.4.1...4.4.2) + + **Fixed** + - Fix python dependency version [\#522](https://github.com/auth0/auth0-python/pull/522) ([adamjmcgrath](https://github.com/adamjmcgrath)) + - Revert publishing types [\#521](https://github.com/auth0/auth0-python/pull/521) ([adamjmcgrath](https://github.com/adamjmcgrath)) + + ## [4.4.1](https://github.com/auth0/auth0-python/tree/4.4.1) (2023-08-21) + [Full Changelog](https://github.com/auth0/auth0-python/compare/4.4.0...4.4.1) + + **Fixed** + - Fix for async types [\#515](https://github.com/auth0/auth0-python/pull/515) ([adamjmcgrath](https://github.com/adamjmcgrath)) + + ## [4.4.0](https://github.com/auth0/auth0-python/tree/4.4.0) (2023-07-25) + [Full Changelog](https://github.com/auth0/auth0-python/compare/4.3.0...4.4.0) + + **Added** + - [SDK-4394] Add organization name validation [\#507](https://github.com/auth0/auth0-python/pull/507) ([adamjmcgrath](https://github.com/adamjmcgrath)) + - Add type hints to `management` [\#497](https://github.com/auth0/auth0-python/pull/497) ([Viicos](https://github.com/Viicos)) + + **Fixed** + - Fix asyncify for users client where token is not required [\#506](https://github.com/auth0/auth0-python/pull/506) ([cgearing](https://github.com/cgearing)) + + ## [4.3.0](https://github.com/auth0/auth0-python/tree/4.3.0) (2023-06-26) + [Full Changelog](https://github.com/auth0/auth0-python/compare/4.2.0...4.3.0) + + **Added** + - Add forwardedFor option to password grant login [\#501](https://github.com/auth0/auth0-python/pull/501) ([adamjmcgrath](https://github.com/adamjmcgrath)) + - Add connections.all name parameter [\#500](https://github.com/auth0/auth0-python/pull/500) ([adamjmcgrath](https://github.com/adamjmcgrath)) + - Add type hints to base and `authentication` [\#472](https://github.com/auth0/auth0-python/pull/472) ([Viicos](https://github.com/Viicos)) + + **Fixed** + - Fix async auth client [\#499](https://github.com/auth0/auth0-python/pull/499) ([adamjmcgrath](https://github.com/adamjmcgrath)) + - Fix update_template_universal_login [\#495](https://github.com/auth0/auth0-python/pull/495) ([adamjmcgrath](https://github.com/adamjmcgrath)) + + ## [4.2.0](https://github.com/auth0/auth0-python/tree/4.2.0) (2023-05-02) + [Full Changelog](https://github.com/auth0/auth0-python/compare/4.1.1...4.2.0) + + **Added** + - Add cache_ttl param to AsymmetricSignatureVerifier [\#490](https://github.com/auth0/auth0-python/pull/490) ([matei-radu](https://github.com/matei-radu)) + + ## [4.1.1](https://github.com/auth0/auth0-python/tree/4.1.1) (2023-04-13) + [Full Changelog](https://github.com/auth0/auth0-python/compare/4.1.0...4.1.1) + + **Fixed** + - Make pw realm params optional [\#484](https://github.com/auth0/auth0-python/pull/484) ([adamjmcgrath](https://github.com/adamjmcgrath)) + - Fix intellisense on Auth0 class [\#486](https://github.com/auth0/auth0-python/pull/486) ([adamjmcgrath](https://github.com/adamjmcgrath)) + + ## [4.1.0](https://github.com/auth0/auth0-python/tree/4.1.0) (2023-03-14) + [Full Changelog](https://github.com/auth0/auth0-python/compare/4.0.0...4.1.0) + + **Added** + - Add branding theme endpoints [\#477](https://github.com/auth0/auth0-python/pull/477) ([adamjmcgrath](https://github.com/adamjmcgrath)) + - [SDK-4011] Add API2 Factor Management Endpoints [\#476](https://github.com/auth0/auth0-python/pull/476) ([adamjmcgrath](https://github.com/adamjmcgrath)) + - Use declarative setup with `pyproject.toml` [\#474](https://github.com/auth0/auth0-python/pull/474) ([Viicos](https://github.com/Viicos)) + + ## [4.0.0](https://github.com/auth0/auth0-python/tree/4.0.0) (2023-01-19) + [Full Changelog](https://github.com/auth0/auth0-python/compare/3.24.1...4.0.0) + + **Added** + - Add support for private_key_jwt [\#456](https://github.com/auth0/auth0-python/pull/456) ([adamjmcgrath](https://github.com/adamjmcgrath)) + - Add support for managing client credentials [\#459](https://github.com/auth0/auth0-python/pull/459) ([adamjmcgrath](https://github.com/adamjmcgrath)) + + **Security** + - Update pyjwt [\#460](https://github.com/auth0/auth0-python/pull/460) ([adamjmcgrath](https://github.com/adamjmcgrath)) + + **Changed** + - Publish Python Support Schedule [\#454](https://github.com/auth0/auth0-python/pull/454) ([evansims](https://github.com/evansims)) + + **⚠️ BREAKING CHANGES** + - Remove deprecated methods [\#461](https://github.com/auth0/auth0-python/pull/461) ([adamjmcgrath](https://github.com/adamjmcgrath)) + - Remove v3 folder [\#462](https://github.com/auth0/auth0-python/pull/462) ([adamjmcgrath](https://github.com/adamjmcgrath)) + + See the [V4_MIGRATION_GUIDE](https://github.com/auth0/auth0-python/blob/master/V4_MIGRATION_GUIDE.md) for more info. + + ## [3.24.1](https://github.com/auth0/auth0-python/tree/3.24.1) (2023-01-19) + [Full Changelog](https://github.com/auth0/auth0-python/compare/3.24.0...3.24.1) + + **Fixed** + - Remove unnecessary type param from update_template_universal_login [\#463](https://github.com/auth0/auth0-python/pull/463) ([adamjmcgrath](https://github.com/adamjmcgrath)) + + ## [3.24.0](https://github.com/auth0/auth0-python/tree/3.24.0) (2022-10-17) + [Full Changelog](https://github.com/auth0/auth0-python/compare/3.23.1...3.24.0) + + **Added** + - [SDK-3714] Async token verifier [\#445](https://github.com/auth0/auth0-python/pull/445) ([adamjmcgrath](https://github.com/adamjmcgrath)) + - Add AsyncAuth0 to share a session among many services [\#443](https://github.com/auth0/auth0-python/pull/443) ([adamjmcgrath](https://github.com/adamjmcgrath)) + + **Fixed** + - Bugfix 414 missing import [\#442](https://github.com/auth0/auth0-python/pull/442) ([adamjmcgrath](https://github.com/adamjmcgrath)) + + ## [3.23.1](https://github.com/auth0/auth0-python/tree/3.23.1) (2022-06-10) + [Full Changelog](https://github.com/auth0/auth0-python/compare/3.23.0...3.23.1) + + **Fixed** + - Pass rest_options through Auth0 constructor [\#354](https://github.com/auth0/auth0-python/pull/354) ([adamjmcgrath](https://github.com/adamjmcgrath)) + + + 3.23.0 + ------------------ + + **Added** + - Asyncio Support [\#312](https://github.com/auth0/auth0-python/pull/312) ([adamjmcgrath](https://github.com/adamjmcgrath)) + - Add `/api/v2/branding` endpoints support [\#313](https://github.com/auth0/auth0-python/pull/313) ([evansims](https://github.com/evansims)) + + 3.22.0 + ------------------ + + **Added** + - [SDK-3174] Add `DELETE` method for `/api/v2/users/{id}/authenticators` endpoint [\#301](https://github.com/auth0/auth0-python/pull/301) ([akmjenkins](https://github.com/akmjenkins)) + - [SDK-3175] Return token claims in TokenVerifier.verify() [\#273](https://github.com/auth0/auth0-python/pull/273) ([bisguzar](https://github.com/bisguzar)) + + **Fixed** + - [SDK-3173] Default to 'None' for `deployed` on GET /api/v2/actions/actions endpoint [\#309](https://github.com/auth0/auth0-python/pull/309) ([evansims](https://github.com/evansims)) + + 3.21.0 + ------------------ + + **Added** + - Add pagination to device credentials [\#300](https://github.com/auth0/auth0-python/pull/300) ([fionnulak](https://github.com/fionnulak)) + + 3.20.0 + ------------------ + + **Added** + - Add attack protection endpoints [\#303](https://github.com/auth0/auth0-python/pull/303) ([adamjmcgrath](https://github.com/adamjmcgrath)) + + 3.19.0 + ------------------ + + **Added** + - Add actions to Auth0 class [\#293](https://github.com/auth0/auth0-python/pull/293) ([jrzerr](https://github.com/jrzerr)) + - Added support for prompts API [\#291](https://github.com/auth0/auth0-python/pull/291) ([lorinkoz](https://github.com/lorinkoz)) + + **Changed** + - Remove references to ID token in generic token classes [\#295](https://github.com/auth0/auth0-python/pull/295) ([lbalmaceda](https://github.com/lbalmaceda)) + + **Fixed** + - Use assertNotEqual instead of assertNotEquals for Python 3.11 compatibility. [\#294](https://github.com/auth0/auth0-python/pull/294) ([tirkarthi](https://github.com/tirkarthi)) + + 3.18.0 + ------------------ + + **Added** + - [SDK-2720] Add support for actions APIs [\#289](https://github.com/auth0/auth0-python/pull/289) ([jimmyjames](https://github.com/jimmyjames)) + + 3.17.0 + ------------------ + + **Added** + - Make the CI fail when the docs syntax is invalid [\#287](https://github.com/auth0/auth0-python/pull/287) ([lbalmaceda](https://github.com/lbalmaceda)) + - [SDK-2687] Implement automatic rate-limit handling [\#285](https://github.com/auth0/auth0-python/pull/285) ([evansims](https://github.com/evansims)) + - Use Sphinx to generate API docs [\#281](https://github.com/auth0/auth0-python/pull/281) ([lbalmaceda](https://github.com/lbalmaceda)) + - Add Passwordless Login function [\#279](https://github.com/auth0/auth0-python/pull/279) ([lbalmaceda](https://github.com/lbalmaceda)) + - [SDK 2665] Update endpoint methods to support 'from' and 'take' checkpoint pagination parameters, where appropriate [\#278](https://github.com/auth0/auth0-python/pull/278) ([evansims](https://github.com/evansims)) + + **Deprecated** + - Deprecate /oauth/ro for passwordless [\#280](https://github.com/auth0/auth0-python/pull/280) ([lbalmaceda](https://github.com/lbalmaceda)) + + 3.16.2 + ------------------ + + **Fixed** + - Re-Route Job Results endpoint [\#275](https://github.com/auth0/auth0-python/pull/275) ([lbalmaceda](https://github.com/lbalmaceda)) + + 3.16.1 + ------------------ + + **Fixed** + - Remove requirements.txt file [\#270](https://github.com/auth0/auth0-python/pull/270) ([lbalmaceda](https://github.com/lbalmaceda)) + - Repair Organisation get by name URL. [\#269](https://github.com/auth0/auth0-python/pull/269) ([queenvictoria](https://github.com/queenvictoria)) + + 3.16.0 + ------------------ + + **Added** + - Add access token validation guidance for organizations [\#262](https://github.com/auth0/auth0-python/pull/262) ([lbalmaceda](https://github.com/lbalmaceda)) + - Add support for Organization MGMT API endpoints [SDK-2439] [\#261](https://github.com/auth0/auth0-python/pull/261) ([lbalmaceda](https://github.com/lbalmaceda)) + - Add scope to refresh_token [\#256](https://github.com/auth0/auth0-python/pull/256) ([criles25](https://github.com/criles25)) + - Allow configuration of outgoing request protocol [\#254](https://github.com/auth0/auth0-python/pull/254) ([garry-jeromson](https://github.com/garry-jeromson)) + + 3.15.0 + ------------------ + + **Added** + - Add support for organizations feature [\#258](https://github.com/auth0/auth0-python/pull/258) ([jimmyjames](https://github.com/jimmyjames)) + + 3.14.0 + ------------------ + + **Added** + - Adds a new user method invalidate_remembered_browsers [\#248](https://github.com/auth0/auth0-python/pull/248) ([kpurdon](https://github.com/kpurdon)) + + 3.13.0 + ------------------ + + **Added** + - Add support for Log Streams API [\#236](https://github.com/auth0/auth0-python/pull/236) ([lbalmaceda](https://github.com/lbalmaceda)) + + **Fixed** + - Fix imports on the management/__init__.py file [\#235](https://github.com/auth0/auth0-python/pull/235) ([matthewarmand](https://github.com/matthewarmand)) + + 3.12.0 + ------------------ + + **Added** + - Add missing user profile properties to the signup endpoint [\#231](https://github.com/auth0/auth0-python/pull/231) ([lbalmaceda](https://github.com/lbalmaceda)) + - Add Hooks management API [\#227](https://github.com/auth0/auth0-python/pull/227) ([guillp](https://github.com/guillp)) + - Add missing external_id property to the import users job [\#222](https://github.com/auth0/auth0-python/pull/222) ([lbalmaceda](https://github.com/lbalmaceda)) + + **Changed** + - Remove iat claim value check [\#223](https://github.com/auth0/auth0-python/pull/223) ([lbalmaceda](https://github.com/lbalmaceda)) + + **Fixed** + - Skip sending optional parameters on POST request when unspecified [\#230](https://github.com/auth0/auth0-python/pull/230) ([lbalmaceda](https://github.com/lbalmaceda)) + + 3.11.0 + ------------------ + + **Added** + - Add send_completion_email to users import job [\#220](https://github.com/auth0/auth0-python/pull/220) ([lbalmaceda](https://github.com/lbalmaceda)) + - Expose the time at which the Rate Limit will reset [\#219](https://github.com/auth0/auth0-python/pull/219) ([lbalmaceda](https://github.com/lbalmaceda)) + + **Removed** + - Add deprecation note for DELETE /users (all users) [\#217](https://github.com/auth0/auth0-python/pull/217) ([lbalmaceda](https://github.com/lbalmaceda)) + + 3.10.0 + ------------------ + + **Security** + - Improved OIDC compliance [\#213](https://github.com/auth0/auth0-python/pull/213) ([lbalmaceda](https://github.com/lbalmaceda)) + + **Added** + - Add connect/read timeout option [\#215](https://github.com/auth0/auth0-python/pull/215) ([lbalmaceda](https://github.com/lbalmaceda)) + + 3.9.2 + ------------------ + + **Fixed** + - Accept client_secret as passwordless/start param [\#211](https://github.com/auth0/auth0-python/pull/211) ([lbalmaceda](https://github.com/lbalmaceda)) + + 3.9.1 + ------------------ + + **Changed** + - Update minimum "requests" version to 2.14.0 [\#204](https://github.com/auth0/auth0-python/pull/204) ([lbalmaceda](https://github.com/lbalmaceda)) + + 3.9.0 + ------------------ + + **Added** + - Add Roles and Permissions endpoints [\#202](https://github.com/auth0/auth0-python/pull/202) ([lbalmaceda](https://github.com/lbalmaceda)) + + 3.8.1 + ------------------ + + July 18, 2019: This release included an unintentionally breaking change affecting those users that were manually parsing the response from GET requests. e.g. /userinfo or /authorize. The `AuthenticationBase#get` method was incorrectly parsing the request result into a String. + + From this release on, making a GET request returns a Dictionary instead. + + **Breaking Change** + - Fix request creation when headers are the default [\#198](https://github.com/auth0/auth0-python/pull/198) ([lbalmaceda](https://github.com/lbalmaceda)). + + + 3.8.0 + ------------------ + + **Fixed** + - rules_config.unset fix [\#195](https://github.com/auth0/auth0-python/pull/195) ([jhunken](https://github.com/jhunken)) + + **Security** + - Update requests dependency to latest version [\#196](https://github.com/auth0/auth0-python/pull/196) ([lbalmaceda](https://github.com/lbalmaceda)) + + 3.7.2 + ------------------ + + **Fixed** + - Fix HTTP method used for rotating Client secret [\#191](https://github.com/auth0/auth0-python/pull/191) ([lbalmaceda](https://github.com/lbalmaceda)) + + 3.7.1 + ------------------ + + **Fixed** + - Update telemetry format [\#187](https://github.com/auth0/auth0-python/pull/187) ([lbalmaceda](https://github.com/lbalmaceda)) + + + 3.7.0 + ------------------ + + **Changed** + - Remove default value for search_engine [\#185](https://github.com/auth0/auth0-python/pull/185) ([lbalmaceda](https://github.com/lbalmaceda)) + + + 3.6.1 + ------------------ + + **Fixed** + - Fixed Management API Grants class instantiation [\#179](https://github.com/auth0/auth0-python/pull/179) ([beck3905](https://github.com/beck3905)) + + + 3.6.0 + ------------------ + + **Added** + - Add grants, custom domains, rules_configs to API [\#177](https://github.com/auth0/auth0-python/pull/177) ([sagnew-dg](https://github.com/sagnew-dg)) + + + 3.5.0 + ------------------ + + **Added** + - Add Revoke Refresh Token endpoint [\#170](https://github.com/auth0/auth0-python/pull/170) ([lbalmaceda](https://github.com/lbalmaceda)) + - Add /dbconnections/signup with username and metadata [\#169](https://github.com/auth0/auth0-python/pull/169) ([lbalmaceda](https://github.com/lbalmaceda)) + + + 3.4.0 + ------------------ + + **Added** + - Add `client_id` param to ClientGrants.all [\#159](https://github.com/auth0/auth0-python/pull/159) ([danishprakash](https://github.com/danishprakash)) + - Add telemetry headers to AuthenticationBase [\#152](https://github.com/auth0/auth0-python/pull/152) ([crgk](https://github.com/crgk)) + - Add pre-commit pypgrade hook and update supported versions [\#124](https://github.com/auth0/auth0-python/pull/124) ([hugovk](https://github.com/hugovk)) + - Implemented delete_user_by_email and test for connections [\#122](https://github.com/auth0/auth0-python/pull/122) ([runz0rd](https://github.com/runz0rd)) + - Adds user export job creation. [\#112](https://github.com/auth0/auth0-python/pull/112) ([dmark](https://github.com/dmark)) + + **Changed** + - String Formatting Updated [\#141](https://github.com/auth0/auth0-python/pull/141) ([vkmrishad](https://github.com/vkmrishad)) + - Uses Python built-in modules to retrieve Python and auth0-python version number [\#125](https://github.com/auth0/auth0-python/pull/125) ([edawine](https://github.com/edawine)) + + **Fixed** + - Stop lower-casing email on user search [\#167](https://github.com/auth0/auth0-python/pull/167) ([helmus](https://github.com/helmus)) + - Always include Content-Type header in management requests [\#158](https://github.com/auth0/auth0-python/pull/158) ([crgk](https://github.com/crgk)) + + + 3.3.0 + ------------------ + + **Added** + - Add pagination to Clients and Connections + - Add pagination to Client Grants, Resource Servers and Rules + - Add Email-Templates Management API endpoints + + **Fixed** + - Replace default mutable arguments with None + - Fix JSON error message handling for Management API + + + 3.2.2 + ------------------ + + **Fixed** + - Upload the correct package contents to Pypi. + + + 3.2.0 + ------------------ + + **Added** + - Raise Auth0Error for bad status code [\#98](https://github.com/auth0/auth0-python/pull/98) ([beck3905](https://github.com/beck3905)) + + **Fixed** + - Correctly throw an exception when handing a text response [\#92](https://github.com/auth0/auth0-python/pull/92) ([benbc](https://github.com/benbc)) + - Instantiate UserBlocks for consistency [\#90](https://github.com/auth0/auth0-python/pull/90) ([mattdodge](https://github.com/mattdodge)) + + 3.1.4 + ------------------ + + Authentication API + - Improve handling of inconsistent API error responses. + + 3.1.3 + ------------------ + + Management API + - Added `upsert` parameter to `import_users` job. + + 3.1.2 + ------------------ + + Authentication API + - Added `refresh_token` method to get_token + + 3.1.0 + ------------------ + + Authentication API + - Added Logout Functionality + + 3.0.0 + ------------------ + + Authentication API + - Added Support for API Authorization. `oauth/token` endpoint + - Client Credentials Grant + - Authorization Code Grant + - Authorization Code PKCE Grant + - Resource Owner Password Realm Grant + - Added Support for API Authorization. `authorize` endpoint + - Authorization Code Grant + + Management API v2 + - Added Support for Guardian + - Added Support to retrieve Logs + - Added Support to manage Resource Servers + - Added Support to manage Client Grants + - Added Support to manage User blocks + pyproject.toml: | + [project] + name = "auth0-python" + + [tool.poetry] + name = "auth0-python" + version = "5.4.0" + description = "Auth0 Python SDK - Management and Authentication APIs" + readme = "README.md" + authors = ["Auth0 "] + license = "MIT" + keywords = ["auth0", "authentication", "authorization", "oauth", "openid"] + + classifiers = [ + "Intended Audience :: Developers", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Operating System :: OS Independent", + "Operating System :: POSIX", + "Operating System :: MacOS", + "Operating System :: POSIX :: Linux", + "Operating System :: Microsoft :: Windows", + "Topic :: Software Development :: Libraries :: Python Modules", + "Typing :: Typed" + ] + packages = [ + { include = "auth0", from = "src"} + ] + + [tool.poetry.urls] + Repository = 'https://github.com/auth0/auth0-python' + Homepage = 'https://auth0.com' + + [tool.poetry.dependencies] + python = ">=3.9.2,<4.0" + httpx = ">=0.21.2" + pydantic = ">= 1.9.2" + pydantic-core = ">=2.18.2" + typing_extensions = ">= 4.0.0" + # Authentication API dependencies + aiohttp = ">=3.11.18" + cryptography = ">=44.0.0" + pyjwt = ">=2.8.0" + requests = ">=2.32.3" + urllib3 = ">=2.3.0" + + [tool.poetry.group.dev.dependencies] + mypy = "==1.13.0" + pytest = "^7.4.0" + pytest-asyncio = "^0.23.5" + pytest-xdist = "^3.6.1" + python-dateutil = "^2.9.0" + types-python-dateutil = "^2.9.0.20240316" + types-requests = "^2.31.0" + ruff = "==0.15.8" + # Authentication API test dependencies + aioresponses = "^0.7.8" + mock = "^5.1.0" + pytest-aiohttp = "^1.0.4" + pytest-cov = "^4.1.0" + responses = ">=0.23.3" + + [tool.pytest.ini_options] + asyncio_mode = "auto" + + [tool.mypy] + plugins = ["pydantic.mypy"] + # Exclude Authentication API, not built for mypy + exclude = ["src/auth0/authentication/"] + + [tool.ruff] + line-length = 120 + + [tool.ruff.lint] + select = [ + "E", # pycodestyle errors + "F", # pyflakes + "I", # isort + ] + ignore = [ + "E402", # Module level import not at top of file + "E501", # Line too long + "E711", # Comparison to `None` should be `cond is not None` + "E712", # Avoid equality comparisons to `True`; use `if ...:` checks + "E721", # Use `is` and `is not` for type comparisons, or `isinstance()` for insinstance checks + "E722", # Do not use bare `except` + "E731", # Do not assign a `lambda` expression, use a `def` + "F821", # Undefined name + "F841" # Local variable ... is assigned to but never used + ] + + [tool.ruff.lint.isort] + section-order = ["future", "standard-library", "third-party", "first-party"] + + [build-system] + requires = ["poetry-core"] + build-backend = "poetry.core.masonry.api" + user_owned: true diff --git a/.fernignore b/.fernignore index 9c297939..6d1ab409 100644 --- a/.fernignore +++ b/.fernignore @@ -20,9 +20,6 @@ tests/authentication/ src/auth0/__init__.py src/auth0/py.typed -# Telemetry customization (Auth0 format with dynamic versioning) -src/auth0/management/core/client_wrapper.py - # Files edited to incorporate both APIs pyproject.toml poetry.lock diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..af948ce7 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,125 @@ +# Contributing + +Thanks for your interest in contributing to this SDK! This document provides guidelines for contributing to the project. + +## Getting Started + +### Prerequisites + +- Python 3.9+ +- pip +- poetry + +### Installation + +Install the project dependencies: + +```bash +poetry install +``` + +### Building + +Build the project: + +```bash +poetry build +``` + +### Testing + +Run the test suite: + +```bash +poetry run pytest +``` + +### Linting and Formatting + +Check code style: + +```bash +poetry run ruff check . +poetry run ruff format . +``` + +### Type Checking + +Run the type checker: + +```bash +poetry run mypy . +``` + +## About Generated Code + +**Important**: Most files in this SDK are automatically generated by [Fern](https://buildwithfern.com) from the API definition. Direct modifications to generated files will be overwritten the next time the SDK is generated. + +### Generated Files + +The following directories contain generated code: +- `src/` - API client classes and types +- Most Python files in the project + +### How to Customize + +If you need to customize the SDK, you have two options: + +#### Option 1: Use `.fernignore` + +For custom code that should persist across SDK regenerations: + +1. Create a `.fernignore` file in the project root +2. Add file patterns for files you want to preserve (similar to `.gitignore` syntax) +3. Add your custom code to those files + +Files listed in `.fernignore` will not be overwritten when the SDK is regenerated. + +For more information, see the [Fern documentation on custom code](https://buildwithfern.com/learn/sdks/overview/custom-code). + +#### Option 2: Contribute to the Generator + +If you want to change how code is generated for all users of this SDK: + +1. The Python SDK generator lives in the [Fern repository](https://github.com/fern-api/fern) +2. Generator code is located at `generators/python-v2/` +3. Follow the [Fern contributing guidelines](https://github.com/fern-api/fern/blob/main/CONTRIBUTING.md) +4. Submit a pull request with your changes to the generator + +This approach is best for: +- Bug fixes in generated code +- New features that would benefit all users +- Improvements to code generation patterns + +## Making Changes + +### Workflow + +1. Create a new branch for your changes +2. Make your modifications +3. Run tests to ensure nothing breaks: `poetry run pytest` +4. Run linting and formatting: `poetry run ruff check .` and `poetry run ruff format .` +5. Run type checking: `poetry run mypy .` +6. Build the project: `poetry build` +7. Commit your changes with a clear commit message +8. Push your branch and create a pull request + +### Commit Messages + +Write clear, descriptive commit messages that explain what changed and why. + +### Code Style + +This project uses automated code formatting and linting. Run `poetry run ruff format .` and `poetry run ruff check .` before committing to ensure your code meets the project's style guidelines. + +## Questions or Issues? + +If you have questions or run into issues: + +1. Check the [Fern documentation](https://buildwithfern.com) +2. Search existing [GitHub issues](https://github.com/fern-api/fern/issues) +3. Open a new issue if your question hasn't been addressed + +## License + +By contributing to this project, you agree that your contributions will be licensed under the same license as the project. diff --git a/reference.md b/reference.md index 01dfba13..fb6bfb5a 100644 --- a/reference.md +++ b/reference.md @@ -1902,6 +1902,14 @@ client.clients.create(
+**fedcm_login:** `typing.Optional[FedCmLogin]` + +
+
+ +
+
+ **refresh_token:** `typing.Optional[ClientRefreshTokenConfiguration]`
@@ -2167,10 +2175,19 @@ client.clients.preview_cimd_metadata(
+Idempotent registration for Client ID Metadata Document (CIMD) clients. +Uses external_client_id as the unique identifier for upsert operations. + +Create: Returns 201 when a new client is created (requires create:clients scope). +Update: Returns 200 when an existing client is updated (requires update:clients scope). - Idempotent registration for Client ID Metadata Document (CIMD) clients. - Uses external_client_id as the unique identifier for upsert operations. - **Create:** Returns 201 when a new client is created (requires \ +This endpoint automatically: +
    +
  • Fetches and validates the metadata document
  • +
  • Maps CIMD fields to Auth0 client configuration
  • +
  • Creates/rotates credentials from the JWKS
  • +
  • Enforces CIMD security policies (HTTPS-only, no shared secrets)
  • +
@@ -2774,6 +2791,14 @@ client.clients.update(
+**fedcm_login:** `typing.Optional[FedCmLogin]` + +
+
+ +
+
+ **refresh_token:** `typing.Optional[ClientRefreshTokenConfiguration]`
@@ -10953,6 +10978,14 @@ client.refresh_tokens.revoke()
+**audience:** `typing.Optional[str]` — Resource server identifier (audience) to scope the revocation. Must be used with both `user_id` and `client_id`. + +
+
+ +
+
+ **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -11413,6 +11446,14 @@ client.resource_servers.create(
+**allow_online_access_with_ephemeral_sessions:** `typing.Optional[bool]` — Whether Online Refresh Tokens can be issued even when sessions are configured as ephemeral (true) or not (false). + +
+
+ +
+
+ **token_lifetime:** `typing.Optional[int]` — Expiration value (in seconds) for access tokens issued for this API from the token endpoint.
@@ -11777,6 +11818,14 @@ client.resource_servers.update(
+**allow_online_access_with_ephemeral_sessions:** `typing.Optional[bool]` — Whether Online Refresh Tokens can be issued even when sessions are configured as ephemeral (true) or not (false). + +
+
+ +
+
+ **token_lifetime:** `typing.Optional[int]` — Expiration value (in seconds) for access tokens issued for this API from the token endpoint.
@@ -14222,7 +14271,7 @@ client.tickets.change_password()
-**result_url:** `typing.Optional[str]` — URL the user will be redirected to in the classic Universal Login experience once the ticket is used. Cannot be specified when using client_id or organization_id. +**result_url:** `typing.Optional[str]` — URL the user will be redirected to in the classic Universal Login experience once the ticket is used. Cannot be specified when using organization_id. May be specified together with client_id when the tenant has a custom password reset page enabled and a password-reset-post-challenge Action bound.
@@ -34782,7 +34831,15 @@ client.users.authentication_methods.create(
-**key_id:** `typing.Optional[str]` — Applies to webauthn authentication methods only. The id of the credential. +**key_id:** `typing.Optional[str]` — Applies to webauthn/passkey authentication methods only. The id of the credential. + +
+
+ +
+
+ +**public_key:** `typing.Optional[str]` — Applies to webauthn/passkey authentication methods only. The public key, which is encoded as base64.
@@ -34790,7 +34847,7 @@ client.users.authentication_methods.create(
-**public_key:** `typing.Optional[str]` — Applies to webauthn authentication methods only. The public key, which is encoded as base64. +**aaguid:** `typing.Optional[str]` — Applies to passkeys only. Authenticator Attestation Globally Unique Identifier
@@ -34806,6 +34863,54 @@ client.users.authentication_methods.create(
+**credential_device_type:** `typing.Optional[CredentialDeviceTypeEnum]` + +
+
+ +
+
+ +**credential_backed_up:** `typing.Optional[bool]` — Applies to passkeys only. Whether the credential was backed up. + +
+
+ +
+
+ +**identity_user_id:** `typing.Optional[str]` — Applies to passkeys only. The ID of the user identity linked with the authentication method. + +
+
+ +
+
+ +**user_agent:** `typing.Optional[str]` — Applies to passkeys only. The user-agent of the browser used to create the passkey. + +
+
+ +
+
+ +**user_handle:** `typing.Optional[str]` — Applies to passkeys only. The user handle of the user identity. + +
+
+ +
+
+ +**transports:** `typing.Optional[typing.List[str]]` — Applies to passkeys only. The transports used by clients to communicate with the authenticator. + +
+
+ +
+
+ **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
diff --git a/src/auth0/management/__init__.py b/src/auth0/management/__init__.py index e20a000e..4fd6bafa 100644 --- a/src/auth0/management/__init__.py +++ b/src/auth0/management/__init__.py @@ -81,6 +81,8 @@ AttackProtectionUpdateCaptchaRecaptchaV2, AuthenticationMethodTypeEnum, AuthenticationTypeEnum, + BadRequestSchema, + BadRequestSchemaError, BotDetectionAllowlist, BotDetectionChallengePolicyPasswordFlowEnum, BotDetectionChallengePolicyPasswordResetFlowEnum, @@ -1013,6 +1015,7 @@ CreateVerificationEmailResponseContent, CreatedAuthenticationMethodTypeEnum, CreatedUserAuthenticationMethodTypeEnum, + CredentialDeviceTypeEnum, CredentialId, CustomDomain, CustomDomainCustomClientIpHeader, @@ -1465,6 +1468,8 @@ ExpressConfiguration, ExpressConfigurationOrNull, ExtensibilityEmailProviderCredentials, + FedCmLogin, + FedCmLoginGoogle, FederatedConnectionTokenSet, FlowAction, FlowActionActivecampaign, @@ -1866,6 +1871,8 @@ FlowsVaultConnectionSetupTypeBasicAuthEnum, FlowsVaultConnectionSetupTypeOauthClientCredentialsEnum, FlowsVaultConnectionSummary, + ForbiddenSchema, + ForbiddenSchemaError, FormBlock, FormBlockDivider, FormBlockDividerConfig, @@ -2486,9 +2493,13 @@ TokenQuota, TokenQuotaClientCredentials, TokenQuotaConfiguration, + TooManyRequestsSchema, + TooManyRequestsSchemaError, TwilioProviderConfiguration, TwilioProviderCredentials, TwilioProviderDeliveryMethodEnum, + UnauthorizedSchema, + UnauthorizedSchemaError, UniversalLoginExperienceEnum, UpdateActionBindingsResponseContent, UpdateActionModuleResponseContent, @@ -2815,6 +2826,8 @@ "AuthenticationMethodTypeEnum": ".types", "AuthenticationTypeEnum": ".types", "BadRequestError": ".errors", + "BadRequestSchema": ".types", + "BadRequestSchemaError": ".types", "BotDetectionAllowlist": ".types", "BotDetectionChallengePolicyPasswordFlowEnum": ".types", "BotDetectionChallengePolicyPasswordResetFlowEnum": ".types", @@ -3749,6 +3762,7 @@ "CreateVerificationEmailResponseContent": ".types", "CreatedAuthenticationMethodTypeEnum": ".types", "CreatedUserAuthenticationMethodTypeEnum": ".types", + "CredentialDeviceTypeEnum": ".types", "CredentialId": ".types", "CustomDomain": ".types", "CustomDomainHeader": ".management_client", @@ -4205,6 +4219,8 @@ "ExpressConfiguration": ".types", "ExpressConfigurationOrNull": ".types", "ExtensibilityEmailProviderCredentials": ".types", + "FedCmLogin": ".types", + "FedCmLoginGoogle": ".types", "FederatedConnectionTokenSet": ".types", "FlowAction": ".types", "FlowActionActivecampaign": ".types", @@ -4607,6 +4623,8 @@ "FlowsVaultConnectionSetupTypeOauthClientCredentialsEnum": ".types", "FlowsVaultConnectionSummary": ".types", "ForbiddenError": ".errors", + "ForbiddenSchema": ".types", + "ForbiddenSchemaError": ".types", "FormBlock": ".types", "FormBlockDivider": ".types", "FormBlockDividerConfig": ".types", @@ -5236,10 +5254,14 @@ "TokenQuotaConfiguration": ".types", "TokenProvider": ".token_provider", "TooManyRequestsError": ".errors", + "TooManyRequestsSchema": ".types", + "TooManyRequestsSchemaError": ".types", "TwilioProviderConfiguration": ".types", "TwilioProviderCredentials": ".types", "TwilioProviderDeliveryMethodEnum": ".types", "UnauthorizedError": ".errors", + "UnauthorizedSchema": ".types", + "UnauthorizedSchemaError": ".types", "UniversalLoginExperienceEnum": ".types", "UpdateActionBindingsResponseContent": ".types", "UpdateActionModuleResponseContent": ".types", @@ -5567,6 +5589,8 @@ def __dir__(): "AuthenticationMethodTypeEnum", "AuthenticationTypeEnum", "BadRequestError", + "BadRequestSchema", + "BadRequestSchemaError", "BotDetectionAllowlist", "BotDetectionChallengePolicyPasswordFlowEnum", "BotDetectionChallengePolicyPasswordResetFlowEnum", @@ -6501,9 +6525,9 @@ def __dir__(): "CreateVerificationEmailResponseContent", "CreatedAuthenticationMethodTypeEnum", "CreatedUserAuthenticationMethodTypeEnum", + "CredentialDeviceTypeEnum", "CredentialId", "CustomDomain", - "CustomDomainHeader", "CustomDomainCustomClientIpHeader", "CustomDomainCustomClientIpHeaderEnum", "CustomDomainProvisioningTypeEnum", @@ -6957,6 +6981,8 @@ def __dir__(): "ExpressConfiguration", "ExpressConfigurationOrNull", "ExtensibilityEmailProviderCredentials", + "FedCmLogin", + "FedCmLoginGoogle", "FederatedConnectionTokenSet", "FlowAction", "FlowActionActivecampaign", @@ -7359,6 +7385,8 @@ def __dir__(): "FlowsVaultConnectionSetupTypeOauthClientCredentialsEnum", "FlowsVaultConnectionSummary", "ForbiddenError", + "ForbiddenSchema", + "ForbiddenSchemaError", "FormBlock", "FormBlockDivider", "FormBlockDividerConfig", @@ -7988,10 +8016,14 @@ def __dir__(): "TokenQuotaClientCredentials", "TokenQuotaConfiguration", "TooManyRequestsError", + "TooManyRequestsSchema", + "TooManyRequestsSchemaError", "TwilioProviderConfiguration", "TwilioProviderCredentials", "TwilioProviderDeliveryMethodEnum", "UnauthorizedError", + "UnauthorizedSchema", + "UnauthorizedSchemaError", "UniversalLoginExperienceEnum", "UpdateActionBindingsResponseContent", "UpdateActionModuleResponseContent", diff --git a/src/auth0/management/client.py b/src/auth0/management/client.py index 8783d6e5..b5c3ebec 100644 --- a/src/auth0/management/client.py +++ b/src/auth0/management/client.py @@ -84,6 +84,9 @@ class Auth0: timeout : typing.Optional[float] The timeout to be used, in seconds, for requests. By default the timeout is 60 seconds, unless a custom httpx client is used, in which case this default is not enforced. + max_retries : typing.Optional[int] + The default maximum number of retries for failed requests. Defaults to 2. Per-request `max_retries` in `request_options` takes precedence over this value. + follow_redirects : typing.Optional[bool] Whether the default httpx client follows redirects or not, this is irrelevant if a custom httpx client is passed in. @@ -111,6 +114,7 @@ def __init__( token: typing.Union[str, typing.Callable[[], str]], headers: typing.Optional[typing.Dict[str, str]] = None, timeout: typing.Optional[float] = None, + max_retries: typing.Optional[int] = None, follow_redirects: typing.Optional[bool] = True, httpx_client: typing.Optional[httpx.Client] = None, logging: typing.Optional[typing.Union[LogConfig, Logger]] = None, @@ -118,6 +122,7 @@ def __init__( _defaulted_timeout = ( timeout if timeout is not None else 60 if httpx_client is None else httpx_client.timeout.read ) + _defaulted_max_retries = max_retries if max_retries is not None else 2 if tenant_domain is not None: _tenant_domain = tenant_domain if tenant_domain is not None else "{TENANT}.auth0.com" base_url = "https://{tenantDomain}/api/v2".format(tenantDomain=_tenant_domain) @@ -131,6 +136,7 @@ def __init__( if follow_redirects is not None else httpx.Client(timeout=_defaulted_timeout), timeout=_defaulted_timeout, + max_retries=_defaulted_max_retries, logging=logging, ) self._actions: typing.Optional[ActionsClient] = None @@ -580,6 +586,9 @@ class AsyncAuth0: timeout : typing.Optional[float] The timeout to be used, in seconds, for requests. By default the timeout is 60 seconds, unless a custom httpx client is used, in which case this default is not enforced. + max_retries : typing.Optional[int] + The default maximum number of retries for failed requests. Defaults to 2. Per-request `max_retries` in `request_options` takes precedence over this value. + follow_redirects : typing.Optional[bool] Whether the default httpx client follows redirects or not, this is irrelevant if a custom httpx client is passed in. @@ -608,6 +617,7 @@ def __init__( headers: typing.Optional[typing.Dict[str, str]] = None, async_token: typing.Optional[typing.Callable[[], typing.Awaitable[str]]] = None, timeout: typing.Optional[float] = None, + max_retries: typing.Optional[int] = None, follow_redirects: typing.Optional[bool] = True, httpx_client: typing.Optional[httpx.AsyncClient] = None, logging: typing.Optional[typing.Union[LogConfig, Logger]] = None, @@ -615,6 +625,7 @@ def __init__( _defaulted_timeout = ( timeout if timeout is not None else 60 if httpx_client is None else httpx_client.timeout.read ) + _defaulted_max_retries = max_retries if max_retries is not None else 2 if tenant_domain is not None: _tenant_domain = tenant_domain if tenant_domain is not None else "{TENANT}.auth0.com" base_url = "https://{tenantDomain}/api/v2".format(tenantDomain=_tenant_domain) @@ -627,6 +638,7 @@ def __init__( if httpx_client is not None else _make_default_async_client(timeout=_defaulted_timeout, follow_redirects=follow_redirects), timeout=_defaulted_timeout, + max_retries=_defaulted_max_retries, logging=logging, ) self._actions: typing.Optional[AsyncActionsClient] = None diff --git a/src/auth0/management/clients/client.py b/src/auth0/management/clients/client.py index b44ca81c..475c1fe7 100644 --- a/src/auth0/management/clients/client.py +++ b/src/auth0/management/clients/client.py @@ -46,6 +46,7 @@ from ..types.create_token_quota import CreateTokenQuota from ..types.express_configuration import ExpressConfiguration from ..types.express_configuration_or_null import ExpressConfigurationOrNull +from ..types.fed_cm_login import FedCmLogin from ..types.get_client_response_content import GetClientResponseContent from ..types.list_clients_offset_paginated_response_content import ListClientsOffsetPaginatedResponseContent from ..types.native_social_login import NativeSocialLogin @@ -246,6 +247,7 @@ def create( mobile: typing.Optional[ClientMobile] = OMIT, initiate_login_uri: typing.Optional[str] = OMIT, native_social_login: typing.Optional[NativeSocialLogin] = OMIT, + fedcm_login: typing.Optional[FedCmLogin] = OMIT, refresh_token: typing.Optional[ClientRefreshTokenConfiguration] = OMIT, default_organization: typing.Optional[ClientDefaultOrganization] = OMIT, organization_usage: typing.Optional[ClientOrganizationUsageEnum] = OMIT, @@ -377,6 +379,8 @@ def create( native_social_login : typing.Optional[NativeSocialLogin] + fedcm_login : typing.Optional[FedCmLogin] + refresh_token : typing.Optional[ClientRefreshTokenConfiguration] default_organization : typing.Optional[ClientDefaultOrganization] @@ -478,6 +482,7 @@ def create( mobile=mobile, initiate_login_uri=initiate_login_uri, native_social_login=native_social_login, + fedcm_login=fedcm_login, refresh_token=refresh_token, default_organization=default_organization, organization_usage=organization_usage, @@ -545,28 +550,37 @@ def register_cimd_client( self, *, external_client_id: str, request_options: typing.Optional[RequestOptions] = None ) -> RegisterCimdClientResponseContent: """ - - Idempotent registration for Client ID Metadata Document (CIMD) clients. - Uses external_client_id as the unique identifier for upsert operations. - **Create:** Returns 201 when a new client is created (requires \\ - + Idempotent registration for Client ID Metadata Document (CIMD) clients. + Uses external_client_id as the unique identifier for upsert operations. + + Create: Returns 201 when a new client is created (requires create:clients scope). + Update: Returns 200 when an existing client is updated (requires update:clients scope). + + This endpoint automatically: +
    +
  • Fetches and validates the metadata document
  • +
  • Maps CIMD fields to Auth0 client configuration
  • +
  • Creates/rotates credentials from the JWKS
  • +
  • Enforces CIMD security policies (HTTPS-only, no shared secrets)
  • +
+ Parameters ---------- external_client_id : str URL to the Client ID Metadata Document. Acts as the unique identifier for upsert operations. - + request_options : typing.Optional[RequestOptions] Request-specific configuration. - + Returns ------- RegisterCimdClientResponseContent CIMD client successfully updated (idempotent). - + Examples -------- from auth0 import Auth0 - + client = Auth0( token="YOUR_TOKEN", ) @@ -726,6 +740,7 @@ def update( mobile: typing.Optional[ClientMobile] = OMIT, initiate_login_uri: typing.Optional[str] = OMIT, native_social_login: typing.Optional[NativeSocialLogin] = OMIT, + fedcm_login: typing.Optional[FedCmLogin] = OMIT, refresh_token: typing.Optional[ClientRefreshTokenConfiguration] = OMIT, default_organization: typing.Optional[ClientDefaultOrganization] = OMIT, organization_usage: typing.Optional[ClientOrganizationUsagePatchEnum] = OMIT, @@ -860,6 +875,8 @@ def update( native_social_login : typing.Optional[NativeSocialLogin] + fedcm_login : typing.Optional[FedCmLogin] + refresh_token : typing.Optional[ClientRefreshTokenConfiguration] default_organization : typing.Optional[ClientDefaultOrganization] @@ -959,6 +976,7 @@ def update( mobile=mobile, initiate_login_uri=initiate_login_uri, native_social_login=native_social_login, + fedcm_login=fedcm_login, refresh_token=refresh_token, default_organization=default_organization, organization_usage=organization_usage, @@ -1227,6 +1245,7 @@ async def create( mobile: typing.Optional[ClientMobile] = OMIT, initiate_login_uri: typing.Optional[str] = OMIT, native_social_login: typing.Optional[NativeSocialLogin] = OMIT, + fedcm_login: typing.Optional[FedCmLogin] = OMIT, refresh_token: typing.Optional[ClientRefreshTokenConfiguration] = OMIT, default_organization: typing.Optional[ClientDefaultOrganization] = OMIT, organization_usage: typing.Optional[ClientOrganizationUsageEnum] = OMIT, @@ -1358,6 +1377,8 @@ async def create( native_social_login : typing.Optional[NativeSocialLogin] + fedcm_login : typing.Optional[FedCmLogin] + refresh_token : typing.Optional[ClientRefreshTokenConfiguration] default_organization : typing.Optional[ClientDefaultOrganization] @@ -1467,6 +1488,7 @@ async def main() -> None: mobile=mobile, initiate_login_uri=initiate_login_uri, native_social_login=native_social_login, + fedcm_login=fedcm_login, refresh_token=refresh_token, default_organization=default_organization, organization_usage=organization_usage, @@ -1542,41 +1564,50 @@ async def register_cimd_client( self, *, external_client_id: str, request_options: typing.Optional[RequestOptions] = None ) -> RegisterCimdClientResponseContent: """ - - Idempotent registration for Client ID Metadata Document (CIMD) clients. - Uses external_client_id as the unique identifier for upsert operations. - **Create:** Returns 201 when a new client is created (requires \\ - + Idempotent registration for Client ID Metadata Document (CIMD) clients. + Uses external_client_id as the unique identifier for upsert operations. + + Create: Returns 201 when a new client is created (requires create:clients scope). + Update: Returns 200 when an existing client is updated (requires update:clients scope). + + This endpoint automatically: +
    +
  • Fetches and validates the metadata document
  • +
  • Maps CIMD fields to Auth0 client configuration
  • +
  • Creates/rotates credentials from the JWKS
  • +
  • Enforces CIMD security policies (HTTPS-only, no shared secrets)
  • +
+ Parameters ---------- external_client_id : str URL to the Client ID Metadata Document. Acts as the unique identifier for upsert operations. - + request_options : typing.Optional[RequestOptions] Request-specific configuration. - + Returns ------- RegisterCimdClientResponseContent CIMD client successfully updated (idempotent). - + Examples -------- import asyncio - + from auth0 import AsyncAuth0 - + client = AsyncAuth0( token="YOUR_TOKEN", ) - - + + async def main() -> None: await client.clients.register_cimd_client( external_client_id="external_client_id", ) - - + + asyncio.run(main()) """ _response = await self._raw_client.register_cimd_client( @@ -1747,6 +1778,7 @@ async def update( mobile: typing.Optional[ClientMobile] = OMIT, initiate_login_uri: typing.Optional[str] = OMIT, native_social_login: typing.Optional[NativeSocialLogin] = OMIT, + fedcm_login: typing.Optional[FedCmLogin] = OMIT, refresh_token: typing.Optional[ClientRefreshTokenConfiguration] = OMIT, default_organization: typing.Optional[ClientDefaultOrganization] = OMIT, organization_usage: typing.Optional[ClientOrganizationUsagePatchEnum] = OMIT, @@ -1881,6 +1913,8 @@ async def update( native_social_login : typing.Optional[NativeSocialLogin] + fedcm_login : typing.Optional[FedCmLogin] + refresh_token : typing.Optional[ClientRefreshTokenConfiguration] default_organization : typing.Optional[ClientDefaultOrganization] @@ -1988,6 +2022,7 @@ async def main() -> None: mobile=mobile, initiate_login_uri=initiate_login_uri, native_social_login=native_social_login, + fedcm_login=fedcm_login, refresh_token=refresh_token, default_organization=default_organization, organization_usage=organization_usage, diff --git a/src/auth0/management/clients/raw_client.py b/src/auth0/management/clients/raw_client.py index 97e9ebeb..8d2b434e 100644 --- a/src/auth0/management/clients/raw_client.py +++ b/src/auth0/management/clients/raw_client.py @@ -58,6 +58,7 @@ from ..types.create_token_quota import CreateTokenQuota from ..types.express_configuration import ExpressConfiguration from ..types.express_configuration_or_null import ExpressConfigurationOrNull +from ..types.fed_cm_login import FedCmLogin from ..types.get_client_response_content import GetClientResponseContent from ..types.list_clients_offset_paginated_response_content import ListClientsOffsetPaginatedResponseContent from ..types.native_social_login import NativeSocialLogin @@ -299,6 +300,7 @@ def create( mobile: typing.Optional[ClientMobile] = OMIT, initiate_login_uri: typing.Optional[str] = OMIT, native_social_login: typing.Optional[NativeSocialLogin] = OMIT, + fedcm_login: typing.Optional[FedCmLogin] = OMIT, refresh_token: typing.Optional[ClientRefreshTokenConfiguration] = OMIT, default_organization: typing.Optional[ClientDefaultOrganization] = OMIT, organization_usage: typing.Optional[ClientOrganizationUsageEnum] = OMIT, @@ -430,6 +432,8 @@ def create( native_social_login : typing.Optional[NativeSocialLogin] + fedcm_login : typing.Optional[FedCmLogin] + refresh_token : typing.Optional[ClientRefreshTokenConfiguration] default_organization : typing.Optional[ClientDefaultOrganization] @@ -541,6 +545,9 @@ def create( "native_social_login": convert_and_respect_annotation_metadata( object_=native_social_login, annotation=NativeSocialLogin, direction="write" ), + "fedcm_login": convert_and_respect_annotation_metadata( + object_=fedcm_login, annotation=FedCmLogin, direction="write" + ), "refresh_token": convert_and_respect_annotation_metadata( object_=refresh_token, annotation=typing.Optional[ClientRefreshTokenConfiguration], @@ -779,19 +786,28 @@ def register_cimd_client( self, *, external_client_id: str, request_options: typing.Optional[RequestOptions] = None ) -> HttpResponse[RegisterCimdClientResponseContent]: """ - - Idempotent registration for Client ID Metadata Document (CIMD) clients. - Uses external_client_id as the unique identifier for upsert operations. - **Create:** Returns 201 when a new client is created (requires \\ - + Idempotent registration for Client ID Metadata Document (CIMD) clients. + Uses external_client_id as the unique identifier for upsert operations. + + Create: Returns 201 when a new client is created (requires create:clients scope). + Update: Returns 200 when an existing client is updated (requires update:clients scope). + + This endpoint automatically: +
    +
  • Fetches and validates the metadata document
  • +
  • Maps CIMD fields to Auth0 client configuration
  • +
  • Creates/rotates credentials from the JWKS
  • +
  • Enforces CIMD security policies (HTTPS-only, no shared secrets)
  • +
+ Parameters ---------- external_client_id : str URL to the Client ID Metadata Document. Acts as the unique identifier for upsert operations. - + request_options : typing.Optional[RequestOptions] Request-specific configuration. - + Returns ------- HttpResponse[RegisterCimdClientResponseContent] @@ -1142,6 +1158,7 @@ def update( mobile: typing.Optional[ClientMobile] = OMIT, initiate_login_uri: typing.Optional[str] = OMIT, native_social_login: typing.Optional[NativeSocialLogin] = OMIT, + fedcm_login: typing.Optional[FedCmLogin] = OMIT, refresh_token: typing.Optional[ClientRefreshTokenConfiguration] = OMIT, default_organization: typing.Optional[ClientDefaultOrganization] = OMIT, organization_usage: typing.Optional[ClientOrganizationUsagePatchEnum] = OMIT, @@ -1276,6 +1293,8 @@ def update( native_social_login : typing.Optional[NativeSocialLogin] + fedcm_login : typing.Optional[FedCmLogin] + refresh_token : typing.Optional[ClientRefreshTokenConfiguration] default_organization : typing.Optional[ClientDefaultOrganization] @@ -1386,6 +1405,9 @@ def update( "native_social_login": convert_and_respect_annotation_metadata( object_=native_social_login, annotation=NativeSocialLogin, direction="write" ), + "fedcm_login": convert_and_respect_annotation_metadata( + object_=fedcm_login, annotation=FedCmLogin, direction="write" + ), "refresh_token": convert_and_respect_annotation_metadata( object_=refresh_token, annotation=typing.Optional[ClientRefreshTokenConfiguration], @@ -1846,6 +1868,7 @@ async def create( mobile: typing.Optional[ClientMobile] = OMIT, initiate_login_uri: typing.Optional[str] = OMIT, native_social_login: typing.Optional[NativeSocialLogin] = OMIT, + fedcm_login: typing.Optional[FedCmLogin] = OMIT, refresh_token: typing.Optional[ClientRefreshTokenConfiguration] = OMIT, default_organization: typing.Optional[ClientDefaultOrganization] = OMIT, organization_usage: typing.Optional[ClientOrganizationUsageEnum] = OMIT, @@ -1977,6 +2000,8 @@ async def create( native_social_login : typing.Optional[NativeSocialLogin] + fedcm_login : typing.Optional[FedCmLogin] + refresh_token : typing.Optional[ClientRefreshTokenConfiguration] default_organization : typing.Optional[ClientDefaultOrganization] @@ -2088,6 +2113,9 @@ async def create( "native_social_login": convert_and_respect_annotation_metadata( object_=native_social_login, annotation=NativeSocialLogin, direction="write" ), + "fedcm_login": convert_and_respect_annotation_metadata( + object_=fedcm_login, annotation=FedCmLogin, direction="write" + ), "refresh_token": convert_and_respect_annotation_metadata( object_=refresh_token, annotation=typing.Optional[ClientRefreshTokenConfiguration], @@ -2326,19 +2354,28 @@ async def register_cimd_client( self, *, external_client_id: str, request_options: typing.Optional[RequestOptions] = None ) -> AsyncHttpResponse[RegisterCimdClientResponseContent]: """ - - Idempotent registration for Client ID Metadata Document (CIMD) clients. - Uses external_client_id as the unique identifier for upsert operations. - **Create:** Returns 201 when a new client is created (requires \\ - + Idempotent registration for Client ID Metadata Document (CIMD) clients. + Uses external_client_id as the unique identifier for upsert operations. + + Create: Returns 201 when a new client is created (requires create:clients scope). + Update: Returns 200 when an existing client is updated (requires update:clients scope). + + This endpoint automatically: +
    +
  • Fetches and validates the metadata document
  • +
  • Maps CIMD fields to Auth0 client configuration
  • +
  • Creates/rotates credentials from the JWKS
  • +
  • Enforces CIMD security policies (HTTPS-only, no shared secrets)
  • +
+ Parameters ---------- external_client_id : str URL to the Client ID Metadata Document. Acts as the unique identifier for upsert operations. - + request_options : typing.Optional[RequestOptions] Request-specific configuration. - + Returns ------- AsyncHttpResponse[RegisterCimdClientResponseContent] @@ -2691,6 +2728,7 @@ async def update( mobile: typing.Optional[ClientMobile] = OMIT, initiate_login_uri: typing.Optional[str] = OMIT, native_social_login: typing.Optional[NativeSocialLogin] = OMIT, + fedcm_login: typing.Optional[FedCmLogin] = OMIT, refresh_token: typing.Optional[ClientRefreshTokenConfiguration] = OMIT, default_organization: typing.Optional[ClientDefaultOrganization] = OMIT, organization_usage: typing.Optional[ClientOrganizationUsagePatchEnum] = OMIT, @@ -2825,6 +2863,8 @@ async def update( native_social_login : typing.Optional[NativeSocialLogin] + fedcm_login : typing.Optional[FedCmLogin] + refresh_token : typing.Optional[ClientRefreshTokenConfiguration] default_organization : typing.Optional[ClientDefaultOrganization] @@ -2935,6 +2975,9 @@ async def update( "native_social_login": convert_and_respect_annotation_metadata( object_=native_social_login, annotation=NativeSocialLogin, direction="write" ), + "fedcm_login": convert_and_respect_annotation_metadata( + object_=fedcm_login, annotation=FedCmLogin, direction="write" + ), "refresh_token": convert_and_respect_annotation_metadata( object_=refresh_token, annotation=typing.Optional[ClientRefreshTokenConfiguration], diff --git a/src/auth0/management/core/client_wrapper.py b/src/auth0/management/core/client_wrapper.py index 16c24e6b..60ebc5a6 100644 --- a/src/auth0/management/core/client_wrapper.py +++ b/src/auth0/management/core/client_wrapper.py @@ -20,18 +20,20 @@ def __init__( headers: typing.Optional[typing.Dict[str, str]] = None, base_url: str, timeout: typing.Optional[float] = None, + max_retries: int = 2, + logging: typing.Optional[typing.Union[LogConfig, Logger]] = None, ): self._token = token self._headers = headers self._base_url = base_url self._timeout = timeout + self._max_retries = max_retries + self._logging = logging def get_headers(self) -> typing.Dict[str, str]: - # Dynamically get version from package metadata py_version = platform.python_version() version = sys.modules["auth0"].__version__ - # Build Auth0 telemetry in standard format auth0_client = dumps({ "name": "auth0-python", "version": version, @@ -61,6 +63,9 @@ def get_base_url(self) -> str: def get_timeout(self) -> typing.Optional[float]: return self._timeout + def get_max_retries(self) -> int: + return self._max_retries + class SyncClientWrapper(BaseClientWrapper): def __init__( @@ -70,16 +75,20 @@ def __init__( headers: typing.Optional[typing.Dict[str, str]] = None, base_url: str, timeout: typing.Optional[float] = None, - httpx_client: httpx.Client, + max_retries: int = 2, logging: typing.Optional[typing.Union[LogConfig, Logger]] = None, + httpx_client: httpx.Client, ): - super().__init__(token=token, headers=headers, base_url=base_url, timeout=timeout) + super().__init__( + token=token, headers=headers, base_url=base_url, timeout=timeout, max_retries=max_retries, logging=logging + ) self.httpx_client = HttpClient( httpx_client=httpx_client, base_headers=self.get_headers, base_timeout=self.get_timeout, base_url=self.get_base_url, - logging_config=logging, + base_max_retries=self.get_max_retries(), + logging_config=self._logging, ) @@ -91,19 +100,23 @@ def __init__( headers: typing.Optional[typing.Dict[str, str]] = None, base_url: str, timeout: typing.Optional[float] = None, + max_retries: int = 2, + logging: typing.Optional[typing.Union[LogConfig, Logger]] = None, async_token: typing.Optional[typing.Callable[[], typing.Awaitable[str]]] = None, httpx_client: httpx.AsyncClient, - logging: typing.Optional[typing.Union[LogConfig, Logger]] = None, ): - super().__init__(token=token, headers=headers, base_url=base_url, timeout=timeout) + super().__init__( + token=token, headers=headers, base_url=base_url, timeout=timeout, max_retries=max_retries, logging=logging + ) self._async_token = async_token self.httpx_client = AsyncHttpClient( httpx_client=httpx_client, base_headers=self.get_headers, base_timeout=self.get_timeout, base_url=self.get_base_url, + base_max_retries=self.get_max_retries(), async_base_headers=self.async_get_headers, - logging_config=logging, + logging_config=self._logging, ) async def async_get_headers(self) -> typing.Dict[str, str]: diff --git a/src/auth0/management/refresh_tokens/client.py b/src/auth0/management/refresh_tokens/client.py index e999cfff..a0456c14 100644 --- a/src/auth0/management/refresh_tokens/client.py +++ b/src/auth0/management/refresh_tokens/client.py @@ -110,6 +110,7 @@ def revoke( ids: typing.Optional[typing.Sequence[str]] = OMIT, user_id: typing.Optional[str] = OMIT, client_id: typing.Optional[str] = OMIT, + audience: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> None: """ @@ -126,6 +127,9 @@ def revoke( client_id : typing.Optional[str] Revoke all refresh tokens for this client. + audience : typing.Optional[str] + Resource server identifier (audience) to scope the revocation. Must be used with both `user_id` and `client_id`. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -143,7 +147,7 @@ def revoke( client.refresh_tokens.revoke() """ _response = self._raw_client.revoke( - ids=ids, user_id=user_id, client_id=client_id, request_options=request_options + ids=ids, user_id=user_id, client_id=client_id, audience=audience, request_options=request_options ) return _response.data @@ -356,6 +360,7 @@ async def revoke( ids: typing.Optional[typing.Sequence[str]] = OMIT, user_id: typing.Optional[str] = OMIT, client_id: typing.Optional[str] = OMIT, + audience: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> None: """ @@ -372,6 +377,9 @@ async def revoke( client_id : typing.Optional[str] Revoke all refresh tokens for this client. + audience : typing.Optional[str] + Resource server identifier (audience) to scope the revocation. Must be used with both `user_id` and `client_id`. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -397,7 +405,7 @@ async def main() -> None: asyncio.run(main()) """ _response = await self._raw_client.revoke( - ids=ids, user_id=user_id, client_id=client_id, request_options=request_options + ids=ids, user_id=user_id, client_id=client_id, audience=audience, request_options=request_options ) return _response.data diff --git a/src/auth0/management/refresh_tokens/raw_client.py b/src/auth0/management/refresh_tokens/raw_client.py index a9541ba1..d1ad621b 100644 --- a/src/auth0/management/refresh_tokens/raw_client.py +++ b/src/auth0/management/refresh_tokens/raw_client.py @@ -178,6 +178,7 @@ def revoke( ids: typing.Optional[typing.Sequence[str]] = OMIT, user_id: typing.Optional[str] = OMIT, client_id: typing.Optional[str] = OMIT, + audience: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> HttpResponse[None]: """ @@ -194,6 +195,9 @@ def revoke( client_id : typing.Optional[str] Revoke all refresh tokens for this client. + audience : typing.Optional[str] + Resource server identifier (audience) to scope the revocation. Must be used with both `user_id` and `client_id`. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -208,6 +212,7 @@ def revoke( "ids": ids, "user_id": user_id, "client_id": client_id, + "audience": audience, }, headers={ "content-type": "application/json", @@ -713,6 +718,7 @@ async def revoke( ids: typing.Optional[typing.Sequence[str]] = OMIT, user_id: typing.Optional[str] = OMIT, client_id: typing.Optional[str] = OMIT, + audience: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> AsyncHttpResponse[None]: """ @@ -729,6 +735,9 @@ async def revoke( client_id : typing.Optional[str] Revoke all refresh tokens for this client. + audience : typing.Optional[str] + Resource server identifier (audience) to scope the revocation. Must be used with both `user_id` and `client_id`. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -743,6 +752,7 @@ async def revoke( "ids": ids, "user_id": user_id, "client_id": client_id, + "audience": audience, }, headers={ "content-type": "application/json", diff --git a/src/auth0/management/resource_servers/client.py b/src/auth0/management/resource_servers/client.py index 5812bf76..438082d8 100644 --- a/src/auth0/management/resource_servers/client.py +++ b/src/auth0/management/resource_servers/client.py @@ -118,6 +118,7 @@ def create( signing_secret: typing.Optional[str] = OMIT, allow_offline_access: typing.Optional[bool] = OMIT, allow_online_access: typing.Optional[bool] = OMIT, + allow_online_access_with_ephemeral_sessions: typing.Optional[bool] = OMIT, token_lifetime: typing.Optional[int] = OMIT, token_dialect: typing.Optional[ResourceServerTokenDialectSchemaEnum] = OMIT, skip_consent_for_verifiable_first_party_clients: typing.Optional[bool] = OMIT, @@ -155,6 +156,9 @@ def create( allow_online_access : typing.Optional[bool] Whether Online Refresh Tokens can be issued for this API (true) or not (false). + allow_online_access_with_ephemeral_sessions : typing.Optional[bool] + Whether Online Refresh Tokens can be issued even when sessions are configured as ephemeral (true) or not (false). + token_lifetime : typing.Optional[int] Expiration value (in seconds) for access tokens issued for this API from the token endpoint. @@ -205,6 +209,7 @@ def create( signing_secret=signing_secret, allow_offline_access=allow_offline_access, allow_online_access=allow_online_access, + allow_online_access_with_ephemeral_sessions=allow_online_access_with_ephemeral_sessions, token_lifetime=token_lifetime, token_dialect=token_dialect, skip_consent_for_verifiable_first_party_clients=skip_consent_for_verifiable_first_party_clients, @@ -301,6 +306,7 @@ def update( skip_consent_for_verifiable_first_party_clients: typing.Optional[bool] = OMIT, allow_offline_access: typing.Optional[bool] = OMIT, allow_online_access: typing.Optional[bool] = OMIT, + allow_online_access_with_ephemeral_sessions: typing.Optional[bool] = OMIT, token_lifetime: typing.Optional[int] = OMIT, token_dialect: typing.Optional[ResourceServerTokenDialectSchemaEnum] = OMIT, enforce_policies: typing.Optional[bool] = OMIT, @@ -340,6 +346,9 @@ def update( allow_online_access : typing.Optional[bool] Whether Online Refresh Tokens can be issued for this API (true) or not (false). + allow_online_access_with_ephemeral_sessions : typing.Optional[bool] + Whether Online Refresh Tokens can be issued even when sessions are configured as ephemeral (true) or not (false). + token_lifetime : typing.Optional[int] Expiration value (in seconds) for access tokens issued for this API from the token endpoint. @@ -388,6 +397,7 @@ def update( skip_consent_for_verifiable_first_party_clients=skip_consent_for_verifiable_first_party_clients, allow_offline_access=allow_offline_access, allow_online_access=allow_online_access, + allow_online_access_with_ephemeral_sessions=allow_online_access_with_ephemeral_sessions, token_lifetime=token_lifetime, token_dialect=token_dialect, enforce_policies=enforce_policies, @@ -503,6 +513,7 @@ async def create( signing_secret: typing.Optional[str] = OMIT, allow_offline_access: typing.Optional[bool] = OMIT, allow_online_access: typing.Optional[bool] = OMIT, + allow_online_access_with_ephemeral_sessions: typing.Optional[bool] = OMIT, token_lifetime: typing.Optional[int] = OMIT, token_dialect: typing.Optional[ResourceServerTokenDialectSchemaEnum] = OMIT, skip_consent_for_verifiable_first_party_clients: typing.Optional[bool] = OMIT, @@ -540,6 +551,9 @@ async def create( allow_online_access : typing.Optional[bool] Whether Online Refresh Tokens can be issued for this API (true) or not (false). + allow_online_access_with_ephemeral_sessions : typing.Optional[bool] + Whether Online Refresh Tokens can be issued even when sessions are configured as ephemeral (true) or not (false). + token_lifetime : typing.Optional[int] Expiration value (in seconds) for access tokens issued for this API from the token endpoint. @@ -598,6 +612,7 @@ async def main() -> None: signing_secret=signing_secret, allow_offline_access=allow_offline_access, allow_online_access=allow_online_access, + allow_online_access_with_ephemeral_sessions=allow_online_access_with_ephemeral_sessions, token_lifetime=token_lifetime, token_dialect=token_dialect, skip_consent_for_verifiable_first_party_clients=skip_consent_for_verifiable_first_party_clients, @@ -710,6 +725,7 @@ async def update( skip_consent_for_verifiable_first_party_clients: typing.Optional[bool] = OMIT, allow_offline_access: typing.Optional[bool] = OMIT, allow_online_access: typing.Optional[bool] = OMIT, + allow_online_access_with_ephemeral_sessions: typing.Optional[bool] = OMIT, token_lifetime: typing.Optional[int] = OMIT, token_dialect: typing.Optional[ResourceServerTokenDialectSchemaEnum] = OMIT, enforce_policies: typing.Optional[bool] = OMIT, @@ -749,6 +765,9 @@ async def update( allow_online_access : typing.Optional[bool] Whether Online Refresh Tokens can be issued for this API (true) or not (false). + allow_online_access_with_ephemeral_sessions : typing.Optional[bool] + Whether Online Refresh Tokens can be issued even when sessions are configured as ephemeral (true) or not (false). + token_lifetime : typing.Optional[int] Expiration value (in seconds) for access tokens issued for this API from the token endpoint. @@ -805,6 +824,7 @@ async def main() -> None: skip_consent_for_verifiable_first_party_clients=skip_consent_for_verifiable_first_party_clients, allow_offline_access=allow_offline_access, allow_online_access=allow_online_access, + allow_online_access_with_ephemeral_sessions=allow_online_access_with_ephemeral_sessions, token_lifetime=token_lifetime, token_dialect=token_dialect, enforce_policies=enforce_policies, diff --git a/src/auth0/management/resource_servers/raw_client.py b/src/auth0/management/resource_servers/raw_client.py index 79446922..1fc6b25e 100644 --- a/src/auth0/management/resource_servers/raw_client.py +++ b/src/auth0/management/resource_servers/raw_client.py @@ -178,6 +178,7 @@ def create( signing_secret: typing.Optional[str] = OMIT, allow_offline_access: typing.Optional[bool] = OMIT, allow_online_access: typing.Optional[bool] = OMIT, + allow_online_access_with_ephemeral_sessions: typing.Optional[bool] = OMIT, token_lifetime: typing.Optional[int] = OMIT, token_dialect: typing.Optional[ResourceServerTokenDialectSchemaEnum] = OMIT, skip_consent_for_verifiable_first_party_clients: typing.Optional[bool] = OMIT, @@ -215,6 +216,9 @@ def create( allow_online_access : typing.Optional[bool] Whether Online Refresh Tokens can be issued for this API (true) or not (false). + allow_online_access_with_ephemeral_sessions : typing.Optional[bool] + Whether Online Refresh Tokens can be issued even when sessions are configured as ephemeral (true) or not (false). + token_lifetime : typing.Optional[int] Expiration value (in seconds) for access tokens issued for this API from the token endpoint. @@ -259,6 +263,7 @@ def create( "signing_secret": signing_secret, "allow_offline_access": allow_offline_access, "allow_online_access": allow_online_access, + "allow_online_access_with_ephemeral_sessions": allow_online_access_with_ephemeral_sessions, "token_lifetime": token_lifetime, "token_dialect": token_dialect, "skip_consent_for_verifiable_first_party_clients": skip_consent_for_verifiable_first_party_clients, @@ -562,6 +567,7 @@ def update( skip_consent_for_verifiable_first_party_clients: typing.Optional[bool] = OMIT, allow_offline_access: typing.Optional[bool] = OMIT, allow_online_access: typing.Optional[bool] = OMIT, + allow_online_access_with_ephemeral_sessions: typing.Optional[bool] = OMIT, token_lifetime: typing.Optional[int] = OMIT, token_dialect: typing.Optional[ResourceServerTokenDialectSchemaEnum] = OMIT, enforce_policies: typing.Optional[bool] = OMIT, @@ -601,6 +607,9 @@ def update( allow_online_access : typing.Optional[bool] Whether Online Refresh Tokens can be issued for this API (true) or not (false). + allow_online_access_with_ephemeral_sessions : typing.Optional[bool] + Whether Online Refresh Tokens can be issued even when sessions are configured as ephemeral (true) or not (false). + token_lifetime : typing.Optional[int] Expiration value (in seconds) for access tokens issued for this API from the token endpoint. @@ -642,6 +651,7 @@ def update( "skip_consent_for_verifiable_first_party_clients": skip_consent_for_verifiable_first_party_clients, "allow_offline_access": allow_offline_access, "allow_online_access": allow_online_access, + "allow_online_access_with_ephemeral_sessions": allow_online_access_with_ephemeral_sessions, "token_lifetime": token_lifetime, "token_dialect": token_dialect, "enforce_policies": enforce_policies, @@ -891,6 +901,7 @@ async def create( signing_secret: typing.Optional[str] = OMIT, allow_offline_access: typing.Optional[bool] = OMIT, allow_online_access: typing.Optional[bool] = OMIT, + allow_online_access_with_ephemeral_sessions: typing.Optional[bool] = OMIT, token_lifetime: typing.Optional[int] = OMIT, token_dialect: typing.Optional[ResourceServerTokenDialectSchemaEnum] = OMIT, skip_consent_for_verifiable_first_party_clients: typing.Optional[bool] = OMIT, @@ -928,6 +939,9 @@ async def create( allow_online_access : typing.Optional[bool] Whether Online Refresh Tokens can be issued for this API (true) or not (false). + allow_online_access_with_ephemeral_sessions : typing.Optional[bool] + Whether Online Refresh Tokens can be issued even when sessions are configured as ephemeral (true) or not (false). + token_lifetime : typing.Optional[int] Expiration value (in seconds) for access tokens issued for this API from the token endpoint. @@ -972,6 +986,7 @@ async def create( "signing_secret": signing_secret, "allow_offline_access": allow_offline_access, "allow_online_access": allow_online_access, + "allow_online_access_with_ephemeral_sessions": allow_online_access_with_ephemeral_sessions, "token_lifetime": token_lifetime, "token_dialect": token_dialect, "skip_consent_for_verifiable_first_party_clients": skip_consent_for_verifiable_first_party_clients, @@ -1277,6 +1292,7 @@ async def update( skip_consent_for_verifiable_first_party_clients: typing.Optional[bool] = OMIT, allow_offline_access: typing.Optional[bool] = OMIT, allow_online_access: typing.Optional[bool] = OMIT, + allow_online_access_with_ephemeral_sessions: typing.Optional[bool] = OMIT, token_lifetime: typing.Optional[int] = OMIT, token_dialect: typing.Optional[ResourceServerTokenDialectSchemaEnum] = OMIT, enforce_policies: typing.Optional[bool] = OMIT, @@ -1316,6 +1332,9 @@ async def update( allow_online_access : typing.Optional[bool] Whether Online Refresh Tokens can be issued for this API (true) or not (false). + allow_online_access_with_ephemeral_sessions : typing.Optional[bool] + Whether Online Refresh Tokens can be issued even when sessions are configured as ephemeral (true) or not (false). + token_lifetime : typing.Optional[int] Expiration value (in seconds) for access tokens issued for this API from the token endpoint. @@ -1357,6 +1376,7 @@ async def update( "skip_consent_for_verifiable_first_party_clients": skip_consent_for_verifiable_first_party_clients, "allow_offline_access": allow_offline_access, "allow_online_access": allow_online_access, + "allow_online_access_with_ephemeral_sessions": allow_online_access_with_ephemeral_sessions, "token_lifetime": token_lifetime, "token_dialect": token_dialect, "enforce_policies": enforce_policies, diff --git a/src/auth0/management/tickets/client.py b/src/auth0/management/tickets/client.py index 0c1096d4..0a5a69d0 100644 --- a/src/auth0/management/tickets/client.py +++ b/src/auth0/management/tickets/client.py @@ -120,7 +120,7 @@ def change_password( Parameters ---------- result_url : typing.Optional[str] - URL the user will be redirected to in the classic Universal Login experience once the ticket is used. Cannot be specified when using client_id or organization_id. + URL the user will be redirected to in the classic Universal Login experience once the ticket is used. Cannot be specified when using organization_id. May be specified together with client_id when the tenant has a custom password reset page enabled and a password-reset-post-challenge Action bound. user_id : typing.Optional[str] user_id of for whom the ticket should be created. @@ -295,7 +295,7 @@ async def change_password( Parameters ---------- result_url : typing.Optional[str] - URL the user will be redirected to in the classic Universal Login experience once the ticket is used. Cannot be specified when using client_id or organization_id. + URL the user will be redirected to in the classic Universal Login experience once the ticket is used. Cannot be specified when using organization_id. May be specified together with client_id when the tenant has a custom password reset page enabled and a password-reset-post-challenge Action bound. user_id : typing.Optional[str] user_id of for whom the ticket should be created. diff --git a/src/auth0/management/tickets/raw_client.py b/src/auth0/management/tickets/raw_client.py index 66876512..df7dcbfe 100644 --- a/src/auth0/management/tickets/raw_client.py +++ b/src/auth0/management/tickets/raw_client.py @@ -191,7 +191,7 @@ def change_password( Parameters ---------- result_url : typing.Optional[str] - URL the user will be redirected to in the classic Universal Login experience once the ticket is used. Cannot be specified when using client_id or organization_id. + URL the user will be redirected to in the classic Universal Login experience once the ticket is used. Cannot be specified when using organization_id. May be specified together with client_id when the tenant has a custom password reset page enabled and a password-reset-post-challenge Action bound. user_id : typing.Optional[str] user_id of for whom the ticket should be created. @@ -491,7 +491,7 @@ async def change_password( Parameters ---------- result_url : typing.Optional[str] - URL the user will be redirected to in the classic Universal Login experience once the ticket is used. Cannot be specified when using client_id or organization_id. + URL the user will be redirected to in the classic Universal Login experience once the ticket is used. Cannot be specified when using organization_id. May be specified together with client_id when the tenant has a custom password reset page enabled and a password-reset-post-challenge Action bound. user_id : typing.Optional[str] user_id of for whom the ticket should be created. diff --git a/src/auth0/management/types/__init__.py b/src/auth0/management/types/__init__.py index 8ee3fc2d..191ef50b 100644 --- a/src/auth0/management/types/__init__.py +++ b/src/auth0/management/types/__init__.py @@ -90,6 +90,8 @@ from .attack_protection_update_captcha_recaptcha_v_2 import AttackProtectionUpdateCaptchaRecaptchaV2 from .authentication_method_type_enum import AuthenticationMethodTypeEnum from .authentication_type_enum import AuthenticationTypeEnum + from .bad_request_schema import BadRequestSchema + from .bad_request_schema_error import BadRequestSchemaError from .bot_detection_allowlist import BotDetectionAllowlist from .bot_detection_challenge_policy_password_flow_enum import BotDetectionChallengePolicyPasswordFlowEnum from .bot_detection_challenge_policy_password_reset_flow_enum import ( @@ -1114,6 +1116,7 @@ from .create_verification_email_response_content import CreateVerificationEmailResponseContent from .created_authentication_method_type_enum import CreatedAuthenticationMethodTypeEnum from .created_user_authentication_method_type_enum import CreatedUserAuthenticationMethodTypeEnum + from .credential_device_type_enum import CredentialDeviceTypeEnum from .credential_id import CredentialId from .custom_domain import CustomDomain from .custom_domain_custom_client_ip_header import CustomDomainCustomClientIpHeader @@ -1978,6 +1981,8 @@ from .express_configuration import ExpressConfiguration from .express_configuration_or_null import ExpressConfigurationOrNull from .extensibility_email_provider_credentials import ExtensibilityEmailProviderCredentials + from .fed_cm_login import FedCmLogin + from .fed_cm_login_google import FedCmLoginGoogle from .federated_connection_token_set import FederatedConnectionTokenSet from .flow_action import FlowAction from .flow_action_activecampaign import FlowActionActivecampaign @@ -2395,6 +2400,8 @@ FlowsVaultConnectionSetupTypeOauthClientCredentialsEnum, ) from .flows_vault_connection_summary import FlowsVaultConnectionSummary + from .forbidden_schema import ForbiddenSchema + from .forbidden_schema_error import ForbiddenSchemaError from .form_block import FormBlock from .form_block_divider import FormBlockDivider from .form_block_divider_config import FormBlockDividerConfig @@ -3097,9 +3104,13 @@ from .token_quota import TokenQuota from .token_quota_client_credentials import TokenQuotaClientCredentials from .token_quota_configuration import TokenQuotaConfiguration + from .too_many_requests_schema import TooManyRequestsSchema + from .too_many_requests_schema_error import TooManyRequestsSchemaError from .twilio_provider_configuration import TwilioProviderConfiguration from .twilio_provider_credentials import TwilioProviderCredentials from .twilio_provider_delivery_method_enum import TwilioProviderDeliveryMethodEnum + from .unauthorized_schema import UnauthorizedSchema + from .unauthorized_schema_error import UnauthorizedSchemaError from .universal_login_experience_enum import UniversalLoginExperienceEnum from .update_action_bindings_response_content import UpdateActionBindingsResponseContent from .update_action_module_response_content import UpdateActionModuleResponseContent @@ -3378,6 +3389,8 @@ "AttackProtectionUpdateCaptchaRecaptchaV2": ".attack_protection_update_captcha_recaptcha_v_2", "AuthenticationMethodTypeEnum": ".authentication_method_type_enum", "AuthenticationTypeEnum": ".authentication_type_enum", + "BadRequestSchema": ".bad_request_schema", + "BadRequestSchemaError": ".bad_request_schema_error", "BotDetectionAllowlist": ".bot_detection_allowlist", "BotDetectionChallengePolicyPasswordFlowEnum": ".bot_detection_challenge_policy_password_flow_enum", "BotDetectionChallengePolicyPasswordResetFlowEnum": ".bot_detection_challenge_policy_password_reset_flow_enum", @@ -4310,6 +4323,7 @@ "CreateVerificationEmailResponseContent": ".create_verification_email_response_content", "CreatedAuthenticationMethodTypeEnum": ".created_authentication_method_type_enum", "CreatedUserAuthenticationMethodTypeEnum": ".created_user_authentication_method_type_enum", + "CredentialDeviceTypeEnum": ".credential_device_type_enum", "CredentialId": ".credential_id", "CustomDomain": ".custom_domain", "CustomDomainCustomClientIpHeader": ".custom_domain_custom_client_ip_header", @@ -4762,6 +4776,8 @@ "ExpressConfiguration": ".express_configuration", "ExpressConfigurationOrNull": ".express_configuration_or_null", "ExtensibilityEmailProviderCredentials": ".extensibility_email_provider_credentials", + "FedCmLogin": ".fed_cm_login", + "FedCmLoginGoogle": ".fed_cm_login_google", "FederatedConnectionTokenSet": ".federated_connection_token_set", "FlowAction": ".flow_action", "FlowActionActivecampaign": ".flow_action_activecampaign", @@ -5163,6 +5179,8 @@ "FlowsVaultConnectionSetupTypeBasicAuthEnum": ".flows_vault_connection_setup_type_basic_auth_enum", "FlowsVaultConnectionSetupTypeOauthClientCredentialsEnum": ".flows_vault_connection_setup_type_oauth_client_credentials_enum", "FlowsVaultConnectionSummary": ".flows_vault_connection_summary", + "ForbiddenSchema": ".forbidden_schema", + "ForbiddenSchemaError": ".forbidden_schema_error", "FormBlock": ".form_block", "FormBlockDivider": ".form_block_divider", "FormBlockDividerConfig": ".form_block_divider_config", @@ -5783,9 +5801,13 @@ "TokenQuota": ".token_quota", "TokenQuotaClientCredentials": ".token_quota_client_credentials", "TokenQuotaConfiguration": ".token_quota_configuration", + "TooManyRequestsSchema": ".too_many_requests_schema", + "TooManyRequestsSchemaError": ".too_many_requests_schema_error", "TwilioProviderConfiguration": ".twilio_provider_configuration", "TwilioProviderCredentials": ".twilio_provider_credentials", "TwilioProviderDeliveryMethodEnum": ".twilio_provider_delivery_method_enum", + "UnauthorizedSchema": ".unauthorized_schema", + "UnauthorizedSchemaError": ".unauthorized_schema_error", "UniversalLoginExperienceEnum": ".universal_login_experience_enum", "UpdateActionBindingsResponseContent": ".update_action_bindings_response_content", "UpdateActionModuleResponseContent": ".update_action_module_response_content", @@ -6062,6 +6084,8 @@ def __dir__(): "AttackProtectionUpdateCaptchaRecaptchaV2", "AuthenticationMethodTypeEnum", "AuthenticationTypeEnum", + "BadRequestSchema", + "BadRequestSchemaError", "BotDetectionAllowlist", "BotDetectionChallengePolicyPasswordFlowEnum", "BotDetectionChallengePolicyPasswordResetFlowEnum", @@ -6994,6 +7018,7 @@ def __dir__(): "CreateVerificationEmailResponseContent", "CreatedAuthenticationMethodTypeEnum", "CreatedUserAuthenticationMethodTypeEnum", + "CredentialDeviceTypeEnum", "CredentialId", "CustomDomain", "CustomDomainCustomClientIpHeader", @@ -7446,6 +7471,8 @@ def __dir__(): "ExpressConfiguration", "ExpressConfigurationOrNull", "ExtensibilityEmailProviderCredentials", + "FedCmLogin", + "FedCmLoginGoogle", "FederatedConnectionTokenSet", "FlowAction", "FlowActionActivecampaign", @@ -7847,6 +7874,8 @@ def __dir__(): "FlowsVaultConnectionSetupTypeBasicAuthEnum", "FlowsVaultConnectionSetupTypeOauthClientCredentialsEnum", "FlowsVaultConnectionSummary", + "ForbiddenSchema", + "ForbiddenSchemaError", "FormBlock", "FormBlockDivider", "FormBlockDividerConfig", @@ -8467,9 +8496,13 @@ def __dir__(): "TokenQuota", "TokenQuotaClientCredentials", "TokenQuotaConfiguration", + "TooManyRequestsSchema", + "TooManyRequestsSchemaError", "TwilioProviderConfiguration", "TwilioProviderCredentials", "TwilioProviderDeliveryMethodEnum", + "UnauthorizedSchema", + "UnauthorizedSchemaError", "UniversalLoginExperienceEnum", "UpdateActionBindingsResponseContent", "UpdateActionModuleResponseContent", diff --git a/src/auth0/management/types/bad_request_schema.py b/src/auth0/management/types/bad_request_schema.py new file mode 100644 index 00000000..c8d0d71e --- /dev/null +++ b/src/auth0/management/types/bad_request_schema.py @@ -0,0 +1,28 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata +from .bad_request_schema_error import BadRequestSchemaError + + +class BadRequestSchema(UniversalBaseModel): + """ + Bad Request + """ + + message: str + status_code: typing_extensions.Annotated[str, FieldMetadata(alias="statusCode"), pydantic.Field(alias="statusCode")] + error: BadRequestSchemaError + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/auth0/management/types/bad_request_schema_error.py b/src/auth0/management/types/bad_request_schema_error.py new file mode 100644 index 00000000..f3ca1e85 --- /dev/null +++ b/src/auth0/management/types/bad_request_schema_error.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +BadRequestSchemaError = typing.Union[typing.Literal["Bad Request"], typing.Any] diff --git a/src/auth0/management/types/connection_base_url_exact.py b/src/auth0/management/types/connection_base_url_exact.py index d73b9d98..980f743c 100644 --- a/src/auth0/management/types/connection_base_url_exact.py +++ b/src/auth0/management/types/connection_base_url_exact.py @@ -1,8 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_https_url_with_http_fallback import ConnectionHttpsUrlWithHttpFallback - -ConnectionBaseUrlExact = ConnectionHttpsUrlWithHttpFallback +ConnectionBaseUrlExact = str """ Base URL override for the Exact Online API endpoint used for OAuth2 authorization and API requests. Defaults to https://start.exactonline.nl. """ diff --git a/src/auth0/management/types/connection_client_id_amazon.py b/src/auth0/management/types/connection_client_id_amazon.py index e6b19a44..3832915c 100644 --- a/src/auth0/management/types/connection_client_id_amazon.py +++ b/src/auth0/management/types/connection_client_id_amazon.py @@ -1,8 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_client_id import ConnectionClientId - -ConnectionClientIdAmazon = ConnectionClientId +ConnectionClientIdAmazon = str """ -OAuth 2.0 client identifier obtained from Amazon Developer Console during Login with Amazon application registration. When not provided, Auth0 development keys are used for testing purposes. +OAuth 2.0 client identifier issued by the identity provider during application registration. This value identifies your Auth0 connection to the identity provider. """ diff --git a/src/auth0/management/types/connection_client_id_azure_ad.py b/src/auth0/management/types/connection_client_id_azure_ad.py index 4e1d2f9d..06075a8a 100644 --- a/src/auth0/management/types/connection_client_id_azure_ad.py +++ b/src/auth0/management/types/connection_client_id_azure_ad.py @@ -1,5 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_client_id import ConnectionClientId - -ConnectionClientIdAzureAd = ConnectionClientId +ConnectionClientIdAzureAd = str +""" +OAuth 2.0 client identifier issued by the identity provider during application registration. This value identifies your Auth0 connection to the identity provider. +""" diff --git a/src/auth0/management/types/connection_client_id_exact.py b/src/auth0/management/types/connection_client_id_exact.py index b43253fb..f447c88c 100644 --- a/src/auth0/management/types/connection_client_id_exact.py +++ b/src/auth0/management/types/connection_client_id_exact.py @@ -1,8 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_client_id import ConnectionClientId - -ConnectionClientIdExact = ConnectionClientId +ConnectionClientIdExact = str """ -OAuth2.0 client identifier for the Exact Online connection, obtained when registering your application in the Exact App Center. +OAuth 2.0 client identifier issued by the identity provider during application registration. This value identifies your Auth0 connection to the identity provider. """ diff --git a/src/auth0/management/types/connection_client_id_facebook.py b/src/auth0/management/types/connection_client_id_facebook.py index 822addc2..31a7c2fe 100644 --- a/src/auth0/management/types/connection_client_id_facebook.py +++ b/src/auth0/management/types/connection_client_id_facebook.py @@ -1,8 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_client_id import ConnectionClientId - -ConnectionClientIdFacebook = ConnectionClientId +ConnectionClientIdFacebook = str """ -Your Facebook App ID. You can find this in your [Facebook Developers Console](https://developers.facebook.com/apps) under the App Settings section. +OAuth 2.0 client identifier issued by the identity provider during application registration. This value identifies your Auth0 connection to the identity provider. """ diff --git a/src/auth0/management/types/connection_client_id_google_apps.py b/src/auth0/management/types/connection_client_id_google_apps.py index 917e57d0..679b7875 100644 --- a/src/auth0/management/types/connection_client_id_google_apps.py +++ b/src/auth0/management/types/connection_client_id_google_apps.py @@ -1,8 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_client_id import ConnectionClientId - -ConnectionClientIdGoogleApps = ConnectionClientId +ConnectionClientIdGoogleApps = str """ -Your Google OAuth 2.0 client ID. You can find this in your [Google Cloud Console](https://console.cloud.google.com/apis/credentials) under the OAuth 2.0 Client IDs section. +OAuth 2.0 client identifier issued by the identity provider during application registration. This value identifies your Auth0 connection to the identity provider. """ diff --git a/src/auth0/management/types/connection_client_id_o_auth_1.py b/src/auth0/management/types/connection_client_id_o_auth_1.py index 00142510..57a41f1c 100644 --- a/src/auth0/management/types/connection_client_id_o_auth_1.py +++ b/src/auth0/management/types/connection_client_id_o_auth_1.py @@ -1,8 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_client_id import ConnectionClientId - -ConnectionClientIdOAuth1 = ConnectionClientId +ConnectionClientIdOAuth1 = str """ -OAuth 1.0a client ID (consumer key) that identifies the client to the provider and is used to sign OAuth 1.0a requests. +OAuth 2.0 client identifier issued by the identity provider during application registration. This value identifies your Auth0 connection to the identity provider. """ diff --git a/src/auth0/management/types/connection_client_id_o_auth_2.py b/src/auth0/management/types/connection_client_id_o_auth_2.py index bb9db483..c752d012 100644 --- a/src/auth0/management/types/connection_client_id_o_auth_2.py +++ b/src/auth0/management/types/connection_client_id_o_auth_2.py @@ -1,5 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_client_id import ConnectionClientId - -ConnectionClientIdOAuth2 = ConnectionClientId +ConnectionClientIdOAuth2 = str +""" +OAuth 2.0 client identifier issued by the identity provider during application registration. This value identifies your Auth0 connection to the identity provider. +""" diff --git a/src/auth0/management/types/connection_client_id_oidc.py b/src/auth0/management/types/connection_client_id_oidc.py index efab6cfe..1c6640cb 100644 --- a/src/auth0/management/types/connection_client_id_oidc.py +++ b/src/auth0/management/types/connection_client_id_oidc.py @@ -1,5 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_client_id import ConnectionClientId - -ConnectionClientIdOidc = ConnectionClientId +ConnectionClientIdOidc = str +""" +OAuth 2.0 client identifier issued by the identity provider during application registration. This value identifies your Auth0 connection to the identity provider. +""" diff --git a/src/auth0/management/types/connection_client_id_paypal.py b/src/auth0/management/types/connection_client_id_paypal.py index d9645b54..044be2d7 100644 --- a/src/auth0/management/types/connection_client_id_paypal.py +++ b/src/auth0/management/types/connection_client_id_paypal.py @@ -1,8 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_client_id import ConnectionClientId - -ConnectionClientIdPaypal = ConnectionClientId +ConnectionClientIdPaypal = str """ -OAuth 2.0 client identifier issued by PayPal during application registration. This value identifies your Auth0 connection to PayPal. Leave empty to use Auth0 Dev Keys. +OAuth 2.0 client identifier issued by the identity provider during application registration. This value identifies your Auth0 connection to the identity provider. """ diff --git a/src/auth0/management/types/connection_client_secret_amazon.py b/src/auth0/management/types/connection_client_secret_amazon.py index cf84791e..e1bf4d16 100644 --- a/src/auth0/management/types/connection_client_secret_amazon.py +++ b/src/auth0/management/types/connection_client_secret_amazon.py @@ -1,8 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_client_secret import ConnectionClientSecret - -ConnectionClientSecretAmazon = ConnectionClientSecret +ConnectionClientSecretAmazon = str """ -OAuth 2.0 client secret obtained from Amazon Developer Console during Login with Amazon application registration. Used to authenticate your application when exchanging authorization codes for tokens. +OAuth 2.0 client secret issued by the identity provider during application registration. Used to authenticate your Auth0 connection when exchanging authorization codes for tokens. May be null for public clients. """ diff --git a/src/auth0/management/types/connection_client_secret_bitbucket.py b/src/auth0/management/types/connection_client_secret_bitbucket.py index ca9d1162..aeff9f24 100644 --- a/src/auth0/management/types/connection_client_secret_bitbucket.py +++ b/src/auth0/management/types/connection_client_secret_bitbucket.py @@ -1,5 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_client_secret import ConnectionClientSecret - -ConnectionClientSecretBitbucket = ConnectionClientSecret +ConnectionClientSecretBitbucket = str +""" +OAuth 2.0 client secret issued by the identity provider during application registration. Used to authenticate your Auth0 connection when exchanging authorization codes for tokens. May be null for public clients. +""" diff --git a/src/auth0/management/types/connection_client_secret_exact.py b/src/auth0/management/types/connection_client_secret_exact.py index 47eb9f61..f8cb0bfc 100644 --- a/src/auth0/management/types/connection_client_secret_exact.py +++ b/src/auth0/management/types/connection_client_secret_exact.py @@ -1,8 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_client_secret import ConnectionClientSecret - -ConnectionClientSecretExact = ConnectionClientSecret +ConnectionClientSecretExact = str """ -OAuth2.0 client secret for the Exact Online connection, obtained when registering your application in the Exact App Center. +OAuth 2.0 client secret issued by the identity provider during application registration. Used to authenticate your Auth0 connection when exchanging authorization codes for tokens. May be null for public clients. """ diff --git a/src/auth0/management/types/connection_client_secret_facebook.py b/src/auth0/management/types/connection_client_secret_facebook.py index d17c610f..a568597b 100644 --- a/src/auth0/management/types/connection_client_secret_facebook.py +++ b/src/auth0/management/types/connection_client_secret_facebook.py @@ -1,8 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_client_secret import ConnectionClientSecret - -ConnectionClientSecretFacebook = ConnectionClientSecret +ConnectionClientSecretFacebook = str """ -Your Facebook App Secret. You can find this in your [Facebook Developers Console](https://developers.facebook.com/apps) under the App Settings section. +OAuth 2.0 client secret issued by the identity provider during application registration. Used to authenticate your Auth0 connection when exchanging authorization codes for tokens. May be null for public clients. """ diff --git a/src/auth0/management/types/connection_client_secret_google_apps.py b/src/auth0/management/types/connection_client_secret_google_apps.py index 30f70f32..acebfe7e 100644 --- a/src/auth0/management/types/connection_client_secret_google_apps.py +++ b/src/auth0/management/types/connection_client_secret_google_apps.py @@ -1,8 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_client_secret import ConnectionClientSecret - -ConnectionClientSecretGoogleApps = ConnectionClientSecret +ConnectionClientSecretGoogleApps = str """ -Your Google OAuth 2.0 client secret. You can find this in your [Google Cloud Console](https://console.cloud.google.com/apis/credentials) under the OAuth 2.0 Client IDs section. +OAuth 2.0 client secret issued by the identity provider during application registration. Used to authenticate your Auth0 connection when exchanging authorization codes for tokens. May be null for public clients. """ diff --git a/src/auth0/management/types/connection_client_secret_o_auth_1.py b/src/auth0/management/types/connection_client_secret_o_auth_1.py index ffd3091d..c6229c88 100644 --- a/src/auth0/management/types/connection_client_secret_o_auth_1.py +++ b/src/auth0/management/types/connection_client_secret_o_auth_1.py @@ -1,8 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_client_secret import ConnectionClientSecret - -ConnectionClientSecretOAuth1 = ConnectionClientSecret +ConnectionClientSecretOAuth1 = str """ -OAuth 1.0a client secret paired with the consumer key to sign request-token and access-token requests for this connection. Treat as a sensitive credential and supply the exact secret issued by the upstream provider. +OAuth 2.0 client secret issued by the identity provider during application registration. Used to authenticate your Auth0 connection when exchanging authorization codes for tokens. May be null for public clients. """ diff --git a/src/auth0/management/types/connection_client_secret_o_auth_2.py b/src/auth0/management/types/connection_client_secret_o_auth_2.py index 5787a8f6..88e99eb0 100644 --- a/src/auth0/management/types/connection_client_secret_o_auth_2.py +++ b/src/auth0/management/types/connection_client_secret_o_auth_2.py @@ -1,5 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_client_secret import ConnectionClientSecret - -ConnectionClientSecretOAuth2 = ConnectionClientSecret +ConnectionClientSecretOAuth2 = str +""" +OAuth 2.0 client secret issued by the identity provider during application registration. Used to authenticate your Auth0 connection when exchanging authorization codes for tokens. May be null for public clients. +""" diff --git a/src/auth0/management/types/connection_client_secret_oidc.py b/src/auth0/management/types/connection_client_secret_oidc.py index d9e9fbd8..d546216b 100644 --- a/src/auth0/management/types/connection_client_secret_oidc.py +++ b/src/auth0/management/types/connection_client_secret_oidc.py @@ -1,5 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_client_secret import ConnectionClientSecret - -ConnectionClientSecretOidc = ConnectionClientSecret +ConnectionClientSecretOidc = str +""" +OAuth 2.0 client secret issued by the identity provider during application registration. Used to authenticate your Auth0 connection when exchanging authorization codes for tokens. May be null for public clients. +""" diff --git a/src/auth0/management/types/connection_client_secret_paypal.py b/src/auth0/management/types/connection_client_secret_paypal.py index 639ffc89..36c96106 100644 --- a/src/auth0/management/types/connection_client_secret_paypal.py +++ b/src/auth0/management/types/connection_client_secret_paypal.py @@ -1,8 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_client_secret import ConnectionClientSecret - -ConnectionClientSecretPaypal = ConnectionClientSecret +ConnectionClientSecretPaypal = str """ -OAuth 2.0 client secret issued by PayPal during application registration. Leave empty to use Auth0 Dev Keys. +OAuth 2.0 client secret issued by the identity provider during application registration. Used to authenticate your Auth0 connection when exchanging authorization codes for tokens. May be null for public clients. """ diff --git a/src/auth0/management/types/connection_client_secret_windows_live.py b/src/auth0/management/types/connection_client_secret_windows_live.py index d1dcf06a..cd63a614 100644 --- a/src/auth0/management/types/connection_client_secret_windows_live.py +++ b/src/auth0/management/types/connection_client_secret_windows_live.py @@ -1,5 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_client_secret import ConnectionClientSecret - -ConnectionClientSecretWindowsLive = ConnectionClientSecret +ConnectionClientSecretWindowsLive = str +""" +OAuth 2.0 client secret issued by the identity provider during application registration. Used to authenticate your Auth0 connection when exchanging authorization codes for tokens. May be null for public clients. +""" diff --git a/src/auth0/management/types/connection_dpop_signing_alg_enum.py b/src/auth0/management/types/connection_dpop_signing_alg_enum.py index 10728b02..f708bfcd 100644 --- a/src/auth0/management/types/connection_dpop_signing_alg_enum.py +++ b/src/auth0/management/types/connection_dpop_signing_alg_enum.py @@ -2,4 +2,4 @@ import typing -ConnectionDpopSigningAlgEnum = typing.Union[typing.Literal["ES256", "Ed25519"], typing.Any] +ConnectionDpopSigningAlgEnum = typing.Union[typing.Literal["ES256", "ES384", "ES512", "Ed25519"], typing.Any] diff --git a/src/auth0/management/types/connection_https_url_with_http_fallback_2048.py b/src/auth0/management/types/connection_https_url_with_http_fallback_2048.py index 0d143fc6..ecf2ac60 100644 --- a/src/auth0/management/types/connection_https_url_with_http_fallback_2048.py +++ b/src/auth0/management/types/connection_https_url_with_http_fallback_2048.py @@ -1,5 +1,3 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_https_url_with_http_fallback import ConnectionHttpsUrlWithHttpFallback - -ConnectionHttpsUrlWithHttpFallback2048 = ConnectionHttpsUrlWithHttpFallback +ConnectionHttpsUrlWithHttpFallback2048 = str diff --git a/src/auth0/management/types/connection_https_url_with_http_fallback_255.py b/src/auth0/management/types/connection_https_url_with_http_fallback_255.py index 0cd1d0fd..902efe08 100644 --- a/src/auth0/management/types/connection_https_url_with_http_fallback_255.py +++ b/src/auth0/management/types/connection_https_url_with_http_fallback_255.py @@ -1,5 +1,3 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_https_url_with_http_fallback import ConnectionHttpsUrlWithHttpFallback - -ConnectionHttpsUrlWithHttpFallback255 = ConnectionHttpsUrlWithHttpFallback +ConnectionHttpsUrlWithHttpFallback255 = str diff --git a/src/auth0/management/types/connection_issuer.py b/src/auth0/management/types/connection_issuer.py index 5dca28b7..83393b60 100644 --- a/src/auth0/management/types/connection_issuer.py +++ b/src/auth0/management/types/connection_issuer.py @@ -1,5 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_https_url_with_http_fallback_255 import ConnectionHttpsUrlWithHttpFallback255 - -ConnectionIssuer = ConnectionHttpsUrlWithHttpFallback255 +ConnectionIssuer = str +""" +The identity provider's unique issuer identifier URL (e.g., https://accounts.google.com). Must match the 'iss' claim in ID tokens from the identity provider. +""" diff --git a/src/auth0/management/types/connection_jwks_uri.py b/src/auth0/management/types/connection_jwks_uri.py index dea53fbc..2e9a34f6 100644 --- a/src/auth0/management/types/connection_jwks_uri.py +++ b/src/auth0/management/types/connection_jwks_uri.py @@ -1,5 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_https_url_with_http_fallback_255 import ConnectionHttpsUrlWithHttpFallback255 - -ConnectionJwksUri = ConnectionHttpsUrlWithHttpFallback255 +ConnectionJwksUri = str +""" +URL of the identity provider's JSON Web Key Set (JWKS) endpoint containing public keys for signature verification. Auth0 retrieves these keys to validate ID token signatures. +""" diff --git a/src/auth0/management/types/connection_op_policy_uri.py b/src/auth0/management/types/connection_op_policy_uri.py index 9ecbc897..e4a459db 100644 --- a/src/auth0/management/types/connection_op_policy_uri.py +++ b/src/auth0/management/types/connection_op_policy_uri.py @@ -1,5 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_https_url_with_http_fallback_255 import ConnectionHttpsUrlWithHttpFallback255 - -ConnectionOpPolicyUri = ConnectionHttpsUrlWithHttpFallback255 +ConnectionOpPolicyUri = str +""" +URL that the OpenID Provider provides to the person registering the Client to read about the OPs requirements on how the Relying Party can use the data provided by the OP. The registration process SHOULD display this URL to the person registering the Client if it is given. +""" diff --git a/src/auth0/management/types/connection_op_tos_uri.py b/src/auth0/management/types/connection_op_tos_uri.py index 4e017897..ff906d37 100644 --- a/src/auth0/management/types/connection_op_tos_uri.py +++ b/src/auth0/management/types/connection_op_tos_uri.py @@ -1,5 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_https_url_with_http_fallback_255 import ConnectionHttpsUrlWithHttpFallback255 - -ConnectionOpTosUri = ConnectionHttpsUrlWithHttpFallback255 +ConnectionOpTosUri = str +""" +URL that the OpenID Provider provides to the person registering the Client to read about OpenID Providers terms of service. The registration process SHOULD display this URL to the person registering the Client if it is given. +""" diff --git a/src/auth0/management/types/connection_ping_federate_base_url_ping_federate.py b/src/auth0/management/types/connection_ping_federate_base_url_ping_federate.py index 4c8634a1..5ad7496d 100644 --- a/src/auth0/management/types/connection_ping_federate_base_url_ping_federate.py +++ b/src/auth0/management/types/connection_ping_federate_base_url_ping_federate.py @@ -1,8 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_https_url_with_http_fallback import ConnectionHttpsUrlWithHttpFallback - -ConnectionPingFederateBaseUrlPingFederate = ConnectionHttpsUrlWithHttpFallback +ConnectionPingFederateBaseUrlPingFederate = str """ PingFederate base URL constrained to HTTP/HTTPS with length bounds """ diff --git a/src/auth0/management/types/connection_registration_endpoint.py b/src/auth0/management/types/connection_registration_endpoint.py index 44ba18a8..0c7d189a 100644 --- a/src/auth0/management/types/connection_registration_endpoint.py +++ b/src/auth0/management/types/connection_registration_endpoint.py @@ -1,5 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_https_url_with_http_fallback_255 import ConnectionHttpsUrlWithHttpFallback255 - -ConnectionRegistrationEndpoint = ConnectionHttpsUrlWithHttpFallback255 +ConnectionRegistrationEndpoint = str +""" +URL of the OPs Dynamic Client Registration Endpoint. RECOMMENDED but not REQUIRED. https://openid.net/specs/openid-connect-discovery-1_0.html#OpenID.Registration +""" diff --git a/src/auth0/management/types/connection_response_common.py b/src/auth0/management/types/connection_response_common.py index fc411428..9bc63e2c 100644 --- a/src/auth0/management/types/connection_response_common.py +++ b/src/auth0/management/types/connection_response_common.py @@ -10,7 +10,7 @@ class ConnectionResponseCommon(CreateConnectionCommon): - id: typing.Optional[ConnectionId] = None + id: ConnectionId realms: typing.Optional[ConnectionRealms] = None if IS_PYDANTIC_V2: diff --git a/src/auth0/management/types/connection_service_documentation.py b/src/auth0/management/types/connection_service_documentation.py index 3bdf911a..4bc1b433 100644 --- a/src/auth0/management/types/connection_service_documentation.py +++ b/src/auth0/management/types/connection_service_documentation.py @@ -1,5 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_https_url_with_http_fallback_255 import ConnectionHttpsUrlWithHttpFallback255 - -ConnectionServiceDocumentation = ConnectionHttpsUrlWithHttpFallback255 +ConnectionServiceDocumentation = str +""" +URL of a page containing human-readable information that developers might want or need to know when using the OpenID Provider. In particular, if the OpenID Provider does not support Dynamic Client Registration, then information on how to register Clients needs to be provided in this documentation. +""" diff --git a/src/auth0/management/types/connection_tenant_domain_saml.py b/src/auth0/management/types/connection_tenant_domain_saml.py index 17089702..737ac677 100644 --- a/src/auth0/management/types/connection_tenant_domain_saml.py +++ b/src/auth0/management/types/connection_tenant_domain_saml.py @@ -1,5 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_tenant_domain import ConnectionTenantDomain - -ConnectionTenantDomainSaml = ConnectionTenantDomain +ConnectionTenantDomainSaml = str +""" +For SAML connections, the tenant domain used to construct the login endpoint URL. Can be a string for single-tenant or an array of strings for multi-tenant validation. +""" diff --git a/src/auth0/management/types/connection_token_endpoint.py b/src/auth0/management/types/connection_token_endpoint.py index 80f4ddd5..a8902691 100644 --- a/src/auth0/management/types/connection_token_endpoint.py +++ b/src/auth0/management/types/connection_token_endpoint.py @@ -1,5 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_https_url_with_http_fallback_255 import ConnectionHttpsUrlWithHttpFallback255 - -ConnectionTokenEndpoint = ConnectionHttpsUrlWithHttpFallback255 +ConnectionTokenEndpoint = str +""" +URL of the identity provider's OAuth 2.0 token endpoint where authorization codes are exchanged for access tokens. Must be a valid HTTPS URL. Required for authorization code flow but optional for implicit flow. +""" diff --git a/src/auth0/management/types/connection_userinfo_endpoint.py b/src/auth0/management/types/connection_userinfo_endpoint.py index 6cbe3dea..6fdd9b9a 100644 --- a/src/auth0/management/types/connection_userinfo_endpoint.py +++ b/src/auth0/management/types/connection_userinfo_endpoint.py @@ -1,5 +1,6 @@ # This file was auto-generated by Fern from our API Definition. -from .connection_https_url_with_http_fallback_255 import ConnectionHttpsUrlWithHttpFallback255 - -ConnectionUserinfoEndpoint = ConnectionHttpsUrlWithHttpFallback255 +ConnectionUserinfoEndpoint = str +""" +Optional URL of the identity provider's UserInfo endpoint. When configured with attribute mapping, Auth0 calls this endpoint to retrieve additional user profile claims using the access token. +""" diff --git a/src/auth0/management/types/create_connection_common.py b/src/auth0/management/types/create_connection_common.py index e8784b37..6d7aa014 100644 --- a/src/auth0/management/types/create_connection_common.py +++ b/src/auth0/management/types/create_connection_common.py @@ -11,7 +11,7 @@ class CreateConnectionCommon(UniversalBaseModel): - name: typing.Optional[ConnectionName] = None + name: ConnectionName enabled_clients: typing.Optional[typing.List[str]] = pydantic.Field(default=None) """ Use of this property is NOT RECOMMENDED. Use the PATCH /v2/connections/{id}/clients endpoint to enable the connection for a set of clients. diff --git a/src/auth0/management/types/create_resource_server_response_content.py b/src/auth0/management/types/create_resource_server_response_content.py index 41345fa7..537200a9 100644 --- a/src/auth0/management/types/create_resource_server_response_content.py +++ b/src/auth0/management/types/create_resource_server_response_content.py @@ -56,6 +56,11 @@ class CreateResourceServerResponseContent(UniversalBaseModel): Whether Online Refresh Tokens can be issued for this API (true) or not (false). """ + allow_online_access_with_ephemeral_sessions: typing.Optional[bool] = pydantic.Field(default=None) + """ + Whether Online Refresh Tokens can be issued even when sessions are configured as ephemeral (true) or not (false). + """ + skip_consent_for_verifiable_first_party_clients: typing.Optional[bool] = pydantic.Field(default=None) """ Whether to skip user consent for applications flagged as first party (true) or not (false). diff --git a/src/auth0/management/types/create_user_authentication_method_response_content.py b/src/auth0/management/types/create_user_authentication_method_response_content.py index ecd68214..6b65538d 100644 --- a/src/auth0/management/types/create_user_authentication_method_response_content.py +++ b/src/auth0/management/types/create_user_authentication_method_response_content.py @@ -6,6 +6,7 @@ import pydantic from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel from .created_user_authentication_method_type_enum import CreatedUserAuthenticationMethodTypeEnum +from .credential_device_type_enum import CredentialDeviceTypeEnum from .preferred_authentication_method_enum import PreferredAuthenticationMethodEnum from .user_authentication_method_properties import UserAuthenticationMethodProperties @@ -67,6 +68,32 @@ class CreateUserAuthenticationMethodResponseContent(UniversalBaseModel): Applies to webauthn authenticators only. The relying party identifier. """ + credential_device_type: typing.Optional[CredentialDeviceTypeEnum] = None + credential_backed_up: typing.Optional[bool] = pydantic.Field(default=None) + """ + Applies to passkeys only. Whether the credential was backed up. + """ + + identity_user_id: typing.Optional[str] = pydantic.Field(default=None) + """ + Applies to passkeys only. The ID of the user identity linked with the authentication method. + """ + + user_agent: typing.Optional[str] = pydantic.Field(default=None) + """ + Applies to passkeys only. The user-agent of the browser used to create the passkey. + """ + + user_handle: typing.Optional[str] = pydantic.Field(default=None) + """ + Applies to passkeys only. The user handle of the user identity. + """ + + transports: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + Applies to passkeys only. The transports used by clients to communicate with the authenticator. + """ + created_at: typing.Optional[dt.datetime] = pydantic.Field(default=None) """ Authentication method creation date diff --git a/src/auth0/management/types/credential_device_type_enum.py b/src/auth0/management/types/credential_device_type_enum.py new file mode 100644 index 00000000..439155f1 --- /dev/null +++ b/src/auth0/management/types/credential_device_type_enum.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +CredentialDeviceTypeEnum = typing.Union[typing.Literal["single_device", "multi_device"], typing.Any] diff --git a/src/auth0/management/types/fed_cm_login.py b/src/auth0/management/types/fed_cm_login.py new file mode 100644 index 00000000..4541ab6e --- /dev/null +++ b/src/auth0/management/types/fed_cm_login.py @@ -0,0 +1,24 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .fed_cm_login_google import FedCmLoginGoogle + + +class FedCmLogin(UniversalBaseModel): + """ + Configure FedCM login settings for New Universal Login + """ + + google: typing.Optional[FedCmLoginGoogle] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/auth0/management/types/fed_cm_login_google.py b/src/auth0/management/types/fed_cm_login_google.py new file mode 100644 index 00000000..01c7e43b --- /dev/null +++ b/src/auth0/management/types/fed_cm_login_google.py @@ -0,0 +1,26 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class FedCmLoginGoogle(UniversalBaseModel): + """ + Google FedCM configuration for this client + """ + + is_enabled: typing.Optional[bool] = pydantic.Field(default=None) + """ + When true, shows the Google FedCM prompt on New Universal Login for this client + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/auth0/management/types/forbidden_schema.py b/src/auth0/management/types/forbidden_schema.py new file mode 100644 index 00000000..9bbd6c4c --- /dev/null +++ b/src/auth0/management/types/forbidden_schema.py @@ -0,0 +1,28 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata +from .forbidden_schema_error import ForbiddenSchemaError + + +class ForbiddenSchema(UniversalBaseModel): + """ + Forbidden + """ + + message: str + status_code: typing_extensions.Annotated[str, FieldMetadata(alias="statusCode"), pydantic.Field(alias="statusCode")] + error: ForbiddenSchemaError + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/auth0/management/types/forbidden_schema_error.py b/src/auth0/management/types/forbidden_schema_error.py new file mode 100644 index 00000000..b7b2b9a4 --- /dev/null +++ b/src/auth0/management/types/forbidden_schema_error.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +ForbiddenSchemaError = typing.Union[typing.Literal["Forbidden"], typing.Any] diff --git a/src/auth0/management/types/get_resource_server_response_content.py b/src/auth0/management/types/get_resource_server_response_content.py index daf9ef79..0cfe11dc 100644 --- a/src/auth0/management/types/get_resource_server_response_content.py +++ b/src/auth0/management/types/get_resource_server_response_content.py @@ -56,6 +56,11 @@ class GetResourceServerResponseContent(UniversalBaseModel): Whether Online Refresh Tokens can be issued for this API (true) or not (false). """ + allow_online_access_with_ephemeral_sessions: typing.Optional[bool] = pydantic.Field(default=None) + """ + Whether Online Refresh Tokens can be issued even when sessions are configured as ephemeral (true) or not (false). + """ + skip_consent_for_verifiable_first_party_clients: typing.Optional[bool] = pydantic.Field(default=None) """ Whether to skip user consent for applications flagged as first party (true) or not (false). diff --git a/src/auth0/management/types/get_user_authentication_method_response_content.py b/src/auth0/management/types/get_user_authentication_method_response_content.py index 76911f19..16a3a7dd 100644 --- a/src/auth0/management/types/get_user_authentication_method_response_content.py +++ b/src/auth0/management/types/get_user_authentication_method_response_content.py @@ -89,6 +89,16 @@ class GetUserAuthenticationMethodResponseContent(UniversalBaseModel): Applies to passkeys only. The user-agent of the browser used to create the passkey. """ + user_handle: typing.Optional[str] = pydantic.Field(default=None) + """ + Applies to passkeys only. The user handle of the user identity. + """ + + transports: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + Applies to passkeys only. The transports used by clients to communicate with the authenticator. + """ + aaguid: typing.Optional[str] = pydantic.Field(default=None) """ Applies to passkey authentication methods only. Authenticator Attestation Globally Unique Identifier. diff --git a/src/auth0/management/types/resource_server.py b/src/auth0/management/types/resource_server.py index 68364f83..52ccbacf 100644 --- a/src/auth0/management/types/resource_server.py +++ b/src/auth0/management/types/resource_server.py @@ -56,6 +56,11 @@ class ResourceServer(UniversalBaseModel): Whether Online Refresh Tokens can be issued for this API (true) or not (false). """ + allow_online_access_with_ephemeral_sessions: typing.Optional[bool] = pydantic.Field(default=None) + """ + Whether Online Refresh Tokens can be issued even when sessions are configured as ephemeral (true) or not (false). + """ + skip_consent_for_verifiable_first_party_clients: typing.Optional[bool] = pydantic.Field(default=None) """ Whether to skip user consent for applications flagged as first party (true) or not (false). diff --git a/src/auth0/management/types/too_many_requests_schema.py b/src/auth0/management/types/too_many_requests_schema.py new file mode 100644 index 00000000..037d5f35 --- /dev/null +++ b/src/auth0/management/types/too_many_requests_schema.py @@ -0,0 +1,28 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata +from .too_many_requests_schema_error import TooManyRequestsSchemaError + + +class TooManyRequestsSchema(UniversalBaseModel): + """ + Too Many Requests + """ + + message: str + status_code: typing_extensions.Annotated[str, FieldMetadata(alias="statusCode"), pydantic.Field(alias="statusCode")] + error: TooManyRequestsSchemaError + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/auth0/management/types/too_many_requests_schema_error.py b/src/auth0/management/types/too_many_requests_schema_error.py new file mode 100644 index 00000000..19cfa390 --- /dev/null +++ b/src/auth0/management/types/too_many_requests_schema_error.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +TooManyRequestsSchemaError = typing.Union[typing.Literal["Too Many Requests"], typing.Any] diff --git a/src/auth0/management/types/unauthorized_schema.py b/src/auth0/management/types/unauthorized_schema.py new file mode 100644 index 00000000..e034b792 --- /dev/null +++ b/src/auth0/management/types/unauthorized_schema.py @@ -0,0 +1,28 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata +from .unauthorized_schema_error import UnauthorizedSchemaError + + +class UnauthorizedSchema(UniversalBaseModel): + """ + Unauthorized + """ + + message: str + status_code: typing_extensions.Annotated[str, FieldMetadata(alias="statusCode"), pydantic.Field(alias="statusCode")] + error: UnauthorizedSchemaError + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/auth0/management/types/unauthorized_schema_error.py b/src/auth0/management/types/unauthorized_schema_error.py new file mode 100644 index 00000000..643e2b41 --- /dev/null +++ b/src/auth0/management/types/unauthorized_schema_error.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +UnauthorizedSchemaError = typing.Union[typing.Literal["Unauthorized"], typing.Any] diff --git a/src/auth0/management/types/update_resource_server_response_content.py b/src/auth0/management/types/update_resource_server_response_content.py index 4672583e..ec7d3711 100644 --- a/src/auth0/management/types/update_resource_server_response_content.py +++ b/src/auth0/management/types/update_resource_server_response_content.py @@ -56,6 +56,11 @@ class UpdateResourceServerResponseContent(UniversalBaseModel): Whether Online Refresh Tokens can be issued for this API (true) or not (false). """ + allow_online_access_with_ephemeral_sessions: typing.Optional[bool] = pydantic.Field(default=None) + """ + Whether Online Refresh Tokens can be issued even when sessions are configured as ephemeral (true) or not (false). + """ + skip_consent_for_verifiable_first_party_clients: typing.Optional[bool] = pydantic.Field(default=None) """ Whether to skip user consent for applications flagged as first party (true) or not (false). diff --git a/src/auth0/management/types/user_authentication_method.py b/src/auth0/management/types/user_authentication_method.py index 16d3440f..29a4620c 100644 --- a/src/auth0/management/types/user_authentication_method.py +++ b/src/auth0/management/types/user_authentication_method.py @@ -89,6 +89,16 @@ class UserAuthenticationMethod(UniversalBaseModel): Applies to passkeys only. The user-agent of the browser used to create the passkey. """ + user_handle: typing.Optional[str] = pydantic.Field(default=None) + """ + Applies to passkeys only. The user handle of the user identity. + """ + + transports: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + Applies to passkeys only. The transports used by clients to communicate with the authenticator. + """ + aaguid: typing.Optional[str] = pydantic.Field(default=None) """ Applies to passkey authentication methods only. Authenticator Attestation Globally Unique Identifier. diff --git a/src/auth0/management/users/authentication_methods/client.py b/src/auth0/management/users/authentication_methods/client.py index 7791d22f..7eeb1ee5 100644 --- a/src/auth0/management/users/authentication_methods/client.py +++ b/src/auth0/management/users/authentication_methods/client.py @@ -7,6 +7,7 @@ from ...core.request_options import RequestOptions from ...types.create_user_authentication_method_response_content import CreateUserAuthenticationMethodResponseContent from ...types.created_user_authentication_method_type_enum import CreatedUserAuthenticationMethodTypeEnum +from ...types.credential_device_type_enum import CredentialDeviceTypeEnum from ...types.get_user_authentication_method_response_content import GetUserAuthenticationMethodResponseContent from ...types.list_user_authentication_methods_offset_paginated_response_content import ( ListUserAuthenticationMethodsOffsetPaginatedResponseContent, @@ -106,7 +107,14 @@ def create( preferred_authentication_method: typing.Optional[PreferredAuthenticationMethodEnum] = OMIT, key_id: typing.Optional[str] = OMIT, public_key: typing.Optional[str] = OMIT, + aaguid: typing.Optional[str] = OMIT, relying_party_identifier: typing.Optional[str] = OMIT, + credential_device_type: typing.Optional[CredentialDeviceTypeEnum] = OMIT, + credential_backed_up: typing.Optional[bool] = OMIT, + identity_user_id: typing.Optional[str] = OMIT, + user_agent: typing.Optional[str] = OMIT, + user_handle: typing.Optional[str] = OMIT, + transports: typing.Optional[typing.Sequence[str]] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> CreateUserAuthenticationMethodResponseContent: """ @@ -134,14 +142,34 @@ def create( preferred_authentication_method : typing.Optional[PreferredAuthenticationMethodEnum] key_id : typing.Optional[str] - Applies to webauthn authentication methods only. The id of the credential. + Applies to webauthn/passkey authentication methods only. The id of the credential. public_key : typing.Optional[str] - Applies to webauthn authentication methods only. The public key, which is encoded as base64. + Applies to webauthn/passkey authentication methods only. The public key, which is encoded as base64. + + aaguid : typing.Optional[str] + Applies to passkeys only. Authenticator Attestation Globally Unique Identifier relying_party_identifier : typing.Optional[str] Applies to webauthn authentication methods only. The relying party identifier. + credential_device_type : typing.Optional[CredentialDeviceTypeEnum] + + credential_backed_up : typing.Optional[bool] + Applies to passkeys only. Whether the credential was backed up. + + identity_user_id : typing.Optional[str] + Applies to passkeys only. The ID of the user identity linked with the authentication method. + + user_agent : typing.Optional[str] + Applies to passkeys only. The user-agent of the browser used to create the passkey. + + user_handle : typing.Optional[str] + Applies to passkeys only. The user handle of the user identity. + + transports : typing.Optional[typing.Sequence[str]] + Applies to passkeys only. The transports used by clients to communicate with the authenticator. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -172,7 +200,14 @@ def create( preferred_authentication_method=preferred_authentication_method, key_id=key_id, public_key=public_key, + aaguid=aaguid, relying_party_identifier=relying_party_identifier, + credential_device_type=credential_device_type, + credential_backed_up=credential_backed_up, + identity_user_id=identity_user_id, + user_agent=user_agent, + user_handle=user_handle, + transports=transports, request_options=request_options, ) return _response.data @@ -473,7 +508,14 @@ async def create( preferred_authentication_method: typing.Optional[PreferredAuthenticationMethodEnum] = OMIT, key_id: typing.Optional[str] = OMIT, public_key: typing.Optional[str] = OMIT, + aaguid: typing.Optional[str] = OMIT, relying_party_identifier: typing.Optional[str] = OMIT, + credential_device_type: typing.Optional[CredentialDeviceTypeEnum] = OMIT, + credential_backed_up: typing.Optional[bool] = OMIT, + identity_user_id: typing.Optional[str] = OMIT, + user_agent: typing.Optional[str] = OMIT, + user_handle: typing.Optional[str] = OMIT, + transports: typing.Optional[typing.Sequence[str]] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> CreateUserAuthenticationMethodResponseContent: """ @@ -501,14 +543,34 @@ async def create( preferred_authentication_method : typing.Optional[PreferredAuthenticationMethodEnum] key_id : typing.Optional[str] - Applies to webauthn authentication methods only. The id of the credential. + Applies to webauthn/passkey authentication methods only. The id of the credential. public_key : typing.Optional[str] - Applies to webauthn authentication methods only. The public key, which is encoded as base64. + Applies to webauthn/passkey authentication methods only. The public key, which is encoded as base64. + + aaguid : typing.Optional[str] + Applies to passkeys only. Authenticator Attestation Globally Unique Identifier relying_party_identifier : typing.Optional[str] Applies to webauthn authentication methods only. The relying party identifier. + credential_device_type : typing.Optional[CredentialDeviceTypeEnum] + + credential_backed_up : typing.Optional[bool] + Applies to passkeys only. Whether the credential was backed up. + + identity_user_id : typing.Optional[str] + Applies to passkeys only. The ID of the user identity linked with the authentication method. + + user_agent : typing.Optional[str] + Applies to passkeys only. The user-agent of the browser used to create the passkey. + + user_handle : typing.Optional[str] + Applies to passkeys only. The user handle of the user identity. + + transports : typing.Optional[typing.Sequence[str]] + Applies to passkeys only. The transports used by clients to communicate with the authenticator. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -547,7 +609,14 @@ async def main() -> None: preferred_authentication_method=preferred_authentication_method, key_id=key_id, public_key=public_key, + aaguid=aaguid, relying_party_identifier=relying_party_identifier, + credential_device_type=credential_device_type, + credential_backed_up=credential_backed_up, + identity_user_id=identity_user_id, + user_agent=user_agent, + user_handle=user_handle, + transports=transports, request_options=request_options, ) return _response.data diff --git a/src/auth0/management/users/authentication_methods/raw_client.py b/src/auth0/management/users/authentication_methods/raw_client.py index 7a7c8f70..54218411 100644 --- a/src/auth0/management/users/authentication_methods/raw_client.py +++ b/src/auth0/management/users/authentication_methods/raw_client.py @@ -20,6 +20,7 @@ from ...errors.unauthorized_error import UnauthorizedError from ...types.create_user_authentication_method_response_content import CreateUserAuthenticationMethodResponseContent from ...types.created_user_authentication_method_type_enum import CreatedUserAuthenticationMethodTypeEnum +from ...types.credential_device_type_enum import CredentialDeviceTypeEnum from ...types.get_user_authentication_method_response_content import GetUserAuthenticationMethodResponseContent from ...types.list_user_authentication_methods_offset_paginated_response_content import ( ListUserAuthenticationMethodsOffsetPaginatedResponseContent, @@ -180,7 +181,14 @@ def create( preferred_authentication_method: typing.Optional[PreferredAuthenticationMethodEnum] = OMIT, key_id: typing.Optional[str] = OMIT, public_key: typing.Optional[str] = OMIT, + aaguid: typing.Optional[str] = OMIT, relying_party_identifier: typing.Optional[str] = OMIT, + credential_device_type: typing.Optional[CredentialDeviceTypeEnum] = OMIT, + credential_backed_up: typing.Optional[bool] = OMIT, + identity_user_id: typing.Optional[str] = OMIT, + user_agent: typing.Optional[str] = OMIT, + user_handle: typing.Optional[str] = OMIT, + transports: typing.Optional[typing.Sequence[str]] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> HttpResponse[CreateUserAuthenticationMethodResponseContent]: """ @@ -208,14 +216,34 @@ def create( preferred_authentication_method : typing.Optional[PreferredAuthenticationMethodEnum] key_id : typing.Optional[str] - Applies to webauthn authentication methods only. The id of the credential. + Applies to webauthn/passkey authentication methods only. The id of the credential. public_key : typing.Optional[str] - Applies to webauthn authentication methods only. The public key, which is encoded as base64. + Applies to webauthn/passkey authentication methods only. The public key, which is encoded as base64. + + aaguid : typing.Optional[str] + Applies to passkeys only. Authenticator Attestation Globally Unique Identifier relying_party_identifier : typing.Optional[str] Applies to webauthn authentication methods only. The relying party identifier. + credential_device_type : typing.Optional[CredentialDeviceTypeEnum] + + credential_backed_up : typing.Optional[bool] + Applies to passkeys only. Whether the credential was backed up. + + identity_user_id : typing.Optional[str] + Applies to passkeys only. The ID of the user identity linked with the authentication method. + + user_agent : typing.Optional[str] + Applies to passkeys only. The user-agent of the browser used to create the passkey. + + user_handle : typing.Optional[str] + Applies to passkeys only. The user handle of the user identity. + + transports : typing.Optional[typing.Sequence[str]] + Applies to passkeys only. The transports used by clients to communicate with the authenticator. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -236,7 +264,14 @@ def create( "preferred_authentication_method": preferred_authentication_method, "key_id": key_id, "public_key": public_key, + "aaguid": aaguid, "relying_party_identifier": relying_party_identifier, + "credential_device_type": credential_device_type, + "credential_backed_up": credential_backed_up, + "identity_user_id": identity_user_id, + "user_agent": user_agent, + "user_handle": user_handle, + "transports": transports, }, headers={ "content-type": "application/json", @@ -981,7 +1016,14 @@ async def create( preferred_authentication_method: typing.Optional[PreferredAuthenticationMethodEnum] = OMIT, key_id: typing.Optional[str] = OMIT, public_key: typing.Optional[str] = OMIT, + aaguid: typing.Optional[str] = OMIT, relying_party_identifier: typing.Optional[str] = OMIT, + credential_device_type: typing.Optional[CredentialDeviceTypeEnum] = OMIT, + credential_backed_up: typing.Optional[bool] = OMIT, + identity_user_id: typing.Optional[str] = OMIT, + user_agent: typing.Optional[str] = OMIT, + user_handle: typing.Optional[str] = OMIT, + transports: typing.Optional[typing.Sequence[str]] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> AsyncHttpResponse[CreateUserAuthenticationMethodResponseContent]: """ @@ -1009,14 +1051,34 @@ async def create( preferred_authentication_method : typing.Optional[PreferredAuthenticationMethodEnum] key_id : typing.Optional[str] - Applies to webauthn authentication methods only. The id of the credential. + Applies to webauthn/passkey authentication methods only. The id of the credential. public_key : typing.Optional[str] - Applies to webauthn authentication methods only. The public key, which is encoded as base64. + Applies to webauthn/passkey authentication methods only. The public key, which is encoded as base64. + + aaguid : typing.Optional[str] + Applies to passkeys only. Authenticator Attestation Globally Unique Identifier relying_party_identifier : typing.Optional[str] Applies to webauthn authentication methods only. The relying party identifier. + credential_device_type : typing.Optional[CredentialDeviceTypeEnum] + + credential_backed_up : typing.Optional[bool] + Applies to passkeys only. Whether the credential was backed up. + + identity_user_id : typing.Optional[str] + Applies to passkeys only. The ID of the user identity linked with the authentication method. + + user_agent : typing.Optional[str] + Applies to passkeys only. The user-agent of the browser used to create the passkey. + + user_handle : typing.Optional[str] + Applies to passkeys only. The user handle of the user identity. + + transports : typing.Optional[typing.Sequence[str]] + Applies to passkeys only. The transports used by clients to communicate with the authenticator. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -1037,7 +1099,14 @@ async def create( "preferred_authentication_method": preferred_authentication_method, "key_id": key_id, "public_key": public_key, + "aaguid": aaguid, "relying_party_identifier": relying_party_identifier, + "credential_device_type": credential_device_type, + "credential_backed_up": credential_backed_up, + "identity_user_id": identity_user_id, + "user_agent": user_agent, + "user_handle": user_handle, + "transports": transports, }, headers={ "content-type": "application/json", diff --git a/src/auth0/management/users/roles/raw_client.py b/src/auth0/management/users/roles/raw_client.py index ad21837a..c66039ff 100644 --- a/src/auth0/management/users/roles/raw_client.py +++ b/src/auth0/management/users/roles/raw_client.py @@ -13,6 +13,7 @@ from ...core.request_options import RequestOptions from ...errors.bad_request_error import BadRequestError from ...errors.forbidden_error import ForbiddenError +from ...errors.not_found_error import NotFoundError from ...errors.too_many_requests_error import TooManyRequestsError from ...errors.unauthorized_error import UnauthorizedError from ...types.list_user_roles_offset_paginated_response_content import ListUserRolesOffsetPaginatedResponseContent @@ -94,6 +95,17 @@ def list( request_options=request_options, ) return SyncPager(has_next=_has_next, items=_items, get_next=_get_next, response=_parsed_response) + if _response.status_code == 400: + raise BadRequestError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) if _response.status_code == 401: raise UnauthorizedError( headers=dict(_response.headers), @@ -116,6 +128,17 @@ def list( ), ), ) + if _response.status_code == 404: + raise NotFoundError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) if _response.status_code == 429: raise TooManyRequestsError( headers=dict(_response.headers), @@ -382,6 +405,17 @@ async def _get_next(): ) return AsyncPager(has_next=_has_next, items=_items, get_next=_get_next, response=_parsed_response) + if _response.status_code == 400: + raise BadRequestError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) if _response.status_code == 401: raise UnauthorizedError( headers=dict(_response.headers), @@ -404,6 +438,17 @@ async def _get_next(): ), ), ) + if _response.status_code == 404: + raise NotFoundError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) if _response.status_code == 429: raise TooManyRequestsError( headers=dict(_response.headers), diff --git a/wiremock/docker-compose.test.yml b/wiremock/docker-compose.test.yml index 58747d54..95f0ae91 100644 --- a/wiremock/docker-compose.test.yml +++ b/wiremock/docker-compose.test.yml @@ -5,7 +5,7 @@ services: - "0:8080" # Use dynamic port to avoid conflicts with concurrent tests volumes: - ./wiremock-mappings.json:/home/wiremock/mappings/wiremock-mappings.json - command: ["--global-response-templating", "--verbose"] + command: ["--verbose"] healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/__admin/health"] interval: 2s diff --git a/wiremock/wiremock-mappings.json b/wiremock/wiremock-mappings.json index b1aff151..1b89b94e 100644 --- a/wiremock/wiremock-mappings.json +++ b/wiremock/wiremock-mappings.json @@ -4038,7 +4038,7 @@ }, "response": { "status": 200, - "body": "{\n \"start\": 1.1,\n \"limit\": 1.1,\n \"total\": 1.1,\n \"resource_servers\": [\n {\n \"id\": \"id\",\n \"name\": \"name\",\n \"is_system\": true,\n \"identifier\": \"identifier\",\n \"scopes\": [\n {\n \"value\": \"value\"\n }\n ],\n \"signing_alg\": \"HS256\",\n \"signing_secret\": \"signing_secret\",\n \"allow_offline_access\": true,\n \"allow_online_access\": true,\n \"skip_consent_for_verifiable_first_party_clients\": true,\n \"token_lifetime\": 1,\n \"token_lifetime_for_web\": 1,\n \"enforce_policies\": true,\n \"token_dialect\": \"access_token\",\n \"token_encryption\": {\n \"format\": \"compact-nested-jwe\",\n \"encryption_key\": {\n \"alg\": \"RSA-OAEP-256\",\n \"pem\": \"pem\"\n }\n },\n \"consent_policy\": \"transactional-authorization-with-mfa\",\n \"proof_of_possession\": {\n \"mechanism\": \"mtls\",\n \"required\": true\n },\n \"authorization_policy\": {\n \"policy_id\": \"policy_id\"\n },\n \"client_id\": \"client_id\"\n }\n ]\n}", + "body": "{\n \"start\": 1.1,\n \"limit\": 1.1,\n \"total\": 1.1,\n \"resource_servers\": [\n {\n \"id\": \"id\",\n \"name\": \"name\",\n \"is_system\": true,\n \"identifier\": \"identifier\",\n \"scopes\": [\n {\n \"value\": \"value\"\n }\n ],\n \"signing_alg\": \"HS256\",\n \"signing_secret\": \"signing_secret\",\n \"allow_offline_access\": true,\n \"allow_online_access\": true,\n \"allow_online_access_with_ephemeral_sessions\": true,\n \"skip_consent_for_verifiable_first_party_clients\": true,\n \"token_lifetime\": 1,\n \"token_lifetime_for_web\": 1,\n \"enforce_policies\": true,\n \"token_dialect\": \"access_token\",\n \"token_encryption\": {\n \"format\": \"compact-nested-jwe\",\n \"encryption_key\": {\n \"alg\": \"RSA-OAEP-256\",\n \"pem\": \"pem\"\n }\n },\n \"consent_policy\": \"transactional-authorization-with-mfa\",\n \"proof_of_possession\": {\n \"mechanism\": \"mtls\",\n \"required\": true\n },\n \"authorization_policy\": {\n \"policy_id\": \"policy_id\"\n },\n \"client_id\": \"client_id\"\n }\n ]\n}", "headers": { "Content-Type": "application/json" } @@ -4070,7 +4070,7 @@ }, "response": { "status": 201, - "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"is_system\": true,\n \"identifier\": \"identifier\",\n \"scopes\": [\n {\n \"value\": \"value\",\n \"description\": \"description\"\n }\n ],\n \"signing_alg\": \"HS256\",\n \"signing_secret\": \"signing_secret\",\n \"allow_offline_access\": true,\n \"allow_online_access\": true,\n \"skip_consent_for_verifiable_first_party_clients\": true,\n \"token_lifetime\": 1,\n \"token_lifetime_for_web\": 1,\n \"enforce_policies\": true,\n \"token_dialect\": \"access_token\",\n \"token_encryption\": {\n \"format\": \"compact-nested-jwe\",\n \"encryption_key\": {\n \"name\": \"name\",\n \"alg\": \"RSA-OAEP-256\",\n \"kid\": \"kid\",\n \"pem\": \"pem\"\n }\n },\n \"consent_policy\": \"transactional-authorization-with-mfa\",\n \"authorization_details\": [\n {\n \"key\": \"value\"\n }\n ],\n \"proof_of_possession\": {\n \"mechanism\": \"mtls\",\n \"required\": true,\n \"required_for\": \"public_clients\"\n },\n \"subject_type_authorization\": {\n \"user\": {\n \"policy\": \"allow_all\"\n },\n \"client\": {\n \"policy\": \"deny_all\"\n }\n },\n \"authorization_policy\": {\n \"policy_id\": \"policy_id\"\n },\n \"client_id\": \"client_id\"\n}", + "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"is_system\": true,\n \"identifier\": \"identifier\",\n \"scopes\": [\n {\n \"value\": \"value\",\n \"description\": \"description\"\n }\n ],\n \"signing_alg\": \"HS256\",\n \"signing_secret\": \"signing_secret\",\n \"allow_offline_access\": true,\n \"allow_online_access\": true,\n \"allow_online_access_with_ephemeral_sessions\": true,\n \"skip_consent_for_verifiable_first_party_clients\": true,\n \"token_lifetime\": 1,\n \"token_lifetime_for_web\": 1,\n \"enforce_policies\": true,\n \"token_dialect\": \"access_token\",\n \"token_encryption\": {\n \"format\": \"compact-nested-jwe\",\n \"encryption_key\": {\n \"name\": \"name\",\n \"alg\": \"RSA-OAEP-256\",\n \"kid\": \"kid\",\n \"pem\": \"pem\"\n }\n },\n \"consent_policy\": \"transactional-authorization-with-mfa\",\n \"authorization_details\": [\n {\n \"key\": \"value\"\n }\n ],\n \"proof_of_possession\": {\n \"mechanism\": \"mtls\",\n \"required\": true,\n \"required_for\": \"public_clients\"\n },\n \"subject_type_authorization\": {\n \"user\": {\n \"policy\": \"allow_all\"\n },\n \"client\": {\n \"policy\": \"deny_all\"\n }\n },\n \"authorization_policy\": {\n \"policy_id\": \"policy_id\"\n },\n \"client_id\": \"client_id\"\n}", "headers": { "Content-Type": "application/json" } @@ -4111,7 +4111,7 @@ }, "response": { "status": 200, - "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"is_system\": true,\n \"identifier\": \"identifier\",\n \"scopes\": [\n {\n \"value\": \"value\",\n \"description\": \"description\"\n }\n ],\n \"signing_alg\": \"HS256\",\n \"signing_secret\": \"signing_secret\",\n \"allow_offline_access\": true,\n \"allow_online_access\": true,\n \"skip_consent_for_verifiable_first_party_clients\": true,\n \"token_lifetime\": 1,\n \"token_lifetime_for_web\": 1,\n \"enforce_policies\": true,\n \"token_dialect\": \"access_token\",\n \"token_encryption\": {\n \"format\": \"compact-nested-jwe\",\n \"encryption_key\": {\n \"name\": \"name\",\n \"alg\": \"RSA-OAEP-256\",\n \"kid\": \"kid\",\n \"pem\": \"pem\"\n }\n },\n \"consent_policy\": \"transactional-authorization-with-mfa\",\n \"authorization_details\": [\n {\n \"key\": \"value\"\n }\n ],\n \"proof_of_possession\": {\n \"mechanism\": \"mtls\",\n \"required\": true,\n \"required_for\": \"public_clients\"\n },\n \"subject_type_authorization\": {\n \"user\": {\n \"policy\": \"allow_all\"\n },\n \"client\": {\n \"policy\": \"deny_all\"\n }\n },\n \"authorization_policy\": {\n \"policy_id\": \"policy_id\"\n },\n \"client_id\": \"client_id\"\n}", + "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"is_system\": true,\n \"identifier\": \"identifier\",\n \"scopes\": [\n {\n \"value\": \"value\",\n \"description\": \"description\"\n }\n ],\n \"signing_alg\": \"HS256\",\n \"signing_secret\": \"signing_secret\",\n \"allow_offline_access\": true,\n \"allow_online_access\": true,\n \"allow_online_access_with_ephemeral_sessions\": true,\n \"skip_consent_for_verifiable_first_party_clients\": true,\n \"token_lifetime\": 1,\n \"token_lifetime_for_web\": 1,\n \"enforce_policies\": true,\n \"token_dialect\": \"access_token\",\n \"token_encryption\": {\n \"format\": \"compact-nested-jwe\",\n \"encryption_key\": {\n \"name\": \"name\",\n \"alg\": \"RSA-OAEP-256\",\n \"kid\": \"kid\",\n \"pem\": \"pem\"\n }\n },\n \"consent_policy\": \"transactional-authorization-with-mfa\",\n \"authorization_details\": [\n {\n \"key\": \"value\"\n }\n ],\n \"proof_of_possession\": {\n \"mechanism\": \"mtls\",\n \"required\": true,\n \"required_for\": \"public_clients\"\n },\n \"subject_type_authorization\": {\n \"user\": {\n \"policy\": \"allow_all\"\n },\n \"client\": {\n \"policy\": \"deny_all\"\n }\n },\n \"authorization_policy\": {\n \"policy_id\": \"policy_id\"\n },\n \"client_id\": \"client_id\"\n}", "headers": { "Content-Type": "application/json" } @@ -4183,7 +4183,7 @@ }, "response": { "status": 201, - "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"is_system\": true,\n \"identifier\": \"identifier\",\n \"scopes\": [\n {\n \"value\": \"value\",\n \"description\": \"description\"\n }\n ],\n \"signing_alg\": \"HS256\",\n \"signing_secret\": \"signing_secret\",\n \"allow_offline_access\": true,\n \"allow_online_access\": true,\n \"skip_consent_for_verifiable_first_party_clients\": true,\n \"token_lifetime\": 1,\n \"token_lifetime_for_web\": 1,\n \"enforce_policies\": true,\n \"token_dialect\": \"access_token\",\n \"token_encryption\": {\n \"format\": \"compact-nested-jwe\",\n \"encryption_key\": {\n \"name\": \"name\",\n \"alg\": \"RSA-OAEP-256\",\n \"kid\": \"kid\",\n \"pem\": \"pem\"\n }\n },\n \"consent_policy\": \"transactional-authorization-with-mfa\",\n \"authorization_details\": [\n {\n \"key\": \"value\"\n }\n ],\n \"proof_of_possession\": {\n \"mechanism\": \"mtls\",\n \"required\": true,\n \"required_for\": \"public_clients\"\n },\n \"subject_type_authorization\": {\n \"user\": {\n \"policy\": \"allow_all\"\n },\n \"client\": {\n \"policy\": \"deny_all\"\n }\n },\n \"authorization_policy\": {\n \"policy_id\": \"policy_id\"\n },\n \"client_id\": \"client_id\"\n}", + "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"is_system\": true,\n \"identifier\": \"identifier\",\n \"scopes\": [\n {\n \"value\": \"value\",\n \"description\": \"description\"\n }\n ],\n \"signing_alg\": \"HS256\",\n \"signing_secret\": \"signing_secret\",\n \"allow_offline_access\": true,\n \"allow_online_access\": true,\n \"allow_online_access_with_ephemeral_sessions\": true,\n \"skip_consent_for_verifiable_first_party_clients\": true,\n \"token_lifetime\": 1,\n \"token_lifetime_for_web\": 1,\n \"enforce_policies\": true,\n \"token_dialect\": \"access_token\",\n \"token_encryption\": {\n \"format\": \"compact-nested-jwe\",\n \"encryption_key\": {\n \"name\": \"name\",\n \"alg\": \"RSA-OAEP-256\",\n \"kid\": \"kid\",\n \"pem\": \"pem\"\n }\n },\n \"consent_policy\": \"transactional-authorization-with-mfa\",\n \"authorization_details\": [\n {\n \"key\": \"value\"\n }\n ],\n \"proof_of_possession\": {\n \"mechanism\": \"mtls\",\n \"required\": true,\n \"required_for\": \"public_clients\"\n },\n \"subject_type_authorization\": {\n \"user\": {\n \"policy\": \"allow_all\"\n },\n \"client\": {\n \"policy\": \"deny_all\"\n }\n },\n \"authorization_policy\": {\n \"policy_id\": \"policy_id\"\n },\n \"client_id\": \"client_id\"\n}", "headers": { "Content-Type": "application/json" } @@ -13727,7 +13727,7 @@ }, "response": { "status": 200, - "body": "{\n \"start\": 1.1,\n \"limit\": 1.1,\n \"total\": 1.1,\n \"authenticators\": [\n {\n \"id\": \"id\",\n \"type\": \"recovery-code\",\n \"confirmed\": true,\n \"name\": \"name\",\n \"authentication_methods\": [\n {}\n ],\n \"preferred_authentication_method\": \"voice\",\n \"link_id\": \"link_id\",\n \"phone_number\": \"phone_number\",\n \"email\": \"email\",\n \"key_id\": \"key_id\",\n \"public_key\": \"public_key\",\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"enrolled_at\": \"2024-01-15T09:30:00Z\",\n \"last_auth_at\": \"2024-01-15T09:30:00Z\",\n \"credential_device_type\": \"credential_device_type\",\n \"credential_backed_up\": true,\n \"identity_user_id\": \"identity_user_id\",\n \"user_agent\": \"user_agent\",\n \"aaguid\": \"aaguid\",\n \"relying_party_identifier\": \"relying_party_identifier\"\n }\n ]\n}", + "body": "{\n \"start\": 1.1,\n \"limit\": 1.1,\n \"total\": 1.1,\n \"authenticators\": [\n {\n \"id\": \"id\",\n \"type\": \"recovery-code\",\n \"confirmed\": true,\n \"name\": \"name\",\n \"authentication_methods\": [\n {}\n ],\n \"preferred_authentication_method\": \"voice\",\n \"link_id\": \"link_id\",\n \"phone_number\": \"phone_number\",\n \"email\": \"email\",\n \"key_id\": \"key_id\",\n \"public_key\": \"public_key\",\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"enrolled_at\": \"2024-01-15T09:30:00Z\",\n \"last_auth_at\": \"2024-01-15T09:30:00Z\",\n \"credential_device_type\": \"credential_device_type\",\n \"credential_backed_up\": true,\n \"identity_user_id\": \"identity_user_id\",\n \"user_agent\": \"user_agent\",\n \"user_handle\": \"user_handle\",\n \"transports\": [\n \"transports\"\n ],\n \"aaguid\": \"aaguid\",\n \"relying_party_identifier\": \"relying_party_identifier\"\n }\n ]\n}", "headers": { "Content-Type": "application/json" } @@ -13763,7 +13763,7 @@ }, "response": { "status": 201, - "body": "{\n \"id\": \"id\",\n \"type\": \"phone\",\n \"name\": \"name\",\n \"totp_secret\": \"totp_secret\",\n \"phone_number\": \"phone_number\",\n \"email\": \"email\",\n \"authentication_methods\": [\n {\n \"type\": \"totp\",\n \"id\": \"id\"\n }\n ],\n \"preferred_authentication_method\": \"voice\",\n \"key_id\": \"key_id\",\n \"public_key\": \"public_key\",\n \"aaguid\": \"aaguid\",\n \"relying_party_identifier\": \"relying_party_identifier\",\n \"created_at\": \"2024-01-15T09:30:00Z\"\n}", + "body": "{\n \"id\": \"id\",\n \"type\": \"phone\",\n \"name\": \"name\",\n \"totp_secret\": \"totp_secret\",\n \"phone_number\": \"phone_number\",\n \"email\": \"email\",\n \"authentication_methods\": [\n {\n \"type\": \"totp\",\n \"id\": \"id\"\n }\n ],\n \"preferred_authentication_method\": \"voice\",\n \"key_id\": \"key_id\",\n \"public_key\": \"public_key\",\n \"aaguid\": \"aaguid\",\n \"relying_party_identifier\": \"relying_party_identifier\",\n \"credential_device_type\": \"single_device\",\n \"credential_backed_up\": true,\n \"identity_user_id\": \"identity_user_id\",\n \"user_agent\": \"user_agent\",\n \"user_handle\": \"user_handle\",\n \"transports\": [\n \"transports\"\n ],\n \"created_at\": \"2024-01-15T09:30:00Z\"\n}", "headers": { "Content-Type": "application/json" } @@ -13874,7 +13874,7 @@ }, "response": { "status": 200, - "body": "{\n \"id\": \"id\",\n \"type\": \"recovery-code\",\n \"confirmed\": true,\n \"name\": \"name\",\n \"authentication_methods\": [\n {\n \"type\": \"totp\",\n \"id\": \"id\"\n }\n ],\n \"preferred_authentication_method\": \"voice\",\n \"link_id\": \"link_id\",\n \"phone_number\": \"phone_number\",\n \"email\": \"email\",\n \"key_id\": \"key_id\",\n \"public_key\": \"public_key\",\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"enrolled_at\": \"2024-01-15T09:30:00Z\",\n \"last_auth_at\": \"2024-01-15T09:30:00Z\",\n \"credential_device_type\": \"credential_device_type\",\n \"credential_backed_up\": true,\n \"identity_user_id\": \"identity_user_id\",\n \"user_agent\": \"user_agent\",\n \"aaguid\": \"aaguid\",\n \"relying_party_identifier\": \"relying_party_identifier\"\n}", + "body": "{\n \"id\": \"id\",\n \"type\": \"recovery-code\",\n \"confirmed\": true,\n \"name\": \"name\",\n \"authentication_methods\": [\n {\n \"type\": \"totp\",\n \"id\": \"id\"\n }\n ],\n \"preferred_authentication_method\": \"voice\",\n \"link_id\": \"link_id\",\n \"phone_number\": \"phone_number\",\n \"email\": \"email\",\n \"key_id\": \"key_id\",\n \"public_key\": \"public_key\",\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"enrolled_at\": \"2024-01-15T09:30:00Z\",\n \"last_auth_at\": \"2024-01-15T09:30:00Z\",\n \"credential_device_type\": \"credential_device_type\",\n \"credential_backed_up\": true,\n \"identity_user_id\": \"identity_user_id\",\n \"user_agent\": \"user_agent\",\n \"user_handle\": \"user_handle\",\n \"transports\": [\n \"transports\"\n ],\n \"aaguid\": \"aaguid\",\n \"relying_party_identifier\": \"relying_party_identifier\"\n}", "headers": { "Content-Type": "application/json" }