diff --git a/.fern/replay.lock b/.fern/replay.lock index b438850f..3c9b19be 100644 --- a/.fern/replay.lock +++ b/.fern/replay.lock @@ -6,5 +6,11 @@ generations: timestamp: 2026-10-14T09:56:56.826Z cli_version: unknown generator_versions: {} -current_generation: 98090cdf6841619f7a558af87f0cd7612d11fdff + - commit_sha: ca6941ebe04b306e94f3315865d5fd06e3b2f233 + tree_hash: b718a95d426e320124dc2cd54ef4bdb0a0623ac8 + timestamp: 2026-10-14T10:04:24.137Z + cli_version: unknown + generator_versions: + fernapi/fern-python-sdk: 5.26.0 +current_generation: ca6941ebe04b306e94f3315865d5fd06e3b2f233 patches: [] diff --git a/.fernignore b/.fernignore index 6d1ab409..22bb7bf4 100644 --- a/.fernignore +++ b/.fernignore @@ -10,6 +10,7 @@ tests/management/ # Documentation v5_MIGRATION_GUIDE.md +UPGRADING.md CHANGELOG.md # Authentication API (copied from auth0-python, not Fern-generated) diff --git a/reference.md b/reference.md index cd3c9dcb..252b9e40 100644 --- a/reference.md +++ b/reference.md @@ -1537,6 +1537,134 @@ client.client_grants.create( + + + + +
client.client_grants.search(...) -> SearchClientGrantsResponseContent +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Search client grants using SCIM or Lucene filter syntax with low-latency, eventually consistent results. Use the parser parameter to specify "scim" or "lucene" syntax (default: "lucene"). This endpoint provides an alternative to the standard GET /client-grants endpoint with better performance for complex queries. +Results may not reflect recent updates immediately. +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +from auth0.management import Auth0 +from auth0.management.environment import Auth0Environment + +client = Auth0( + token="", + environment=Auth0Environment.DEFAULT, +) + +client.client_grants.search( + q="q", + parser="scim", + fields="fields", + include_fields=True, + take=1, + from_="from", + sort="audience", +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**q:** `typing.Optional[str]` — Filter expression in SCIM or Lucene syntax (depending on parser parameter). SCIM examples: `audience eq "https://api.example.com"`, `client_id eq "cli_abc"`, `subject_type eq "client"`, `allow_any_organization eq true`, `default_for eq "third_party_clients"`, `audience co "example" and organization_id eq "org_123"`. SCIM operators: eq, ne, sw, ew, co, pr, gt, ge, lt, le, and, or.

Supported Fields:
  • audience - Filter by audience (eq, ne, sw, co, ew, pr)
  • client_id - Filter by client ID (eq, ne, sw, pr)
  • subject_type - Filter by subject type (eq, ne, sw, pr)
  • allow_any_organization - Filter by allow_any_organization (eq, ne, pr)
  • organization_id - Filter by organization ID (eq, ne, sw, pr)
  • updated_at - Filter by last update date (eq, ne, gt, ge, lt, le, pr)
  • default_for - Filter by default grant group (eq, ne, sw, pr)
Maximum 5 filter operations per query. Results are eventually consistent and may not reflect recent updates. + +
+
+ +
+
+ +**parser:** `typing.Optional[SearchParserEnum]` — Query parser to use for the filter expression. Use "scim" for SCIM filter syntax or "lucene" for Lucene query syntax (default). + +
+
+ +
+
+ +**fields:** `typing.Optional[str]` — Comma-separated list of fields to include or exclude in the response. Works with the include_fields parameter to control projection mode. + +
+
+ +
+
+ +**include_fields:** `typing.Optional[bool]` — Controls field projection mode. Set to true to include only fields specified in the fields parameter. Set to false to exclude fields specified in the fields parameter. Defaults to true if not specified. + +
+
+ +
+
+ +**take:** `typing.Optional[int]` — Maximum number of results to return per page (1-100). Defaults to 50. + +
+
+ +
+
+ +**from:** `typing.Optional[str]` — Cursor for the next page of results. Use the value from the next field in the previous response. + +
+
+ +
+
+ +**sort:** `typing.Optional[ClientGrantSortFieldEnum]` — Field name to sort results by in ascending order. Defaults to insertion order (oldest first) if not provided. + +
+
+ +
+
+ +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+
+
+ +
@@ -1801,8 +1929,8 @@ client.client_grants.update( -## Clients -
client.clients.list(...) -> ListClientsOffsetPaginatedResponseContent +## ClientProfiles +
client.client_profiles.list(...) -> ListClientProfilesPaginatedResponseContent
@@ -1814,31 +1942,7 @@ client.client_grants.update(
-Retrieve clients (applications and SSO integrations) matching provided filters. A list of fields to include or exclude may also be specified. -For more information, read [Applications in Auth0](https://www.auth0.com/docs/get-started/applications) and [Single Sign-On](https://www.auth0.com/docs/authenticate/single-sign-on). - -- The following can be retrieved with any scope: - `client_id`, `app_type`, `name`, and `description`. -- The following properties can only be retrieved with the `read:clients` or - `read:client_keys` scope: - `callbacks`, `oidc_logout`, `allowed_origins`, - `web_origins`, `tenant`, `global`, `config_route`, - `callback_url_template`, `jwt_configuration`, - `jwt_configuration.lifetime_in_seconds`, `jwt_configuration.secret_encoded`, - `jwt_configuration.scopes`, `jwt_configuration.alg`, `api_type`, - `logo_uri`, `allowed_clients`, `owners`, `custom_login_page`, - `custom_login_page_on`, `sso`, `addons`, `form_template`, - `custom_login_page_codeview`, `resource_servers`, `client_metadata`, - `mobile`, `mobile.android`, `mobile.ios`, `allowed_logout_urls`, - `token_endpoint_auth_method`, `is_first_party`, `oidc_conformant`, - `is_token_endpoint_ip_header_trusted`, `initiate_login_uri`, `grant_types`, - `refresh_token`, `refresh_token.rotation_type`, `refresh_token.expiration_type`, - `refresh_token.leeway`, `refresh_token.token_lifetime`, `refresh_token.policies`, `organization_usage`, - `organization_require_behavior`. -- The following properties can only be retrieved with the - `read:client_keys` or `read:client_credentials` scope: - `encryption_key`, `encryption_key.pub`, `encryption_key.cert`, - `client_secret`, `client_authentication_methods` and `signing_key`. +Retrieve a paginated list of client profiles for the tenant. Uses checkpoint pagination: pass the next cursor from a previous response as the from query parameter to retrieve the following page.
@@ -1861,17 +1965,9 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.clients.list( - fields="fields", - include_fields=True, - page=1, - per_page=1, - include_totals=True, - is_global=True, - is_first_party=True, - app_type="app_type", - external_client_id="external_client_id", - q="q", +client.client_profiles.list( + from_="from", + take=1, ) ``` @@ -1888,7 +1984,7 @@ client.clients.list(
-**fields:** `typing.Optional[str]` — Comma-separated list of fields to include or exclude (based on value provided for include_fields) in the result. Leave empty to retrieve all fields. +**from:** `typing.Optional[str]` — Optional Id from which to start selection.
@@ -1896,7 +1992,7 @@ client.clients.list(
-**include_fields:** `typing.Optional[bool]` — Whether specified fields are to be included (true) or excluded (false). +**take:** `typing.Optional[int]` — Number of results per page. Defaults to 50.
@@ -1904,39 +2000,77 @@ client.clients.list(
-**page:** `typing.Optional[int]` — Page index of the results to return. First page is 0. +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+ +
-
-
-**per_page:** `typing.Optional[int]` — Number of results per page. Default value is 50, maximum value is 100 -
+
+
client.client_profiles.create(...) -> ClientProfile
-**include_totals:** `typing.Optional[bool]` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default). - +#### 📝 Description + +
+
+ +
+
+ +Create a client profile. At most one profile is allowed per tenant in this release; attempting to create a second returns 409 Conflict. The profile governs Dynamic CIMD clients matched by its apply_policy at runtime. +
+
+#### 🔌 Usage +
-**is_global:** `typing.Optional[bool]` — Optional filter on the global client parameter. - +
+
+ +```python +from auth0.management import Auth0, ClientProfileClientConfiguration, ClientProfileApplyPolicy +from auth0.management.environment import Auth0Environment + +client = Auth0( + token="", + environment=Auth0Environment.DEFAULT, +) + +client.client_profiles.create( + name="name", + client_configuration=ClientProfileClientConfiguration(), + apply_policy=ClientProfileApplyPolicy( + external_metadata_type="cimd", + external_metadata_created_by="client", + ), +) + +``` +
+
+#### ⚙️ Parameters +
-**is_first_party:** `typing.Optional[bool]` — Optional filter on whether or not a client is a first-party client. +
+
+ +**name:** `ClientProfileName`
@@ -1944,7 +2078,7 @@ client.clients.list(
-**app_type:** `typing.Optional[str]` — Optional filter by a comma-separated list of application types. +**client_configuration:** `ClientProfileClientConfiguration`
@@ -1952,7 +2086,7 @@ client.clients.list(
-**external_client_id:** `typing.Optional[str]` — Optional filter by the Client ID Metadata Document URI for CIMD-registered clients. +**apply_policy:** `ClientProfileApplyPolicy`
@@ -1960,7 +2094,7 @@ client.clients.list(
-**q:** `typing.Optional[str]` — Advanced Query in Lucene syntax.
Permitted Queries:
  • client_grant.organization_id:{organization_id}
  • client_grant.allow_any_organization:true
Additional Restrictions:
  • Cannot be used in combination with other filters
  • Requires use of the from and take paging parameters (checkpoint paginatinon)
  • Reduced rate limits apply. See Rate Limit Configurations
Note: Recent updates may not be immediately reflected in query results +**description:** `typing.Optional[ClientProfileDescription]`
@@ -1980,7 +2114,7 @@ client.clients.list(
-
client.clients.create(...) -> CreateClientResponseContent +
client.client_profiles.get(...) -> ClientProfile
@@ -1992,20 +2126,7 @@ client.clients.list(
-Create a new client (application or SSO integration). For more information, read [Create Applications](https://www.auth0.com/docs/get-started/auth0-overview/create-applications) -[API Endpoints for Single Sign-On](https://www.auth0.com/docs/authenticate/single-sign-on/api-endpoints-for-single-sign-on). - -Notes: -- We recommend leaving the `client_secret` parameter unspecified to allow the generation of a safe secret. -- The `client_authentication_methods` and `token_endpoint_auth_method` properties are mutually exclusive. Use -`client_authentication_methods` to configure the client with Private Key JWT authentication method. Otherwise, use `token_endpoint_auth_method` -to configure the client with client secret (basic or post) or with no authentication method (none). -- When using `client_authentication_methods` to configure the client with Private Key JWT authentication method, specify fully defined credentials. -These credentials will be automatically enabled for Private Key JWT authentication on the client. -- To configure `client_authentication_methods`, the `create:client_credentials` scope is required. -- To configure `client_authentication_methods`, the property `jwt_configuration.alg` must be set to RS256. - -SSO Integrations created via this endpoint will accept login requests and share user profile information. +Retrieve a single client profile by its identifier. Returns 404 if no profile with the given ID exists for the tenant.
@@ -2028,8 +2149,8 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.clients.create( - name="name", +client.client_profiles.get( + id="id", ) ``` @@ -2046,7 +2167,7 @@ client.clients.create(
-**name:** `str` — Name of this client (min length: 1 character, does not allow `<` or `>`). +**id:** `ClientProfileId` — ID of the client profile.
@@ -2054,103 +2175,72 @@ client.clients.create(
-**description:** `typing.Optional[str]` — Free text description of this client (max length: 140 characters). +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
- -
-
- -**logo_uri:** `typing.Optional[str]` — URL of the logo to display for this client. Recommended size is 150x150 pixels. -
-
-
-**callbacks:** `typing.Optional[typing.List[str]]` — Comma-separated list of URLs whitelisted for Auth0 to use as a callback to the client after authentication. -
+
+
client.client_profiles.delete(...)
-**oidc_logout:** `typing.Optional[ClientOidcBackchannelLogoutSettings]` - -
-
+#### 📝 Description
-**oidc_backchannel_logout:** `typing.Optional[ClientOidcBackchannelLogoutSettings]` — Configuration for OIDC backchannel logout (deprecated, in favor of oidc_logout) - -
-
-
-**session_transfer:** `typing.Optional[ClientSessionTransferConfiguration]` - +Delete a client profile. Idempotent: returns 204 No Content whether or not a profile with the given ID existed. Deleting the profile removes fleet governance for matched clients immediately.
- -
-
- -**allowed_origins:** `typing.Optional[typing.List[str]]` — Comma-separated list of URLs allowed to make requests from JavaScript to Auth0 API (typically used with CORS). By default, all your callback URLs will be allowed. This field allows you to enter other origins if necessary. You can also use wildcards at the subdomain level (e.g., https://*.contoso.com). Query strings and hash information are not taken into account when validating these URLs. -
+#### 🔌 Usage +
-**web_origins:** `typing.Optional[typing.List[str]]` — Comma-separated list of allowed origins for use with Cross-Origin Authentication, Device Flow, and web message response mode. - -
-
-
-**client_aliases:** `typing.Optional[typing.List[str]]` — List of audiences/realms for SAML protocol. Used by the wsfed addon. - -
-
+```python +from auth0.management import Auth0 +from auth0.management.environment import Auth0Environment -
-
+client = Auth0( + token="", + environment=Auth0Environment.DEFAULT, +) -**allowed_clients:** `typing.Optional[typing.List[str]]` — List of allow clients and API ids that are allowed to make delegation requests. Empty means all all your clients are allowed. - +client.client_profiles.delete( + id="id", +) + +```
- -
-
- -**allowed_logout_urls:** `typing.Optional[typing.List[str]]` — Comma-separated list of URLs that are valid to redirect to after logout from Auth0. Wildcards are allowed for subdomains. -
+#### ⚙️ Parameters +
-**grant_types:** `typing.Optional[typing.List[str]]` — List of grant types supported for this application. Can include `authorization_code`, `implicit`, `refresh_token`, `client_credentials`, `password`, `http://auth0.com/oauth/grant-type/password-realm`, `http://auth0.com/oauth/grant-type/mfa-oob`, `http://auth0.com/oauth/grant-type/mfa-otp`, `http://auth0.com/oauth/grant-type/mfa-recovery-code`, `urn:openid:params:grant-type:ciba`, `urn:ietf:params:oauth:grant-type:device_code`, and `urn:auth0:params:oauth:grant-type:token-exchange:federated-connection-access-token`. - -
-
-
-**token_endpoint_auth_method:** `typing.Optional[ClientTokenEndpointAuthMethodEnum]` +**id:** `ClientProfileId` — ID of the client profile.
@@ -2158,87 +2248,72 @@ client.clients.create(
-**is_token_endpoint_ip_header_trusted:** `typing.Optional[bool]` — If true, trust that the IP specified in the `auth0-forwarded-for` header is the end-user's IP for brute-force-protection on token endpoint. +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
- -
-
- -**app_type:** `typing.Optional[ClientAppTypeEnum]` -
-
-
-**is_first_party:** `typing.Optional[bool]` — Whether this client a first party client or not -
+
+
client.client_profiles.update(...) -> ClientProfile
-**oidc_conformant:** `typing.Optional[bool]` — Whether this client conforms to strict OIDC specifications (true) or uses legacy features (false). - -
-
+#### 📝 Description
-**jwt_configuration:** `typing.Optional[ClientJwtConfiguration]` - -
-
-
-**encryption_key:** `typing.Optional[ClientEncryptionKey]` - +Update a client profile. Supports partial updates at the top level (JSON Merge Patch); omitted top-level fields remain unchanged. Nested objects such as client_configuration must be supplied in full.
- -
-
- -**sso:** `typing.Optional[bool]` — Applies only to SSO clients and determines whether Auth0 will handle Single Sign On (true) or whether the Identity Provider will (false). -
+#### 🔌 Usage +
-**cross_origin_authentication:** `typing.Optional[bool]` — Whether this client can be used to make cross-origin authentication requests (true) or it is not allowed to make such requests (false). - -
-
-
-**cross_origin_loc:** `typing.Optional[str]` — URL of the location in your site where the cross origin verification takes place for the cross-origin auth flow when performing Auth in your own domain instead of Auth0 hosted login page. - +```python +from auth0.management import Auth0 +from auth0.management.environment import Auth0Environment + +client = Auth0( + token="", + environment=Auth0Environment.DEFAULT, +) + +client.client_profiles.update( + id="id", +) + +``` +
+
+#### ⚙️ Parameters +
-**sso_disabled:** `typing.Optional[bool]` — true to disable Single Sign On, false otherwise (default: false) - -
-
-
-**custom_login_page_on:** `typing.Optional[bool]` — true if the custom login page is to be used, false otherwise. Defaults to true +**id:** `ClientProfileId` — ID of the client profile.
@@ -2246,7 +2321,7 @@ client.clients.create(
-**custom_login_page:** `typing.Optional[str]` — The content (HTML, CSS, JS) of the custom login page. +**name:** `typing.Optional[ClientProfileName]`
@@ -2254,7 +2329,7 @@ client.clients.create(
-**custom_login_page_preview:** `typing.Optional[str]` — The content (HTML, CSS, JS) of the custom login page. (Used on Previews) +**description:** `typing.Optional[ClientProfileDescription]`
@@ -2262,7 +2337,7 @@ client.clients.create(
-**form_template:** `typing.Optional[str]` — HTML form template to be used for WS-Federation. +**client_configuration:** `typing.Optional[ClientProfileClientConfiguration]`
@@ -2270,7 +2345,7 @@ client.clients.create(
-**addons:** `typing.Optional[ClientAddons]` +**apply_policy:** `typing.Optional[ClientProfileApplyPolicy]`
@@ -2278,71 +2353,106 @@ client.clients.create(
-**client_metadata:** `typing.Optional[ClientMetadata]` +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+ + -
-
-**mobile:** `typing.Optional[ClientMobile]` -
+
+## Clients +
client.clients.list(...) -> ListClientsOffsetPaginatedResponseContent
-**initiate_login_uri:** `typing.Optional[str]` — Initiate login uri, must be https - -
-
+#### 📝 Description
-**native_social_login:** `typing.Optional[NativeSocialLogin]` - -
-
-
-**fedcm_login:** `typing.Optional[FedCmLogin]` - +Retrieve clients (applications and SSO integrations) matching provided filters. A list of fields to include or exclude may also be specified. +For more information, read [Applications in Auth0](https://www.auth0.com/docs/get-started/applications) and [Single Sign-On](https://www.auth0.com/docs/authenticate/single-sign-on). + +- The following can be retrieved with any scope: + `client_id`, `app_type`, `name`, and `description`. +- The following properties can only be retrieved with the `read:clients` or + `read:client_keys` scope: + `callbacks`, `oidc_logout`, `allowed_origins`, + `web_origins`, `tenant`, `global`, `config_route`, + `callback_url_template`, `jwt_configuration`, + `jwt_configuration.lifetime_in_seconds`, `jwt_configuration.secret_encoded`, + `jwt_configuration.scopes`, `jwt_configuration.alg`, `api_type`, + `logo_uri`, `allowed_clients`, `owners`, `custom_login_page`, + `custom_login_page_on`, `sso`, `addons`, `form_template`, + `custom_login_page_codeview`, `resource_servers`, `client_metadata`, + `mobile`, `mobile.android`, `mobile.ios`, `allowed_logout_urls`, + `token_endpoint_auth_method`, `is_first_party`, `oidc_conformant`, + `is_token_endpoint_ip_header_trusted`, `initiate_login_uri`, `grant_types`, + `refresh_token`, `refresh_token.rotation_type`, `refresh_token.expiration_type`, + `refresh_token.leeway`, `refresh_token.token_lifetime`, `refresh_token.policies`, `organization_usage`, + `organization_require_behavior`. +- The following properties can only be retrieved with the + `read:client_keys` or `read:client_credentials` scope: + `encryption_key`, `encryption_key.pub`, `encryption_key.cert`, + `client_secret`, `client_authentication_methods` and `signing_key`. +
+
+#### 🔌 Usage +
-**refresh_token:** `typing.Optional[ClientRefreshTokenConfiguration]` - -
-
-
-**default_organization:** `typing.Optional[ClientDefaultOrganization]` - +```python +from auth0.management import Auth0 +from auth0.management.environment import Auth0Environment + +client = Auth0( + token="", + environment=Auth0Environment.DEFAULT, +) + +client.clients.list( + fields="fields", + include_fields=True, + page=1, + per_page=1, + include_totals=True, + is_global=True, + is_first_party=True, + app_type="app_type", + external_client_id="external_client_id", + q="q", +) + +``` +
+
+#### ⚙️ Parameters +
-**organization_usage:** `typing.Optional[ClientOrganizationUsageEnum]` - -
-
-
-**organization_require_behavior:** `typing.Optional[ClientOrganizationRequireBehaviorEnum]` +**fields:** `typing.Optional[str]` — Comma-separated list of fields to include or exclude (based on value provided for include_fields) in the result. Leave empty to retrieve all fields.
@@ -2350,7 +2460,7 @@ client.clients.create(
-**organization_discovery_methods:** `typing.Optional[typing.List[ClientOrganizationDiscoveryEnum]]` — Defines the available methods for organization discovery during the `pre_login_prompt`. Users can discover their organization either by `email`, `organization_name` or both. +**include_fields:** `typing.Optional[bool]` — Whether specified fields are to be included (true) or excluded (false).
@@ -2358,7 +2468,7 @@ client.clients.create(
-**client_authentication_methods:** `typing.Optional[ClientCreateAuthenticationMethod]` +**page:** `typing.Optional[int]` — Page index of the results to return. First page is 0.
@@ -2366,7 +2476,7 @@ client.clients.create(
-**require_pushed_authorization_requests:** `typing.Optional[bool]` — Makes the use of Pushed Authorization Requests mandatory for this client +**per_page:** `typing.Optional[int]` — Number of results per page. Default value is 50, maximum value is 100
@@ -2374,7 +2484,7 @@ client.clients.create(
-**require_proof_of_possession:** `typing.Optional[bool]` — Makes the use of Proof-of-Possession mandatory for this client +**include_totals:** `typing.Optional[bool]` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
@@ -2382,7 +2492,7 @@ client.clients.create(
-**signed_request_object:** `typing.Optional[ClientSignedRequestObjectWithPublicKey]` +**is_global:** `typing.Optional[bool]` — Optional filter on the global client parameter.
@@ -2390,7 +2500,7 @@ client.clients.create(
-**token_vault_privileged_access:** `typing.Optional[ClientTokenVaultPrivilegedAccessWithPublicKey]` +**is_first_party:** `typing.Optional[bool]` — Optional filter on whether or not a client is a first-party client.
@@ -2398,7 +2508,7 @@ client.clients.create(
-**compliance_level:** `typing.Optional[ClientComplianceLevelEnum]` +**app_type:** `typing.Optional[str]` — Optional filter by a comma-separated list of application types.
@@ -2406,11 +2516,7 @@ client.clients.create(
-**skip_non_verifiable_callback_uri_confirmation_prompt:** `typing.Optional[bool]` - -Controls whether a confirmation prompt is shown during login flows when the redirect URI uses non-verifiable callback URIs (for example, a custom URI schema such as `myapp://`, or `localhost`). -If set to true, a confirmation prompt will not be shown. We recommend that this is set to false for improved protection from malicious apps. -See https://auth0.com/docs/secure/security-guidance/measures-against-app-impersonation for more information. +**external_client_id:** `typing.Optional[str]` — Optional filter by the Client ID Metadata Document URI for CIMD-registered clients.
@@ -2418,7 +2524,7 @@ See https://auth0.com/docs/secure/security-guidance/measures-against-app-imperso
-**token_exchange:** `typing.Optional[ClientTokenExchangeConfiguration]` +**q:** `typing.Optional[str]` — Advanced Query in Lucene syntax.
Permitted Queries:
  • client_grant.organization_id:{organization_id}
  • client_grant.allow_any_organization:true
Additional Restrictions:
  • Cannot be used in combination with other filters
  • Requires use of the from and take paging parameters (checkpoint paginatinon)
  • Reduced rate limits apply. See Rate Limit Configurations
Note: Recent updates may not be immediately reflected in query results
@@ -2426,40 +2532,506 @@ See https://auth0.com/docs/secure/security-guidance/measures-against-app-imperso
-**par_request_expiry:** `typing.Optional[int]` — Specifies how long, in seconds, a Pushed Authorization Request URI remains valid +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+ + -
-
-**token_quota:** `typing.Optional[CreateTokenQuota]` -
+
+
client.clients.create(...) -> CreateClientResponseContent
-**resource_server_identifier:** `typing.Optional[str]` — The identifier of the resource server that this client is linked to. - -
-
+#### 📝 Description
-**identity_assertion_authorization_grant:** `typing.Optional[CreateIdentityAssertionAuthorizationGrant]` - -
-
-
-**anonymous_sessions:** `typing.Optional[CreateAnonymousSessions]` - +Create a new client (application or SSO integration). For more information, read [Create Applications](https://www.auth0.com/docs/get-started/auth0-overview/create-applications) +[API Endpoints for Single Sign-On](https://www.auth0.com/docs/authenticate/single-sign-on/api-endpoints-for-single-sign-on). + +Notes: +- We recommend leaving the `client_secret` parameter unspecified to allow the generation of a safe secret. +- The `client_authentication_methods` and `token_endpoint_auth_method` properties are mutually exclusive. Use +`client_authentication_methods` to configure the client with Private Key JWT authentication method. Otherwise, use `token_endpoint_auth_method` +to configure the client with client secret (basic or post) or with no authentication method (none). +- When using `client_authentication_methods` to configure the client with Private Key JWT authentication method, specify fully defined credentials. +These credentials will be automatically enabled for Private Key JWT authentication on the client. +- To configure `client_authentication_methods`, the `create:client_credentials` scope is required. +- To configure `client_authentication_methods`, the property `jwt_configuration.alg` must be set to RS256. + +SSO Integrations created via this endpoint will accept login requests and share user profile information. +
+
+ + + +#### 🔌 Usage + +
+
+ +
+
+ +```python +from auth0.management import Auth0 +from auth0.management.environment import Auth0Environment + +client = Auth0( + token="", + environment=Auth0Environment.DEFAULT, +) + +client.clients.create( + name="name", +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**name:** `str` — Name of this client (min length: 1 character, does not allow `<` or `>`). + +
+
+ +
+
+ +**description:** `typing.Optional[str]` — Free text description of this client (max length: 140 characters). + +
+
+ +
+
+ +**logo_uri:** `typing.Optional[str]` — URL of the logo to display for this client. Recommended size is 150x150 pixels. + +
+
+ +
+
+ +**callbacks:** `typing.Optional[typing.List[str]]` — Comma-separated list of URLs whitelisted for Auth0 to use as a callback to the client after authentication. + +
+
+ +
+
+ +**oidc_logout:** `typing.Optional[ClientOidcBackchannelLogoutSettings]` + +
+
+ +
+
+ +**oidc_backchannel_logout:** `typing.Optional[ClientOidcBackchannelLogoutSettings]` — Configuration for OIDC backchannel logout (deprecated, in favor of oidc_logout) + +
+
+ +
+
+ +**session_transfer:** `typing.Optional[ClientSessionTransferConfiguration]` + +
+
+ +
+
+ +**allowed_origins:** `typing.Optional[typing.List[str]]` — Comma-separated list of URLs allowed to make requests from JavaScript to Auth0 API (typically used with CORS). By default, all your callback URLs will be allowed. This field allows you to enter other origins if necessary. You can also use wildcards at the subdomain level (e.g., https://*.contoso.com). Query strings and hash information are not taken into account when validating these URLs. + +
+
+ +
+
+ +**web_origins:** `typing.Optional[typing.List[str]]` — Comma-separated list of allowed origins for use with Cross-Origin Authentication, Device Flow, and web message response mode. + +
+
+ +
+
+ +**client_aliases:** `typing.Optional[typing.List[str]]` — List of audiences/realms for SAML protocol. Used by the wsfed addon. + +
+
+ +
+
+ +**allowed_clients:** `typing.Optional[typing.List[str]]` — List of allow clients and API ids that are allowed to make delegation requests. Empty means all all your clients are allowed. + +
+
+ +
+
+ +**allowed_logout_urls:** `typing.Optional[typing.List[str]]` — Comma-separated list of URLs that are valid to redirect to after logout from Auth0. Wildcards are allowed for subdomains. + +
+
+ +
+
+ +**grant_types:** `typing.Optional[typing.List[str]]` — List of grant types supported for this application. Can include `authorization_code`, `implicit`, `refresh_token`, `client_credentials`, `password`, `http://auth0.com/oauth/grant-type/password-realm`, `http://auth0.com/oauth/grant-type/mfa-oob`, `http://auth0.com/oauth/grant-type/mfa-otp`, `http://auth0.com/oauth/grant-type/mfa-recovery-code`, `urn:openid:params:grant-type:ciba`, `urn:ietf:params:oauth:grant-type:device_code`, and `urn:auth0:params:oauth:grant-type:token-exchange:federated-connection-access-token`. + +
+
+ +
+
+ +**token_endpoint_auth_method:** `typing.Optional[ClientTokenEndpointAuthMethodEnum]` + +
+
+ +
+
+ +**is_token_endpoint_ip_header_trusted:** `typing.Optional[bool]` — If true, trust that the IP specified in the `auth0-forwarded-for` header is the end-user's IP for brute-force-protection on token endpoint. + +
+
+ +
+
+ +**app_type:** `typing.Optional[ClientAppTypeEnum]` + +
+
+ +
+
+ +**is_first_party:** `typing.Optional[bool]` — Whether this client a first party client or not + +
+
+ +
+
+ +**oidc_conformant:** `typing.Optional[bool]` — Whether this client conforms to strict OIDC specifications (true) or uses legacy features (false). + +
+
+ +
+
+ +**jwt_configuration:** `typing.Optional[ClientJwtConfiguration]` + +
+
+ +
+
+ +**encryption_key:** `typing.Optional[ClientEncryptionKey]` + +
+
+ +
+
+ +**sso:** `typing.Optional[bool]` — Applies only to SSO clients and determines whether Auth0 will handle Single Sign On (true) or whether the Identity Provider will (false). + +
+
+ +
+
+ +**cross_origin_authentication:** `typing.Optional[bool]` — Whether this client can be used to make cross-origin authentication requests (true) or it is not allowed to make such requests (false). + +
+
+ +
+
+ +**cross_origin_loc:** `typing.Optional[str]` — URL of the location in your site where the cross origin verification takes place for the cross-origin auth flow when performing Auth in your own domain instead of Auth0 hosted login page. + +
+
+ +
+
+ +**sso_disabled:** `typing.Optional[bool]` — true to disable Single Sign On, false otherwise (default: false) + +
+
+ +
+
+ +**custom_login_page_on:** `typing.Optional[bool]` — true if the custom login page is to be used, false otherwise. Defaults to true + +
+
+ +
+
+ +**custom_login_page:** `typing.Optional[str]` — The content (HTML, CSS, JS) of the custom login page. + +
+
+ +
+
+ +**custom_login_page_preview:** `typing.Optional[str]` — The content (HTML, CSS, JS) of the custom login page. (Used on Previews) + +
+
+ +
+
+ +**form_template:** `typing.Optional[str]` — HTML form template to be used for WS-Federation. + +
+
+ +
+
+ +**addons:** `typing.Optional[ClientAddons]` + +
+
+ +
+
+ +**client_metadata:** `typing.Optional[ClientMetadata]` + +
+
+ +
+
+ +**mobile:** `typing.Optional[ClientMobile]` + +
+
+ +
+
+ +**initiate_login_uri:** `typing.Optional[str]` — Initiate login uri, must be https + +
+
+ +
+
+ +**native_social_login:** `typing.Optional[NativeSocialLogin]` + +
+
+ +
+
+ +**fedcm_login:** `typing.Optional[FedCmLogin]` + +
+
+ +
+
+ +**refresh_token:** `typing.Optional[ClientRefreshTokenConfiguration]` + +
+
+ +
+
+ +**default_organization:** `typing.Optional[ClientDefaultOrganization]` + +
+
+ +
+
+ +**organization_usage:** `typing.Optional[ClientOrganizationUsageEnum]` + +
+
+ +
+
+ +**organization_require_behavior:** `typing.Optional[ClientOrganizationRequireBehaviorEnum]` + +
+
+ +
+
+ +**organization_discovery_methods:** `typing.Optional[typing.List[ClientOrganizationDiscoveryEnum]]` — Defines the available methods for organization discovery during the `pre_login_prompt`. Users can discover their organization either by `email`, `organization_name` or both. + +
+
+ +
+
+ +**client_authentication_methods:** `typing.Optional[ClientCreateAuthenticationMethod]` + +
+
+ +
+
+ +**require_pushed_authorization_requests:** `typing.Optional[bool]` — Makes the use of Pushed Authorization Requests mandatory for this client + +
+
+ +
+
+ +**require_proof_of_possession:** `typing.Optional[bool]` — Makes the use of Proof-of-Possession mandatory for this client + +
+
+ +
+
+ +**signed_request_object:** `typing.Optional[ClientSignedRequestObjectWithPublicKey]` + +
+
+ +
+
+ +**token_vault_privileged_access:** `typing.Optional[ClientTokenVaultPrivilegedAccessWithPublicKey]` + +
+
+ +
+
+ +**compliance_level:** `typing.Optional[ClientComplianceLevelEnum]` + +
+
+ +
+
+ +**skip_non_verifiable_callback_uri_confirmation_prompt:** `typing.Optional[bool]` + +Controls whether a confirmation prompt is shown during login flows when the redirect URI uses non-verifiable callback URIs (for example, a custom URI schema such as `myapp://`, or `localhost`). +If set to true, a confirmation prompt will not be shown. We recommend that this is set to false for improved protection from malicious apps. +See https://auth0.com/docs/secure/security-guidance/measures-against-app-impersonation for more information. + +
+
+ +
+
+ +**token_exchange:** `typing.Optional[ClientTokenExchangeConfiguration]` + +
+
+ +
+
+ +**par_request_expiry:** `typing.Optional[int]` — Specifies how long, in seconds, a Pushed Authorization Request URI remains valid + +
+
+ +
+
+ +**token_quota:** `typing.Optional[CreateTokenQuota]` + +
+
+ +
+
+ +**resource_server_identifier:** `typing.Optional[str]` — The identifier of the resource server that this client is linked to. + +
+
+ +
+
+ +**identity_assertion_authorization_grant:** `typing.Optional[CreateIdentityAssertionAuthorizationGrant]` + +
+
+ +
+
+ +**anonymous_sessions:** `typing.Optional[CreateAnonymousSessions]` + +
+
+ +
+
+ +**enforce_anon_session_transfer_network_binding:** `typing.Optional[ClientAnonymousSessionTransferNetworkBindingEnum]` +
@@ -2690,6 +3262,144 @@ client.clients.register_cimd_client(
+ + +
+ +
client.clients.search(...) -> SearchClientsResponseContent +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Search clients using SCIM or Lucene filter syntax with low-latency, eventually consistent results. +Use the parser parameter to specify "scim" or "lucene" syntax (default: "lucene"). +This endpoint provides an alternative to the standard GET /clients endpoint with better performance +for complex queries. Results may not reflect recent updates immediately. + +- This endpoint only supports `read:clients` and `read:client_summary` scopes. The `read:client_keys` and `read:client_credentials` scopes are not supported. +- The following fields are never returned by this endpoint: + - `client_secret` + - `encryption_key` + - `signing_keys` + - `owners` + - `addons` +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +from auth0.management import Auth0 +from auth0.management.environment import Auth0Environment + +client = Auth0( + token="", + environment=Auth0Environment.DEFAULT, +) + +client.clients.search( + q="q", + parser="scim", + fields="fields", + include_fields=True, + take=1, + from_="from", + sort="name", +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**q:** `typing.Optional[str]` — Filter expression in SCIM or Lucene syntax (depending on parser parameter). SCIM examples: `name eq "Auth0"`, `name sw "auth" and app_type eq "spa"`. SCIM operators: eq, ne, sw, ew, co, pr, gt, ge, lt, le, and, or.

Supported Fields:
  • client_id - Auth0 client ID (case-sensitive, exact match)
  • external_client_id - URL of the Client ID Metadata Document (CIMD); case-sensitive, exact match
  • name - Client name (supports contains, starts-with, ends-with operators; sortable)
  • app_type - Application type (e.g. "spa", "native", "non_interactive")
  • is_first_party - Whether the client is first-party (boolean)
  • updated_at - Last update timestamp (supports date range operators; sortable)
  • metadata.{key} - Filter by client metadata key-value pairs (max 2-level key depth, values indexed up to 64 characters)
  • client_grant.organization_id - Filter by associated organization ID
  • client_grant.allow_any_organization - Filter by allow any organization setting
Maximum 5 filter operations per query. Results are eventually consistent and may not reflect recent updates. + +
+
+ +
+
+ +**parser:** `typing.Optional[SearchParserEnum]` — Query parser to use for the filter expression. Use "scim" for SCIM filter syntax or "lucene" for Lucene query syntax (default). + +
+
+ +
+
+ +**fields:** `typing.Optional[str]` — Comma-separated list of fields to include or exclude in the response. Works with the include_fields parameter to control projection mode. Maximum 50 fields. + +
+
+ +
+
+ +**include_fields:** `typing.Optional[bool]` — Controls field projection mode. Set to true to include only fields specified in the fields parameter. Set to false to exclude fields specified in the fields parameter. Defaults to true if not specified. + +
+
+ +
+
+ +**take:** `typing.Optional[int]` — Maximum number of results to return per page (1-100). Defaults to 50. + +
+
+ +
+
+ +**from:** `typing.Optional[str]` — Cursor for the next page of results. Use the value from the next field in the previous response. + +
+
+ +
+
+ +**sort:** `typing.Optional[ClientSortFieldEnum]` — Field name to sort results by in ascending order. Defaults to insertion order (oldest first) if not provided. + +
+
+ +
+
+ +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+
+
+ +
@@ -3198,6 +3908,14 @@ client.clients.update(
+**enforce_anon_session_transfer_network_binding:** `typing.Optional[ClientAnonymousSessionTransferNetworkBindingEnum]` + +
+
+ +
+
+ **form_template:** `typing.Optional[str]` — Form template for WS-Federation protocol
@@ -3418,6 +4136,14 @@ See https://auth0.com/docs/secure/security-guidance/measures-against-app-imperso
+**oidc_support:** `typing.Optional[ClientOidcSupportPatch]` + +
+
+ +
+
+ **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -6022,6 +6748,11 @@ client = Auth0( client.email_templates.create( template="verify_email", + body=None, + from_=None, + subject=None, + syntax=None, + enabled=None, ) ``` @@ -6233,6 +6964,11 @@ client = Auth0( client.email_templates.set( template_name="verify_email", template="verify_email", + body=None, + from_=None, + subject=None, + syntax=None, + enabled=None, ) ``` @@ -8204,7 +8940,7 @@ client.groups.list(
-**include_totals:** `typing.Optional[bool]` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default). +**include_totals:** `typing.Optional[bool]` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default). The returned total reflects at most 1,000 results.
@@ -13363,7 +14099,7 @@ client.resource_servers.update(
-Retrieve detailed list of user roles created in your tenant. +Retrieve a list of roles. Includes roles created in your tenant and, when `owner_id=auth0` is supplied, Auth0-managed System Roles. **Note**: The returned list does not include standard roles available for tenant members, such as Admin or Support Access.
@@ -13451,7 +14187,7 @@ client.roles.list(
-**owner_id:** `typing.Optional[str]` — Filter organization-level roles by owner ID. Required when type is "organization". +**owner_id:** `typing.Optional[RoleOwnerIdFilter]` — Filter organization-level roles by owner ID. Use an organization ID to filter that organization's roles, or "auth0" to retrieve Auth0-managed System Roles. Required when type is "organization".
@@ -14641,8 +15377,267 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.self_service_profiles.create( - name="name", +client.self_service_profiles.create( + name="name", +) + +``` + +
+ +
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**name:** `str` — The name of the self-service Profile. + +
+
+ +
+
+ +**description:** `typing.Optional[str]` — The description of the self-service Profile. + +
+
+ +
+
+ +**branding:** `typing.Optional[SelfServiceProfileBrandingProperties]` + +
+
+ +
+
+ +**allowed_strategies:** `typing.Optional[typing.List[SelfServiceProfileAllowedStrategyEnum]]` — List of IdP strategies that will be shown to users during the Self-Service Enterprise Configuration flow. Possible values: [`oidc`, `samlp`, `waad`, `google-apps`, `adfs`, `okta`, `auth0-samlp`, `okta-samlp`, `keycloak-samlp`, `pingfederate`] + +
+
+ +
+
+ +**user_attributes:** `typing.Optional[typing.List[SelfServiceProfileUserAttribute]]` — List of attributes to be mapped that will be shown to the user during the Self-Service Enterprise Configuration flow. + +
+
+ +
+
+ +**user_attribute_profile_id:** `typing.Optional[str]` — ID of the user-attribute-profile to associate with this self-service profile. + +
+
+ +
+
+ +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+
+
+ + + +
+
+ +
client.self_service_profiles.get(...) -> GetSelfServiceProfileResponseContent +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Retrieves a self-service profile by Id. +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +from auth0.management import Auth0 +from auth0.management.environment import Auth0Environment + +client = Auth0( + token="", + environment=Auth0Environment.DEFAULT, +) + +client.self_service_profiles.get( + id="id", +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**id:** `str` — The id of the self-service profile to retrieve + +
+
+ +
+
+ +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+
+
+ + +
+
+
+ +
client.self_service_profiles.delete(...) +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Deletes a self-service profile by Id. +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +from auth0.management import Auth0 +from auth0.management.environment import Auth0Environment + +client = Auth0( + token="", + environment=Auth0Environment.DEFAULT, +) + +client.self_service_profiles.delete( + id="id", +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**id:** `str` — The id of the self-service profile to delete + +
+
+ +
+
+ +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+
+
+ + +
+
+
+ +
client.self_service_profiles.update(...) -> UpdateSelfServiceProfileResponseContent +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Updates a self-service profile. +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +from auth0.management import Auth0 +from auth0.management.environment import Auth0Environment + +client = Auth0( + token="", + environment=Auth0Environment.DEFAULT, +) + +client.self_service_profiles.update( + id="id", ) ``` @@ -14659,7 +15654,7 @@ client.self_service_profiles.create(
-**name:** `str` — The name of the self-service Profile. +**id:** `str` — The id of the self-service profile to update
@@ -14667,7 +15662,7 @@ client.self_service_profiles.create(
-**description:** `typing.Optional[str]` — The description of the self-service Profile. +**name:** `typing.Optional[str]` — The name of the self-service Profile.
@@ -14675,7 +15670,15 @@ client.self_service_profiles.create(
-**branding:** `typing.Optional[SelfServiceProfileBrandingProperties]` +**description:** `typing.Optional[SelfServiceProfileDescription]` + +
+
+ +
+
+ +**branding:** `typing.Optional[SelfServiceProfileBranding]`
@@ -14691,7 +15694,7 @@ client.self_service_profiles.create(
-**user_attributes:** `typing.Optional[typing.List[SelfServiceProfileUserAttribute]]` — List of attributes to be mapped that will be shown to the user during the Self-Service Enterprise Configuration flow. +**user_attributes:** `typing.Optional[SelfServiceProfileUserAttributes]`
@@ -14719,7 +15722,8 @@ client.self_service_profiles.create(
-
client.self_service_profiles.get(...) -> GetSelfServiceProfileResponseContent +## Sessions +
client.sessions.get(...) -> GetSessionResponseContent
@@ -14731,7 +15735,7 @@ client.self_service_profiles.create(
-Retrieves a self-service profile by Id. +Retrieve session information.
@@ -14754,7 +15758,7 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.self_service_profiles.get( +client.sessions.get( id="id", ) @@ -14772,7 +15776,7 @@ client.self_service_profiles.get(
-**id:** `str` — The id of the self-service profile to retrieve +**id:** `str` — ID of session to retrieve
@@ -14792,7 +15796,7 @@ client.self_service_profiles.get(
-
client.self_service_profiles.delete(...) +
client.sessions.delete(...)
@@ -14804,7 +15808,7 @@ client.self_service_profiles.get(
-Deletes a self-service profile by Id. +Delete a session by ID.
@@ -14827,7 +15831,7 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.self_service_profiles.delete( +client.sessions.delete( id="id", ) @@ -14845,7 +15849,7 @@ client.self_service_profiles.delete(
-**id:** `str` — The id of the self-service profile to delete +**id:** `str` — ID of the session to delete.
@@ -14865,7 +15869,7 @@ client.self_service_profiles.delete(
-
client.self_service_profiles.update(...) -> UpdateSelfServiceProfileResponseContent +
client.sessions.update(...) -> UpdateSessionResponseContent
@@ -14877,7 +15881,7 @@ client.self_service_profiles.delete(
-Updates a self-service profile. +Update session information.
@@ -14900,7 +15904,7 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.self_service_profiles.update( +client.sessions.update( id="id", ) @@ -14918,7 +15922,7 @@ client.self_service_profiles.update(
-**id:** `str` — The id of the self-service profile to update +**id:** `str` — ID of the session to update.
@@ -14926,7 +15930,7 @@ client.self_service_profiles.update(
-**name:** `typing.Optional[str]` — The name of the self-service Profile. +**session_metadata:** `typing.Optional[SessionMetadata]` — Metadata associated with the session. Pass null or {} to remove all session_metadata.
@@ -14934,31 +15938,72 @@ client.self_service_profiles.update(
-**description:** `typing.Optional[SelfServiceProfileDescription]` +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+ +
+ + + + +
+ +
client.sessions.revoke(...) +
+
+ +#### 📝 Description
-**branding:** `typing.Optional[SelfServiceProfileBranding]` - +
+
+ +Revokes a session by ID and all associated refresh tokens. +
+
+#### 🔌 Usage +
-**allowed_strategies:** `typing.Optional[typing.List[SelfServiceProfileAllowedStrategyEnum]]` — List of IdP strategies that will be shown to users during the Self-Service Enterprise Configuration flow. Possible values: [`oidc`, `samlp`, `waad`, `google-apps`, `adfs`, `okta`, `auth0-samlp`, `okta-samlp`, `keycloak-samlp`, `pingfederate`] - +
+
+ +```python +from auth0.management import Auth0 +from auth0.management.environment import Auth0Environment + +client = Auth0( + token="", + environment=Auth0Environment.DEFAULT, +) + +client.sessions.revoke( + id="id", +) + +``` +
+
+#### ⚙️ Parameters +
-**user_attributes:** `typing.Optional[SelfServiceProfileUserAttributes]` +
+
+ +**id:** `str` — ID of the session to revoke.
@@ -14966,10 +16011,66 @@ client.self_service_profiles.update(
-**user_attribute_profile_id:** `typing.Optional[str]` — ID of the user-attribute-profile to associate with this self-service profile. +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+ + +
+
+
+ +## Stats +
client.stats.get_active_users_count() -> GetActiveUsersCountStatsResponseContent +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Retrieve the number of active users that logged in during the last 30 days. +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +from auth0.management import Auth0 +from auth0.management.environment import Auth0Environment + +client = Auth0( + token="", + environment=Auth0Environment.DEFAULT, +) + +client.stats.get_active_users_count() + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
@@ -14986,8 +16087,7 @@ client.self_service_profiles.update(
-## Sessions -
client.sessions.get(...) -> GetSessionResponseContent +
client.stats.get_daily(...) -> typing.List[DailyStats]
@@ -14999,7 +16099,7 @@ client.self_service_profiles.update(
-Retrieve session information. +Retrieve the number of logins, signups and breached-password detections (subscription required) that occurred each day within a specified date range.
@@ -15022,8 +16122,9 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.sessions.get( - id="id", +client.stats.get_daily( + from_="from", + to="to", ) ``` @@ -15040,7 +16141,15 @@ client.sessions.get(
-**id:** `str` — ID of session to retrieve +**from:** `typing.Optional[str]` — Optional first day of the date range (inclusive) in YYYYMMDD format. + +
+
+ +
+
+ +**to:** `typing.Optional[str]` — Optional last day of the date range (inclusive) in YYYYMMDD format.
@@ -15060,7 +16169,8 @@ client.sessions.get(
-
client.sessions.delete(...) +## SupplementalSignals +
client.supplemental_signals.get() -> GetSupplementalSignalsResponseContent
@@ -15072,7 +16182,7 @@ client.sessions.get(
-Delete a session by ID. +Get the supplemental signals configuration for a tenant.
@@ -15095,8 +16205,71 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.sessions.delete( - id="id", +client.supplemental_signals.get() + +``` + +
+ + + +#### ⚙️ Parameters + +
+
+ +
+
+ +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+
+
+ + + + +
+ +
client.supplemental_signals.patch(...) -> PatchSupplementalSignalsResponseContent +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Update the supplemental signals configuration for a tenant. +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +from auth0.management import Auth0 +from auth0.management.environment import Auth0Environment + +client = Auth0( + token="", + environment=Auth0Environment.DEFAULT, +) + +client.supplemental_signals.patch( + akamai_enabled=True, ) ``` @@ -15113,7 +16286,7 @@ client.sessions.delete(
-**id:** `str` — ID of the session to delete. +**akamai_enabled:** `bool` — Indicates if incoming Akamai Headers should be processed
@@ -15133,7 +16306,8 @@ client.sessions.delete(
-
client.sessions.update(...) -> UpdateSessionResponseContent +## Tickets +
client.tickets.verify_email(...) -> VerifyEmailTicketResponseContent
@@ -15145,7 +16319,7 @@ client.sessions.delete(
-Update session information. +Create an email verification ticket for a given user. An email verification ticket is a generated URL that the user can consume to verify their email address.
@@ -15168,8 +16342,8 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.sessions.update( - id="id", +client.tickets.verify_email( + user_id="user_id", ) ``` @@ -15186,7 +16360,7 @@ client.sessions.update(
-**id:** `str` — ID of the session to update. +**user_id:** `str` — user_id of for whom the ticket should be created.
@@ -15194,7 +16368,47 @@ client.sessions.update(
-**session_metadata:** `typing.Optional[SessionMetadata]` — Metadata associated with the session. Pass null or {} to remove all session_metadata. +**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. + +
+
+ +
+
+ +**client_id:** `typing.Optional[str]` — ID of the client (application). If provided for tenants using the New Universal Login experience, the email template and UI displays application details, and the user is prompted to redirect to the application's default login route after the ticket is used. client_id is required to use the Password Reset Post Challenge trigger. + +
+
+ +
+
+ +**organization_id:** `typing.Optional[str]` — (Optional) Organization ID – the ID of the Organization. If provided, organization parameters will be made available to the email template and organization branding will be applied to the prompt. In addition, the redirect link in the prompt will include organization_id and organization_name query string parameters. + +
+
+ +
+
+ +**ttl_sec:** `typing.Optional[int]` — Number of seconds for which the ticket is valid before expiration. If unspecified or set to 0, this value defaults to 432000 seconds (5 days). + +
+
+ +
+
+ +**include_email_in_redirect:** `typing.Optional[bool]` — Whether to include the email address as part of the returnUrl in the reset_email (true), or not (false). + +
+
+ +
+
+ +**identity:** `typing.Optional[Identity]`
@@ -15214,7 +16428,7 @@ client.sessions.update(
-
client.sessions.revoke(...) +
client.tickets.change_password(...) -> ChangePasswordTicketResponseContent
@@ -15226,7 +16440,9 @@ client.sessions.update(
-Revokes a session by ID and all associated refresh tokens. +Create a password change ticket for a given user. A password change ticket is a generated URL that the user can consume to start a reset password flow. + +Note: This endpoint does not verify the given user’s identity. If you call this endpoint within your application, you must design your application to verify the user’s identity.
@@ -15249,9 +16465,7 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.sessions.revoke( - id="id", -) +client.tickets.change_password() ``` @@ -15267,7 +16481,7 @@ client.sessions.revoke(
-**id:** `str` — ID of the session to revoke. +**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.
@@ -15275,67 +16489,75 @@ client.sessions.revoke(
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. +**user_id:** `typing.Optional[str]` — user_id of for whom the ticket should be created.
- -
+
+
+**client_id:** `typing.Optional[str]` — ID of the client (application). If provided for tenants using the New Universal Login experience, the email template and UI displays application details, and the user is prompted to redirect to the application's default login route after the ticket is used. client_id is required to use the Password Reset Post Challenge trigger. +
-
-## Stats -
client.stats.get_active_users_count() -> GetActiveUsersCountStatsResponseContent
-#### 📝 Description +**organization_id:** `typing.Optional[str]` — (Optional) Organization ID – the ID of the Organization. If provided, organization parameters will be made available to the email template and organization branding will be applied to the prompt. In addition, the redirect link in the prompt will include organization_id and organization_name query string parameters. + +
+
+**connection_id:** `typing.Optional[str]` — ID of the connection. If provided, allows the user to be specified using email instead of user_id. If you set this value, you must also send the email parameter. You cannot send user_id when specifying a connection_id. + +
+
+
-Retrieve the number of active users that logged in during the last 30 days. -
-
+**email:** `typing.Optional[str]` — Email address of the user for whom the tickets should be created. Requires the connection_id parameter. Cannot be specified when using user_id. + -#### 🔌 Usage -
+**ttl_sec:** `typing.Optional[int]` — Number of seconds for which the ticket is valid before expiration. If unspecified or set to 0, this value defaults to 432000 seconds (5 days). + +
+
+
-```python -from auth0.management import Auth0 -from auth0.management.environment import Auth0Environment - -client = Auth0( - token="", - environment=Auth0Environment.DEFAULT, -) - -client.stats.get_active_users_count() - -``` +**mark_email_as_verified:** `typing.Optional[bool]` — Whether to set the email_verified attribute to true (true) or whether it should not be updated (false). +
+ +
+
+ +**include_email_in_redirect:** `typing.Optional[bool]` — Whether to include the email address as part of the returnUrl in the reset_email (true), or not (false). +
-#### ⚙️ Parameters -
+**identity:** `typing.Optional[ChangePasswordTicketIdentity]` + +
+
+
@@ -15351,7 +16573,8 @@ client.stats.get_active_users_count()
-
client.stats.get_daily(...) -> typing.List[DailyStats] +## TokenExchangeProfiles +
client.token_exchange_profiles.list(...) -> ListTokenExchangeProfileResponseContent
@@ -15363,7 +16586,16 @@ client.stats.get_active_users_count()
-Retrieve the number of logins, signups and breached-password detections (subscription required) that occurred each day within a specified date range. +Retrieve a list of all Token Exchange Profiles available in your tenant. + +By using this feature, you agree to the applicable Free Trial terms in [Okta’s Master Subscription Agreement](https://www.okta.com/legal/). It is your responsibility to securely validate the user’s subject_token. See [User Guide](https://auth0.com/docs/authenticate/custom-token-exchange) for more details. + +This endpoint supports Checkpoint pagination. To search by checkpoint, use the following parameters: + +- `from`: Optional id from which to start selection. +- `take`: The total amount of entries to retrieve when using the from parameter. Defaults to 50. + +**Note**: The first time you call this endpoint using checkpoint pagination, omit the `from` parameter. If there are more results, a `next` value is included in the response. You can use this for subsequent API calls. When `next` is no longer included in the response, no pages are remaining.
@@ -15386,9 +16618,9 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.stats.get_daily( +client.token_exchange_profiles.list( from_="from", - to="to", + take=1, ) ``` @@ -15405,7 +16637,7 @@ client.stats.get_daily(
-**from:** `typing.Optional[str]` — Optional first day of the date range (inclusive) in YYYYMMDD format. +**from:** `typing.Optional[str]` — Optional Id from which to start selection.
@@ -15413,7 +16645,7 @@ client.stats.get_daily(
-**to:** `typing.Optional[str]` — Optional last day of the date range (inclusive) in YYYYMMDD format. +**take:** `typing.Optional[int]` — Number of results per page. Defaults to 50.
@@ -15433,8 +16665,7 @@ client.stats.get_daily(
-## SupplementalSignals -
client.supplemental_signals.get() -> GetSupplementalSignalsResponseContent +
client.token_exchange_profiles.create(...) -> CreateTokenExchangeProfileResponseContent
@@ -15446,7 +16677,9 @@ client.stats.get_daily(
-Get the supplemental signals configuration for a tenant. +Create a new Token Exchange Profile within your tenant. + +By using this feature, you agree to the applicable Free Trial terms in [Okta’s Master Subscription Agreement](https://www.okta.com/legal/). It is your responsibility to securely validate the user’s subject_token. See [User Guide](https://auth0.com/docs/authenticate/custom-token-exchange) for more details.
@@ -15469,7 +16702,12 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.supplemental_signals.get() +client.token_exchange_profiles.create( + name="name", + subject_token_type="subject_token_type", + action_id="action_id", + type="custom_authentication", +) ``` @@ -15485,6 +16723,38 @@ client.supplemental_signals.get()
+**name:** `str` — Friendly name of this profile. + +
+
+ +
+
+ +**subject_token_type:** `str` — Subject token type for this profile. When receiving a token exchange request on the Authentication API, the corresponding token exchange profile with a matching subject_token_type will be executed. This must be a URI. + +
+
+ +
+
+ +**action_id:** `str` — The ID of the Custom Token Exchange action to execute for this profile, in order to validate the subject_token. The action must use the custom-token-exchange trigger. + +
+
+ +
+
+ +**type:** `TokenExchangeProfileTypeEnum` + +
+
+ +
+
+ **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -15497,7 +16767,7 @@ client.supplemental_signals.get()
-
client.supplemental_signals.patch(...) -> PatchSupplementalSignalsResponseContent +
client.token_exchange_profiles.get(...) -> GetTokenExchangeProfileResponseContent
@@ -15509,7 +16779,9 @@ client.supplemental_signals.get()
-Update the supplemental signals configuration for a tenant. +Retrieve details about a single Token Exchange Profile specified by ID. + +By using this feature, you agree to the applicable Free Trial terms in [Okta’s Master Subscription Agreement](https://www.okta.com/legal/). It is your responsibility to securely validate the user’s subject_token. See [User Guide](https://auth0.com/docs/authenticate/custom-token-exchange) for more details.
@@ -15532,8 +16804,8 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.supplemental_signals.patch( - akamai_enabled=True, +client.token_exchange_profiles.get( + id="id", ) ``` @@ -15550,7 +16822,7 @@ client.supplemental_signals.patch(
-**akamai_enabled:** `bool` — Indicates if incoming Akamai Headers should be processed +**id:** `str` — ID of the Token Exchange Profile to retrieve.
@@ -15570,8 +16842,7 @@ client.supplemental_signals.patch(
-## Tickets -
client.tickets.verify_email(...) -> VerifyEmailTicketResponseContent +
client.token_exchange_profiles.delete(...)
@@ -15583,7 +16854,9 @@ client.supplemental_signals.patch(
-Create an email verification ticket for a given user. An email verification ticket is a generated URL that the user can consume to verify their email address. +Delete a Token Exchange Profile within your tenant. + +By using this feature, you agree to the applicable Free Trial terms in [Okta's Master Subscription Agreement](https://www.okta.com/legal/). It is your responsibility to securely validate the user's subject_token. See [User Guide](https://auth0.com/docs/authenticate/custom-token-exchange) for more details.
@@ -15606,8 +16879,8 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.tickets.verify_email( - user_id="user_id", +client.token_exchange_profiles.delete( + id="id", ) ``` @@ -15624,7 +16897,7 @@ client.tickets.verify_email(
-**user_id:** `str` — user_id of for whom the ticket should be created. +**id:** `str` — ID of the Token Exchange Profile to delete.
@@ -15632,31 +16905,74 @@ client.tickets.verify_email(
-**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. +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+ +
+ + + + +
+
client.token_exchange_profiles.update(...)
-**client_id:** `typing.Optional[str]` — ID of the client (application). If provided for tenants using the New Universal Login experience, the email template and UI displays application details, and the user is prompted to redirect to the application's default login route after the ticket is used. client_id is required to use the Password Reset Post Challenge trigger. - +#### 📝 Description + +
+
+ +
+
+ +Update a Token Exchange Profile within your tenant. + +By using this feature, you agree to the applicable Free Trial terms in [Okta's Master Subscription Agreement](https://www.okta.com/legal/). It is your responsibility to securely validate the user's subject_token. See [User Guide](https://auth0.com/docs/authenticate/custom-token-exchange) for more details.
+
+
+ +#### 🔌 Usage
-**organization_id:** `typing.Optional[str]` — (Optional) Organization ID – the ID of the Organization. If provided, organization parameters will be made available to the email template and organization branding will be applied to the prompt. In addition, the redirect link in the prompt will include organization_id and organization_name query string parameters. - +
+
+ +```python +from auth0.management import Auth0 +from auth0.management.environment import Auth0Environment + +client = Auth0( + token="", + environment=Auth0Environment.DEFAULT, +) + +client.token_exchange_profiles.update( + id="id", +) + +``` +
+
+#### ⚙️ Parameters +
-**ttl_sec:** `typing.Optional[int]` — Number of seconds for which the ticket is valid before expiration. If unspecified or set to 0, this value defaults to 432000 seconds (5 days). +
+
+ +**id:** `str` — ID of the Token Exchange Profile to update.
@@ -15664,7 +16980,7 @@ client.tickets.verify_email(
-**include_email_in_redirect:** `typing.Optional[bool]` — Whether to include the email address as part of the returnUrl in the reset_email (true), or not (false). +**name:** `typing.Optional[str]` — Friendly name of this profile.
@@ -15672,7 +16988,7 @@ client.tickets.verify_email(
-**identity:** `typing.Optional[Identity]` +**subject_token_type:** `typing.Optional[str]` — Subject token type for this profile. When receiving a token exchange request on the Authentication API, the corresponding token exchange profile with a matching subject_token_type will be executed. This must be a URI.
@@ -15692,7 +17008,8 @@ client.tickets.verify_email(
-
client.tickets.change_password(...) -> ChangePasswordTicketResponseContent +## UserAttributeProfiles +
client.user_attribute_profiles.list(...) -> ListUserAttributeProfilesPaginatedResponseContent
@@ -15704,9 +17021,7 @@ client.tickets.verify_email(
-Create a password change ticket for a given user. A password change ticket is a generated URL that the user can consume to start a reset password flow. - -Note: This endpoint does not verify the given user’s identity. If you call this endpoint within your application, you must design your application to verify the user’s identity. +Retrieve a list of User Attribute Profiles. This endpoint supports Checkpoint pagination.
@@ -15729,7 +17044,10 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.tickets.change_password() +client.user_attribute_profiles.list( + from_="from", + take=1, +) ``` @@ -15745,7 +17063,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 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. +**from:** `typing.Optional[str]` — Optional Id from which to start selection.
@@ -15753,7 +17071,7 @@ client.tickets.change_password()
-**user_id:** `typing.Optional[str]` — user_id of for whom the ticket should be created. +**take:** `typing.Optional[int]` — Number of results per page. Defaults to 5.
@@ -15761,47 +17079,80 @@ client.tickets.change_password()
-**client_id:** `typing.Optional[str]` — ID of the client (application). If provided for tenants using the New Universal Login experience, the email template and UI displays application details, and the user is prompted to redirect to the application's default login route after the ticket is used. client_id is required to use the Password Reset Post Challenge trigger. +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+ +
-
-
-**organization_id:** `typing.Optional[str]` — (Optional) Organization ID – the ID of the Organization. If provided, organization parameters will be made available to the email template and organization branding will be applied to the prompt. In addition, the redirect link in the prompt will include organization_id and organization_name query string parameters. -
+
+
client.user_attribute_profiles.create(...) -> CreateUserAttributeProfileResponseContent
-**connection_id:** `typing.Optional[str]` — ID of the connection. If provided, allows the user to be specified using email instead of user_id. If you set this value, you must also send the email parameter. You cannot send user_id when specifying a connection_id. - -
-
+#### 📝 Description
-**email:** `typing.Optional[str]` — Email address of the user for whom the tickets should be created. Requires the connection_id parameter. Cannot be specified when using user_id. - +
+
+ +Create a User Attribute Profile. +
+
+#### 🔌 Usage +
-**ttl_sec:** `typing.Optional[int]` — Number of seconds for which the ticket is valid before expiration. If unspecified or set to 0, this value defaults to 432000 seconds (5 days). - +
+
+ +```python +from auth0.management import Auth0, UserAttributeProfileUserAttributeAdditionalProperties +from auth0.management.environment import Auth0Environment + +client = Auth0( + token="", + environment=Auth0Environment.DEFAULT, +) + +client.user_attribute_profiles.create( + name="name", + user_attributes={ + "key": UserAttributeProfileUserAttributeAdditionalProperties( + description="description", + label="label", + profile_required=True, + auth_0_mapping="auth0_mapping", + ) + }, +) + +```
+
+
+ +#### ⚙️ Parameters
-**mark_email_as_verified:** `typing.Optional[bool]` — Whether to set the email_verified attribute to true (true) or whether it should not be updated (false). +
+
+ +**name:** `UserAttributeProfileName`
@@ -15809,7 +17160,7 @@ client.tickets.change_password()
-**include_email_in_redirect:** `typing.Optional[bool]` — Whether to include the email address as part of the returnUrl in the reset_email (true), or not (false). +**user_attributes:** `UserAttributeProfileUserAttributes`
@@ -15817,7 +17168,7 @@ client.tickets.change_password()
-**identity:** `typing.Optional[ChangePasswordTicketIdentity]` +**user_id:** `typing.Optional[UserAttributeProfileUserId]`
@@ -15837,8 +17188,7 @@ client.tickets.change_password()
-## TokenExchangeProfiles -
client.token_exchange_profiles.list(...) -> ListTokenExchangeProfileResponseContent +
client.user_attribute_profiles.list_templates() -> ListUserAttributeProfileTemplateResponseContent
@@ -15850,16 +17200,7 @@ client.tickets.change_password()
-Retrieve a list of all Token Exchange Profiles available in your tenant. - -By using this feature, you agree to the applicable Free Trial terms in [Okta’s Master Subscription Agreement](https://www.okta.com/legal/). It is your responsibility to securely validate the user’s subject_token. See [User Guide](https://auth0.com/docs/authenticate/custom-token-exchange) for more details. - -This endpoint supports Checkpoint pagination. To search by checkpoint, use the following parameters: - -- `from`: Optional id from which to start selection. -- `take`: The total amount of entries to retrieve when using the from parameter. Defaults to 50. - -**Note**: The first time you call this endpoint using checkpoint pagination, omit the `from` parameter. If there are more results, a `next` value is included in the response. You can use this for subsequent API calls. When `next` is no longer included in the response, no pages are remaining. +Retrieve a list of User Attribute Profile Templates.
@@ -15882,10 +17223,7 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.token_exchange_profiles.list( - from_="from", - take=1, -) +client.user_attribute_profiles.list_templates() ``` @@ -15901,22 +17239,6 @@ client.token_exchange_profiles.list(
-**from:** `typing.Optional[str]` — Optional Id from which to start selection. - -
-
- -
-
- -**take:** `typing.Optional[int]` — Number of results per page. Defaults to 50. - -
-
- -
-
- **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -15929,7 +17251,7 @@ client.token_exchange_profiles.list(
-
client.token_exchange_profiles.create(...) -> CreateTokenExchangeProfileResponseContent +
client.user_attribute_profiles.get_template(...) -> GetUserAttributeProfileTemplateResponseContent
@@ -15941,9 +17263,7 @@ client.token_exchange_profiles.list(
-Create a new Token Exchange Profile within your tenant. - -By using this feature, you agree to the applicable Free Trial terms in [Okta’s Master Subscription Agreement](https://www.okta.com/legal/). It is your responsibility to securely validate the user’s subject_token. See [User Guide](https://auth0.com/docs/authenticate/custom-token-exchange) for more details. +Retrieve a User Attribute Profile Template.
@@ -15966,11 +17286,8 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.token_exchange_profiles.create( - name="name", - subject_token_type="subject_token_type", - action_id="action_id", - type="custom_authentication", +client.user_attribute_profiles.get_template( + id="id", ) ``` @@ -15987,7 +17304,7 @@ client.token_exchange_profiles.create(
-**name:** `str` — Friendly name of this profile. +**id:** `str` — ID of the user-attribute-profile-template to retrieve.
@@ -15995,23 +17312,72 @@ client.token_exchange_profiles.create(
-**subject_token_type:** `str` — Subject token type for this profile. When receiving a token exchange request on the Authentication API, the corresponding token exchange profile with a matching subject_token_type will be executed. This must be a URI. +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+ +
+ + + +
+ +
client.user_attribute_profiles.get(...) -> GetUserAttributeProfileResponseContent
-**action_id:** `str` — The ID of the Custom Token Exchange action to execute for this profile, in order to validate the subject_token. The action must use the custom-token-exchange trigger. - +#### 📝 Description + +
+
+ +
+
+ +Retrieve details about a single User Attribute Profile specified by ID.
+
+
+ +#### 🔌 Usage
-**type:** `TokenExchangeProfileTypeEnum` +
+
+ +```python +from auth0.management import Auth0 +from auth0.management.environment import Auth0Environment + +client = Auth0( + token="", + environment=Auth0Environment.DEFAULT, +) + +client.user_attribute_profiles.get( + id="id", +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**id:** `str` — ID of the user-attribute-profile to retrieve.
@@ -16031,7 +17397,7 @@ client.token_exchange_profiles.create(
-
client.token_exchange_profiles.get(...) -> GetTokenExchangeProfileResponseContent +
client.user_attribute_profiles.delete(...)
@@ -16043,9 +17409,7 @@ client.token_exchange_profiles.create(
-Retrieve details about a single Token Exchange Profile specified by ID. - -By using this feature, you agree to the applicable Free Trial terms in [Okta’s Master Subscription Agreement](https://www.okta.com/legal/). It is your responsibility to securely validate the user’s subject_token. See [User Guide](https://auth0.com/docs/authenticate/custom-token-exchange) for more details. +Delete a single User Attribute Profile specified by ID.
@@ -16068,7 +17432,7 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.token_exchange_profiles.get( +client.user_attribute_profiles.delete( id="id", ) @@ -16086,7 +17450,7 @@ client.token_exchange_profiles.get(
-**id:** `str` — ID of the Token Exchange Profile to retrieve. +**id:** `str` — ID of the user-attribute-profile to delete.
@@ -16106,7 +17470,7 @@ client.token_exchange_profiles.get(
-
client.token_exchange_profiles.delete(...) +
client.user_attribute_profiles.update(...) -> UpdateUserAttributeProfileResponseContent
@@ -16118,9 +17482,7 @@ client.token_exchange_profiles.get(
-Delete a Token Exchange Profile within your tenant. - -By using this feature, you agree to the applicable Free Trial terms in [Okta's Master Subscription Agreement](https://www.okta.com/legal/). It is your responsibility to securely validate the user's subject_token. See [User Guide](https://auth0.com/docs/authenticate/custom-token-exchange) for more details. +Update the details of a specific User attribute profile, such as name, user_id and user_attributes.
@@ -16143,7 +17505,7 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.token_exchange_profiles.delete( +client.user_attribute_profiles.update( id="id", ) @@ -16161,7 +17523,31 @@ client.token_exchange_profiles.delete(
-**id:** `str` — ID of the Token Exchange Profile to delete. +**id:** `str` — ID of the user attribute profile to update. + +
+
+ +
+
+ +**name:** `typing.Optional[UserAttributeProfileName]` + +
+
+ +
+
+ +**user_id:** `typing.Optional[UserAttributeProfilePatchUserId]` + +
+
+ +
+
+ +**user_attributes:** `typing.Optional[UserAttributeProfileUserAttributes]`
@@ -16181,7 +17567,8 @@ client.token_exchange_profiles.delete(
-
client.token_exchange_profiles.update(...) +## UserBlocks +
client.user_blocks.list_by_identifier(...) -> ListUserBlocksByIdentifierResponseContent
@@ -16193,9 +17580,7 @@ client.token_exchange_profiles.delete(
-Update a Token Exchange Profile within your tenant. - -By using this feature, you agree to the applicable Free Trial terms in [Okta's Master Subscription Agreement](https://www.okta.com/legal/). It is your responsibility to securely validate the user's subject_token. See [User Guide](https://auth0.com/docs/authenticate/custom-token-exchange) for more details. +Retrieve details of all [Brute-force Protection](https://auth0.com/docs/secure/attack-protection/brute-force-protection) blocks for a user with the given identifier (username, phone number, or email).
@@ -16218,8 +17603,9 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.token_exchange_profiles.update( - id="id", +client.user_blocks.list_by_identifier( + identifier="identifier", + consider_brute_force_enablement=True, ) ``` @@ -16236,7 +17622,7 @@ client.token_exchange_profiles.update(
-**id:** `str` — ID of the Token Exchange Profile to update. +**identifier:** `str` — Should be any of a username, phone number, or email.
@@ -16244,15 +17630,12 @@ client.token_exchange_profiles.update(
-**name:** `typing.Optional[str]` — Friendly name of this profile. - -
-
+**consider_brute_force_enablement:** `typing.Optional[bool]` -
-
-**subject_token_type:** `typing.Optional[str]` — Subject token type for this profile. When receiving a token exchange request on the Authentication API, the corresponding token exchange profile with a matching subject_token_type will be executed. This must be a URI. + If true, returns only blocks that are currently enforced (e.g. subject to protection status, IP allowlist, etc.). + If false or omitted, returns all blocks regardless of enforcement state. +
@@ -16272,8 +17655,7 @@ client.token_exchange_profiles.update(
-## UserAttributeProfiles -
client.user_attribute_profiles.list(...) -> ListUserAttributeProfilesPaginatedResponseContent +
client.user_blocks.delete_by_identifier(...)
@@ -16285,7 +17667,9 @@ client.token_exchange_profiles.update(
-Retrieve a list of User Attribute Profiles. This endpoint supports Checkpoint pagination. +Remove all [Brute-force Protection](https://auth0.com/docs/secure/attack-protection/brute-force-protection) blocks for the user with the given identifier (username, phone number, or email). + +Note: This endpoint does not unblock users that were [blocked by a tenant administrator](https://auth0.com/docs/user-profile#block-and-unblock-a-user).
@@ -16308,9 +17692,8 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.user_attribute_profiles.list( - from_="from", - take=1, +client.user_blocks.delete_by_identifier( + identifier="identifier", ) ``` @@ -16327,15 +17710,7 @@ client.user_attribute_profiles.list(
-**from:** `typing.Optional[str]` — Optional Id from which to start selection. - -
-
- -
-
- -**take:** `typing.Optional[int]` — Number of results per page. Defaults to 5. +**identifier:** `str` — Should be any of a username, phone number, or email.
@@ -16355,7 +17730,7 @@ client.user_attribute_profiles.list(
-
client.user_attribute_profiles.create(...) -> CreateUserAttributeProfileResponseContent +
client.user_blocks.list(...) -> ListUserBlocksResponseContent
@@ -16367,7 +17742,7 @@ client.user_attribute_profiles.list(
-Create a User Attribute Profile. +Retrieve details of all [Brute-force Protection](https://auth0.com/docs/secure/attack-protection/brute-force-protection) blocks for the user with the given ID.
@@ -16382,7 +17757,7 @@ Create a User Attribute Profile.
```python -from auth0.management import Auth0, UserAttributeProfileUserAttributeAdditionalProperties +from auth0.management import Auth0 from auth0.management.environment import Auth0Environment client = Auth0( @@ -16390,16 +17765,9 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.user_attribute_profiles.create( - name="name", - user_attributes={ - "key": UserAttributeProfileUserAttributeAdditionalProperties( - description="description", - label="label", - profile_required=True, - auth_0_mapping="auth0_mapping", - ) - }, +client.user_blocks.list( + id="id", + consider_brute_force_enablement=True, ) ``` @@ -16416,7 +17784,7 @@ client.user_attribute_profiles.create(
-**name:** `UserAttributeProfileName` +**id:** `str` — user_id of the user blocks to retrieve.
@@ -16424,15 +17792,12 @@ client.user_attribute_profiles.create(
-**user_attributes:** `UserAttributeProfileUserAttributes` - -
-
+**consider_brute_force_enablement:** `typing.Optional[bool]` -
-
-**user_id:** `typing.Optional[UserAttributeProfileUserId]` + If true, returns only blocks that are currently enforced (e.g. subject to protection status, IP allowlist, etc.). + If false or omitted, returns all blocks regardless of enforcement state. +
@@ -16452,7 +17817,7 @@ client.user_attribute_profiles.create(
-
client.user_attribute_profiles.list_templates() -> ListUserAttributeProfileTemplateResponseContent +
client.user_blocks.delete(...)
@@ -16464,7 +17829,9 @@ client.user_attribute_profiles.create(
-Retrieve a list of User Attribute Profile Templates. +Remove all [Brute-force Protection](https://auth0.com/docs/secure/attack-protection/brute-force-protection) blocks for the user with the given ID. + +Note: This endpoint does not unblock users that were [blocked by a tenant administrator](https://auth0.com/docs/user-profile#block-and-unblock-a-user).
@@ -16487,7 +17854,9 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.user_attribute_profiles.list_templates() +client.user_blocks.delete( + id="id", +) ``` @@ -16503,6 +17872,14 @@ client.user_attribute_profiles.list_templates()
+**id:** `str` — The user_id of the user to update. + +
+
+ +
+
+ **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -16515,7 +17892,8 @@ client.user_attribute_profiles.list_templates()
-
client.user_attribute_profiles.get_template(...) -> GetUserAttributeProfileTemplateResponseContent +## Users +
client.users.list(...) -> ListUsersOffsetPaginatedResponseContent
@@ -16527,7 +17905,22 @@ client.user_attribute_profiles.list_templates()
-Retrieve a User Attribute Profile Template. +This endpoint retrieves details of users. It's best suited to interactive, best-effort search and lookups where slightly stale results are acceptable. With it, you can: + +- Specify search criteria for users +- Sort the users to be returned +- Select the fields to be returned +- Specify the number of users to retrieve per page and the page index + +This endpoint is **not suited for use in critical paths**. It is eventually consistent and runs under a short (~2 second) query time limit, so results can be stale and heavy queries can return a 503. + +- Do not use this endpoint for authentication, account linking, or logic inside login-flow Actions. Instead, [look users up directly by ID or email](https://auth0.com/docs/manage-users/user-search/get-users-by-id-or-email#management-api) to get their current state. +- Do not use this endpoint to keep an external system in sync with user data. Instead, subscribe to [Event Streams](https://auth0.com/docs/customize/events/sync-data-across-systems) to receive every change as it happens. +- Do not use this endpoint to enumerate or export your entire user base. Instead, run a [bulk user export](https://auth0.com/docs/manage-users/user-migration/bulk-user-exports) to retrieve the full set. + +Use the `q` query parameter to match users with [query string syntax](https://auth0.com/docs/manage-users/user-search/user-search-query-syntax). For full instructions and guidance, see [How to List and Search Users](https://auth0.com/docs/manage-users/user-search/list-and-search-users). + +For efficient queries, prefer indexed top-level fields and exact matches. Certain kinds of queries can be slow and may time out, such as filtering on freeform or multi-value fields (like user-defined attributes in `app_metadata` or `user_metadata`) or using leading wildcards.
@@ -16550,8 +17943,17 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.user_attribute_profiles.get_template( - id="id", +client.users.list( + page=1, + per_page=1, + include_totals=True, + sort="sort", + connection="connection", + fields="fields", + include_fields=True, + q="q", + search_engine="v1", + primary_order=True, ) ``` @@ -16568,7 +17970,7 @@ client.user_attribute_profiles.get_template(
-**id:** `str` — ID of the user-attribute-profile-template to retrieve. +**page:** `typing.Optional[int]` — Page index of the results to return. First page is 0.
@@ -16576,72 +17978,71 @@ client.user_attribute_profiles.get_template(
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. +**per_page:** `typing.Optional[int]` — Number of results per page.
- -
+
+
+**include_totals:** `typing.Optional[bool]` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default). +
-
-
client.user_attribute_profiles.get(...) -> GetUserAttributeProfileResponseContent
-#### 📝 Description +**sort:** `typing.Optional[str]` — Field to sort by. Use field:order where order is 1 for ascending and -1 for descending. e.g. created_at:1 + +
+
+**connection:** `typing.Optional[str]` — Connection filter. Only applies when using search_engine=v1. To filter by connection with search_engine=v2|v3, use q=identities.connection:"connection_name" + +
+
+
-Retrieve details about a single User Attribute Profile specified by ID. -
-
+**fields:** `typing.Optional[str]` — Comma-separated list of fields to include or exclude (based on value provided for include_fields) in the result. Leave empty to retrieve all fields. + -#### 🔌 Usage -
+**include_fields:** `typing.Optional[bool]` — Whether specified fields are to be included (true) or excluded (false). + +
+
+
-```python -from auth0.management import Auth0 -from auth0.management.environment import Auth0Environment - -client = Auth0( - token="", - environment=Auth0Environment.DEFAULT, -) - -client.user_attribute_profiles.get( - id="id", -) - -``` -
-
+**q:** `typing.Optional[str]` — Query in Lucene query string syntax. Some query types cannot be used on metadata fields, for details see Searchable Fields. + -#### ⚙️ Parameters -
+**search_engine:** `typing.Optional[SearchEngineVersionsEnum]` — The version of the search engine + +
+
+
-**id:** `str` — ID of the user-attribute-profile to retrieve. +**primary_order:** `typing.Optional[bool]` — If true (default), results are returned in a deterministic order. If false, results may be returned in a non-deterministic order, which can enhance performance for complex queries targeting a small number of users. Set to false only when consistent ordering and pagination is not required.
@@ -16661,7 +18062,7 @@ client.user_attribute_profiles.get(
-
client.user_attribute_profiles.delete(...) +
client.users.create(...) -> CreateUserResponseContent
@@ -16673,7 +18074,9 @@ client.user_attribute_profiles.get(
-Delete a single User Attribute Profile specified by ID. +Create a new user for a given [database](https://auth0.com/docs/connections/database) or [passwordless](https://auth0.com/docs/connections/passwordless) connection. + +Note: `connection` is required but other parameters such as `email` and `password` are dependent upon the type of connection.
@@ -16696,8 +18099,8 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.user_attribute_profiles.delete( - id="id", +client.users.create( + connection="connection", ) ``` @@ -16714,7 +18117,7 @@ client.user_attribute_profiles.delete(
-**id:** `str` — ID of the user-attribute-profile to delete. +**connection:** `str` — Name of the connection this user should be created in.
@@ -16722,72 +18125,103 @@ client.user_attribute_profiles.delete(
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. +**email:** `typing.Optional[str]` — The user's email.
+ +
+
+ +**phone_number:** `typing.Optional[str]` — The user's phone number (following the E.164 recommendation). +
+
+
+**user_metadata:** `typing.Optional[UserMetadata]` +
-
-
client.user_attribute_profiles.update(...) -> UpdateUserAttributeProfileResponseContent
-#### 📝 Description +**blocked:** `typing.Optional[bool]` — Whether this user was blocked by an administrator (true) or not (false). + +
+
+**email_verified:** `typing.Optional[bool]` — Whether this email address is verified (true) or unverified (false). User will receive a verification email after creation if `email_verified` is false or not specified + +
+
+
-Update the details of a specific User attribute profile, such as name, user_id and user_attributes. +**phone_verified:** `typing.Optional[bool]` — Whether this phone number has been verified (true) or not (false). +
+ +
+
+ +**app_metadata:** `typing.Optional[AppMetadata]` +
-#### 🔌 Usage -
+**given_name:** `typing.Optional[str]` — The user's given name(s). + +
+
+
-```python -from auth0.management import Auth0 -from auth0.management.environment import Auth0Environment - -client = Auth0( - token="", - environment=Auth0Environment.DEFAULT, -) +**family_name:** `typing.Optional[str]` — The user's family name(s). + +
+
-client.user_attribute_profiles.update( - id="id", -) +
+
-``` +**name:** `typing.Optional[str]` — The user's full name. +
+ +
+
+ +**nickname:** `typing.Optional[str]` — The user's nickname. +
-#### ⚙️ Parameters -
+**picture:** `typing.Optional[str]` — A URI pointing to the user's picture. + +
+
+
-**id:** `str` — ID of the user attribute profile to update. +**user_id:** `typing.Optional[str]` — The external user's id provided by the identity provider.
@@ -16795,7 +18229,7 @@ client.user_attribute_profiles.update(
-**name:** `typing.Optional[UserAttributeProfileName]` +**password:** `typing.Optional[str]` — Initial password for this user. Only valid for auth0 connection strategy.
@@ -16803,7 +18237,7 @@ client.user_attribute_profiles.update(
-**user_id:** `typing.Optional[UserAttributeProfilePatchUserId]` +**verify_email:** `typing.Optional[bool]` — Whether the user will receive a verification email after creation (true) or no email (false). Overrides behavior of `email_verified` parameter.
@@ -16811,7 +18245,7 @@ client.user_attribute_profiles.update(
-**user_attributes:** `typing.Optional[UserAttributeProfileUserAttributes]` +**username:** `typing.Optional[str]` — The user's username. Only valid if the connection requires a username.
@@ -16831,8 +18265,7 @@ client.user_attribute_profiles.update(
-## UserBlocks -
client.user_blocks.list_by_identifier(...) -> ListUserBlocksByIdentifierResponseContent +
client.users.list_users_by_email(...) -> typing.List[UserResponseSchema]
@@ -16844,7 +18277,11 @@ client.user_attribute_profiles.update(
-Retrieve details of all [Brute-force Protection](https://auth0.com/docs/secure/attack-protection/brute-force-protection) blocks for a user with the given identifier (username, phone number, or email). +Find users by email. If Auth0 is the identity provider (idP), the email address associated with a user is saved in lower case, regardless of how you initially provided it. + +For example, if you register a user as JohnSmith@example.com, Auth0 saves the user's email as johnsmith@example.com. + +Therefore, when using this endpoint, make sure that you are searching for users via email addresses using the correct case.
@@ -16867,9 +18304,10 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.user_blocks.list_by_identifier( - identifier="identifier", - consider_brute_force_enablement=True, +client.users.list_users_by_email( + fields="fields", + include_fields=True, + email="email", ) ``` @@ -16886,7 +18324,7 @@ client.user_blocks.list_by_identifier(
-**identifier:** `str` — Should be any of a username, phone number, or email. +**email:** `str` — Email address to search for (case-sensitive).
@@ -16894,12 +18332,15 @@ client.user_blocks.list_by_identifier(
-**consider_brute_force_enablement:** `typing.Optional[bool]` +**fields:** `typing.Optional[str]` — Comma-separated list of fields to include or exclude (based on value provided for include_fields) in the result. Leave empty to retrieve all fields. + +
+
+
+
- If true, returns only blocks that are currently enforced (e.g. subject to protection status, IP allowlist, etc.). - If false or omitted, returns all blocks regardless of enforcement state. - +**include_fields:** `typing.Optional[bool]` — Whether specified fields are to be included (true) or excluded (false). Defaults to true.
@@ -16919,7 +18360,7 @@ client.user_blocks.list_by_identifier(
-
client.user_blocks.delete_by_identifier(...) +
client.users.get(...) -> GetUserResponseContent
@@ -16931,9 +18372,7 @@ client.user_blocks.list_by_identifier(
-Remove all [Brute-force Protection](https://auth0.com/docs/secure/attack-protection/brute-force-protection) blocks for the user with the given identifier (username, phone number, or email). - -Note: This endpoint does not unblock users that were [blocked by a tenant administrator](https://auth0.com/docs/user-profile#block-and-unblock-a-user). +Retrieve user details. A list of fields to include or exclude may also be specified. For more information, see [Retrieve Users with the Get Users Endpoint](https://auth0.com/docs/manage-users/user-search/retrieve-users-with-get-users-endpoint).
@@ -16956,8 +18395,10 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.user_blocks.delete_by_identifier( - identifier="identifier", +client.users.get( + id="id", + fields="fields", + include_fields=True, ) ``` @@ -16966,15 +18407,31 @@ client.user_blocks.delete_by_identifier(
-#### ⚙️ Parameters - +#### ⚙️ Parameters + +
+
+ +
+
+ +**id:** `str` — ID of the user to retrieve. + +
+
+
+**fields:** `typing.Optional[str]` — Comma-separated list of fields to include or exclude (based on value provided for include_fields) in the result. Leave empty to retrieve all fields. + +
+
+
-**identifier:** `str` — Should be any of a username, phone number, or email. +**include_fields:** `typing.Optional[bool]` — Whether specified fields are to be included (true) or excluded (false).
@@ -16994,7 +18451,7 @@ client.user_blocks.delete_by_identifier(
-
client.user_blocks.list(...) -> ListUserBlocksResponseContent +
client.users.delete(...)
@@ -17006,7 +18463,7 @@ client.user_blocks.delete_by_identifier(
-Retrieve details of all [Brute-force Protection](https://auth0.com/docs/secure/attack-protection/brute-force-protection) blocks for the user with the given ID. +Delete a user by user ID. This action cannot be undone. For Auth0 Dashboard instructions, see [Delete Users](https://auth0.com/docs/manage-users/user-accounts/delete-users).
@@ -17029,9 +18486,8 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.user_blocks.list( +client.users.delete( id="id", - consider_brute_force_enablement=True, ) ``` @@ -17048,20 +18504,7 @@ client.user_blocks.list(
-**id:** `str` — user_id of the user blocks to retrieve. - -
-
- -
-
- -**consider_brute_force_enablement:** `typing.Optional[bool]` - - - If true, returns only blocks that are currently enforced (e.g. subject to protection status, IP allowlist, etc.). - If false or omitted, returns all blocks regardless of enforcement state. - +**id:** `str` — ID of the user to delete.
@@ -17081,7 +18524,7 @@ client.user_blocks.list(
-
client.user_blocks.delete(...) +
client.users.update(...) -> UpdateUserResponseContent
@@ -17093,9 +18536,97 @@ client.user_blocks.list(
-Remove all [Brute-force Protection](https://auth0.com/docs/secure/attack-protection/brute-force-protection) blocks for the user with the given ID. +Update a user. -Note: This endpoint does not unblock users that were [blocked by a tenant administrator](https://auth0.com/docs/user-profile#block-and-unblock-a-user). +These are the attributes that can be updated at the root level: + +- app_metadata +- blocked +- email +- email_verified +- family_name +- given_name +- name +- nickname +- password +- phone_number +- phone_verified +- picture +- username +- user_metadata +- verify_email + +Some considerations: + +- The properties of the new object will replace the old ones. +- The metadata fields are an exception to this rule (`user_metadata` and `app_metadata`). These properties are merged instead of being replaced but be careful, the merge only occurs on the first level. +- If you are updating `email`, `email_verified`, `phone_number`, `phone_verified`, `username` or `password` of a secondary identity, you need to specify the `connection` property too. +- If you are updating `email` or `phone_number` you can specify, optionally, the `client_id` property. +- Updating `email_verified` is not supported for enterprise and passwordless sms connections. +- Updating the `blocked` to `false` does not affect the user's blocked state from an excessive amount of incorrectly provided credentials. Use the "Unblock a user" endpoint from the "User Blocks" API to change the user's state. +- Supported attributes can be unset by supplying `null` as the value. + +**Updating a field (non-metadata property)** + +To mark the email address of a user as verified, the body to send should be: + +```json +{ "email_verified": true } +``` + +**Updating a user metadata root property** + +Let's assume that our test user has the following `user_metadata`: + +```json +{ "user_metadata" : { "profileCode": 1479 } } +``` + +To add the field `addresses` the body to send should be: + +```json +{ "user_metadata" : { "addresses": {"work_address": "100 Industrial Way"} }} +``` + +The modified object ends up with the following `user_metadata` property: + +```json +{ + "user_metadata": { + "profileCode": 1479, + "addresses": { "work_address": "100 Industrial Way" } + } +} +``` + +**Updating an inner user metadata property** + +If there's existing user metadata to which we want to add `"home_address": "742 Evergreen Terrace"` (using the `addresses` property) we should send the whole `addresses` object. Since this is a first-level object, the object will be merged in, but its own properties will not be. The body to send should be: + +```json +{ + "user_metadata": { + "addresses": { + "work_address": "100 Industrial Way", + "home_address": "742 Evergreen Terrace" + } + } +} +``` + +The modified object ends up with the following `user_metadata` property: + +```json +{ + "user_metadata": { + "profileCode": 1479, + "addresses": { + "work_address": "100 Industrial Way", + "home_address": "742 Evergreen Terrace" + } + } +} +```
@@ -17118,7 +18649,7 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.user_blocks.delete( +client.users.update( id="id", ) @@ -17136,7 +18667,7 @@ client.user_blocks.delete(
-**id:** `str` — The user_id of the user to update. +**id:** `str` — ID of the user to update.
@@ -17144,97 +18675,71 @@ client.user_blocks.delete(
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. +**blocked:** `typing.Optional[bool]` — Whether this user was blocked by an administrator (true) or not (false).
- -
+
+
+**email_verified:** `typing.Optional[bool]` — Whether this email address is verified (true) or unverified (false). If set to false the user will not receive a verification email unless `verify_email` is set to true. +
-
-## Users -
client.users.list(...) -> ListUsersOffsetPaginatedResponseContent
-#### 📝 Description +**email:** `typing.Optional[str]` — Email address of this user. + +
+
+**phone_number:** `typing.Optional[str]` — The user's phone number (following the E.164 recommendation). + +
+
+
-This endpoint retrieves details of users. It's best suited to interactive, best-effort search and lookups where slightly stale results are acceptable. With it, you can: - -- Specify search criteria for users -- Sort the users to be returned -- Select the fields to be returned -- Specify the number of users to retrieve per page and the page index - -This endpoint is **not suited for use in critical paths**. It is eventually consistent and runs under a short (~2 second) query time limit, so results can be stale and heavy queries can return a 503. - -- Do not use this endpoint for authentication, account linking, or logic inside login-flow Actions. Instead, [look users up directly by ID or email](https://auth0.com/docs/manage-users/user-search/get-users-by-id-or-email#management-api) to get their current state. -- Do not use this endpoint to keep an external system in sync with user data. Instead, subscribe to [Event Streams](https://auth0.com/docs/customize/events/sync-data-across-systems) to receive every change as it happens. -- Do not use this endpoint to enumerate or export your entire user base. Instead, run a [bulk user export](https://auth0.com/docs/manage-users/user-migration/bulk-user-exports) to retrieve the full set. - -Use the `q` query parameter to match users with [query string syntax](https://auth0.com/docs/manage-users/user-search/user-search-query-syntax). For full instructions and guidance, see [How to List and Search Users](https://auth0.com/docs/manage-users/user-search/list-and-search-users). - -For efficient queries, prefer indexed top-level fields and exact matches. Certain kinds of queries can be slow and may time out, such as filtering on freeform or multi-value fields (like user-defined attributes in `app_metadata` or `user_metadata`) or using leading wildcards. -
-
+**phone_verified:** `typing.Optional[bool]` — Whether this phone number has been verified (true) or not (false). + -#### 🔌 Usage -
+**user_metadata:** `typing.Optional[UserMetadata]` — User metadata to which this user has read/write access. + +
+
+
-```python -from auth0.management import Auth0 -from auth0.management.environment import Auth0Environment - -client = Auth0( - token="", - environment=Auth0Environment.DEFAULT, -) - -client.users.list( - page=1, - per_page=1, - include_totals=True, - sort="sort", - connection="connection", - fields="fields", - include_fields=True, - q="q", - search_engine="v1", - primary_order=True, -) - -``` -
-
+**app_metadata:** `typing.Optional[AppMetadata]` — User metadata to which this user has read-only access. + -#### ⚙️ Parameters -
+**given_name:** `typing.Optional[str]` — Given name/first name/forename of this user. + +
+
+
-**page:** `typing.Optional[int]` — Page index of the results to return. First page is 0. +**family_name:** `typing.Optional[str]` — Family name/last name/surname of this user.
@@ -17242,7 +18747,7 @@ client.users.list(
-**per_page:** `typing.Optional[int]` — Number of results per page. +**name:** `typing.Optional[str]` — Name of this user.
@@ -17250,7 +18755,7 @@ client.users.list(
-**include_totals:** `typing.Optional[bool]` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default). +**nickname:** `typing.Optional[str]` — Preferred nickname or alias of this user.
@@ -17258,7 +18763,7 @@ client.users.list(
-**sort:** `typing.Optional[str]` — Field to sort by. Use field:order where order is 1 for ascending and -1 for descending. e.g. created_at:1 +**picture:** `typing.Optional[str]` — URL to picture, photo, or avatar of this user.
@@ -17266,7 +18771,7 @@ client.users.list(
-**connection:** `typing.Optional[str]` — Connection filter. Only applies when using search_engine=v1. To filter by connection with search_engine=v2|v3, use q=identities.connection:"connection_name" +**verify_email:** `typing.Optional[bool]` — Whether this user will receive a verification email after creation (true) or no email (false). Overrides behavior of `email_verified` parameter.
@@ -17274,7 +18779,7 @@ client.users.list(
-**fields:** `typing.Optional[str]` — Comma-separated list of fields to include or exclude (based on value provided for include_fields) in the result. Leave empty to retrieve all fields. +**verify_phone_number:** `typing.Optional[bool]` — Whether this user will receive a text after changing the phone number (true) or no text (false). Only valid when changing phone number for SMS connections.
@@ -17282,7 +18787,7 @@ client.users.list(
-**include_fields:** `typing.Optional[bool]` — Whether specified fields are to be included (true) or excluded (false). +**password:** `typing.Optional[str]` — New password for this user. Only valid for database connections.
@@ -17290,7 +18795,7 @@ client.users.list(
-**q:** `typing.Optional[str]` — Query in Lucene query string syntax. Some query types cannot be used on metadata fields, for details see Searchable Fields. +**connection:** `typing.Optional[str]` — Name of the connection to target for this user update.
@@ -17298,7 +18803,7 @@ client.users.list(
-**search_engine:** `typing.Optional[SearchEngineVersionsEnum]` — The version of the search engine +**client_id:** `typing.Optional[str]` — Auth0 client ID. Only valid when updating email address.
@@ -17306,7 +18811,7 @@ client.users.list(
-**primary_order:** `typing.Optional[bool]` — If true (default), results are returned in a deterministic order. If false, results may be returned in a non-deterministic order, which can enhance performance for complex queries targeting a small number of users. Set to false only when consistent ordering and pagination is not required. +**username:** `typing.Optional[str]` — The user's username. Only valid if the connection requires a username.
@@ -17326,7 +18831,7 @@ client.users.list(
-
client.users.create(...) -> CreateUserResponseContent +
client.users.regenerate_recovery_code(...) -> RegenerateUsersRecoveryCodeResponseContent
@@ -17338,9 +18843,7 @@ client.users.list(
-Create a new user for a given [database](https://auth0.com/docs/connections/database) or [passwordless](https://auth0.com/docs/connections/passwordless) connection. - -Note: `connection` is required but other parameters such as `email` and `password` are dependent upon the type of connection. +Remove an existing multi-factor authentication (MFA) [recovery code](https://auth0.com/docs/secure/multi-factor-authentication/reset-user-mfa) and generate a new one. If a user cannot access the original device or account used for MFA enrollment, they can use a recovery code to authenticate.
@@ -17363,8 +18866,8 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.users.create( - connection="connection", +client.users.regenerate_recovery_code( + id="id", ) ``` @@ -17381,7 +18884,7 @@ client.users.create(
-**connection:** `str` — Name of the connection this user should be created in. +**id:** `str` — ID of the user to regenerate a multi-factor authentication recovery code for.
@@ -17389,47 +18892,72 @@ client.users.create(
-**email:** `typing.Optional[str]` — The user's email. +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+ +
-
-
-**phone_number:** `typing.Optional[str]` — The user's phone number (following the E.164 recommendation). -
+
+
client.users.revoke_access(...)
-**user_metadata:** `typing.Optional[UserMetadata]` - -
-
+#### 📝 Description
-**blocked:** `typing.Optional[bool]` — Whether this user was blocked by an administrator (true) or not (false). - +
+
+ +Revokes selected resources related to a user (sessions, refresh tokens, ...). +
+
+#### 🔌 Usage +
-**email_verified:** `typing.Optional[bool]` — Whether this email address is verified (true) or unverified (false). User will receive a verification email after creation if `email_verified` is false or not specified - +
+
+ +```python +from auth0.management import Auth0 +from auth0.management.environment import Auth0Environment + +client = Auth0( + token="", + environment=Auth0Environment.DEFAULT, +) + +client.users.revoke_access( + id="id", +) + +``` +
+
+#### ⚙️ Parameters +
-**phone_verified:** `typing.Optional[bool]` — Whether this phone number has been verified (true) or not (false). +
+
+ +**id:** `str` — ID of the user.
@@ -17437,7 +18965,7 @@ client.users.create(
-**app_metadata:** `typing.Optional[AppMetadata]` +**session_id:** `typing.Optional[str]` — ID of the session to revoke.
@@ -17445,7 +18973,7 @@ client.users.create(
-**given_name:** `typing.Optional[str]` — The user's given name(s). +**preserve_refresh_tokens:** `typing.Optional[bool]` — Whether to preserve the refresh tokens associated with the session.
@@ -17453,47 +18981,75 @@ client.users.create(
-**family_name:** `typing.Optional[str]` — The user's family name(s). +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
-
-
-**name:** `typing.Optional[str]` — The user's full name. -
+
+## Actions Versions +
client.actions.versions.list(...) -> ListActionVersionsPaginatedResponseContent
-**nickname:** `typing.Optional[str]` — The user's nickname. - -
-
+#### 📝 Description
-**picture:** `typing.Optional[str]` — A URI pointing to the user's picture. - +
+
+ +Retrieve all of an action's versions. An action version is created whenever an action is deployed. An action version is immutable, once created. +
+
+#### 🔌 Usage +
-**user_id:** `typing.Optional[str]` — The external user's id provided by the identity provider. - +
+
+ +```python +from auth0.management import Auth0 +from auth0.management.environment import Auth0Environment + +client = Auth0( + token="", + environment=Auth0Environment.DEFAULT, +) + +client.actions.versions.list( + action_id="actionId", + page=1, + per_page=1, +) + +``` +
+
+#### ⚙️ Parameters +
-**password:** `typing.Optional[str]` — Initial password for this user. Only valid for auth0 connection strategy. +
+
+ +**action_id:** `str` — The ID of the action.
@@ -17501,7 +19057,7 @@ client.users.create(
-**verify_email:** `typing.Optional[bool]` — Whether the user will receive a verification email after creation (true) or no email (false). Overrides behavior of `email_verified` parameter. +**page:** `typing.Optional[int]` — Use this field to request a specific page of the list results.
@@ -17509,7 +19065,7 @@ client.users.create(
-**username:** `typing.Optional[str]` — The user's username. Only valid if the connection requires a username. +**per_page:** `typing.Optional[int]` — This field specify the maximum number of results to be returned by the server. 20 by default
@@ -17529,7 +19085,7 @@ client.users.create(
-
client.users.list_users_by_email(...) -> typing.List[UserResponseSchema] +
client.actions.versions.get(...) -> GetActionVersionResponseContent
@@ -17541,11 +19097,7 @@ client.users.create(
-Find users by email. If Auth0 is the identity provider (idP), the email address associated with a user is saved in lower case, regardless of how you initially provided it. - -For example, if you register a user as JohnSmith@example.com, Auth0 saves the user's email as johnsmith@example.com. - -Therefore, when using this endpoint, make sure that you are searching for users via email addresses using the correct case. +Retrieve a specific version of an action. An action version is created whenever an action is deployed. An action version is immutable, once created.
@@ -17568,10 +19120,9 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.users.list_users_by_email( - fields="fields", - include_fields=True, - email="email", +client.actions.versions.get( + action_id="actionId", + id="id", ) ``` @@ -17588,15 +19139,7 @@ client.users.list_users_by_email(
-**email:** `str` — Email address to search for (case-sensitive). - -
-
- -
-
- -**fields:** `typing.Optional[str]` — Comma-separated list of fields to include or exclude (based on value provided for include_fields) in the result. Leave empty to retrieve all fields. +**action_id:** `str` — The ID of the action.
@@ -17604,7 +19147,7 @@ client.users.list_users_by_email(
-**include_fields:** `typing.Optional[bool]` — Whether specified fields are to be included (true) or excluded (false). Defaults to true. +**id:** `str` — The ID of the action version.
@@ -17624,7 +19167,7 @@ client.users.list_users_by_email(
-
client.users.get(...) -> GetUserResponseContent +
client.actions.versions.deploy(...) -> DeployActionVersionResponseContent
@@ -17636,7 +19179,7 @@ client.users.list_users_by_email(
-Retrieve user details. A list of fields to include or exclude may also be specified. For more information, see [Retrieve Users with the Get Users Endpoint](https://auth0.com/docs/manage-users/user-search/retrieve-users-with-get-users-endpoint). +Performs the equivalent of a roll-back of an action to an earlier, specified version. Creates a new, deployed action version that is identical to the specified version. If this action is currently bound to a trigger, the system will begin executing the newly-created version immediately.
@@ -17651,7 +19194,7 @@ Retrieve user details. A list of fields to include or exclude may also be specif
```python -from auth0.management import Auth0 +from auth0.management import Auth0, DeployActionVersionRequestContent from auth0.management.environment import Auth0Environment client = Auth0( @@ -17659,10 +19202,10 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.users.get( +client.actions.versions.deploy( + action_id="actionId", id="id", - fields="fields", - include_fields=True, + request=DeployActionVersionRequestContent(), ) ``` @@ -17679,7 +19222,7 @@ client.users.get(
-**id:** `str` — ID of the user to retrieve. +**action_id:** `str` — The ID of an action.
@@ -17687,7 +19230,7 @@ client.users.get(
-**fields:** `typing.Optional[str]` — Comma-separated list of fields to include or exclude (based on value provided for include_fields) in the result. Leave empty to retrieve all fields. +**id:** `str` — The ID of an action version.
@@ -17695,7 +19238,7 @@ client.users.get(
-**include_fields:** `typing.Optional[bool]` — Whether specified fields are to be included (true) or excluded (false). +**request:** `typing.Optional[DeployActionVersionRequestContent]`
@@ -17715,7 +19258,8 @@ client.users.get(
-
client.users.delete(...) +## Actions Executions +
client.actions.executions.get(...) -> GetActionExecutionResponseContent
@@ -17727,7 +19271,7 @@ client.users.get(
-Delete a user by user ID. This action cannot be undone. For Auth0 Dashboard instructions, see [Delete Users](https://auth0.com/docs/manage-users/user-accounts/delete-users). +Retrieve information about a specific execution of a trigger. Relevant execution IDs will be included in tenant logs generated as part of that authentication flow. Executions will only be stored for 10 days after their creation.
@@ -17750,7 +19294,7 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.users.delete( +client.actions.executions.get( id="id", ) @@ -17768,7 +19312,7 @@ client.users.delete(
-**id:** `str` — ID of the user to delete. +**id:** `str` — The ID of the execution to retrieve.
@@ -17788,7 +19332,8 @@ client.users.delete(
-
client.users.update(...) -> UpdateUserResponseContent +## Actions Modules +
client.actions.modules.list(...) -> GetActionModulesResponseContent
@@ -17800,97 +19345,7 @@ client.users.delete(
-Update a user. - -These are the attributes that can be updated at the root level: - -- app_metadata -- blocked -- email -- email_verified -- family_name -- given_name -- name -- nickname -- password -- phone_number -- phone_verified -- picture -- username -- user_metadata -- verify_email - -Some considerations: - -- The properties of the new object will replace the old ones. -- The metadata fields are an exception to this rule (`user_metadata` and `app_metadata`). These properties are merged instead of being replaced but be careful, the merge only occurs on the first level. -- If you are updating `email`, `email_verified`, `phone_number`, `phone_verified`, `username` or `password` of a secondary identity, you need to specify the `connection` property too. -- If you are updating `email` or `phone_number` you can specify, optionally, the `client_id` property. -- Updating `email_verified` is not supported for enterprise and passwordless sms connections. -- Updating the `blocked` to `false` does not affect the user's blocked state from an excessive amount of incorrectly provided credentials. Use the "Unblock a user" endpoint from the "User Blocks" API to change the user's state. -- Supported attributes can be unset by supplying `null` as the value. - -**Updating a field (non-metadata property)** - -To mark the email address of a user as verified, the body to send should be: - -```json -{ "email_verified": true } -``` - -**Updating a user metadata root property** - -Let's assume that our test user has the following `user_metadata`: - -```json -{ "user_metadata" : { "profileCode": 1479 } } -``` - -To add the field `addresses` the body to send should be: - -```json -{ "user_metadata" : { "addresses": {"work_address": "100 Industrial Way"} }} -``` - -The modified object ends up with the following `user_metadata` property: - -```json -{ - "user_metadata": { - "profileCode": 1479, - "addresses": { "work_address": "100 Industrial Way" } - } -} -``` - -**Updating an inner user metadata property** - -If there's existing user metadata to which we want to add `"home_address": "742 Evergreen Terrace"` (using the `addresses` property) we should send the whole `addresses` object. Since this is a first-level object, the object will be merged in, but its own properties will not be. The body to send should be: - -```json -{ - "user_metadata": { - "addresses": { - "work_address": "100 Industrial Way", - "home_address": "742 Evergreen Terrace" - } - } -} -``` - -The modified object ends up with the following `user_metadata` property: - -```json -{ - "user_metadata": { - "profileCode": 1479, - "addresses": { - "work_address": "100 Industrial Way", - "home_address": "742 Evergreen Terrace" - } - } -} -``` +Retrieve a paginated list of all Actions Modules with optional filtering and totals.
@@ -17913,8 +19368,9 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.users.update( - id="id", +client.actions.modules.list( + page=1, + per_page=1, ) ``` @@ -17931,7 +19387,7 @@ client.users.update(
-**id:** `str` — ID of the user to update. +**page:** `typing.Optional[int]` — Page index of the results to return. First page is 0.
@@ -17939,7 +19395,7 @@ client.users.update(
-**blocked:** `typing.Optional[bool]` — Whether this user was blocked by an administrator (true) or not (false). +**per_page:** `typing.Optional[int]` — Number of results per page. Paging is disabled if parameter not sent.
@@ -17947,95 +19403,73 @@ client.users.update(
-**email_verified:** `typing.Optional[bool]` — Whether this email address is verified (true) or unverified (false). If set to false the user will not receive a verification email unless `verify_email` is set to true. +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
- -
-
- -**email:** `typing.Optional[str]` — Email address of this user. -
-
-
-**phone_number:** `typing.Optional[str]` — The user's phone number (following the E.164 recommendation). -
+
+
client.actions.modules.create(...) -> CreateActionModuleResponseContent
-**phone_verified:** `typing.Optional[bool]` — Whether this phone number has been verified (true) or not (false). - -
-
+#### 📝 Description
-**user_metadata:** `typing.Optional[UserMetadata]` — User metadata to which this user has read/write access. - -
-
-
-**app_metadata:** `typing.Optional[AppMetadata]` — User metadata to which this user has read-only access. - +Create a new Actions Module for reusable code across actions.
- -
-
- -**given_name:** `typing.Optional[str]` — Given name/first name/forename of this user. -
+#### 🔌 Usage +
-**family_name:** `typing.Optional[str]` — Family name/last name/surname of this user. - -
-
-
-**name:** `typing.Optional[str]` — Name of this user. - -
-
+```python +from auth0.management import Auth0 +from auth0.management.environment import Auth0Environment -
-
+client = Auth0( + token="", + environment=Auth0Environment.DEFAULT, +) -**nickname:** `typing.Optional[str]` — Preferred nickname or alias of this user. - +client.actions.modules.create( + name="name", + code="code", +) + +``` +
+
+#### ⚙️ Parameters +
-**picture:** `typing.Optional[str]` — URL to picture, photo, or avatar of this user. - -
-
-
-**verify_email:** `typing.Optional[bool]` — Whether this user will receive a verification email after creation (true) or no email (false). Overrides behavior of `email_verified` parameter. +**name:** `str` — The name of the action module.
@@ -18043,7 +19477,7 @@ client.users.update(
-**verify_phone_number:** `typing.Optional[bool]` — Whether this user will receive a text after changing the phone number (true) or no text (false). Only valid when changing phone number for SMS connections. +**code:** `str` — The source code of the action module.
@@ -18051,7 +19485,7 @@ client.users.update(
-**password:** `typing.Optional[str]` — New password for this user. Only valid for database connections. +**secrets:** `typing.Optional[typing.List[ActionModuleSecretRequest]]` — The secrets to associate with the action module.
@@ -18059,7 +19493,7 @@ client.users.update(
-**connection:** `typing.Optional[str]` — Name of the connection to target for this user update. +**dependencies:** `typing.Optional[typing.List[ActionModuleDependencyRequest]]` — The npm dependencies of the action module.
@@ -18067,7 +19501,7 @@ client.users.update(
-**client_id:** `typing.Optional[str]` — Auth0 client ID. Only valid when updating email address. +**api_version:** `typing.Optional[str]` — The API version of the module.
@@ -18075,7 +19509,7 @@ client.users.update(
-**username:** `typing.Optional[str]` — The user's username. Only valid if the connection requires a username. +**publish:** `typing.Optional[bool]` — Whether to publish the module immediately after creation.
@@ -18095,7 +19529,7 @@ client.users.update(
-
client.users.regenerate_recovery_code(...) -> RegenerateUsersRecoveryCodeResponseContent +
client.actions.modules.get(...) -> GetActionModuleResponseContent
@@ -18107,7 +19541,7 @@ client.users.update(
-Remove an existing multi-factor authentication (MFA) [recovery code](https://auth0.com/docs/secure/multi-factor-authentication/reset-user-mfa) and generate a new one. If a user cannot access the original device or account used for MFA enrollment, they can use a recovery code to authenticate. +Retrieve details of a specific Actions Module by its unique identifier.
@@ -18130,7 +19564,7 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.users.regenerate_recovery_code( +client.actions.modules.get( id="id", ) @@ -18148,7 +19582,7 @@ client.users.regenerate_recovery_code(
-**id:** `str` — ID of the user to regenerate a multi-factor authentication recovery code for. +**id:** `str` — The ID of the action module to retrieve.
@@ -18168,7 +19602,7 @@ client.users.regenerate_recovery_code(
-
client.users.revoke_access(...) +
client.actions.modules.delete(...)
@@ -18180,7 +19614,7 @@ client.users.regenerate_recovery_code(
-Revokes selected resources related to a user (sessions, refresh tokens, ...). +Permanently delete an Actions Module. This will fail if the module is still in use by any actions.
@@ -18203,7 +19637,7 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.users.revoke_access( +client.actions.modules.delete( id="id", ) @@ -18221,23 +19655,7 @@ client.users.revoke_access(
-**id:** `str` — ID of the user. - -
-
- -
-
- -**session_id:** `typing.Optional[str]` — ID of the session to revoke. - -
-
- -
-
- -**preserve_refresh_tokens:** `typing.Optional[bool]` — Whether to preserve the refresh tokens associated with the session. +**id:** `str` — The ID of the Actions Module to delete.
@@ -18257,8 +19675,7 @@ client.users.revoke_access(
-## Actions Versions -
client.actions.versions.list(...) -> ListActionVersionsPaginatedResponseContent +
client.actions.modules.update(...) -> UpdateActionModuleResponseContent
@@ -18270,7 +19687,7 @@ client.users.revoke_access(
-Retrieve all of an action's versions. An action version is created whenever an action is deployed. An action version is immutable, once created. +Update properties of an existing Actions Module, such as code, dependencies, or secrets.
@@ -18293,10 +19710,8 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.actions.versions.list( - action_id="actionId", - page=1, - per_page=1, +client.actions.modules.update( + id="id", ) ``` @@ -18313,23 +19728,7 @@ client.actions.versions.list(
-**action_id:** `str` — The ID of the action. - -
-
- -
-
- -**page:** `typing.Optional[int]` — Use this field to request a specific page of the list results. - -
-
- -
-
- -**per_page:** `typing.Optional[int]` — This field specify the maximum number of results to be returned by the server. 20 by default +**id:** `str` — The ID of the action module to update.
@@ -18337,73 +19736,15 @@ client.actions.versions.list(
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. +**code:** `typing.Optional[str]` — The source code of the action module.
- -
- - - - -
-
client.actions.versions.get(...) -> GetActionVersionResponseContent
-#### 📝 Description - -
-
- -
-
- -Retrieve a specific version of an action. An action version is created whenever an action is deployed. An action version is immutable, once created. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from auth0.management import Auth0 -from auth0.management.environment import Auth0Environment - -client = Auth0( - token="", - environment=Auth0Environment.DEFAULT, -) - -client.actions.versions.get( - action_id="actionId", - id="id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**action_id:** `str` — The ID of the action. +**secrets:** `typing.Optional[typing.List[ActionModuleSecretRequest]]` — The secrets to associate with the action module.
@@ -18411,7 +19752,7 @@ client.actions.versions.get(
-**id:** `str` — The ID of the action version. +**dependencies:** `typing.Optional[typing.List[ActionModuleDependencyRequest]]` — The npm dependencies of the action module.
@@ -18431,7 +19772,7 @@ client.actions.versions.get(
-
client.actions.versions.deploy(...) -> DeployActionVersionResponseContent +
client.actions.modules.list_actions(...) -> GetActionModuleActionsResponseContent
@@ -18443,7 +19784,7 @@ client.actions.versions.get(
-Performs the equivalent of a roll-back of an action to an earlier, specified version. Creates a new, deployed action version that is identical to the specified version. If this action is currently bound to a trigger, the system will begin executing the newly-created version immediately. +Lists all actions that are using a specific Actions Module, showing which deployed action versions reference this Actions Module.
@@ -18458,7 +19799,7 @@ Performs the equivalent of a roll-back of an action to an earlier, specified ver
```python -from auth0.management import Auth0, DeployActionVersionRequestContent +from auth0.management import Auth0 from auth0.management.environment import Auth0Environment client = Auth0( @@ -18466,10 +19807,10 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.actions.versions.deploy( - action_id="actionId", +client.actions.modules.list_actions( id="id", - request=DeployActionVersionRequestContent(), + page=1, + per_page=1, ) ``` @@ -18486,7 +19827,7 @@ client.actions.versions.deploy(
-**action_id:** `str` — The ID of an action. +**id:** `str` — The unique ID of the module.
@@ -18494,7 +19835,7 @@ client.actions.versions.deploy(
-**id:** `str` — The ID of an action version. +**page:** `typing.Optional[int]` — Page index of the results to return. First page is 0.
@@ -18502,7 +19843,7 @@ client.actions.versions.deploy(
-**request:** `typing.Optional[DeployActionVersionRequestContent]` +**per_page:** `typing.Optional[int]` — Number of results per page.
@@ -18522,8 +19863,7 @@ client.actions.versions.deploy(
-## Actions Executions -
client.actions.executions.get(...) -> GetActionExecutionResponseContent +
client.actions.modules.rollback(...) -> RollbackActionModuleResponseContent
@@ -18535,7 +19875,7 @@ client.actions.versions.deploy(
-Retrieve information about a specific execution of a trigger. Relevant execution IDs will be included in tenant logs generated as part of that authentication flow. Executions will only be stored for 10 days after their creation. +Rolls back an Actions Module's draft to a previously created version. This action copies the code, dependencies, and secrets from the specified version into the current draft.
@@ -18558,8 +19898,9 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.actions.executions.get( +client.actions.modules.rollback( id="id", + module_version_id="module_version_id", ) ``` @@ -18576,7 +19917,15 @@ client.actions.executions.get(
-**id:** `str` — The ID of the execution to retrieve. +**id:** `str` — The unique ID of the module to roll back. + +
+
+ +
+
+ +**module_version_id:** `str` — The unique ID of the module version to roll back to.
@@ -18596,8 +19945,8 @@ client.actions.executions.get(
-## Actions Modules -
client.actions.modules.list(...) -> GetActionModulesResponseContent +## Actions Triggers +
client.actions.triggers.list() -> ListActionTriggersResponseContent
@@ -18609,7 +19958,7 @@ client.actions.executions.get(
-Retrieve a paginated list of all Actions Modules with optional filtering and totals. +Retrieve the set of triggers currently available within actions. A trigger is an extensibility point to which actions can be bound.
@@ -18632,10 +19981,7 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.actions.modules.list( - page=1, - per_page=1, -) +client.actions.triggers.list() ``` @@ -18651,22 +19997,6 @@ client.actions.modules.list(
-**page:** `typing.Optional[int]` — Page index of the results to return. First page is 0. - -
-
- -
-
- -**per_page:** `typing.Optional[int]` — Number of results per page. Paging is disabled if parameter not sent. - -
-
- -
-
- **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -18679,7 +20009,8 @@ client.actions.modules.list(
-
client.actions.modules.create(...) -> CreateActionModuleResponseContent +## Actions Modules Versions +
client.actions.modules.versions.list(...) -> GetActionModuleVersionsResponseContent
@@ -18691,7 +20022,7 @@ client.actions.modules.list(
-Create a new Actions Module for reusable code across actions. +List all published versions of a specific Actions Module.
@@ -18714,9 +20045,10 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.actions.modules.create( - name="name", - code="code", +client.actions.modules.versions.list( + id="id", + page=1, + per_page=1, ) ``` @@ -18733,47 +20065,7 @@ client.actions.modules.create(
-**name:** `str` — The name of the action module. - -
-
- -
-
- -**code:** `str` — The source code of the action module. - -
-
- -
-
- -**secrets:** `typing.Optional[typing.List[ActionModuleSecretRequest]]` — The secrets to associate with the action module. - -
-
- -
-
- -**dependencies:** `typing.Optional[typing.List[ActionModuleDependencyRequest]]` — The npm dependencies of the action module. - -
-
- -
-
- -**api_version:** `typing.Optional[str]` — The API version of the module. - -
-
- -
-
- -**publish:** `typing.Optional[bool]` — Whether to publish the module immediately after creation. +**id:** `str` — The unique ID of the module.
@@ -18781,72 +20073,15 @@ client.actions.modules.create(
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. +**page:** `typing.Optional[int]` — Use this field to request a specific page of the list results. -
-
- -
- - - - -
- -
client.actions.modules.get(...) -> GetActionModuleResponseContent -
-
- -#### 📝 Description - -
-
- -
-
- -Retrieve details of a specific Actions Module by its unique identifier. -
-
-#### 🔌 Usage -
-
-
- -```python -from auth0.management import Auth0 -from auth0.management.environment import Auth0Environment - -client = Auth0( - token="", - environment=Auth0Environment.DEFAULT, -) - -client.actions.modules.get( - id="id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**id:** `str` — The ID of the action module to retrieve. +**per_page:** `typing.Optional[int]` — The maximum number of results to be returned by the server in a single response. 20 by default.
@@ -18866,7 +20101,7 @@ client.actions.modules.get(
-
client.actions.modules.delete(...) +
client.actions.modules.versions.create(...) -> CreateActionModuleVersionResponseContent
@@ -18878,7 +20113,7 @@ client.actions.modules.get(
-Permanently delete an Actions Module. This will fail if the module is still in use by any actions. +Creates a new immutable version of an Actions Module from the current draft version. This publishes the draft as a new version that can be referenced by actions, while maintaining the existing draft for continued development.
@@ -18901,7 +20136,7 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.actions.modules.delete( +client.actions.modules.versions.create( id="id", ) @@ -18919,7 +20154,7 @@ client.actions.modules.delete(
-**id:** `str` — The ID of the Actions Module to delete. +**id:** `str` — The ID of the action module to create a version for.
@@ -18939,7 +20174,7 @@ client.actions.modules.delete(
-
client.actions.modules.update(...) -> UpdateActionModuleResponseContent +
client.actions.modules.versions.get(...) -> GetActionModuleVersionResponseContent
@@ -18951,7 +20186,7 @@ client.actions.modules.delete(
-Update properties of an existing Actions Module, such as code, dependencies, or secrets. +Retrieve the details of a specific, immutable version of an Actions Module.
@@ -18974,8 +20209,9 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.actions.modules.update( +client.actions.modules.versions.get( id="id", + version_id="versionId", ) ``` @@ -18992,23 +20228,7 @@ client.actions.modules.update(
-**id:** `str` — The ID of the action module to update. - -
-
- -
-
- -**code:** `typing.Optional[str]` — The source code of the action module. - -
-
- -
-
- -**secrets:** `typing.Optional[typing.List[ActionModuleSecretRequest]]` — The secrets to associate with the action module. +**id:** `str` — The unique ID of the module.
@@ -19016,7 +20236,7 @@ client.actions.modules.update(
-**dependencies:** `typing.Optional[typing.List[ActionModuleDependencyRequest]]` — The npm dependencies of the action module. +**version_id:** `str` — The unique ID of the module version to retrieve.
@@ -19036,7 +20256,8 @@ client.actions.modules.update(
-
client.actions.modules.list_actions(...) -> GetActionModuleActionsResponseContent +## Actions Triggers Bindings +
client.actions.triggers.bindings.list(...) -> ListActionBindingsPaginatedResponseContent
@@ -19048,7 +20269,7 @@ client.actions.modules.update(
-Lists all actions that are using a specific Actions Module, showing which deployed action versions reference this Actions Module. +Retrieve the actions that are bound to a trigger. Once an action is created and deployed, it must be attached (i.e. bound) to a trigger so that it will be executed as part of a flow. The list of actions returned reflects the order in which they will be executed during the appropriate flow.
@@ -19071,8 +20292,8 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.actions.modules.list_actions( - id="id", +client.actions.triggers.bindings.list( + trigger_id="post-login", page=1, per_page=1, ) @@ -19091,7 +20312,7 @@ client.actions.modules.list_actions(
-**id:** `str` — The unique ID of the module. +**trigger_id:** `ActionTriggerTypeEnum` — An actions extensibility point.
@@ -19099,7 +20320,7 @@ client.actions.modules.list_actions(
-**page:** `typing.Optional[int]` — Page index of the results to return. First page is 0. +**page:** `typing.Optional[int]` — Use this field to request a specific page of the list results.
@@ -19107,7 +20328,7 @@ client.actions.modules.list_actions(
-**per_page:** `typing.Optional[int]` — Number of results per page. +**per_page:** `typing.Optional[int]` — The maximum number of results to be returned in a single request. 20 by default
@@ -19127,7 +20348,7 @@ client.actions.modules.list_actions(
-
client.actions.modules.rollback(...) -> RollbackActionModuleResponseContent +
client.actions.triggers.bindings.update_many(...) -> UpdateActionBindingsResponseContent
@@ -19139,7 +20360,7 @@ client.actions.modules.list_actions(
-Rolls back an Actions Module's draft to a previously created version. This action copies the code, dependencies, and secrets from the specified version into the current draft. +Update the actions that are bound (i.e. attached) to a trigger. Once an action is created and deployed, it must be attached (i.e. bound) to a trigger so that it will be executed as part of a flow. The order in which the actions are provided will determine the order in which they are executed.
@@ -19162,9 +20383,8 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.actions.modules.rollback( - id="id", - module_version_id="module_version_id", +client.actions.triggers.bindings.update_many( + trigger_id="post-login", ) ``` @@ -19181,7 +20401,7 @@ client.actions.modules.rollback(
-**id:** `str` — The unique ID of the module to roll back. +**trigger_id:** `ActionTriggerTypeEnum` — An actions extensibility point.
@@ -19189,7 +20409,7 @@ client.actions.modules.rollback(
-**module_version_id:** `str` — The unique ID of the module version to roll back to. +**bindings:** `typing.Optional[typing.List[ActionBindingWithRef]]` — The actions that will be bound to this trigger. The order in which they are included will be the order in which they are executed.
@@ -19209,8 +20429,8 @@ client.actions.modules.rollback(
-## Actions Triggers -
client.actions.triggers.list() -> ListActionTriggersResponseContent +## Anomaly Blocks +
client.anomaly.blocks.check_ip(...)
@@ -19222,7 +20442,7 @@ client.actions.modules.rollback(
-Retrieve the set of triggers currently available within actions. A trigger is an extensibility point to which actions can be bound. +Check if the given IP address is blocked via the Suspicious IP Throttling due to multiple suspicious attempts.
@@ -19245,7 +20465,9 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.actions.triggers.list() +client.anomaly.blocks.check_ip( + id="id", +) ``` @@ -19261,6 +20483,14 @@ client.actions.triggers.list()
+**id:** `AnomalyIpFormat` — IP address to check. + +
+
+ +
+
+ **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -19273,8 +20503,7 @@ client.actions.triggers.list()
-## Actions Modules Versions -
client.actions.modules.versions.list(...) -> GetActionModuleVersionsResponseContent +
client.anomaly.blocks.unblock_ip(...)
@@ -19286,7 +20515,7 @@ client.actions.triggers.list()
-List all published versions of a specific Actions Module. +Remove a block imposed by Suspicious IP Throttling for the given IP address.
@@ -19309,10 +20538,8 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.actions.modules.versions.list( +client.anomaly.blocks.unblock_ip( id="id", - page=1, - per_page=1, ) ``` @@ -19329,23 +20556,7 @@ client.actions.modules.versions.list(
-**id:** `str` — The unique ID of the module. - -
-
- -
-
- -**page:** `typing.Optional[int]` — Use this field to request a specific page of the list results. - -
-
- -
-
- -**per_page:** `typing.Optional[int]` — The maximum number of results to be returned by the server in a single response. 20 by default. +**id:** `AnomalyIpFormat` — IP address to unblock.
@@ -19365,7 +20576,8 @@ client.actions.modules.versions.list(
-
client.actions.modules.versions.create(...) -> CreateActionModuleVersionResponseContent +## AttackProtection BotDetection +
client.attack_protection.bot_detection.get() -> GetBotDetectionSettingsResponseContent
@@ -19377,7 +20589,7 @@ client.actions.modules.versions.list(
-Creates a new immutable version of an Actions Module from the current draft version. This publishes the draft as a new version that can be referenced by actions, while maintaining the existing draft for continued development. +Get the Bot Detection configuration of your tenant.
@@ -19400,9 +20612,7 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.actions.modules.versions.create( - id="id", -) +client.attack_protection.bot_detection.get() ``` @@ -19418,14 +20628,6 @@ client.actions.modules.versions.create(
-**id:** `str` — The ID of the action module to create a version for. - -
-
- -
-
- **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -19438,7 +20640,7 @@ client.actions.modules.versions.create(
-
client.actions.modules.versions.get(...) -> GetActionModuleVersionResponseContent +
client.attack_protection.bot_detection.update(...) -> UpdateBotDetectionSettingsResponseContent
@@ -19450,7 +20652,7 @@ client.actions.modules.versions.create(
-Retrieve the details of a specific, immutable version of an Actions Module. +Update the Bot Detection configuration of your tenant.
@@ -19473,10 +20675,7 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.actions.modules.versions.get( - id="id", - version_id="versionId", -) +client.attack_protection.bot_detection.update() ``` @@ -19492,7 +20691,7 @@ client.actions.modules.versions.get(
-**id:** `str` — The unique ID of the module. +**bot_detection_level:** `typing.Optional[BotDetectionLevelEnum]`
@@ -19500,7 +20699,39 @@ client.actions.modules.versions.get(
-**version_id:** `str` — The unique ID of the module version to retrieve. +**challenge_password_policy:** `typing.Optional[BotDetectionChallengePolicyPasswordFlowEnum]` + +
+
+ +
+
+ +**challenge_passwordless_policy:** `typing.Optional[BotDetectionChallengePolicyPasswordlessFlowEnum]` + +
+
+ +
+
+ +**challenge_password_reset_policy:** `typing.Optional[BotDetectionChallengePolicyPasswordResetFlowEnum]` + +
+
+ +
+
+ +**allowlist:** `typing.Optional[BotDetectionAllowlist]` + +
+
+ +
+
+ +**monitoring_mode_enabled:** `typing.Optional[BotDetectionMonitoringModeEnabled]`
@@ -19520,8 +20751,8 @@ client.actions.modules.versions.get(
-## Actions Triggers Bindings -
client.actions.triggers.bindings.list(...) -> ListActionBindingsPaginatedResponseContent +## AttackProtection BreachedPasswordDetection +
client.attack_protection.breached_password_detection.get() -> GetBreachedPasswordDetectionSettingsResponseContent
@@ -19533,7 +20764,7 @@ client.actions.modules.versions.get(
-Retrieve the actions that are bound to a trigger. Once an action is created and deployed, it must be attached (i.e. bound) to a trigger so that it will be executed as part of a flow. The list of actions returned reflects the order in which they will be executed during the appropriate flow. +Retrieve details of the Breached Password Detection configuration of your tenant.
@@ -19556,11 +20787,7 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.actions.triggers.bindings.list( - trigger_id="post-login", - page=1, - per_page=1, -) +client.attack_protection.breached_password_detection.get() ``` @@ -19576,30 +20803,6 @@ client.actions.triggers.bindings.list(
-**trigger_id:** `ActionTriggerTypeEnum` — An actions extensibility point. - -
-
- -
-
- -**page:** `typing.Optional[int]` — Use this field to request a specific page of the list results. - -
-
- -
-
- -**per_page:** `typing.Optional[int]` — The maximum number of results to be returned in a single request. 20 by default - -
-
- -
-
- **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -19612,7 +20815,7 @@ client.actions.triggers.bindings.list(
-
client.actions.triggers.bindings.update_many(...) -> UpdateActionBindingsResponseContent +
client.attack_protection.breached_password_detection.update(...) -> UpdateBreachedPasswordDetectionSettingsResponseContent
@@ -19624,7 +20827,7 @@ client.actions.triggers.bindings.list(
-Update the actions that are bound (i.e. attached) to a trigger. Once an action is created and deployed, it must be attached (i.e. bound) to a trigger so that it will be executed as part of a flow. The order in which the actions are provided will determine the order in which they are executed. +Update details of the Breached Password Detection configuration of your tenant.
@@ -19647,9 +20850,7 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.actions.triggers.bindings.update_many( - trigger_id="post-login", -) +client.attack_protection.breached_password_detection.update() ``` @@ -19665,7 +20866,7 @@ client.actions.triggers.bindings.update_many(
-**trigger_id:** `ActionTriggerTypeEnum` — An actions extensibility point. +**enabled:** `typing.Optional[bool]` — Whether or not breached password detection is active.
@@ -19673,7 +20874,37 @@ client.actions.triggers.bindings.update_many(
-**bindings:** `typing.Optional[typing.List[ActionBindingWithRef]]` — The actions that will be bound to this trigger. The order in which they are included will be the order in which they are executed. +**shields:** `typing.Optional[typing.List[BreachedPasswordDetectionShieldsEnum]]` + +Action to take when a breached password is detected during a login. + Possible values: block, user_notification, admin_notification. + +
+
+ +
+
+ +**admin_notification_frequency:** `typing.Optional[typing.List[BreachedPasswordDetectionAdminNotificationFrequencyEnum]]` + +When "admin_notification" is enabled, determines how often email notifications are sent. + Possible values: immediately, daily, weekly, monthly. + +
+
+ +
+
+ +**method:** `typing.Optional[BreachedPasswordDetectionMethodEnum]` + +
+
+ +
+
+ +**stage:** `typing.Optional[BreachedPasswordDetectionStage]`
@@ -19693,8 +20924,8 @@ client.actions.triggers.bindings.update_many(
-## Anomaly Blocks -
client.anomaly.blocks.check_ip(...) +## AttackProtection BruteForceProtection +
client.attack_protection.brute_force_protection.get() -> GetBruteForceSettingsResponseContent
@@ -19706,7 +20937,7 @@ client.actions.triggers.bindings.update_many(
-Check if the given IP address is blocked via the Suspicious IP Throttling due to multiple suspicious attempts. +Retrieve details of the Brute-force Protection configuration of your tenant.
@@ -19729,9 +20960,7 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.anomaly.blocks.check_ip( - id="id", -) +client.attack_protection.brute_force_protection.get() ``` @@ -19747,14 +20976,6 @@ client.anomaly.blocks.check_ip(
-**id:** `AnomalyIpFormat` — IP address to check. - -
-
- -
-
- **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -19767,7 +20988,7 @@ client.anomaly.blocks.check_ip(
-
client.anomaly.blocks.unblock_ip(...) +
client.attack_protection.brute_force_protection.update(...) -> UpdateBruteForceSettingsResponseContent
@@ -19779,7 +21000,7 @@ client.anomaly.blocks.check_ip(
-Remove a block imposed by Suspicious IP Throttling for the given IP address. +Update the Brute-force Protection configuration of your tenant.
@@ -19802,9 +21023,7 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.anomaly.blocks.unblock_ip( - id="id", -) +client.attack_protection.brute_force_protection.update() ``` @@ -19820,7 +21039,50 @@ client.anomaly.blocks.unblock_ip(
-**id:** `AnomalyIpFormat` — IP address to unblock. +**enabled:** `typing.Optional[bool]` — Whether or not brute force attack protections are active. + +
+
+ +
+
+ +**shields:** `typing.Optional[typing.List[BruteForceProtectionShieldsEnum]]` + +Action to take when a brute force protection threshold is violated. + Possible values: block, user_notification. + +
+
+ +
+
+ +**allowlist:** `typing.Optional[typing.List[str]]` — List of trusted IP addresses that will not have attack protection enforced against them. + +
+
+ +
+
+ +**mode:** `typing.Optional[BruteForceProtectionModeEnum]` + +
+
+ +
+
+ +**max_attempts:** `typing.Optional[int]` — Maximum number of unsuccessful attempts. + +
+
+ +
+
+ +**form_submission_mode:** `typing.Optional[BruteForceProtectionFormSubmissionModeEnum]`
@@ -19840,8 +21102,8 @@ client.anomaly.blocks.unblock_ip(
-## AttackProtection BotDetection -
client.attack_protection.bot_detection.get() -> GetBotDetectionSettingsResponseContent +## AttackProtection Captcha +
client.attack_protection.captcha.get() -> GetAttackProtectionCaptchaResponseContent
@@ -19853,7 +21115,7 @@ client.anomaly.blocks.unblock_ip(
-Get the Bot Detection configuration of your tenant. +Get the CAPTCHA configuration for your client.
@@ -19876,7 +21138,7 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.attack_protection.bot_detection.get() +client.attack_protection.captcha.get() ``` @@ -19904,7 +21166,7 @@ client.attack_protection.bot_detection.get()
-
client.attack_protection.bot_detection.update(...) -> UpdateBotDetectionSettingsResponseContent +
client.attack_protection.captcha.update(...) -> UpdateAttackProtectionCaptchaResponseContent
@@ -19916,7 +21178,7 @@ client.attack_protection.bot_detection.get()
-Update the Bot Detection configuration of your tenant. +Update existing CAPTCHA configuration for your client.
@@ -19939,7 +21201,7 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.attack_protection.bot_detection.update() +client.attack_protection.captcha.update() ``` @@ -19955,7 +21217,7 @@ client.attack_protection.bot_detection.update()
-**bot_detection_level:** `typing.Optional[BotDetectionLevelEnum]` +**active_provider_id:** `typing.Optional[AttackProtectionCaptchaProviderId]`
@@ -19963,7 +21225,7 @@ client.attack_protection.bot_detection.update()
-**challenge_password_policy:** `typing.Optional[BotDetectionChallengePolicyPasswordFlowEnum]` +**arkose:** `typing.Optional[AttackProtectionUpdateCaptchaArkose]`
@@ -19971,7 +21233,7 @@ client.attack_protection.bot_detection.update()
-**challenge_passwordless_policy:** `typing.Optional[BotDetectionChallengePolicyPasswordlessFlowEnum]` +**auth_challenge:** `typing.Optional[AttackProtectionCaptchaAuthChallengeRequest]`
@@ -19979,7 +21241,7 @@ client.attack_protection.bot_detection.update()
-**challenge_password_reset_policy:** `typing.Optional[BotDetectionChallengePolicyPasswordResetFlowEnum]` +**hcaptcha:** `typing.Optional[AttackProtectionUpdateCaptchaHcaptcha]`
@@ -19987,7 +21249,7 @@ client.attack_protection.bot_detection.update()
-**allowlist:** `typing.Optional[BotDetectionAllowlist]` +**friendly_captcha:** `typing.Optional[AttackProtectionUpdateCaptchaFriendlyCaptcha]`
@@ -19995,7 +21257,23 @@ client.attack_protection.bot_detection.update()
-**monitoring_mode_enabled:** `typing.Optional[BotDetectionMonitoringModeEnabled]` +**recaptcha_enterprise:** `typing.Optional[AttackProtectionUpdateCaptchaRecaptchaEnterprise]` + +
+
+ +
+
+ +**recaptcha_v_2:** `typing.Optional[AttackProtectionUpdateCaptchaRecaptchaV2]` + +
+
+ +
+
+ +**simple_captcha:** `typing.Optional[AttackProtectionCaptchaSimpleCaptchaResponseContent]`
@@ -20015,8 +21293,8 @@ client.attack_protection.bot_detection.update()
-## AttackProtection BreachedPasswordDetection -
client.attack_protection.breached_password_detection.get() -> GetBreachedPasswordDetectionSettingsResponseContent +## AttackProtection CaptchaPolicies +
client.attack_protection.captcha_policies.list() -> ListAttackProtectionCaptchaPoliciesResponseContent
@@ -20028,7 +21306,7 @@ client.attack_protection.bot_detection.update()
-Retrieve details of the Breached Password Detection configuration of your tenant. +Retrieve all CAPTCHA attack protection policies for the tenant, sorted by priority ascending.
@@ -20051,7 +21329,7 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.attack_protection.breached_password_detection.get() +client.attack_protection.captcha_policies.list() ``` @@ -20079,7 +21357,7 @@ client.attack_protection.breached_password_detection.get()
-
client.attack_protection.breached_password_detection.update(...) -> UpdateBreachedPasswordDetectionSettingsResponseContent +
client.attack_protection.captcha_policies.create(...) -> AttackProtectionCaptchaPolicy
@@ -20091,7 +21369,7 @@ client.attack_protection.breached_password_detection.get()
-Update details of the Breached Password Detection configuration of your tenant. +Create a new CAPTCHA attack protection policy for the tenant. The maximum number of policies per tenant is determined by the tenant's subscription.
@@ -20106,7 +21384,7 @@ Update details of the Breached Password Detection configuration of your tenant.
```python -from auth0.management import Auth0 +from auth0.management import Auth0, AttackProtectionCaptchaPolicyMatch, AttackProtectionCaptchaPolicyActionInput from auth0.management.environment import Auth0Environment client = Auth0( @@ -20114,7 +21392,12 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.attack_protection.breached_password_detection.update() +client.attack_protection.captcha_policies.create( + name="name", + priority=1, + match=AttackProtectionCaptchaPolicyMatch(), + action=AttackProtectionCaptchaPolicyActionInput(), +) ```
@@ -20130,7 +21413,7 @@ client.attack_protection.breached_password_detection.update()
-**enabled:** `typing.Optional[bool]` — Whether or not breached password detection is active. +**name:** `str` — Human-readable policy name.
@@ -20138,10 +21421,7 @@ client.attack_protection.breached_password_detection.update()
-**shields:** `typing.Optional[typing.List[BreachedPasswordDetectionShieldsEnum]]` - -Action to take when a breached password is detected during a login. - Possible values: block, user_notification, admin_notification. +**priority:** `int` — Conflict resolution order. Lower number takes higher precedence. Must be unique per tenant.
@@ -20149,10 +21429,7 @@ Action to take when a breached password is detected during a login.
-**admin_notification_frequency:** `typing.Optional[typing.List[BreachedPasswordDetectionAdminNotificationFrequencyEnum]]` - -When "admin_notification" is enabled, determines how often email notifications are sent. - Possible values: immediately, daily, weekly, monthly. +**match:** `AttackProtectionCaptchaPolicyMatch`
@@ -20160,7 +21437,7 @@ When "admin_notification" is enabled, determines how often email notifications a
-**method:** `typing.Optional[BreachedPasswordDetectionMethodEnum]` +**action:** `AttackProtectionCaptchaPolicyActionInput`
@@ -20168,7 +21445,7 @@ When "admin_notification" is enabled, determines how often email notifications a
-**stage:** `typing.Optional[BreachedPasswordDetectionStage]` +**description:** `typing.Optional[str]` — Description of the attack protection policy.
@@ -20188,8 +21465,7 @@ When "admin_notification" is enabled, determines how often email notifications a
-## AttackProtection BruteForceProtection -
client.attack_protection.brute_force_protection.get() -> GetBruteForceSettingsResponseContent +
client.attack_protection.captcha_policies.get(...) -> AttackProtectionCaptchaPolicy
@@ -20201,7 +21477,7 @@ When "admin_notification" is enabled, determines how often email notifications a
-Retrieve details of the Brute-force Protection configuration of your tenant. +Retrieve a single CAPTCHA attack protection policy for the tenant by ID.
@@ -20224,7 +21500,9 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.attack_protection.brute_force_protection.get() +client.attack_protection.captcha_policies.get( + id="id", +) ``` @@ -20240,6 +21518,14 @@ client.attack_protection.brute_force_protection.get()
+**id:** `str` — ID of the CAPTCHA attack protection policy. + +
+
+ +
+
+ **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -20252,7 +21538,7 @@ client.attack_protection.brute_force_protection.get()
-
client.attack_protection.brute_force_protection.update(...) -> UpdateBruteForceSettingsResponseContent +
client.attack_protection.captcha_policies.delete(...)
@@ -20264,7 +21550,7 @@ client.attack_protection.brute_force_protection.get()
-Update the Brute-force Protection configuration of your tenant. +Delete a CAPTCHA attack protection policy for the tenant.
@@ -20287,7 +21573,9 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.attack_protection.brute_force_protection.update() +client.attack_protection.captcha_policies.delete( + id="id", +) ``` @@ -20303,42 +21591,7 @@ client.attack_protection.brute_force_protection.update()
-**enabled:** `typing.Optional[bool]` — Whether or not brute force attack protections are active. - -
-
- -
-
- -**shields:** `typing.Optional[typing.List[BruteForceProtectionShieldsEnum]]` - -Action to take when a brute force protection threshold is violated. - Possible values: block, user_notification. - -
-
- -
-
- -**allowlist:** `typing.Optional[typing.List[str]]` — List of trusted IP addresses that will not have attack protection enforced against them. - -
-
- -
-
- -**mode:** `typing.Optional[BruteForceProtectionModeEnum]` - -
-
- -
-
- -**max_attempts:** `typing.Optional[int]` — Maximum number of unsuccessful attempts. +**id:** `str` — ID of the CAPTCHA attack protection policy.
@@ -20358,8 +21611,7 @@ Action to take when a brute force protection threshold is violated.
-## AttackProtection Captcha -
client.attack_protection.captcha.get() -> GetAttackProtectionCaptchaResponseContent +
client.attack_protection.captcha_policies.update(...) -> AttackProtectionCaptchaPolicy
@@ -20371,7 +21623,7 @@ Action to take when a brute force protection threshold is violated.
-Get the CAPTCHA configuration for your client. +Partially update a CAPTCHA attack protection policy. Only the provided fields are modified. A provided match or action replaces the stored value in full rather than merging with it; within action, a provider secret or API key that is omitted from a provided provider block keeps its stored value.
@@ -20394,71 +21646,10 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.attack_protection.captcha.get() - -``` - -
- - - -#### ⚙️ Parameters - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - - - -
- -
client.attack_protection.captcha.update(...) -> UpdateAttackProtectionCaptchaResponseContent -
-
- -#### 📝 Description - -
-
- -
-
- -Update existing CAPTCHA configuration for your client. -
-
-
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from auth0.management import Auth0 -from auth0.management.environment import Auth0Environment - -client = Auth0( - token="", - environment=Auth0Environment.DEFAULT, +client.attack_protection.captcha_policies.update( + id="id", ) -client.attack_protection.captcha.update() - ```
@@ -20473,23 +21664,7 @@ client.attack_protection.captcha.update()
-**active_provider_id:** `typing.Optional[AttackProtectionCaptchaProviderId]` - -
-
- -
-
- -**arkose:** `typing.Optional[AttackProtectionUpdateCaptchaArkose]` - -
-
- -
-
- -**auth_challenge:** `typing.Optional[AttackProtectionCaptchaAuthChallengeRequest]` +**id:** `str` — ID of the CAPTCHA attack protection policy.
@@ -20497,7 +21672,7 @@ client.attack_protection.captcha.update()
-**hcaptcha:** `typing.Optional[AttackProtectionUpdateCaptchaHcaptcha]` +**name:** `typing.Optional[str]` — Human-readable policy name.
@@ -20505,7 +21680,7 @@ client.attack_protection.captcha.update()
-**friendly_captcha:** `typing.Optional[AttackProtectionUpdateCaptchaFriendlyCaptcha]` +**description:** `typing.Optional[str]` — Description of the policy's purpose.
@@ -20513,7 +21688,7 @@ client.attack_protection.captcha.update()
-**recaptcha_enterprise:** `typing.Optional[AttackProtectionUpdateCaptchaRecaptchaEnterprise]` +**priority:** `typing.Optional[int]` — Conflict resolution order. Lower number takes higher precedence. Must be unique per tenant.
@@ -20521,7 +21696,7 @@ client.attack_protection.captcha.update()
-**recaptcha_v_2:** `typing.Optional[AttackProtectionUpdateCaptchaRecaptchaV2]` +**match:** `typing.Optional[AttackProtectionCaptchaPolicyMatch]`
@@ -20529,7 +21704,7 @@ client.attack_protection.captcha.update()
-**simple_captcha:** `typing.Optional[AttackProtectionCaptchaSimpleCaptchaResponseContent]` +**action:** `typing.Optional[AttackProtectionCaptchaPolicyActionInput]`
@@ -26048,185 +27223,11 @@ client.event_streams.deliveries.get_history(
-## EventStreams Redeliveries -
client.event_streams.redeliveries.create(...) -> CreateEventStreamRedeliveryResponseContent -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from auth0.management import Auth0 -from auth0.management.environment import Auth0Environment - -client = Auth0( - token="", - environment=Auth0Environment.DEFAULT, -) - -client.event_streams.redeliveries.create( - id="id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**id:** `str` — Unique identifier for the event stream. - -
-
- -
-
- -**date_from:** `typing.Optional[datetime.datetime]` — An RFC-3339 date-time for redelivery start, inclusive. Does not allow sub-second precision. - -
-
- -
-
- -**date_to:** `typing.Optional[datetime.datetime]` — An RFC-3339 date-time for redelivery end, exclusive. Does not allow sub-second precision. - -
-
- -
-
- -**statuses:** `typing.Optional[typing.List[EventStreamDeliveryStatusEnum]]` — Filter by status - -
-
- -
-
- -**event_types:** `typing.Optional[typing.List[EventStreamEventTypeEnum]]` — Filter by event type - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -
client.event_streams.redeliveries.create_by_id(...) -
-
- -#### 🔌 Usage - -
-
- -
-
- -```python -from auth0.management import Auth0 -from auth0.management.environment import Auth0Environment - -client = Auth0( - token="", - environment=Auth0Environment.DEFAULT, -) - -client.event_streams.redeliveries.create_by_id( - id="id", - event_id="event_id", -) - -``` -
-
-
-
- -#### ⚙️ Parameters - -
-
- -
-
- -**id:** `str` — Unique identifier for the event stream. - -
-
- -
-
- -**event_id:** `str` — Unique identifier for the event - -
-
- -
-
- -**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. - -
-
-
-
- - -
-
-
- -## Experimentation Experiments -
client.experimentation.experiments.list(...) -> ListExperimentsResponseContent -
-
- -#### 📝 Description - -
-
- +## EventStreams Redeliveries +
client.event_streams.redeliveries.create(...) -> CreateEventStreamRedeliveryResponseContent
-Retrieve a paginated list of experiments for the tenant, with optional filters. -
-
-
-
- #### 🔌 Usage
@@ -26244,12 +27245,8 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.experimentation.experiments.list( - from_="from", - take=1, - status="draft", - authentication_flow="authentication_flow", - feature_flag_id="feature_flag_id", +client.event_streams.redeliveries.create( + id="id", ) ``` @@ -26266,7 +27263,7 @@ client.experimentation.experiments.list(
-**from:** `typing.Optional[str]` — Optional Id from which to start selection. +**id:** `str` — Unique identifier for the event stream.
@@ -26274,7 +27271,7 @@ client.experimentation.experiments.list(
-**take:** `typing.Optional[int]` — Number of experiments to return per page. Defaults to 25, maximum 50. +**date_from:** `typing.Optional[datetime.datetime]` — An RFC-3339 date-time for redelivery start, inclusive. Does not allow sub-second precision.
@@ -26282,7 +27279,7 @@ client.experimentation.experiments.list(
-**status:** `typing.Optional[ExperimentStatusEnum]` — Filter by status. Exact match. +**date_to:** `typing.Optional[datetime.datetime]` — An RFC-3339 date-time for redelivery end, exclusive. Does not allow sub-second precision.
@@ -26290,7 +27287,7 @@ client.experimentation.experiments.list(
-**authentication_flow:** `typing.Optional[str]` — Filter by authentication flow. Exact match. +**statuses:** `typing.Optional[typing.List[EventStreamDeliveryStatusEnum]]` — Filter by status
@@ -26298,7 +27295,7 @@ client.experimentation.experiments.list(
-**feature_flag_id:** `typing.Optional[str]` — Filter by feature flag ID. Exact match. +**event_types:** `typing.Optional[typing.List[EventStreamEventTypeEnum]]` — Filter by event type
@@ -26318,24 +27315,10 @@ client.experimentation.experiments.list(
-
client.experimentation.experiments.create(...) -> CreateExperimentResponseContent -
-
- -#### 📝 Description - -
-
- +
client.event_streams.redeliveries.create_by_id(...)
-Create a new experiment for A/B testing. -
-
-
-
- #### 🔌 Usage
@@ -26353,10 +27336,9 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.experimentation.experiments.create( - name="name", - feature_flag_id="feature_flag_id", - authentication_flow="authentication", +client.event_streams.redeliveries.create_by_id( + id="id", + event_id="event_id", ) ``` @@ -26373,55 +27355,7 @@ client.experimentation.experiments.create(
-**name:** `str` — A human-readable name for the experiment - -
-
- -
-
- -**feature_flag_id:** `str` — The ID of the feature flag this experiment is based on - -
-
- -
-
- -**authentication_flow:** `AuthenticationFlowEnum` - -
-
- -
-
- -**description:** `typing.Optional[str]` — A description of the experiment - -
-
- -
-
- -**default_config:** `typing.Optional[DefaultConfigEnum]` — Applies only to Auth0-managed flags. Controls where non-overridden config keys resolve from: 'tenant' inherits the tenant's live config so the experiment overlays only its changes, 'flag' uses the flag's frozen defaults for a complete config. Optional; defaults to 'tenant' when omitted. Rejected for customer-defined flags. - -
-
- -
-
- -**allocation_strategy:** `typing.Optional[AllocationStrategyEnum]` — The traffic allocation strategy for this experiment - -
-
- -
-
- -**allocations:** `typing.Optional[typing.List[AllocationRequestItem]]` — Traffic allocations mapping variations to weights or segments +**id:** `str` — Unique identifier for the event stream.
@@ -26429,7 +27363,7 @@ client.experimentation.experiments.create(
-**levels:** `typing.Optional[typing.List[int]]` — Ramp experiment levels configuration. A strictly-increasing sequence of exposure percentages, each an integer in [0, 100]. +**event_id:** `str` — Unique identifier for the event
@@ -26449,7 +27383,8 @@ client.experimentation.experiments.create(
-
client.experimentation.experiments.get(...) -> GetExperimentResponseContent +## Experimentation Experiments +
client.experimentation.experiments.list(...) -> ListExperimentsResponseContent
@@ -26461,7 +27396,7 @@ client.experimentation.experiments.create(
-Retrieve a single experiment with its allocations by ID. +Retrieve a paginated list of experiments for the tenant, with optional filters.
@@ -26484,8 +27419,12 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.experimentation.experiments.get( - id="id", +client.experimentation.experiments.list( + from_="from", + take=1, + status="draft", + authentication_flow="authentication_flow", + feature_flag_id="feature_flag_id", ) ``` @@ -26502,7 +27441,7 @@ client.experimentation.experiments.get(
-**id:** `str` — The ID of the experiment to retrieve. +**from:** `typing.Optional[str]` — Optional Id from which to start selection.
@@ -26510,72 +27449,31 @@ client.experimentation.experiments.get(
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. +**take:** `typing.Optional[int]` — Number of experiments to return per page. Defaults to 25, maximum 50.
- -
- - - - -
-
client.experimentation.experiments.delete(...)
-#### 📝 Description - -
-
- -
-
- -Permanently delete an experiment and its allocations by ID. Active experiments cannot be deleted; pause or complete first. Idempotent: returns 204 even if the experiment does not exist. -
-
+**status:** `typing.Optional[ExperimentStatusEnum]` — Filter by status. Exact match. +
-#### 🔌 Usage -
-
-
- -```python -from auth0.management import Auth0 -from auth0.management.environment import Auth0Environment - -client = Auth0( - token="", - environment=Auth0Environment.DEFAULT, -) - -client.experimentation.experiments.delete( - id="id", -) - -``` -
-
+**authentication_flow:** `typing.Optional[str]` — Filter by authentication flow. Exact match. +
-#### ⚙️ Parameters -
-
-
- -**id:** `str` — The ID of the experiment to delete. +**feature_flag_id:** `typing.Optional[str]` — Filter by feature flag ID. Exact match.
@@ -26595,7 +27493,7 @@ client.experimentation.experiments.delete(
-
client.experimentation.experiments.update(...) -> UpdateExperimentResponseContent +
client.experimentation.experiments.create(...) -> CreateExperimentResponseContent
@@ -26607,7 +27505,7 @@ client.experimentation.experiments.delete(
-Partially update an experiment by ID. Only provided fields are updated. Providing allocations replaces the entire allocations set. +Create a new experiment for A/B testing.
@@ -26630,8 +27528,10 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.experimentation.experiments.update( - id="id", +client.experimentation.experiments.create( + name="name", + feature_flag_id="feature_flag_id", + authentication_flow="authentication", ) ``` @@ -26648,7 +27548,7 @@ client.experimentation.experiments.update(
-**id:** `str` — The ID of the experiment to update. +**name:** `str` — A human-readable name for the experiment
@@ -26656,7 +27556,15 @@ client.experimentation.experiments.update(
-**name:** `typing.Optional[str]` — A human-readable name for the experiment +**feature_flag_id:** `str` — The ID of the feature flag this experiment is based on + +
+
+ +
+
+ +**authentication_flow:** `AuthenticationFlowEnum`
@@ -26672,7 +27580,7 @@ client.experimentation.experiments.update(
-**authentication_flow:** `typing.Optional[AuthenticationFlowEnum]` — Specifies the target authentication flow for this experiment. This field can only be modified on draft experiments. Must be one of: authentication, mfa_enrollment, mfa_challenge, password_reset, passkey_enrollment, or all. Note that the all value targets every flow at once, but requires that this is the only active experiment. +**default_config:** `typing.Optional[DefaultConfigEnum]` — Applies only to Auth0-managed flags. Controls where non-overridden config keys resolve from: 'tenant' inherits the tenant's live config so the experiment overlays only its changes, 'flag' uses the flag's frozen defaults for a complete config. Optional; defaults to 'tenant' when omitted. Rejected for customer-defined flags.
@@ -26680,7 +27588,7 @@ client.experimentation.experiments.update(
-**allocations:** `typing.Optional[typing.List[AllocationRequestItem]]` — Replaces all traffic allocations. Cannot be modified while the experiment is active. +**allocation_strategy:** `typing.Optional[AllocationStrategyEnum]` — The traffic allocation strategy for this experiment
@@ -26688,7 +27596,7 @@ client.experimentation.experiments.update(
-**default_config:** `typing.Optional[DefaultConfigEnum]` — Applies only to Auth0-managed flags. Controls where non-overridden config keys resolve from: 'tenant' inherits the tenant's live config, 'flag' uses the flag's frozen defaults. Can only be modified on draft experiments. Rejected for customer-defined flags. +**allocations:** `typing.Optional[typing.List[AllocationRequestItem]]` — Traffic allocations mapping variations to weights or segments
@@ -26696,7 +27604,7 @@ client.experimentation.experiments.update(
-**levels:** `typing.Optional[typing.List[int]]` — Ramp experiment levels configuration. A strictly-increasing sequence of exposure percentages, each an integer in [0, 100]. Can only be modified on draft experiments. +**levels:** `typing.Optional[typing.List[int]]` — Ramp experiment levels configuration. A strictly-increasing sequence of exposure percentages, each an integer in [0, 100].
@@ -26716,7 +27624,7 @@ client.experimentation.experiments.update(
-
client.experimentation.experiments.advance_ramp(...) -> AdvanceRampResponseContent +
client.experimentation.experiments.get(...) -> GetExperimentResponseContent
@@ -26728,7 +27636,7 @@ client.experimentation.experiments.update(
-Increments the current ramp index to the requested target level. Up-only: the target must be the immediate next level in the schedule. Idempotent: calling with the current level returns success without writing anything. +Retrieve a single experiment with its allocations by ID.
@@ -26751,9 +27659,8 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.experimentation.experiments.advance_ramp( +client.experimentation.experiments.get( id="id", - target_level=1, ) ``` @@ -26770,15 +27677,7 @@ client.experimentation.experiments.advance_ramp(
-**id:** `str` — The ID of the experiment to advance. - -
-
- -
-
- -**target_level:** `int` — The target percentage level from the experiment schedule. Must be the immediate next level. +**id:** `str` — The ID of the experiment to retrieve.
@@ -26798,7 +27697,7 @@ client.experimentation.experiments.advance_ramp(
-
client.experimentation.experiments.update_status(...) -> UpdateExperimentStatusResponseContent +
client.experimentation.experiments.delete(...)
@@ -26810,7 +27709,7 @@ client.experimentation.experiments.advance_ramp(
-Transitions an experiment through its lifecycle: draft → active, active → paused, paused → active, active/paused → completed. Activation runs full readiness validation. +Permanently delete an experiment and its allocations by ID. Active experiments cannot be deleted; pause or complete first. Idempotent: returns 204 even if the experiment does not exist.
@@ -26833,9 +27732,8 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.experimentation.experiments.update_status( +client.experimentation.experiments.delete( id="id", - status="active", ) ``` @@ -26852,15 +27750,7 @@ client.experimentation.experiments.update_status(
-**id:** `str` — The ID of the experiment to transition. - -
-
- -
-
- -**status:** `ExperimentTransitionStatusEnum` +**id:** `str` — The ID of the experiment to delete.
@@ -26880,7 +27770,7 @@ client.experimentation.experiments.update_status(
-
client.experimentation.experiments.validate(...) -> ValidateExperimentResponseContent +
client.experimentation.experiments.update(...) -> UpdateExperimentResponseContent
@@ -26892,7 +27782,7 @@ client.experimentation.experiments.update_status(
-Checks whether an experiment is ready to be activated. Returns is_valid boolean and an errors array describing any blockers. Read-only; no state is modified. +Partially update an experiment by ID. Only provided fields are updated. Providing allocations replaces the entire allocations set.
@@ -26915,7 +27805,7 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.experimentation.experiments.validate( +client.experimentation.experiments.update( id="id", ) @@ -26933,7 +27823,7 @@ client.experimentation.experiments.validate(
-**id:** `str` — The ID of the experiment to validate. +**id:** `str` — The ID of the experiment to update.
@@ -26941,76 +27831,31 @@ client.experimentation.experiments.validate(
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. +**name:** `typing.Optional[str]` — A human-readable name for the experiment
- -
- - - - -
- -## Experimentation FeatureFlags -
client.experimentation.feature_flags.list(...) -> ListFeatureFlagsResponseContent -
-
- -#### 📝 Description - -
-
-Retrieve a paginated list of feature flags for the tenant. -
-
+**description:** `typing.Optional[str]` — A description of the experiment +
-#### 🔌 Usage -
-
-
- -```python -from auth0.management import Auth0 -from auth0.management.environment import Auth0Environment - -client = Auth0( - token="", - environment=Auth0Environment.DEFAULT, -) - -client.experimentation.feature_flags.list( - from_="from", - take=1, - type="auth0", - status="draft", -) - -``` -
-
+**authentication_flow:** `typing.Optional[AuthenticationFlowEnum]` — Specifies the target authentication flow for this experiment. This field can only be modified on draft experiments. Must be one of: authentication, mfa_enrollment, mfa_challenge, password_reset, passkey_enrollment, or all. Note that the all value targets every flow at once, but requires that this is the only active experiment. +
-#### ⚙️ Parameters -
-
-
- -**from:** `typing.Optional[str]` — Optional Id from which to start selection. +**allocations:** `typing.Optional[typing.List[AllocationRequestItem]]` — Replaces all traffic allocations. Cannot be modified while the experiment is active.
@@ -27018,7 +27863,7 @@ client.experimentation.feature_flags.list(
-**take:** `typing.Optional[int]` — Number of feature flags to return per page. Defaults to 25, maximum 50. +**default_config:** `typing.Optional[DefaultConfigEnum]` — Applies only to Auth0-managed flags. Controls where non-overridden config keys resolve from: 'tenant' inherits the tenant's live config, 'flag' uses the flag's frozen defaults. Can only be modified on draft experiments. Rejected for customer-defined flags.
@@ -27026,7 +27871,7 @@ client.experimentation.feature_flags.list(
-**type:** `typing.Optional[FeatureFlagTypeEnum]` — Filter by type. Exact match. +**levels:** `typing.Optional[typing.List[int]]` — Ramp experiment levels configuration. A strictly-increasing sequence of exposure percentages, each an integer in [0, 100]. Can only be modified on draft experiments.
@@ -27034,7 +27879,7 @@ client.experimentation.feature_flags.list(
-**status:** `typing.Optional[FeatureFlagStatusEnum]` — Filter by status. Exact match. +**status:** `typing.Optional[ExperimentTransitionStatusEnum]`
@@ -27054,7 +27899,7 @@ client.experimentation.feature_flags.list(
-
client.experimentation.feature_flags.create(...) -> CreateFeatureFlagResponseContent +
client.experimentation.experiments.advance_ramp(...) -> AdvanceRampResponseContent
@@ -27066,7 +27911,7 @@ client.experimentation.feature_flags.list(
-Create a new feature flag with parameters for use in experiments. +Increments the current ramp index to the requested target level. Up-only: the target must be the immediate next level in the schedule. Idempotent: calling with the current level returns success without writing anything.
@@ -27089,9 +27934,9 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.experimentation.feature_flags.create( - name="name", - parameters={}, +client.experimentation.experiments.advance_ramp( + id="id", + target_level=1, ) ``` @@ -27108,7 +27953,7 @@ client.experimentation.feature_flags.create(
-**name:** `str` — A human-readable name for the feature flag +**id:** `str` — The ID of the experiment to advance.
@@ -27116,7 +27961,7 @@ client.experimentation.feature_flags.create(
-**parameters:** `CreateFeatureFlagParameters` +**target_level:** `int` — The target percentage level from the experiment schedule. Must be the immediate next level.
@@ -27124,7 +27969,72 @@ client.experimentation.feature_flags.create(
-**description:** `typing.Optional[str]` — A description of what this feature flag controls +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+ +
+ + + + +
+ +
client.experimentation.experiments.validate(...) -> ValidateExperimentResponseContent +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Checks whether an experiment is ready to be activated. Returns is_valid boolean and an errors array describing any blockers. Read-only; no state is modified. +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +from auth0.management import Auth0 +from auth0.management.environment import Auth0Environment + +client = Auth0( + token="", + environment=Auth0Environment.DEFAULT, +) + +client.experimentation.experiments.validate( + id="id", +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**id:** `str` — The ID of the experiment to validate.
@@ -27144,7 +28054,8 @@ client.experimentation.feature_flags.create(
-
client.experimentation.feature_flags.get(...) -> GetFeatureFlagResponseContent +## Experimentation FeatureFlags +
client.experimentation.feature_flags.list(...) -> ListFeatureFlagsResponseContent
@@ -27156,7 +28067,7 @@ client.experimentation.feature_flags.create(
-Retrieve a single feature flag by its ID. +Retrieve a paginated list of feature flags for the tenant.
@@ -27179,8 +28090,11 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.experimentation.feature_flags.get( - id="id", +client.experimentation.feature_flags.list( + from_="from", + take=1, + type="auth0", + status="draft", ) ``` @@ -27197,7 +28111,31 @@ client.experimentation.feature_flags.get(
-**id:** `str` — The ID of the feature flag to retrieve. +**from:** `typing.Optional[str]` — Optional Id from which to start selection. + +
+
+ +
+
+ +**take:** `typing.Optional[int]` — Number of feature flags to return per page. Defaults to 25, maximum 50. + +
+
+ +
+
+ +**type:** `typing.Optional[FeatureFlagTypeEnum]` — Filter by type. Exact match. + +
+
+ +
+
+ +**status:** `typing.Optional[FeatureFlagStatusEnum]` — Filter by status. Exact match.
@@ -27217,7 +28155,7 @@ client.experimentation.feature_flags.get(
-
client.experimentation.feature_flags.delete(...) +
client.experimentation.feature_flags.create(...) -> CreateFeatureFlagResponseContent
@@ -27229,7 +28167,7 @@ client.experimentation.feature_flags.get(
-Delete a feature flag by ID. Idempotent: returns 204 even if flag does not exist. +Create a new feature flag with parameters for use in experiments.
@@ -27252,8 +28190,9 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.experimentation.feature_flags.delete( - id="id", +client.experimentation.feature_flags.create( + name="name", + parameters={}, ) ``` @@ -27270,7 +28209,23 @@ client.experimentation.feature_flags.delete(
-**id:** `str` — The ID of the feature flag to delete. +**name:** `str` — A human-readable name for the feature flag + +
+
+ +
+
+ +**parameters:** `CreateFeatureFlagParameters` + +
+
+ +
+
+ +**description:** `typing.Optional[str]` — A description of what this feature flag controls
@@ -27290,7 +28245,7 @@ client.experimentation.feature_flags.delete(
-
client.experimentation.feature_flags.update(...) -> UpdateFeatureFlagResponseContent +
client.experimentation.feature_flags.get(...) -> GetFeatureFlagResponseContent
@@ -27302,7 +28257,7 @@ client.experimentation.feature_flags.delete(
-Partially update a feature flag by ID. Only provided fields are updated. +Retrieve a single feature flag by its ID.
@@ -27325,7 +28280,7 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.experimentation.feature_flags.update( +client.experimentation.feature_flags.get( id="id", ) @@ -27343,7 +28298,7 @@ client.experimentation.feature_flags.update(
-**id:** `str` — The ID of the feature flag to update. +**id:** `str` — The ID of the feature flag to retrieve.
@@ -27351,23 +28306,72 @@ client.experimentation.feature_flags.update(
-**name:** `typing.Optional[str]` — A human-readable name for the feature flag +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+ +
+ + + + +
+
client.experimentation.feature_flags.delete(...)
-**description:** `typing.Optional[str]` — A description of what this feature flag controls - +#### 📝 Description + +
+
+ +
+
+ +Delete a feature flag by ID. Idempotent: returns 204 even if flag does not exist. +
+
+#### 🔌 Usage +
-**parameters:** `typing.Optional[UpdateFeatureFlagParameters]` +
+
+ +```python +from auth0.management import Auth0 +from auth0.management.environment import Auth0Environment + +client = Auth0( + token="", + environment=Auth0Environment.DEFAULT, +) + +client.experimentation.feature_flags.delete( + id="id", +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**id:** `str` — The ID of the feature flag to delete.
@@ -27387,7 +28391,7 @@ client.experimentation.feature_flags.update(
-
client.experimentation.feature_flags.update_status(...) -> UpdateFeatureFlagStatusResponseContent +
client.experimentation.feature_flags.update(...) -> UpdateFeatureFlagResponseContent
@@ -27399,7 +28403,7 @@ client.experimentation.feature_flags.update(
-Transitions a feature flag through its lifecycle states: draft → active, draft → archived, active → archived. +Partially update a feature flag by ID. Only provided fields are updated.
@@ -27422,9 +28426,8 @@ client = Auth0( environment=Auth0Environment.DEFAULT, ) -client.experimentation.feature_flags.update_status( +client.experimentation.feature_flags.update( id="id", - status="draft", ) ``` @@ -27441,7 +28444,31 @@ client.experimentation.feature_flags.update_status(
-**id:** `str` — The ID of the feature flag to transition. +**id:** `str` — The ID of the feature flag to update. + +
+
+ +
+
+ +**name:** `typing.Optional[str]` — A human-readable name for the feature flag + +
+
+ +
+
+ +**description:** `typing.Optional[str]` — A description of what this feature flag controls + +
+
+ +
+
+ +**parameters:** `typing.Optional[UpdateFeatureFlagParameters]`
@@ -27449,7 +28476,7 @@ client.experimentation.feature_flags.update_status(
-**status:** `FeatureFlagStatusEnum` — The target status to transition the feature flag to. +**status:** `typing.Optional[FeatureFlagStatusEnum]` — Target lifecycle status (draft → active, draft → archived, active → archived). Activating a flag requires at least 2 variations. When combined with field edits, the edits and the transition are applied together; if the transition is rejected, no edits are applied.
@@ -27884,6 +28911,14 @@ client.experimentation.segments.update(
+**status:** `typing.Optional[SegmentStatusEnum]` — Target lifecycle status. Archiving removes the segment from the active pool and is terminal (an archived segment cannot return to active). When combined with field edits, the edits apply first and the transition follows. + +
+
+ +
+
+ **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -29661,7 +30696,7 @@ client.guardian.factors.set(
-**name:** `GuardianFactorNameEnum` — Factor name. Can be `sms`, `push-notification`, `email`, `duo` `otp` `webauthn-roaming`, `webauthn-platform`, or `recovery-code`. +**name:** `GuardianFactorNameEnum` — Factor name. Can be `sms`, `push-notification`, `email`, `duo`, `otp`, `webauthn-roaming`, `webauthn-platform`, `recovery-code`, or `passkey`.
@@ -40971,6 +42006,14 @@ client.tenants.settings.update()
+**dpop_strict_refresh_token_binding:** `typing.Optional[bool]` — Enables strict DPoP refresh token binding per RFC 9449: all refresh tokens issued to public clients that present a DPoP proof are bound to the sender's key, and the binding is validated on every subsequent exchange. When disabled, DPoP refresh token binding may still apply for specific audiences for backwards compatibility. + +
+
+ +
+
+ **skip_non_verifiable_callback_uri_confirmation_prompt:** `typing.Optional[bool]` Controls whether a confirmation prompt is shown during login flows when the redirect URI uses non-verifiable callback URIs (for example, a custom URI schema such as `myapp://`, or `localhost`). @@ -40999,6 +42042,14 @@ See https://auth0.com/docs/secure/security-guidance/measures-against-app-imperso
+**client_id_metadata_document_dynamic_registration_supported:** `typing.Optional[bool]` — Whether the authorization server supports registering clients dynamically from a client_id URL. Requires client_id_metadata_document_supported to be enabled. + +
+
+ +
+
+ **enable_ai_guide:** `typing.Optional[bool]` — Whether Auth0 Guide (AI-powered assistance) is enabled for this tenant.
diff --git a/src/auth0/management/__init__.py b/src/auth0/management/__init__.py index f12b793f..0a3ef6c2 100644 --- a/src/auth0/management/__init__.py +++ b/src/auth0/management/__init__.py @@ -77,6 +77,10 @@ AttackProtectionCaptchaAuthChallengeResponseContent, AttackProtectionCaptchaFriendlyCaptchaResponseContent, AttackProtectionCaptchaHcaptchaResponseContent, + AttackProtectionCaptchaPolicy, + AttackProtectionCaptchaPolicyAction, + AttackProtectionCaptchaPolicyActionInput, + AttackProtectionCaptchaPolicyMatch, AttackProtectionCaptchaProviderId, AttackProtectionCaptchaRecaptchaEnterpriseResponseContent, AttackProtectionCaptchaRecaptchaV2ResponseContent, @@ -139,13 +143,28 @@ BreachedPasswordDetectionPreUserRegistrationStage, BreachedPasswordDetectionShieldsEnum, BreachedPasswordDetectionStage, + BruteForceProtectionFormSubmissionModeEnum, BruteForceProtectionModeEnum, BruteForceProtectionShieldsEnum, BulkUpdateAculResponseContent, + CaptchaActiveProviderEnum, + CaptchaPolicyActionArkose, + CaptchaPolicyActionArkoseInput, + CaptchaPolicyActionAuthChallenge, + CaptchaPolicyActionFriendlyCaptcha, + CaptchaPolicyActionFriendlyCaptchaInput, + CaptchaPolicyActionHcaptcha, + CaptchaPolicyActionHcaptchaInput, + CaptchaPolicyActionRecaptchaEnterprise, + CaptchaPolicyActionRecaptchaEnterpriseInput, + CaptchaPolicyActionRecaptchaV2, + CaptchaPolicyActionRecaptchaV2Input, + CaptchaPolicyActionSimpleCaptcha, CertificateSubjectDnCredential, CertificateSubjectDnCredentialTypeEnum, ChangePasswordTicketIdentity, ChangePasswordTicketResponseContent, + CimdExternalMetadataCreatedByEnum, CimdMappedClientAuthenticationMethods, CimdMappedClientAuthenticationMethodsPrivateKeyJwt, CimdMappedClientFields, @@ -185,6 +204,7 @@ ClientAddonZendesk, ClientAddonZoom, ClientAddons, + ClientAnonymousSessionTransferNetworkBindingEnum, ClientAppTypeEnum, ClientAsyncApprovalNotificationsChannelsApiPatchConfiguration, ClientAsyncApprovalNotificationsChannelsApiPostConfiguration, @@ -208,12 +228,14 @@ ClientDefaultOrganizationFlowsEnum, ClientEncryptionKey, ClientExternalMetadataCreatedByEnum, + ClientExternalMetadataStatusEnum, ClientExternalMetadataTypeEnum, ClientGrantAllowAnyOrganizationEnum, ClientGrantDefaultForEnum, ClientGrantOrganizationNullableUsageEnum, ClientGrantOrganizationUsageEnum, ClientGrantResponseContent, + ClientGrantSortFieldEnum, ClientGrantSubjectTypeEnum, ClientJwtConfiguration, ClientJwtConfigurationScopes, @@ -235,15 +257,36 @@ ClientOidcBackchannelLogoutSessionMetadata, ClientOidcBackchannelLogoutSettings, ClientOidcSupportAllowedScopesEnum, + ClientOidcSupportPatch, ClientOidcSupportPost, ClientOrganizationDiscoveryEnum, ClientOrganizationRequireBehaviorEnum, ClientOrganizationRequireBehaviorPatchEnum, ClientOrganizationUsageEnum, ClientOrganizationUsagePatchEnum, + ClientProfile, + ClientProfileApplyPolicy, + ClientProfileApplyPolicyExternalMetadataCreatedByEnum, + ClientProfileApplyPolicyExternalMetadataTypeEnum, + ClientProfileClientConfiguration, + ClientProfileClientConfigurationOrganizationDiscoveryMethodEnum, + ClientProfileClientConfigurationOrganizationDiscoveryMethods, + ClientProfileClientConfigurationOrganizationRequireBehavior, + ClientProfileClientConfigurationOrganizationRequireBehaviorEnum, + ClientProfileClientConfigurationOrganizationUsage, + ClientProfileClientConfigurationOrganizationUsageEnum, + ClientProfileClientConfigurationRefreshToken, + ClientProfileClientConfigurationRequireProofOfPossession, + ClientProfileDescription, + ClientProfileId, + ClientProfileName, + ClientProfileRefreshTokenIdleTokenLifetime, + ClientProfileRefreshTokenLeeway, + ClientProfileRefreshTokenTokenLifetime, ClientRedirectionPolicyEnum, ClientRefreshTokenConfiguration, ClientRefreshTokenPolicy, + ClientSearchResponse, ClientSessionTransferAllowedAuthenticationMethodsEnum, ClientSessionTransferConfiguration, ClientSessionTransferDelegationConfiguration, @@ -253,6 +296,7 @@ ClientSignedRequestObjectWithPublicKey, ClientSigningKey, ClientSigningKeys, + ClientSortFieldEnum, ClientThirdPartySecurityModeEnum, ClientTokenEndpointAuthMethodEnum, ClientTokenEndpointAuthMethodOrNullEnum, @@ -558,6 +602,8 @@ ConnectionProfileOrganizationAssignMembershipOnLoginEnum, ConnectionProfileOrganizationShowAsButtonEnum, ConnectionProfileProvisioning, + ConnectionProfileProvisioningGoogleWorkspace, + ConnectionProfileProvisioningGoogleWorkspaceSyncUsers, ConnectionProfileProvisioningScim, ConnectionProfileProvisioningScimTokenDefaultExpiry, ConnectionProfileProvisioningScimTokenMaxAllowedExpiry, @@ -2077,6 +2123,11 @@ EventStreamCloudEventOrgConnectionAddedObjectOrganizationAccessLevel1Enum, EventStreamCloudEventOrgConnectionAddedObjectOrganizationAccessLevel2Enum, EventStreamCloudEventOrgConnectionAddedObjectOrganizationAccessLevel3Enum, + EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel, + EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel0Enum, + EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel1Enum, + EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel2Enum, + EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel3Enum, EventStreamCloudEventOrgConnectionAddedPreviousObject, EventStreamCloudEventOrgConnectionAddedPreviousObjectConnection, EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganization, @@ -2085,6 +2136,11 @@ EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationAccessLevel1Enum, EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationAccessLevel2Enum, EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationAccessLevel3Enum, + EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel, + EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel0Enum, + EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel1Enum, + EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel2Enum, + EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel3Enum, EventStreamCloudEventOrgConnectionAddedTypeEnum, EventStreamCloudEventOrgConnectionRemoved, EventStreamCloudEventOrgConnectionRemovedCloudEvent, @@ -2109,6 +2165,11 @@ EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationAccessLevel1Enum, EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationAccessLevel2Enum, EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationAccessLevel3Enum, + EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel, + EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel0Enum, + EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel1Enum, + EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel2Enum, + EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel3Enum, EventStreamCloudEventOrgConnectionUpdatedPreviousObject, EventStreamCloudEventOrgConnectionUpdatedPreviousObjectConnection, EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganization, @@ -2117,6 +2178,11 @@ EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationAccessLevel1Enum, EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationAccessLevel2Enum, EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationAccessLevel3Enum, + EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel, + EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel0Enum, + EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel1Enum, + EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel2Enum, + EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel3Enum, EventStreamCloudEventOrgConnectionUpdatedTypeEnum, EventStreamCloudEventOrgCreated, EventStreamCloudEventOrgCreatedCloudEvent, @@ -3225,10 +3291,12 @@ ListAculsOffsetPaginatedResponseContent, ListAculsResponseContentItem, ListAgentsResponseContent, + ListAttackProtectionCaptchaPoliciesResponseContent, ListBrandingPhoneProvidersResponseContent, ListClientConnectionsResponseContent, ListClientGrantOrganizationsPaginatedResponseContent, ListClientGrantPaginatedResponseContent, + ListClientProfilesPaginatedResponseContent, ListClientsOffsetPaginatedResponseContent, ListConnectionProfileTemplateResponseContent, ListConnectionProfilesPaginatedResponseContent, @@ -3511,6 +3579,8 @@ Role, RoleGroup, RoleMember, + RoleOwnerId, + RoleOwnerIdFilter, RoleTypeEnum, RoleUser, RollbackActionModuleResponseContent, @@ -3525,6 +3595,8 @@ ScimMappingItem, ScimTokenItem, ScreenGroupNameEnum, + SearchClientGrantsResponseContent, + SearchClientsResponseContent, SearchEngineVersionsEnum, SearchOrganization, SearchOrganizationsPaginatedResponseContent, @@ -3539,6 +3611,7 @@ SegmentNotMatchConditions, SegmentRule, SegmentStartsWithExpression, + SegmentStatusEnum, SegmentTypeEnum, SegmentTypeFilterEnum, SelfServiceProfile, @@ -3624,6 +3697,7 @@ SynchronizeGroupsEnum, SynchronizedGroupPayload, SynchronizedGroupSelectionId, + SystemRoleOwnerId, TenantOidcLogoutSettings, TenantSettingsCountryCodes, TenantSettingsCountryCodesMode, @@ -3753,10 +3827,8 @@ UpdateEnabledClientConnectionsRequestContentItem, UpdateEventStreamResponseContent, UpdateExperimentResponseContent, - UpdateExperimentStatusResponseContent, UpdateFeatureFlagParameters, UpdateFeatureFlagResponseContent, - UpdateFeatureFlagStatusResponseContent, UpdateFlowResponseContent, UpdateFlowsVaultConnectionResponseContent, UpdateFlowsVaultConnectionSetup, @@ -3884,6 +3956,7 @@ attack_protection, branding, client_grants, + client_profiles, clients, connection_profiles, connections, @@ -4007,6 +4080,10 @@ "AttackProtectionCaptchaAuthChallengeResponseContent": ".types", "AttackProtectionCaptchaFriendlyCaptchaResponseContent": ".types", "AttackProtectionCaptchaHcaptchaResponseContent": ".types", + "AttackProtectionCaptchaPolicy": ".types", + "AttackProtectionCaptchaPolicyAction": ".types", + "AttackProtectionCaptchaPolicyActionInput": ".types", + "AttackProtectionCaptchaPolicyMatch": ".types", "AttackProtectionCaptchaProviderId": ".types", "AttackProtectionCaptchaRecaptchaEnterpriseResponseContent": ".types", "AttackProtectionCaptchaRecaptchaV2ResponseContent": ".types", @@ -4072,13 +4149,28 @@ "BreachedPasswordDetectionPreUserRegistrationStage": ".types", "BreachedPasswordDetectionShieldsEnum": ".types", "BreachedPasswordDetectionStage": ".types", + "BruteForceProtectionFormSubmissionModeEnum": ".types", "BruteForceProtectionModeEnum": ".types", "BruteForceProtectionShieldsEnum": ".types", "BulkUpdateAculResponseContent": ".types", + "CaptchaActiveProviderEnum": ".types", + "CaptchaPolicyActionArkose": ".types", + "CaptchaPolicyActionArkoseInput": ".types", + "CaptchaPolicyActionAuthChallenge": ".types", + "CaptchaPolicyActionFriendlyCaptcha": ".types", + "CaptchaPolicyActionFriendlyCaptchaInput": ".types", + "CaptchaPolicyActionHcaptcha": ".types", + "CaptchaPolicyActionHcaptchaInput": ".types", + "CaptchaPolicyActionRecaptchaEnterprise": ".types", + "CaptchaPolicyActionRecaptchaEnterpriseInput": ".types", + "CaptchaPolicyActionRecaptchaV2": ".types", + "CaptchaPolicyActionRecaptchaV2Input": ".types", + "CaptchaPolicyActionSimpleCaptcha": ".types", "CertificateSubjectDnCredential": ".types", "CertificateSubjectDnCredentialTypeEnum": ".types", "ChangePasswordTicketIdentity": ".types", "ChangePasswordTicketResponseContent": ".types", + "CimdExternalMetadataCreatedByEnum": ".types", "CimdMappedClientAuthenticationMethods": ".types", "CimdMappedClientAuthenticationMethodsPrivateKeyJwt": ".types", "CimdMappedClientFields": ".types", @@ -4118,6 +4210,7 @@ "ClientAddonZendesk": ".types", "ClientAddonZoom": ".types", "ClientAddons": ".types", + "ClientAnonymousSessionTransferNetworkBindingEnum": ".types", "ClientAppTypeEnum": ".types", "ClientAsyncApprovalNotificationsChannelsApiPatchConfiguration": ".types", "ClientAsyncApprovalNotificationsChannelsApiPostConfiguration": ".types", @@ -4141,12 +4234,14 @@ "ClientDefaultOrganizationFlowsEnum": ".types", "ClientEncryptionKey": ".types", "ClientExternalMetadataCreatedByEnum": ".types", + "ClientExternalMetadataStatusEnum": ".types", "ClientExternalMetadataTypeEnum": ".types", "ClientGrantAllowAnyOrganizationEnum": ".types", "ClientGrantDefaultForEnum": ".types", "ClientGrantOrganizationNullableUsageEnum": ".types", "ClientGrantOrganizationUsageEnum": ".types", "ClientGrantResponseContent": ".types", + "ClientGrantSortFieldEnum": ".types", "ClientGrantSubjectTypeEnum": ".types", "ClientJwtConfiguration": ".types", "ClientJwtConfigurationScopes": ".types", @@ -4168,15 +4263,36 @@ "ClientOidcBackchannelLogoutSessionMetadata": ".types", "ClientOidcBackchannelLogoutSettings": ".types", "ClientOidcSupportAllowedScopesEnum": ".types", + "ClientOidcSupportPatch": ".types", "ClientOidcSupportPost": ".types", "ClientOrganizationDiscoveryEnum": ".types", "ClientOrganizationRequireBehaviorEnum": ".types", "ClientOrganizationRequireBehaviorPatchEnum": ".types", "ClientOrganizationUsageEnum": ".types", "ClientOrganizationUsagePatchEnum": ".types", + "ClientProfile": ".types", + "ClientProfileApplyPolicy": ".types", + "ClientProfileApplyPolicyExternalMetadataCreatedByEnum": ".types", + "ClientProfileApplyPolicyExternalMetadataTypeEnum": ".types", + "ClientProfileClientConfiguration": ".types", + "ClientProfileClientConfigurationOrganizationDiscoveryMethodEnum": ".types", + "ClientProfileClientConfigurationOrganizationDiscoveryMethods": ".types", + "ClientProfileClientConfigurationOrganizationRequireBehavior": ".types", + "ClientProfileClientConfigurationOrganizationRequireBehaviorEnum": ".types", + "ClientProfileClientConfigurationOrganizationUsage": ".types", + "ClientProfileClientConfigurationOrganizationUsageEnum": ".types", + "ClientProfileClientConfigurationRefreshToken": ".types", + "ClientProfileClientConfigurationRequireProofOfPossession": ".types", + "ClientProfileDescription": ".types", + "ClientProfileId": ".types", + "ClientProfileName": ".types", + "ClientProfileRefreshTokenIdleTokenLifetime": ".types", + "ClientProfileRefreshTokenLeeway": ".types", + "ClientProfileRefreshTokenTokenLifetime": ".types", "ClientRedirectionPolicyEnum": ".types", "ClientRefreshTokenConfiguration": ".types", "ClientRefreshTokenPolicy": ".types", + "ClientSearchResponse": ".types", "ClientSessionTransferAllowedAuthenticationMethodsEnum": ".types", "ClientSessionTransferConfiguration": ".types", "ClientSessionTransferDelegationConfiguration": ".types", @@ -4186,6 +4302,7 @@ "ClientSignedRequestObjectWithPublicKey": ".types", "ClientSigningKey": ".types", "ClientSigningKeys": ".types", + "ClientSortFieldEnum": ".types", "ClientThirdPartySecurityModeEnum": ".types", "ClientTokenEndpointAuthMethodEnum": ".types", "ClientTokenEndpointAuthMethodOrNullEnum": ".types", @@ -4492,6 +4609,8 @@ "ConnectionProfileOrganizationAssignMembershipOnLoginEnum": ".types", "ConnectionProfileOrganizationShowAsButtonEnum": ".types", "ConnectionProfileProvisioning": ".types", + "ConnectionProfileProvisioningGoogleWorkspace": ".types", + "ConnectionProfileProvisioningGoogleWorkspaceSyncUsers": ".types", "ConnectionProfileProvisioningScim": ".types", "ConnectionProfileProvisioningScimTokenDefaultExpiry": ".types", "ConnectionProfileProvisioningScimTokenMaxAllowedExpiry": ".types", @@ -6015,6 +6134,11 @@ "EventStreamCloudEventOrgConnectionAddedObjectOrganizationAccessLevel1Enum": ".types", "EventStreamCloudEventOrgConnectionAddedObjectOrganizationAccessLevel2Enum": ".types", "EventStreamCloudEventOrgConnectionAddedObjectOrganizationAccessLevel3Enum": ".types", + "EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel": ".types", + "EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel0Enum": ".types", + "EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel1Enum": ".types", + "EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel2Enum": ".types", + "EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel3Enum": ".types", "EventStreamCloudEventOrgConnectionAddedPreviousObject": ".types", "EventStreamCloudEventOrgConnectionAddedPreviousObjectConnection": ".types", "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganization": ".types", @@ -6023,6 +6147,11 @@ "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationAccessLevel1Enum": ".types", "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationAccessLevel2Enum": ".types", "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationAccessLevel3Enum": ".types", + "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel": ".types", + "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel0Enum": ".types", + "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel1Enum": ".types", + "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel2Enum": ".types", + "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel3Enum": ".types", "EventStreamCloudEventOrgConnectionAddedTypeEnum": ".types", "EventStreamCloudEventOrgConnectionRemoved": ".types", "EventStreamCloudEventOrgConnectionRemovedCloudEvent": ".types", @@ -6047,6 +6176,11 @@ "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationAccessLevel1Enum": ".types", "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationAccessLevel2Enum": ".types", "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationAccessLevel3Enum": ".types", + "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel": ".types", + "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel0Enum": ".types", + "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel1Enum": ".types", + "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel2Enum": ".types", + "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel3Enum": ".types", "EventStreamCloudEventOrgConnectionUpdatedPreviousObject": ".types", "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectConnection": ".types", "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganization": ".types", @@ -6055,6 +6189,11 @@ "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationAccessLevel1Enum": ".types", "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationAccessLevel2Enum": ".types", "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationAccessLevel3Enum": ".types", + "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel": ".types", + "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel0Enum": ".types", + "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel1Enum": ".types", + "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel2Enum": ".types", + "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel3Enum": ".types", "EventStreamCloudEventOrgConnectionUpdatedTypeEnum": ".types", "EventStreamCloudEventOrgCreated": ".types", "EventStreamCloudEventOrgCreatedCloudEvent": ".types", @@ -7168,10 +7307,12 @@ "ListAculsOffsetPaginatedResponseContent": ".types", "ListAculsResponseContentItem": ".types", "ListAgentsResponseContent": ".types", + "ListAttackProtectionCaptchaPoliciesResponseContent": ".types", "ListBrandingPhoneProvidersResponseContent": ".types", "ListClientConnectionsResponseContent": ".types", "ListClientGrantOrganizationsPaginatedResponseContent": ".types", "ListClientGrantPaginatedResponseContent": ".types", + "ListClientProfilesPaginatedResponseContent": ".types", "ListClientsOffsetPaginatedResponseContent": ".types", "ListConnectionProfileTemplateResponseContent": ".types", "ListConnectionProfilesPaginatedResponseContent": ".types", @@ -7458,6 +7599,8 @@ "Role": ".types", "RoleGroup": ".types", "RoleMember": ".types", + "RoleOwnerId": ".types", + "RoleOwnerIdFilter": ".types", "RoleTypeEnum": ".types", "RoleUser": ".types", "RollbackActionModuleResponseContent": ".types", @@ -7472,6 +7615,8 @@ "ScimMappingItem": ".types", "ScimTokenItem": ".types", "ScreenGroupNameEnum": ".types", + "SearchClientGrantsResponseContent": ".types", + "SearchClientsResponseContent": ".types", "SearchEngineVersionsEnum": ".types", "SearchOrganization": ".types", "SearchOrganizationsPaginatedResponseContent": ".types", @@ -7486,6 +7631,7 @@ "SegmentNotMatchConditions": ".types", "SegmentRule": ".types", "SegmentStartsWithExpression": ".types", + "SegmentStatusEnum": ".types", "SegmentTypeEnum": ".types", "SegmentTypeFilterEnum": ".types", "SelfServiceProfile": ".types", @@ -7572,6 +7718,7 @@ "SynchronizeGroupsEnum": ".types", "SynchronizedGroupPayload": ".types", "SynchronizedGroupSelectionId": ".types", + "SystemRoleOwnerId": ".types", "TenantOidcLogoutSettings": ".types", "TenantSettingsCountryCodes": ".types", "TenantSettingsCountryCodesMode": ".types", @@ -7705,10 +7852,8 @@ "UpdateEnabledClientConnectionsRequestContentItem": ".types", "UpdateEventStreamResponseContent": ".types", "UpdateExperimentResponseContent": ".types", - "UpdateExperimentStatusResponseContent": ".types", "UpdateFeatureFlagParameters": ".types", "UpdateFeatureFlagResponseContent": ".types", - "UpdateFeatureFlagStatusResponseContent": ".types", "UpdateFlowResponseContent": ".types", "UpdateFlowsVaultConnectionResponseContent": ".types", "UpdateFlowsVaultConnectionSetup": ".types", @@ -7819,6 +7964,7 @@ "attack_protection": ".attack_protection", "branding": ".branding", "client_grants": ".client_grants", + "client_profiles": ".client_profiles", "clients": ".clients", "connection_profiles": ".connection_profiles", "connections": ".connections", @@ -7958,6 +8104,10 @@ def __dir__(): "AttackProtectionCaptchaAuthChallengeResponseContent", "AttackProtectionCaptchaFriendlyCaptchaResponseContent", "AttackProtectionCaptchaHcaptchaResponseContent", + "AttackProtectionCaptchaPolicy", + "AttackProtectionCaptchaPolicyAction", + "AttackProtectionCaptchaPolicyActionInput", + "AttackProtectionCaptchaPolicyMatch", "AttackProtectionCaptchaProviderId", "AttackProtectionCaptchaRecaptchaEnterpriseResponseContent", "AttackProtectionCaptchaRecaptchaV2ResponseContent", @@ -8023,13 +8173,28 @@ def __dir__(): "BreachedPasswordDetectionPreUserRegistrationStage", "BreachedPasswordDetectionShieldsEnum", "BreachedPasswordDetectionStage", + "BruteForceProtectionFormSubmissionModeEnum", "BruteForceProtectionModeEnum", "BruteForceProtectionShieldsEnum", "BulkUpdateAculResponseContent", + "CaptchaActiveProviderEnum", + "CaptchaPolicyActionArkose", + "CaptchaPolicyActionArkoseInput", + "CaptchaPolicyActionAuthChallenge", + "CaptchaPolicyActionFriendlyCaptcha", + "CaptchaPolicyActionFriendlyCaptchaInput", + "CaptchaPolicyActionHcaptcha", + "CaptchaPolicyActionHcaptchaInput", + "CaptchaPolicyActionRecaptchaEnterprise", + "CaptchaPolicyActionRecaptchaEnterpriseInput", + "CaptchaPolicyActionRecaptchaV2", + "CaptchaPolicyActionRecaptchaV2Input", + "CaptchaPolicyActionSimpleCaptcha", "CertificateSubjectDnCredential", "CertificateSubjectDnCredentialTypeEnum", "ChangePasswordTicketIdentity", "ChangePasswordTicketResponseContent", + "CimdExternalMetadataCreatedByEnum", "CimdMappedClientAuthenticationMethods", "CimdMappedClientAuthenticationMethodsPrivateKeyJwt", "CimdMappedClientFields", @@ -8069,6 +8234,7 @@ def __dir__(): "ClientAddonZendesk", "ClientAddonZoom", "ClientAddons", + "ClientAnonymousSessionTransferNetworkBindingEnum", "ClientAppTypeEnum", "ClientAsyncApprovalNotificationsChannelsApiPatchConfiguration", "ClientAsyncApprovalNotificationsChannelsApiPostConfiguration", @@ -8092,12 +8258,14 @@ def __dir__(): "ClientDefaultOrganizationFlowsEnum", "ClientEncryptionKey", "ClientExternalMetadataCreatedByEnum", + "ClientExternalMetadataStatusEnum", "ClientExternalMetadataTypeEnum", "ClientGrantAllowAnyOrganizationEnum", "ClientGrantDefaultForEnum", "ClientGrantOrganizationNullableUsageEnum", "ClientGrantOrganizationUsageEnum", "ClientGrantResponseContent", + "ClientGrantSortFieldEnum", "ClientGrantSubjectTypeEnum", "ClientJwtConfiguration", "ClientJwtConfigurationScopes", @@ -8119,15 +8287,36 @@ def __dir__(): "ClientOidcBackchannelLogoutSessionMetadata", "ClientOidcBackchannelLogoutSettings", "ClientOidcSupportAllowedScopesEnum", + "ClientOidcSupportPatch", "ClientOidcSupportPost", "ClientOrganizationDiscoveryEnum", "ClientOrganizationRequireBehaviorEnum", "ClientOrganizationRequireBehaviorPatchEnum", "ClientOrganizationUsageEnum", "ClientOrganizationUsagePatchEnum", + "ClientProfile", + "ClientProfileApplyPolicy", + "ClientProfileApplyPolicyExternalMetadataCreatedByEnum", + "ClientProfileApplyPolicyExternalMetadataTypeEnum", + "ClientProfileClientConfiguration", + "ClientProfileClientConfigurationOrganizationDiscoveryMethodEnum", + "ClientProfileClientConfigurationOrganizationDiscoveryMethods", + "ClientProfileClientConfigurationOrganizationRequireBehavior", + "ClientProfileClientConfigurationOrganizationRequireBehaviorEnum", + "ClientProfileClientConfigurationOrganizationUsage", + "ClientProfileClientConfigurationOrganizationUsageEnum", + "ClientProfileClientConfigurationRefreshToken", + "ClientProfileClientConfigurationRequireProofOfPossession", + "ClientProfileDescription", + "ClientProfileId", + "ClientProfileName", + "ClientProfileRefreshTokenIdleTokenLifetime", + "ClientProfileRefreshTokenLeeway", + "ClientProfileRefreshTokenTokenLifetime", "ClientRedirectionPolicyEnum", "ClientRefreshTokenConfiguration", "ClientRefreshTokenPolicy", + "ClientSearchResponse", "ClientSessionTransferAllowedAuthenticationMethodsEnum", "ClientSessionTransferConfiguration", "ClientSessionTransferDelegationConfiguration", @@ -8137,6 +8326,7 @@ def __dir__(): "ClientSignedRequestObjectWithPublicKey", "ClientSigningKey", "ClientSigningKeys", + "ClientSortFieldEnum", "ClientThirdPartySecurityModeEnum", "ClientTokenEndpointAuthMethodEnum", "ClientTokenEndpointAuthMethodOrNullEnum", @@ -8443,6 +8633,8 @@ def __dir__(): "ConnectionProfileOrganizationAssignMembershipOnLoginEnum", "ConnectionProfileOrganizationShowAsButtonEnum", "ConnectionProfileProvisioning", + "ConnectionProfileProvisioningGoogleWorkspace", + "ConnectionProfileProvisioningGoogleWorkspaceSyncUsers", "ConnectionProfileProvisioningScim", "ConnectionProfileProvisioningScimTokenDefaultExpiry", "ConnectionProfileProvisioningScimTokenMaxAllowedExpiry", @@ -9966,6 +10158,11 @@ def __dir__(): "EventStreamCloudEventOrgConnectionAddedObjectOrganizationAccessLevel1Enum", "EventStreamCloudEventOrgConnectionAddedObjectOrganizationAccessLevel2Enum", "EventStreamCloudEventOrgConnectionAddedObjectOrganizationAccessLevel3Enum", + "EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel", + "EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel0Enum", + "EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel1Enum", + "EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel2Enum", + "EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel3Enum", "EventStreamCloudEventOrgConnectionAddedPreviousObject", "EventStreamCloudEventOrgConnectionAddedPreviousObjectConnection", "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganization", @@ -9974,6 +10171,11 @@ def __dir__(): "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationAccessLevel1Enum", "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationAccessLevel2Enum", "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationAccessLevel3Enum", + "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel", + "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel0Enum", + "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel1Enum", + "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel2Enum", + "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel3Enum", "EventStreamCloudEventOrgConnectionAddedTypeEnum", "EventStreamCloudEventOrgConnectionRemoved", "EventStreamCloudEventOrgConnectionRemovedCloudEvent", @@ -9998,6 +10200,11 @@ def __dir__(): "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationAccessLevel1Enum", "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationAccessLevel2Enum", "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationAccessLevel3Enum", + "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel", + "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel0Enum", + "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel1Enum", + "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel2Enum", + "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel3Enum", "EventStreamCloudEventOrgConnectionUpdatedPreviousObject", "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectConnection", "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganization", @@ -10006,6 +10213,11 @@ def __dir__(): "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationAccessLevel1Enum", "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationAccessLevel2Enum", "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationAccessLevel3Enum", + "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel", + "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel0Enum", + "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel1Enum", + "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel2Enum", + "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel3Enum", "EventStreamCloudEventOrgConnectionUpdatedTypeEnum", "EventStreamCloudEventOrgCreated", "EventStreamCloudEventOrgCreatedCloudEvent", @@ -11119,10 +11331,12 @@ def __dir__(): "ListAculsOffsetPaginatedResponseContent", "ListAculsResponseContentItem", "ListAgentsResponseContent", + "ListAttackProtectionCaptchaPoliciesResponseContent", "ListBrandingPhoneProvidersResponseContent", "ListClientConnectionsResponseContent", "ListClientGrantOrganizationsPaginatedResponseContent", "ListClientGrantPaginatedResponseContent", + "ListClientProfilesPaginatedResponseContent", "ListClientsOffsetPaginatedResponseContent", "ListConnectionProfileTemplateResponseContent", "ListConnectionProfilesPaginatedResponseContent", @@ -11409,6 +11623,8 @@ def __dir__(): "Role", "RoleGroup", "RoleMember", + "RoleOwnerId", + "RoleOwnerIdFilter", "RoleTypeEnum", "RoleUser", "RollbackActionModuleResponseContent", @@ -11423,6 +11639,8 @@ def __dir__(): "ScimMappingItem", "ScimTokenItem", "ScreenGroupNameEnum", + "SearchClientGrantsResponseContent", + "SearchClientsResponseContent", "SearchEngineVersionsEnum", "SearchOrganization", "SearchOrganizationsPaginatedResponseContent", @@ -11437,6 +11655,7 @@ def __dir__(): "SegmentNotMatchConditions", "SegmentRule", "SegmentStartsWithExpression", + "SegmentStatusEnum", "SegmentTypeEnum", "SegmentTypeFilterEnum", "SelfServiceProfile", @@ -11523,6 +11742,7 @@ def __dir__(): "SynchronizeGroupsEnum", "SynchronizedGroupPayload", "SynchronizedGroupSelectionId", + "SystemRoleOwnerId", "TenantOidcLogoutSettings", "TenantSettingsCountryCodes", "TenantSettingsCountryCodesMode", @@ -11656,10 +11876,8 @@ def __dir__(): "UpdateEnabledClientConnectionsRequestContentItem", "UpdateEventStreamResponseContent", "UpdateExperimentResponseContent", - "UpdateExperimentStatusResponseContent", "UpdateFeatureFlagParameters", "UpdateFeatureFlagResponseContent", - "UpdateFeatureFlagStatusResponseContent", "UpdateFlowResponseContent", "UpdateFlowsVaultConnectionResponseContent", "UpdateFlowsVaultConnectionSetup", @@ -11770,6 +11988,7 @@ def __dir__(): "attack_protection", "branding", "client_grants", + "client_profiles", "clients", "connection_profiles", "connections", diff --git a/src/auth0/management/attack_protection/__init__.py b/src/auth0/management/attack_protection/__init__.py index 0a209309..c87777b0 100644 --- a/src/auth0/management/attack_protection/__init__.py +++ b/src/auth0/management/attack_protection/__init__.py @@ -11,6 +11,7 @@ breached_password_detection, brute_force_protection, captcha, + captcha_policies, phone_provider_protection, suspicious_ip_throttling, ) @@ -19,6 +20,7 @@ "breached_password_detection": ".breached_password_detection", "brute_force_protection": ".brute_force_protection", "captcha": ".captcha", + "captcha_policies": ".captcha_policies", "phone_provider_protection": ".phone_provider_protection", "suspicious_ip_throttling": ".suspicious_ip_throttling", } @@ -50,6 +52,7 @@ def __dir__(): "breached_password_detection", "brute_force_protection", "captcha", + "captcha_policies", "phone_provider_protection", "suspicious_ip_throttling", ] diff --git a/src/auth0/management/attack_protection/brute_force_protection/client.py b/src/auth0/management/attack_protection/brute_force_protection/client.py index 3aaab7a9..9542acf7 100644 --- a/src/auth0/management/attack_protection/brute_force_protection/client.py +++ b/src/auth0/management/attack_protection/brute_force_protection/client.py @@ -4,6 +4,7 @@ from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper from ...core.request_options import RequestOptions +from ...types.brute_force_protection_form_submission_mode_enum import BruteForceProtectionFormSubmissionModeEnum from ...types.brute_force_protection_mode_enum import BruteForceProtectionModeEnum from ...types.brute_force_protection_shields_enum import BruteForceProtectionShieldsEnum from ...types.get_brute_force_settings_response_content import GetBruteForceSettingsResponseContent @@ -63,6 +64,7 @@ def update( allowlist: typing.Optional[typing.Sequence[str]] = OMIT, mode: typing.Optional[BruteForceProtectionModeEnum] = OMIT, max_attempts: typing.Optional[int] = OMIT, + form_submission_mode: typing.Optional[BruteForceProtectionFormSubmissionModeEnum] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> UpdateBruteForceSettingsResponseContent: """ @@ -85,6 +87,8 @@ def update( max_attempts : typing.Optional[int] Maximum number of unsuccessful attempts. + form_submission_mode : typing.Optional[BruteForceProtectionFormSubmissionModeEnum] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -108,6 +112,7 @@ def update( allowlist=allowlist, mode=mode, max_attempts=max_attempts, + form_submission_mode=form_submission_mode, request_options=request_options, ) return _response.data @@ -172,6 +177,7 @@ async def update( allowlist: typing.Optional[typing.Sequence[str]] = OMIT, mode: typing.Optional[BruteForceProtectionModeEnum] = OMIT, max_attempts: typing.Optional[int] = OMIT, + form_submission_mode: typing.Optional[BruteForceProtectionFormSubmissionModeEnum] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> UpdateBruteForceSettingsResponseContent: """ @@ -194,6 +200,8 @@ async def update( max_attempts : typing.Optional[int] Maximum number of unsuccessful attempts. + form_submission_mode : typing.Optional[BruteForceProtectionFormSubmissionModeEnum] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -225,6 +233,7 @@ async def main() -> None: allowlist=allowlist, mode=mode, max_attempts=max_attempts, + form_submission_mode=form_submission_mode, request_options=request_options, ) return _response.data diff --git a/src/auth0/management/attack_protection/brute_force_protection/raw_client.py b/src/auth0/management/attack_protection/brute_force_protection/raw_client.py index 3945aa20..c974d5ba 100644 --- a/src/auth0/management/attack_protection/brute_force_protection/raw_client.py +++ b/src/auth0/management/attack_protection/brute_force_protection/raw_client.py @@ -13,6 +13,7 @@ from ...errors.forbidden_error import ForbiddenError from ...errors.too_many_requests_error import TooManyRequestsError from ...errors.unauthorized_error import UnauthorizedError +from ...types.brute_force_protection_form_submission_mode_enum import BruteForceProtectionFormSubmissionModeEnum from ...types.brute_force_protection_mode_enum import BruteForceProtectionModeEnum from ...types.brute_force_protection_shields_enum import BruteForceProtectionShieldsEnum from ...types.get_brute_force_settings_response_content import GetBruteForceSettingsResponseContent @@ -108,6 +109,7 @@ def update( allowlist: typing.Optional[typing.Sequence[str]] = OMIT, mode: typing.Optional[BruteForceProtectionModeEnum] = OMIT, max_attempts: typing.Optional[int] = OMIT, + form_submission_mode: typing.Optional[BruteForceProtectionFormSubmissionModeEnum] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> HttpResponse[UpdateBruteForceSettingsResponseContent]: """ @@ -130,6 +132,8 @@ def update( max_attempts : typing.Optional[int] Maximum number of unsuccessful attempts. + form_submission_mode : typing.Optional[BruteForceProtectionFormSubmissionModeEnum] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -147,6 +151,7 @@ def update( "allowlist": allowlist, "mode": mode, "max_attempts": max_attempts, + "form_submission_mode": form_submission_mode, }, headers={ "content-type": "application/json", @@ -303,6 +308,7 @@ async def update( allowlist: typing.Optional[typing.Sequence[str]] = OMIT, mode: typing.Optional[BruteForceProtectionModeEnum] = OMIT, max_attempts: typing.Optional[int] = OMIT, + form_submission_mode: typing.Optional[BruteForceProtectionFormSubmissionModeEnum] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> AsyncHttpResponse[UpdateBruteForceSettingsResponseContent]: """ @@ -325,6 +331,8 @@ async def update( max_attempts : typing.Optional[int] Maximum number of unsuccessful attempts. + form_submission_mode : typing.Optional[BruteForceProtectionFormSubmissionModeEnum] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -342,6 +350,7 @@ async def update( "allowlist": allowlist, "mode": mode, "max_attempts": max_attempts, + "form_submission_mode": form_submission_mode, }, headers={ "content-type": "application/json", diff --git a/src/auth0/management/attack_protection/captcha_policies/__init__.py b/src/auth0/management/attack_protection/captcha_policies/__init__.py new file mode 100644 index 00000000..5cde0202 --- /dev/null +++ b/src/auth0/management/attack_protection/captcha_policies/__init__.py @@ -0,0 +1,4 @@ +# This file was auto-generated by Fern from our API Definition. + +# isort: skip_file + diff --git a/src/auth0/management/attack_protection/captcha_policies/client.py b/src/auth0/management/attack_protection/captcha_policies/client.py new file mode 100644 index 00000000..3b37e7fa --- /dev/null +++ b/src/auth0/management/attack_protection/captcha_policies/client.py @@ -0,0 +1,520 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper +from ...core.request_options import RequestOptions +from ...types.attack_protection_captcha_policy import AttackProtectionCaptchaPolicy +from ...types.attack_protection_captcha_policy_action_input import AttackProtectionCaptchaPolicyActionInput +from ...types.attack_protection_captcha_policy_match import AttackProtectionCaptchaPolicyMatch +from ...types.list_attack_protection_captcha_policies_response_content import ( + ListAttackProtectionCaptchaPoliciesResponseContent, +) +from .raw_client import AsyncRawCaptchaPoliciesClient, RawCaptchaPoliciesClient + +# this is used as the default value for optional parameters +OMIT = typing.cast(typing.Any, ...) + + +class CaptchaPoliciesClient: + def __init__(self, *, client_wrapper: SyncClientWrapper): + self._raw_client = RawCaptchaPoliciesClient(client_wrapper=client_wrapper) + + @property + def with_raw_response(self) -> RawCaptchaPoliciesClient: + """ + Retrieves a raw implementation of this client that returns raw responses. + + Returns + ------- + RawCaptchaPoliciesClient + """ + return self._raw_client + + def list( + self, *, request_options: typing.Optional[RequestOptions] = None + ) -> ListAttackProtectionCaptchaPoliciesResponseContent: + """ + Retrieve all CAPTCHA attack protection policies for the tenant, sorted by priority ascending. + + Parameters + ---------- + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + ListAttackProtectionCaptchaPoliciesResponseContent + The tenant's CAPTCHA attack protection policies were successfully retrieved. + + Examples + -------- + from auth0 import Auth0 + + client = Auth0( + token="YOUR_TOKEN", + ) + client.attack_protection.captcha_policies.list() + """ + _response = self._raw_client.list(request_options=request_options) + return _response.data + + def create( + self, + *, + name: str, + priority: int, + match: AttackProtectionCaptchaPolicyMatch, + action: AttackProtectionCaptchaPolicyActionInput, + description: typing.Optional[str] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> AttackProtectionCaptchaPolicy: + """ + Create a new CAPTCHA attack protection policy for the tenant. The maximum number of policies per tenant is determined by the tenant's subscription. + + Parameters + ---------- + name : str + Human-readable policy name. + + priority : int + Conflict resolution order. Lower number takes higher precedence. Must be unique per tenant. + + match : AttackProtectionCaptchaPolicyMatch + + action : AttackProtectionCaptchaPolicyActionInput + + description : typing.Optional[str] + Description of the attack protection policy. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AttackProtectionCaptchaPolicy + The CAPTCHA attack protection policy was successfully created. + + Examples + -------- + from auth0 import ( + AttackProtectionCaptchaPolicyActionInput, + AttackProtectionCaptchaPolicyMatch, + Auth0, + ) + + client = Auth0( + token="YOUR_TOKEN", + ) + client.attack_protection.captcha_policies.create( + name="name", + priority=1, + match=AttackProtectionCaptchaPolicyMatch(), + action=AttackProtectionCaptchaPolicyActionInput(), + ) + """ + _response = self._raw_client.create( + name=name, + priority=priority, + match=match, + action=action, + description=description, + request_options=request_options, + ) + return _response.data + + def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> AttackProtectionCaptchaPolicy: + """ + Retrieve a single CAPTCHA attack protection policy for the tenant by ID. + + Parameters + ---------- + id : str + ID of the CAPTCHA attack protection policy. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AttackProtectionCaptchaPolicy + The CAPTCHA attack protection policy was successfully retrieved. + + Examples + -------- + from auth0 import Auth0 + + client = Auth0( + token="YOUR_TOKEN", + ) + client.attack_protection.captcha_policies.get( + id="id", + ) + """ + _response = self._raw_client.get(id, request_options=request_options) + return _response.data + + def delete(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> None: + """ + Delete a CAPTCHA attack protection policy for the tenant. + + Parameters + ---------- + id : str + ID of the CAPTCHA attack protection policy. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + None + + Examples + -------- + from auth0 import Auth0 + + client = Auth0( + token="YOUR_TOKEN", + ) + client.attack_protection.captcha_policies.delete( + id="id", + ) + """ + _response = self._raw_client.delete(id, request_options=request_options) + return _response.data + + def update( + self, + id: str, + *, + name: typing.Optional[str] = OMIT, + description: typing.Optional[str] = OMIT, + priority: typing.Optional[int] = OMIT, + match: typing.Optional[AttackProtectionCaptchaPolicyMatch] = OMIT, + action: typing.Optional[AttackProtectionCaptchaPolicyActionInput] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> AttackProtectionCaptchaPolicy: + """ + Partially update a CAPTCHA attack protection policy. Only the provided fields are modified. A provided match or action replaces the stored value in full rather than merging with it; within action, a provider secret or API key that is omitted from a provided provider block keeps its stored value. + + Parameters + ---------- + id : str + ID of the CAPTCHA attack protection policy. + + name : typing.Optional[str] + Human-readable policy name. + + description : typing.Optional[str] + Description of the policy's purpose. + + priority : typing.Optional[int] + Conflict resolution order. Lower number takes higher precedence. Must be unique per tenant. + + match : typing.Optional[AttackProtectionCaptchaPolicyMatch] + + action : typing.Optional[AttackProtectionCaptchaPolicyActionInput] + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AttackProtectionCaptchaPolicy + The CAPTCHA attack protection policy was successfully updated. + + Examples + -------- + from auth0 import Auth0 + + client = Auth0( + token="YOUR_TOKEN", + ) + client.attack_protection.captcha_policies.update( + id="id", + ) + """ + _response = self._raw_client.update( + id, + name=name, + description=description, + priority=priority, + match=match, + action=action, + request_options=request_options, + ) + return _response.data + + +class AsyncCaptchaPoliciesClient: + def __init__(self, *, client_wrapper: AsyncClientWrapper): + self._raw_client = AsyncRawCaptchaPoliciesClient(client_wrapper=client_wrapper) + + @property + def with_raw_response(self) -> AsyncRawCaptchaPoliciesClient: + """ + Retrieves a raw implementation of this client that returns raw responses. + + Returns + ------- + AsyncRawCaptchaPoliciesClient + """ + return self._raw_client + + async def list( + self, *, request_options: typing.Optional[RequestOptions] = None + ) -> ListAttackProtectionCaptchaPoliciesResponseContent: + """ + Retrieve all CAPTCHA attack protection policies for the tenant, sorted by priority ascending. + + Parameters + ---------- + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + ListAttackProtectionCaptchaPoliciesResponseContent + The tenant's CAPTCHA attack protection policies were successfully retrieved. + + Examples + -------- + import asyncio + + from auth0 import AsyncAuth0 + + client = AsyncAuth0( + token="YOUR_TOKEN", + ) + + + async def main() -> None: + await client.attack_protection.captcha_policies.list() + + + asyncio.run(main()) + """ + _response = await self._raw_client.list(request_options=request_options) + return _response.data + + async def create( + self, + *, + name: str, + priority: int, + match: AttackProtectionCaptchaPolicyMatch, + action: AttackProtectionCaptchaPolicyActionInput, + description: typing.Optional[str] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> AttackProtectionCaptchaPolicy: + """ + Create a new CAPTCHA attack protection policy for the tenant. The maximum number of policies per tenant is determined by the tenant's subscription. + + Parameters + ---------- + name : str + Human-readable policy name. + + priority : int + Conflict resolution order. Lower number takes higher precedence. Must be unique per tenant. + + match : AttackProtectionCaptchaPolicyMatch + + action : AttackProtectionCaptchaPolicyActionInput + + description : typing.Optional[str] + Description of the attack protection policy. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AttackProtectionCaptchaPolicy + The CAPTCHA attack protection policy was successfully created. + + Examples + -------- + import asyncio + + from auth0 import ( + AsyncAuth0, + AttackProtectionCaptchaPolicyActionInput, + AttackProtectionCaptchaPolicyMatch, + ) + + client = AsyncAuth0( + token="YOUR_TOKEN", + ) + + + async def main() -> None: + await client.attack_protection.captcha_policies.create( + name="name", + priority=1, + match=AttackProtectionCaptchaPolicyMatch(), + action=AttackProtectionCaptchaPolicyActionInput(), + ) + + + asyncio.run(main()) + """ + _response = await self._raw_client.create( + name=name, + priority=priority, + match=match, + action=action, + description=description, + request_options=request_options, + ) + return _response.data + + async def get( + self, id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> AttackProtectionCaptchaPolicy: + """ + Retrieve a single CAPTCHA attack protection policy for the tenant by ID. + + Parameters + ---------- + id : str + ID of the CAPTCHA attack protection policy. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AttackProtectionCaptchaPolicy + The CAPTCHA attack protection policy was successfully retrieved. + + Examples + -------- + import asyncio + + from auth0 import AsyncAuth0 + + client = AsyncAuth0( + token="YOUR_TOKEN", + ) + + + async def main() -> None: + await client.attack_protection.captcha_policies.get( + id="id", + ) + + + asyncio.run(main()) + """ + _response = await self._raw_client.get(id, request_options=request_options) + return _response.data + + async def delete(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> None: + """ + Delete a CAPTCHA attack protection policy for the tenant. + + Parameters + ---------- + id : str + ID of the CAPTCHA attack protection policy. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + None + + Examples + -------- + import asyncio + + from auth0 import AsyncAuth0 + + client = AsyncAuth0( + token="YOUR_TOKEN", + ) + + + async def main() -> None: + await client.attack_protection.captcha_policies.delete( + id="id", + ) + + + asyncio.run(main()) + """ + _response = await self._raw_client.delete(id, request_options=request_options) + return _response.data + + async def update( + self, + id: str, + *, + name: typing.Optional[str] = OMIT, + description: typing.Optional[str] = OMIT, + priority: typing.Optional[int] = OMIT, + match: typing.Optional[AttackProtectionCaptchaPolicyMatch] = OMIT, + action: typing.Optional[AttackProtectionCaptchaPolicyActionInput] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> AttackProtectionCaptchaPolicy: + """ + Partially update a CAPTCHA attack protection policy. Only the provided fields are modified. A provided match or action replaces the stored value in full rather than merging with it; within action, a provider secret or API key that is omitted from a provided provider block keeps its stored value. + + Parameters + ---------- + id : str + ID of the CAPTCHA attack protection policy. + + name : typing.Optional[str] + Human-readable policy name. + + description : typing.Optional[str] + Description of the policy's purpose. + + priority : typing.Optional[int] + Conflict resolution order. Lower number takes higher precedence. Must be unique per tenant. + + match : typing.Optional[AttackProtectionCaptchaPolicyMatch] + + action : typing.Optional[AttackProtectionCaptchaPolicyActionInput] + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AttackProtectionCaptchaPolicy + The CAPTCHA attack protection policy was successfully updated. + + Examples + -------- + import asyncio + + from auth0 import AsyncAuth0 + + client = AsyncAuth0( + token="YOUR_TOKEN", + ) + + + async def main() -> None: + await client.attack_protection.captcha_policies.update( + id="id", + ) + + + asyncio.run(main()) + """ + _response = await self._raw_client.update( + id, + name=name, + description=description, + priority=priority, + match=match, + action=action, + request_options=request_options, + ) + return _response.data diff --git a/src/auth0/management/attack_protection/captcha_policies/raw_client.py b/src/auth0/management/attack_protection/captcha_policies/raw_client.py new file mode 100644 index 00000000..49b58ab9 --- /dev/null +++ b/src/auth0/management/attack_protection/captcha_policies/raw_client.py @@ -0,0 +1,1175 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing +from json.decoder import JSONDecodeError + +from ...core.api_error import ApiError +from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper +from ...core.http_response import AsyncHttpResponse, HttpResponse +from ...core.jsonable_encoder import quote_path_param +from ...core.parse_error import ParsingError +from ...core.pydantic_utilities import parse_obj_as +from ...core.request_options import RequestOptions +from ...core.serialization import convert_and_respect_annotation_metadata +from ...errors.bad_request_error import BadRequestError +from ...errors.conflict_error import ConflictError +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.attack_protection_captcha_policy import AttackProtectionCaptchaPolicy +from ...types.attack_protection_captcha_policy_action_input import AttackProtectionCaptchaPolicyActionInput +from ...types.attack_protection_captcha_policy_match import AttackProtectionCaptchaPolicyMatch +from ...types.list_attack_protection_captcha_policies_response_content import ( + ListAttackProtectionCaptchaPoliciesResponseContent, +) +from pydantic import ValidationError + +# this is used as the default value for optional parameters +OMIT = typing.cast(typing.Any, ...) + + +class RawCaptchaPoliciesClient: + def __init__(self, *, client_wrapper: SyncClientWrapper): + self._client_wrapper = client_wrapper + + def list( + self, *, request_options: typing.Optional[RequestOptions] = None + ) -> HttpResponse[ListAttackProtectionCaptchaPoliciesResponseContent]: + """ + Retrieve all CAPTCHA attack protection policies for the tenant, sorted by priority ascending. + + Parameters + ---------- + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[ListAttackProtectionCaptchaPoliciesResponseContent] + The tenant's CAPTCHA attack protection policies were successfully retrieved. + """ + _response = self._client_wrapper.httpx_client.request( + "attack-protection/captcha/policies", + method="GET", + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + ListAttackProtectionCaptchaPoliciesResponseContent, + parse_obj_as( + type_=ListAttackProtectionCaptchaPoliciesResponseContent, # type: ignore + object_=_response.json(), + ), + ) + return HttpResponse(response=_response, data=_data) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + def create( + self, + *, + name: str, + priority: int, + match: AttackProtectionCaptchaPolicyMatch, + action: AttackProtectionCaptchaPolicyActionInput, + description: typing.Optional[str] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> HttpResponse[AttackProtectionCaptchaPolicy]: + """ + Create a new CAPTCHA attack protection policy for the tenant. The maximum number of policies per tenant is determined by the tenant's subscription. + + Parameters + ---------- + name : str + Human-readable policy name. + + priority : int + Conflict resolution order. Lower number takes higher precedence. Must be unique per tenant. + + match : AttackProtectionCaptchaPolicyMatch + + action : AttackProtectionCaptchaPolicyActionInput + + description : typing.Optional[str] + Description of the attack protection policy. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[AttackProtectionCaptchaPolicy] + The CAPTCHA attack protection policy was successfully created. + """ + _response = self._client_wrapper.httpx_client.request( + "attack-protection/captcha/policies", + method="POST", + json={ + "name": name, + "description": description, + "priority": priority, + "match": convert_and_respect_annotation_metadata( + object_=match, annotation=AttackProtectionCaptchaPolicyMatch, direction="write" + ), + "action": convert_and_respect_annotation_metadata( + object_=action, annotation=AttackProtectionCaptchaPolicyActionInput, direction="write" + ), + }, + headers={ + "content-type": "application/json", + }, + request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + AttackProtectionCaptchaPolicy, + parse_obj_as( + type_=AttackProtectionCaptchaPolicy, # type: ignore + object_=_response.json(), + ), + ) + return HttpResponse(response=_response, data=_data) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + 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 == 409: + raise ConflictError( + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + def get( + self, id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> HttpResponse[AttackProtectionCaptchaPolicy]: + """ + Retrieve a single CAPTCHA attack protection policy for the tenant by ID. + + Parameters + ---------- + id : str + ID of the CAPTCHA attack protection policy. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[AttackProtectionCaptchaPolicy] + The CAPTCHA attack protection policy was successfully retrieved. + """ + _response = self._client_wrapper.httpx_client.request( + f"attack-protection/captcha/policies/{quote_path_param(id)}", + method="GET", + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + AttackProtectionCaptchaPolicy, + parse_obj_as( + type_=AttackProtectionCaptchaPolicy, # type: ignore + object_=_response.json(), + ), + ) + return HttpResponse(response=_response, data=_data) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + def delete(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> HttpResponse[None]: + """ + Delete a CAPTCHA attack protection policy for the tenant. + + Parameters + ---------- + id : str + ID of the CAPTCHA attack protection policy. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[None] + """ + _response = self._client_wrapper.httpx_client.request( + f"attack-protection/captcha/policies/{quote_path_param(id)}", + method="DELETE", + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + return HttpResponse(response=_response, data=None) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + def update( + self, + id: str, + *, + name: typing.Optional[str] = OMIT, + description: typing.Optional[str] = OMIT, + priority: typing.Optional[int] = OMIT, + match: typing.Optional[AttackProtectionCaptchaPolicyMatch] = OMIT, + action: typing.Optional[AttackProtectionCaptchaPolicyActionInput] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> HttpResponse[AttackProtectionCaptchaPolicy]: + """ + Partially update a CAPTCHA attack protection policy. Only the provided fields are modified. A provided match or action replaces the stored value in full rather than merging with it; within action, a provider secret or API key that is omitted from a provided provider block keeps its stored value. + + Parameters + ---------- + id : str + ID of the CAPTCHA attack protection policy. + + name : typing.Optional[str] + Human-readable policy name. + + description : typing.Optional[str] + Description of the policy's purpose. + + priority : typing.Optional[int] + Conflict resolution order. Lower number takes higher precedence. Must be unique per tenant. + + match : typing.Optional[AttackProtectionCaptchaPolicyMatch] + + action : typing.Optional[AttackProtectionCaptchaPolicyActionInput] + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[AttackProtectionCaptchaPolicy] + The CAPTCHA attack protection policy was successfully updated. + """ + _response = self._client_wrapper.httpx_client.request( + f"attack-protection/captcha/policies/{quote_path_param(id)}", + method="PATCH", + json={ + "name": name, + "description": description, + "priority": priority, + "match": convert_and_respect_annotation_metadata( + object_=match, annotation=AttackProtectionCaptchaPolicyMatch, direction="write" + ), + "action": convert_and_respect_annotation_metadata( + object_=action, annotation=AttackProtectionCaptchaPolicyActionInput, direction="write" + ), + }, + headers={ + "content-type": "application/json", + }, + request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + AttackProtectionCaptchaPolicy, + parse_obj_as( + type_=AttackProtectionCaptchaPolicy, # type: ignore + object_=_response.json(), + ), + ) + return HttpResponse(response=_response, data=_data) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + 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 == 409: + raise ConflictError( + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + +class AsyncRawCaptchaPoliciesClient: + def __init__(self, *, client_wrapper: AsyncClientWrapper): + self._client_wrapper = client_wrapper + + async def list( + self, *, request_options: typing.Optional[RequestOptions] = None + ) -> AsyncHttpResponse[ListAttackProtectionCaptchaPoliciesResponseContent]: + """ + Retrieve all CAPTCHA attack protection policies for the tenant, sorted by priority ascending. + + Parameters + ---------- + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[ListAttackProtectionCaptchaPoliciesResponseContent] + The tenant's CAPTCHA attack protection policies were successfully retrieved. + """ + _response = await self._client_wrapper.httpx_client.request( + "attack-protection/captcha/policies", + method="GET", + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + ListAttackProtectionCaptchaPoliciesResponseContent, + parse_obj_as( + type_=ListAttackProtectionCaptchaPoliciesResponseContent, # type: ignore + object_=_response.json(), + ), + ) + return AsyncHttpResponse(response=_response, data=_data) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + async def create( + self, + *, + name: str, + priority: int, + match: AttackProtectionCaptchaPolicyMatch, + action: AttackProtectionCaptchaPolicyActionInput, + description: typing.Optional[str] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> AsyncHttpResponse[AttackProtectionCaptchaPolicy]: + """ + Create a new CAPTCHA attack protection policy for the tenant. The maximum number of policies per tenant is determined by the tenant's subscription. + + Parameters + ---------- + name : str + Human-readable policy name. + + priority : int + Conflict resolution order. Lower number takes higher precedence. Must be unique per tenant. + + match : AttackProtectionCaptchaPolicyMatch + + action : AttackProtectionCaptchaPolicyActionInput + + description : typing.Optional[str] + Description of the attack protection policy. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[AttackProtectionCaptchaPolicy] + The CAPTCHA attack protection policy was successfully created. + """ + _response = await self._client_wrapper.httpx_client.request( + "attack-protection/captcha/policies", + method="POST", + json={ + "name": name, + "description": description, + "priority": priority, + "match": convert_and_respect_annotation_metadata( + object_=match, annotation=AttackProtectionCaptchaPolicyMatch, direction="write" + ), + "action": convert_and_respect_annotation_metadata( + object_=action, annotation=AttackProtectionCaptchaPolicyActionInput, direction="write" + ), + }, + headers={ + "content-type": "application/json", + }, + request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + AttackProtectionCaptchaPolicy, + parse_obj_as( + type_=AttackProtectionCaptchaPolicy, # type: ignore + object_=_response.json(), + ), + ) + return AsyncHttpResponse(response=_response, data=_data) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + 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 == 409: + raise ConflictError( + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + async def get( + self, id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> AsyncHttpResponse[AttackProtectionCaptchaPolicy]: + """ + Retrieve a single CAPTCHA attack protection policy for the tenant by ID. + + Parameters + ---------- + id : str + ID of the CAPTCHA attack protection policy. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[AttackProtectionCaptchaPolicy] + The CAPTCHA attack protection policy was successfully retrieved. + """ + _response = await self._client_wrapper.httpx_client.request( + f"attack-protection/captcha/policies/{quote_path_param(id)}", + method="GET", + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + AttackProtectionCaptchaPolicy, + parse_obj_as( + type_=AttackProtectionCaptchaPolicy, # type: ignore + object_=_response.json(), + ), + ) + return AsyncHttpResponse(response=_response, data=_data) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + async def delete( + self, id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> AsyncHttpResponse[None]: + """ + Delete a CAPTCHA attack protection policy for the tenant. + + Parameters + ---------- + id : str + ID of the CAPTCHA attack protection policy. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[None] + """ + _response = await self._client_wrapper.httpx_client.request( + f"attack-protection/captcha/policies/{quote_path_param(id)}", + method="DELETE", + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + return AsyncHttpResponse(response=_response, data=None) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + async def update( + self, + id: str, + *, + name: typing.Optional[str] = OMIT, + description: typing.Optional[str] = OMIT, + priority: typing.Optional[int] = OMIT, + match: typing.Optional[AttackProtectionCaptchaPolicyMatch] = OMIT, + action: typing.Optional[AttackProtectionCaptchaPolicyActionInput] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> AsyncHttpResponse[AttackProtectionCaptchaPolicy]: + """ + Partially update a CAPTCHA attack protection policy. Only the provided fields are modified. A provided match or action replaces the stored value in full rather than merging with it; within action, a provider secret or API key that is omitted from a provided provider block keeps its stored value. + + Parameters + ---------- + id : str + ID of the CAPTCHA attack protection policy. + + name : typing.Optional[str] + Human-readable policy name. + + description : typing.Optional[str] + Description of the policy's purpose. + + priority : typing.Optional[int] + Conflict resolution order. Lower number takes higher precedence. Must be unique per tenant. + + match : typing.Optional[AttackProtectionCaptchaPolicyMatch] + + action : typing.Optional[AttackProtectionCaptchaPolicyActionInput] + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[AttackProtectionCaptchaPolicy] + The CAPTCHA attack protection policy was successfully updated. + """ + _response = await self._client_wrapper.httpx_client.request( + f"attack-protection/captcha/policies/{quote_path_param(id)}", + method="PATCH", + json={ + "name": name, + "description": description, + "priority": priority, + "match": convert_and_respect_annotation_metadata( + object_=match, annotation=AttackProtectionCaptchaPolicyMatch, direction="write" + ), + "action": convert_and_respect_annotation_metadata( + object_=action, annotation=AttackProtectionCaptchaPolicyActionInput, direction="write" + ), + }, + headers={ + "content-type": "application/json", + }, + request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + AttackProtectionCaptchaPolicy, + parse_obj_as( + type_=AttackProtectionCaptchaPolicy, # type: ignore + object_=_response.json(), + ), + ) + return AsyncHttpResponse(response=_response, data=_data) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + 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 == 409: + raise ConflictError( + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) diff --git a/src/auth0/management/attack_protection/client.py b/src/auth0/management/attack_protection/client.py index a2f3cc95..7b8d2d96 100644 --- a/src/auth0/management/attack_protection/client.py +++ b/src/auth0/management/attack_protection/client.py @@ -15,6 +15,7 @@ ) from .brute_force_protection.client import AsyncBruteForceProtectionClient, BruteForceProtectionClient from .captcha.client import AsyncCaptchaClient, CaptchaClient + from .captcha_policies.client import AsyncCaptchaPoliciesClient, CaptchaPoliciesClient from .phone_provider_protection.client import AsyncPhoneProviderProtectionClient, PhoneProviderProtectionClient from .suspicious_ip_throttling.client import AsyncSuspiciousIpThrottlingClient, SuspiciousIpThrottlingClient @@ -27,6 +28,7 @@ def __init__(self, *, client_wrapper: SyncClientWrapper): self._breached_password_detection: typing.Optional[BreachedPasswordDetectionClient] = None self._brute_force_protection: typing.Optional[BruteForceProtectionClient] = None self._captcha: typing.Optional[CaptchaClient] = None + self._captcha_policies: typing.Optional[CaptchaPoliciesClient] = None self._phone_provider_protection: typing.Optional[PhoneProviderProtectionClient] = None self._suspicious_ip_throttling: typing.Optional[SuspiciousIpThrottlingClient] = None @@ -73,6 +75,14 @@ def captcha(self): self._captcha = CaptchaClient(client_wrapper=self._client_wrapper) return self._captcha + @property + def captcha_policies(self): + if self._captcha_policies is None: + from .captcha_policies.client import CaptchaPoliciesClient # noqa: E402 + + self._captcha_policies = CaptchaPoliciesClient(client_wrapper=self._client_wrapper) + return self._captcha_policies + @property def phone_provider_protection(self): if self._phone_provider_protection is None: @@ -98,6 +108,7 @@ def __init__(self, *, client_wrapper: AsyncClientWrapper): self._breached_password_detection: typing.Optional[AsyncBreachedPasswordDetectionClient] = None self._brute_force_protection: typing.Optional[AsyncBruteForceProtectionClient] = None self._captcha: typing.Optional[AsyncCaptchaClient] = None + self._captcha_policies: typing.Optional[AsyncCaptchaPoliciesClient] = None self._phone_provider_protection: typing.Optional[AsyncPhoneProviderProtectionClient] = None self._suspicious_ip_throttling: typing.Optional[AsyncSuspiciousIpThrottlingClient] = None @@ -146,6 +157,14 @@ def captcha(self): self._captcha = AsyncCaptchaClient(client_wrapper=self._client_wrapper) return self._captcha + @property + def captcha_policies(self): + if self._captcha_policies is None: + from .captcha_policies.client import AsyncCaptchaPoliciesClient # noqa: E402 + + self._captcha_policies = AsyncCaptchaPoliciesClient(client_wrapper=self._client_wrapper) + return self._captcha_policies + @property def phone_provider_protection(self): if self._phone_provider_protection is None: diff --git a/src/auth0/management/client.py b/src/auth0/management/client.py index d333a975..99a08a77 100644 --- a/src/auth0/management/client.py +++ b/src/auth0/management/client.py @@ -16,6 +16,7 @@ from .attack_protection.client import AsyncAttackProtectionClient, AttackProtectionClient from .branding.client import AsyncBrandingClient, BrandingClient from .client_grants.client import AsyncClientGrantsClient, ClientGrantsClient + from .client_profiles.client import AsyncClientProfilesClient, ClientProfilesClient from .clients.client import AsyncClientsClient, ClientsClient from .connection_profiles.client import AsyncConnectionProfilesClient, ConnectionProfilesClient from .connections.client import AsyncConnectionsClient, ConnectionsClient @@ -159,6 +160,7 @@ def __init__( self._agents: typing.Optional[AgentsClient] = None self._branding: typing.Optional[BrandingClient] = None self._client_grants: typing.Optional[ClientGrantsClient] = None + self._client_profiles: typing.Optional[ClientProfilesClient] = None self._clients: typing.Optional[ClientsClient] = None self._connection_profiles: typing.Optional[ConnectionProfilesClient] = None self._connections: typing.Optional[ConnectionsClient] = None @@ -235,6 +237,14 @@ def client_grants(self): self._client_grants = ClientGrantsClient(client_wrapper=self._client_wrapper) return self._client_grants + @property + def client_profiles(self): + if self._client_profiles is None: + from .client_profiles.client import ClientProfilesClient # noqa: E402 + + self._client_profiles = ClientProfilesClient(client_wrapper=self._client_wrapper) + return self._client_profiles + @property def clients(self): if self._clients is None: @@ -701,6 +711,7 @@ def __init__( self._agents: typing.Optional[AsyncAgentsClient] = None self._branding: typing.Optional[AsyncBrandingClient] = None self._client_grants: typing.Optional[AsyncClientGrantsClient] = None + self._client_profiles: typing.Optional[AsyncClientProfilesClient] = None self._clients: typing.Optional[AsyncClientsClient] = None self._connection_profiles: typing.Optional[AsyncConnectionProfilesClient] = None self._connections: typing.Optional[AsyncConnectionsClient] = None @@ -777,6 +788,14 @@ def client_grants(self): self._client_grants = AsyncClientGrantsClient(client_wrapper=self._client_wrapper) return self._client_grants + @property + def client_profiles(self): + if self._client_profiles is None: + from .client_profiles.client import AsyncClientProfilesClient # noqa: E402 + + self._client_profiles = AsyncClientProfilesClient(client_wrapper=self._client_wrapper) + return self._client_profiles + @property def clients(self): if self._clients is None: diff --git a/src/auth0/management/client_grants/client.py b/src/auth0/management/client_grants/client.py index 3596d498..bfe3e8a4 100644 --- a/src/auth0/management/client_grants/client.py +++ b/src/auth0/management/client_grants/client.py @@ -12,10 +12,13 @@ from ..types.client_grant_organization_nullable_usage_enum import ClientGrantOrganizationNullableUsageEnum from ..types.client_grant_organization_usage_enum import ClientGrantOrganizationUsageEnum from ..types.client_grant_response_content import ClientGrantResponseContent +from ..types.client_grant_sort_field_enum import ClientGrantSortFieldEnum from ..types.client_grant_subject_type_enum import ClientGrantSubjectTypeEnum from ..types.create_client_grant_response_content import CreateClientGrantResponseContent from ..types.get_client_grant_response_content import GetClientGrantResponseContent from ..types.list_client_grant_paginated_response_content import ListClientGrantPaginatedResponseContent +from ..types.search_client_grants_response_content import SearchClientGrantsResponseContent +from ..types.search_parser_enum import SearchParserEnum from ..types.update_client_grant_response_content import UpdateClientGrantResponseContent from .raw_client import AsyncRawClientGrantsClient, RawClientGrantsClient @@ -203,6 +206,86 @@ def create( ) return _response.data + def search( + self, + *, + q: typing.Optional[str] = None, + parser: typing.Optional[SearchParserEnum] = None, + fields: typing.Optional[str] = None, + include_fields: typing.Optional[bool] = None, + take: typing.Optional[int] = 50, + from_: typing.Optional[str] = None, + sort: typing.Optional[ClientGrantSortFieldEnum] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> SyncPager[ClientGrantResponseContent, SearchClientGrantsResponseContent]: + """ + Search client grants using SCIM or Lucene filter syntax with low-latency, eventually consistent results. Use the parser parameter to specify "scim" or "lucene" syntax (default: "lucene"). This endpoint provides an alternative to the standard GET /client-grants endpoint with better performance for complex queries. + Results may not reflect recent updates immediately. + + Parameters + ---------- + q : typing.Optional[str] + Filter expression in SCIM or Lucene syntax (depending on parser parameter). SCIM examples: `audience eq "https://api.example.com"`, `client_id eq "cli_abc"`, `subject_type eq "client"`, `allow_any_organization eq true`, `default_for eq "third_party_clients"`, `audience co "example" and organization_id eq "org_123"`. SCIM operators: eq, ne, sw, ew, co, pr, gt, ge, lt, le, and, or.

Supported Fields:
  • audience - Filter by audience (eq, ne, sw, co, ew, pr)
  • client_id - Filter by client ID (eq, ne, sw, pr)
  • subject_type - Filter by subject type (eq, ne, sw, pr)
  • allow_any_organization - Filter by allow_any_organization (eq, ne, pr)
  • organization_id - Filter by organization ID (eq, ne, sw, pr)
  • updated_at - Filter by last update date (eq, ne, gt, ge, lt, le, pr)
  • default_for - Filter by default grant group (eq, ne, sw, pr)
Maximum 5 filter operations per query. Results are eventually consistent and may not reflect recent updates. + + parser : typing.Optional[SearchParserEnum] + Query parser to use for the filter expression. Use "scim" for SCIM filter syntax or "lucene" for Lucene query syntax (default). + + fields : typing.Optional[str] + Comma-separated list of fields to include or exclude in the response. Works with the include_fields parameter to control projection mode. + + include_fields : typing.Optional[bool] + Controls field projection mode. Set to true to include only fields specified in the fields parameter. Set to false to exclude fields specified in the fields parameter. Defaults to true if not specified. + + take : typing.Optional[int] + Maximum number of results to return per page (1-100). Defaults to 50. + + from_ : typing.Optional[str] + Cursor for the next page of results. Use the value from the next field in the previous response. + + sort : typing.Optional[ClientGrantSortFieldEnum] + Field name to sort results by in ascending order. Defaults to insertion order (oldest first) if not provided. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + SyncPager[ClientGrantResponseContent, SearchClientGrantsResponseContent] + Client grants successfully retrieved. + + Examples + -------- + from auth0 import Auth0 + + client = Auth0( + token="YOUR_TOKEN", + ) + response = client.client_grants.search( + q="q", + parser="scim", + fields="fields", + include_fields=True, + take=1, + from_="from", + sort="audience", + ) + for item in response: + yield item + # alternatively, you can paginate page-by-page + for page in response.iter_pages(): + yield page + """ + return self._raw_client.search( + q=q, + parser=parser, + fields=fields, + include_fields=include_fields, + take=take, + from_=from_, + sort=sort, + request_options=request_options, + ) + def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> GetClientGrantResponseContent: """ Retrieve a single [client grant](https://auth0.com/docs/get-started/applications/application-access-to-apis-client-grants), including the @@ -532,6 +615,95 @@ async def main() -> None: ) return _response.data + async def search( + self, + *, + q: typing.Optional[str] = None, + parser: typing.Optional[SearchParserEnum] = None, + fields: typing.Optional[str] = None, + include_fields: typing.Optional[bool] = None, + take: typing.Optional[int] = 50, + from_: typing.Optional[str] = None, + sort: typing.Optional[ClientGrantSortFieldEnum] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> AsyncPager[ClientGrantResponseContent, SearchClientGrantsResponseContent]: + """ + Search client grants using SCIM or Lucene filter syntax with low-latency, eventually consistent results. Use the parser parameter to specify "scim" or "lucene" syntax (default: "lucene"). This endpoint provides an alternative to the standard GET /client-grants endpoint with better performance for complex queries. + Results may not reflect recent updates immediately. + + Parameters + ---------- + q : typing.Optional[str] + Filter expression in SCIM or Lucene syntax (depending on parser parameter). SCIM examples: `audience eq "https://api.example.com"`, `client_id eq "cli_abc"`, `subject_type eq "client"`, `allow_any_organization eq true`, `default_for eq "third_party_clients"`, `audience co "example" and organization_id eq "org_123"`. SCIM operators: eq, ne, sw, ew, co, pr, gt, ge, lt, le, and, or.

Supported Fields:
  • audience - Filter by audience (eq, ne, sw, co, ew, pr)
  • client_id - Filter by client ID (eq, ne, sw, pr)
  • subject_type - Filter by subject type (eq, ne, sw, pr)
  • allow_any_organization - Filter by allow_any_organization (eq, ne, pr)
  • organization_id - Filter by organization ID (eq, ne, sw, pr)
  • updated_at - Filter by last update date (eq, ne, gt, ge, lt, le, pr)
  • default_for - Filter by default grant group (eq, ne, sw, pr)
Maximum 5 filter operations per query. Results are eventually consistent and may not reflect recent updates. + + parser : typing.Optional[SearchParserEnum] + Query parser to use for the filter expression. Use "scim" for SCIM filter syntax or "lucene" for Lucene query syntax (default). + + fields : typing.Optional[str] + Comma-separated list of fields to include or exclude in the response. Works with the include_fields parameter to control projection mode. + + include_fields : typing.Optional[bool] + Controls field projection mode. Set to true to include only fields specified in the fields parameter. Set to false to exclude fields specified in the fields parameter. Defaults to true if not specified. + + take : typing.Optional[int] + Maximum number of results to return per page (1-100). Defaults to 50. + + from_ : typing.Optional[str] + Cursor for the next page of results. Use the value from the next field in the previous response. + + sort : typing.Optional[ClientGrantSortFieldEnum] + Field name to sort results by in ascending order. Defaults to insertion order (oldest first) if not provided. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncPager[ClientGrantResponseContent, SearchClientGrantsResponseContent] + Client grants successfully retrieved. + + Examples + -------- + import asyncio + + from auth0 import AsyncAuth0 + + client = AsyncAuth0( + token="YOUR_TOKEN", + ) + + + async def main() -> None: + response = await client.client_grants.search( + q="q", + parser="scim", + fields="fields", + include_fields=True, + take=1, + from_="from", + sort="audience", + ) + async for item in response: + yield item + + # alternatively, you can paginate page-by-page + async for page in response.iter_pages(): + yield page + + + asyncio.run(main()) + """ + return await self._raw_client.search( + q=q, + parser=parser, + fields=fields, + include_fields=include_fields, + take=take, + from_=from_, + sort=sort, + request_options=request_options, + ) + async def get( self, id: str, *, request_options: typing.Optional[RequestOptions] = None ) -> GetClientGrantResponseContent: diff --git a/src/auth0/management/client_grants/raw_client.py b/src/auth0/management/client_grants/raw_client.py index 3ad27bac..8966dd87 100644 --- a/src/auth0/management/client_grants/raw_client.py +++ b/src/auth0/management/client_grants/raw_client.py @@ -14,6 +14,8 @@ from ..errors.bad_request_error import BadRequestError from ..errors.conflict_error import ConflictError from ..errors.forbidden_error import ForbiddenError +from ..errors.gateway_timeout_error import GatewayTimeoutError +from ..errors.internal_server_error import InternalServerError from ..errors.not_found_error import NotFoundError from ..errors.too_many_requests_error import TooManyRequestsError from ..errors.unauthorized_error import UnauthorizedError @@ -22,10 +24,13 @@ from ..types.client_grant_organization_nullable_usage_enum import ClientGrantOrganizationNullableUsageEnum from ..types.client_grant_organization_usage_enum import ClientGrantOrganizationUsageEnum from ..types.client_grant_response_content import ClientGrantResponseContent +from ..types.client_grant_sort_field_enum import ClientGrantSortFieldEnum from ..types.client_grant_subject_type_enum import ClientGrantSubjectTypeEnum from ..types.create_client_grant_response_content import CreateClientGrantResponseContent from ..types.get_client_grant_response_content import GetClientGrantResponseContent from ..types.list_client_grant_paginated_response_content import ListClientGrantPaginatedResponseContent +from ..types.search_client_grants_response_content import SearchClientGrantsResponseContent +from ..types.search_parser_enum import SearchParserEnum from ..types.update_client_grant_response_content import UpdateClientGrantResponseContent from pydantic import ValidationError @@ -324,6 +329,176 @@ def create( ) raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + def search( + self, + *, + q: typing.Optional[str] = None, + parser: typing.Optional[SearchParserEnum] = None, + fields: typing.Optional[str] = None, + include_fields: typing.Optional[bool] = None, + take: typing.Optional[int] = 50, + from_: typing.Optional[str] = None, + sort: typing.Optional[ClientGrantSortFieldEnum] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> SyncPager[ClientGrantResponseContent, SearchClientGrantsResponseContent]: + """ + Search client grants using SCIM or Lucene filter syntax with low-latency, eventually consistent results. Use the parser parameter to specify "scim" or "lucene" syntax (default: "lucene"). This endpoint provides an alternative to the standard GET /client-grants endpoint with better performance for complex queries. + Results may not reflect recent updates immediately. + + Parameters + ---------- + q : typing.Optional[str] + Filter expression in SCIM or Lucene syntax (depending on parser parameter). SCIM examples: `audience eq "https://api.example.com"`, `client_id eq "cli_abc"`, `subject_type eq "client"`, `allow_any_organization eq true`, `default_for eq "third_party_clients"`, `audience co "example" and organization_id eq "org_123"`. SCIM operators: eq, ne, sw, ew, co, pr, gt, ge, lt, le, and, or.

Supported Fields:
  • audience - Filter by audience (eq, ne, sw, co, ew, pr)
  • client_id - Filter by client ID (eq, ne, sw, pr)
  • subject_type - Filter by subject type (eq, ne, sw, pr)
  • allow_any_organization - Filter by allow_any_organization (eq, ne, pr)
  • organization_id - Filter by organization ID (eq, ne, sw, pr)
  • updated_at - Filter by last update date (eq, ne, gt, ge, lt, le, pr)
  • default_for - Filter by default grant group (eq, ne, sw, pr)
Maximum 5 filter operations per query. Results are eventually consistent and may not reflect recent updates. + + parser : typing.Optional[SearchParserEnum] + Query parser to use for the filter expression. Use "scim" for SCIM filter syntax or "lucene" for Lucene query syntax (default). + + fields : typing.Optional[str] + Comma-separated list of fields to include or exclude in the response. Works with the include_fields parameter to control projection mode. + + include_fields : typing.Optional[bool] + Controls field projection mode. Set to true to include only fields specified in the fields parameter. Set to false to exclude fields specified in the fields parameter. Defaults to true if not specified. + + take : typing.Optional[int] + Maximum number of results to return per page (1-100). Defaults to 50. + + from_ : typing.Optional[str] + Cursor for the next page of results. Use the value from the next field in the previous response. + + sort : typing.Optional[ClientGrantSortFieldEnum] + Field name to sort results by in ascending order. Defaults to insertion order (oldest first) if not provided. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + SyncPager[ClientGrantResponseContent, SearchClientGrantsResponseContent] + Client grants successfully retrieved. + """ + _response = self._client_wrapper.httpx_client.request( + "client-grants/search", + method="GET", + params={ + "q": q, + "parser": parser, + "fields": fields, + "include_fields": include_fields, + "take": take, + "from": from_, + "sort": sort, + }, + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _parsed_response = typing.cast( + SearchClientGrantsResponseContent, + parse_obj_as( + type_=SearchClientGrantsResponseContent, # type: ignore + object_=_response.json(), + ), + ) + _items = _parsed_response.client_grants + _parsed_next = _parsed_response.next + _has_next = _parsed_next is not None and _parsed_next != "" + _get_next = lambda: self.search( + q=q, + parser=parser, + fields=fields, + include_fields=include_fields, + take=take, + from_=_parsed_next, + sort=sort, + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 500: + raise InternalServerError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 504: + raise GatewayTimeoutError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + def get( self, id: str, *, request_options: typing.Optional[RequestOptions] = None ) -> HttpResponse[GetClientGrantResponseContent]: @@ -915,6 +1090,179 @@ async def create( ) raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + async def search( + self, + *, + q: typing.Optional[str] = None, + parser: typing.Optional[SearchParserEnum] = None, + fields: typing.Optional[str] = None, + include_fields: typing.Optional[bool] = None, + take: typing.Optional[int] = 50, + from_: typing.Optional[str] = None, + sort: typing.Optional[ClientGrantSortFieldEnum] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> AsyncPager[ClientGrantResponseContent, SearchClientGrantsResponseContent]: + """ + Search client grants using SCIM or Lucene filter syntax with low-latency, eventually consistent results. Use the parser parameter to specify "scim" or "lucene" syntax (default: "lucene"). This endpoint provides an alternative to the standard GET /client-grants endpoint with better performance for complex queries. + Results may not reflect recent updates immediately. + + Parameters + ---------- + q : typing.Optional[str] + Filter expression in SCIM or Lucene syntax (depending on parser parameter). SCIM examples: `audience eq "https://api.example.com"`, `client_id eq "cli_abc"`, `subject_type eq "client"`, `allow_any_organization eq true`, `default_for eq "third_party_clients"`, `audience co "example" and organization_id eq "org_123"`. SCIM operators: eq, ne, sw, ew, co, pr, gt, ge, lt, le, and, or.

Supported Fields:
  • audience - Filter by audience (eq, ne, sw, co, ew, pr)
  • client_id - Filter by client ID (eq, ne, sw, pr)
  • subject_type - Filter by subject type (eq, ne, sw, pr)
  • allow_any_organization - Filter by allow_any_organization (eq, ne, pr)
  • organization_id - Filter by organization ID (eq, ne, sw, pr)
  • updated_at - Filter by last update date (eq, ne, gt, ge, lt, le, pr)
  • default_for - Filter by default grant group (eq, ne, sw, pr)
Maximum 5 filter operations per query. Results are eventually consistent and may not reflect recent updates. + + parser : typing.Optional[SearchParserEnum] + Query parser to use for the filter expression. Use "scim" for SCIM filter syntax or "lucene" for Lucene query syntax (default). + + fields : typing.Optional[str] + Comma-separated list of fields to include or exclude in the response. Works with the include_fields parameter to control projection mode. + + include_fields : typing.Optional[bool] + Controls field projection mode. Set to true to include only fields specified in the fields parameter. Set to false to exclude fields specified in the fields parameter. Defaults to true if not specified. + + take : typing.Optional[int] + Maximum number of results to return per page (1-100). Defaults to 50. + + from_ : typing.Optional[str] + Cursor for the next page of results. Use the value from the next field in the previous response. + + sort : typing.Optional[ClientGrantSortFieldEnum] + Field name to sort results by in ascending order. Defaults to insertion order (oldest first) if not provided. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncPager[ClientGrantResponseContent, SearchClientGrantsResponseContent] + Client grants successfully retrieved. + """ + _response = await self._client_wrapper.httpx_client.request( + "client-grants/search", + method="GET", + params={ + "q": q, + "parser": parser, + "fields": fields, + "include_fields": include_fields, + "take": take, + "from": from_, + "sort": sort, + }, + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _parsed_response = typing.cast( + SearchClientGrantsResponseContent, + parse_obj_as( + type_=SearchClientGrantsResponseContent, # type: ignore + object_=_response.json(), + ), + ) + _items = _parsed_response.client_grants + _parsed_next = _parsed_response.next + _has_next = _parsed_next is not None and _parsed_next != "" + + async def _get_next(): + return await self.search( + q=q, + parser=parser, + fields=fields, + include_fields=include_fields, + take=take, + from_=_parsed_next, + sort=sort, + request_options=request_options, + ) + + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 500: + raise InternalServerError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 504: + raise GatewayTimeoutError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + async def get( self, id: str, *, request_options: typing.Optional[RequestOptions] = None ) -> AsyncHttpResponse[GetClientGrantResponseContent]: diff --git a/src/auth0/management/client_profiles/__init__.py b/src/auth0/management/client_profiles/__init__.py new file mode 100644 index 00000000..5cde0202 --- /dev/null +++ b/src/auth0/management/client_profiles/__init__.py @@ -0,0 +1,4 @@ +# This file was auto-generated by Fern from our API Definition. + +# isort: skip_file + diff --git a/src/auth0/management/client_profiles/client.py b/src/auth0/management/client_profiles/client.py new file mode 100644 index 00000000..b9bb08ea --- /dev/null +++ b/src/auth0/management/client_profiles/client.py @@ -0,0 +1,533 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper +from ..core.pagination import AsyncPager, SyncPager +from ..core.request_options import RequestOptions +from ..types.client_profile import ClientProfile +from ..types.client_profile_apply_policy import ClientProfileApplyPolicy +from ..types.client_profile_client_configuration import ClientProfileClientConfiguration +from ..types.client_profile_description import ClientProfileDescription +from ..types.client_profile_id import ClientProfileId +from ..types.client_profile_name import ClientProfileName +from ..types.list_client_profiles_paginated_response_content import ListClientProfilesPaginatedResponseContent +from .raw_client import AsyncRawClientProfilesClient, RawClientProfilesClient + +# this is used as the default value for optional parameters +OMIT = typing.cast(typing.Any, ...) + + +class ClientProfilesClient: + def __init__(self, *, client_wrapper: SyncClientWrapper): + self._raw_client = RawClientProfilesClient(client_wrapper=client_wrapper) + + @property + def with_raw_response(self) -> RawClientProfilesClient: + """ + Retrieves a raw implementation of this client that returns raw responses. + + Returns + ------- + RawClientProfilesClient + """ + return self._raw_client + + def list( + self, + *, + from_: typing.Optional[str] = None, + take: typing.Optional[int] = 50, + request_options: typing.Optional[RequestOptions] = None, + ) -> SyncPager[ClientProfile, ListClientProfilesPaginatedResponseContent]: + """ + Retrieve a paginated list of client profiles for the tenant. Uses checkpoint pagination: pass the next cursor from a previous response as the from query parameter to retrieve the following page. + + Parameters + ---------- + from_ : typing.Optional[str] + Optional Id from which to start selection. + + take : typing.Optional[int] + Number of results per page. Defaults to 50. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + SyncPager[ClientProfile, ListClientProfilesPaginatedResponseContent] + Client profiles successfully retrieved. + + Examples + -------- + from auth0 import Auth0 + + client = Auth0( + token="YOUR_TOKEN", + ) + response = client.client_profiles.list( + from_="from", + take=1, + ) + for item in response: + yield item + # alternatively, you can paginate page-by-page + for page in response.iter_pages(): + yield page + """ + return self._raw_client.list(from_=from_, take=take, request_options=request_options) + + def create( + self, + *, + name: ClientProfileName, + client_configuration: ClientProfileClientConfiguration, + apply_policy: ClientProfileApplyPolicy, + description: typing.Optional[ClientProfileDescription] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> ClientProfile: + """ + Create a client profile. At most one profile is allowed per tenant in this release; attempting to create a second returns 409 Conflict. The profile governs Dynamic CIMD clients matched by its apply_policy at runtime. + + Parameters + ---------- + name : ClientProfileName + + client_configuration : ClientProfileClientConfiguration + + apply_policy : ClientProfileApplyPolicy + + description : typing.Optional[ClientProfileDescription] + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + ClientProfile + Client profile successfully created. + + Examples + -------- + from auth0 import ( + Auth0, + ClientProfileApplyPolicy, + ClientProfileClientConfiguration, + ) + + client = Auth0( + token="YOUR_TOKEN", + ) + client.client_profiles.create( + name="name", + client_configuration=ClientProfileClientConfiguration(), + apply_policy=ClientProfileApplyPolicy( + external_metadata_type="cimd", + external_metadata_created_by="client", + ), + ) + """ + _response = self._raw_client.create( + name=name, + client_configuration=client_configuration, + apply_policy=apply_policy, + description=description, + request_options=request_options, + ) + return _response.data + + def get(self, id: ClientProfileId, *, request_options: typing.Optional[RequestOptions] = None) -> ClientProfile: + """ + Retrieve a single client profile by its identifier. Returns 404 if no profile with the given ID exists for the tenant. + + Parameters + ---------- + id : ClientProfileId + ID of the client profile. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + ClientProfile + Record for existing client profile. + + Examples + -------- + from auth0 import Auth0 + + client = Auth0( + token="YOUR_TOKEN", + ) + client.client_profiles.get( + id="id", + ) + """ + _response = self._raw_client.get(id, request_options=request_options) + return _response.data + + def delete(self, id: ClientProfileId, *, request_options: typing.Optional[RequestOptions] = None) -> None: + """ + Delete a client profile. Idempotent: returns 204 No Content whether or not a profile with the given ID existed. Deleting the profile removes fleet governance for matched clients immediately. + + Parameters + ---------- + id : ClientProfileId + ID of the client profile. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + None + + Examples + -------- + from auth0 import Auth0 + + client = Auth0( + token="YOUR_TOKEN", + ) + client.client_profiles.delete( + id="id", + ) + """ + _response = self._raw_client.delete(id, request_options=request_options) + return _response.data + + def update( + self, + id: ClientProfileId, + *, + name: typing.Optional[ClientProfileName] = OMIT, + description: typing.Optional[ClientProfileDescription] = OMIT, + client_configuration: typing.Optional[ClientProfileClientConfiguration] = OMIT, + apply_policy: typing.Optional[ClientProfileApplyPolicy] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> ClientProfile: + """ + Update a client profile. Supports partial updates at the top level (JSON Merge Patch); omitted top-level fields remain unchanged. Nested objects such as client_configuration must be supplied in full. + + Parameters + ---------- + id : ClientProfileId + ID of the client profile. + + name : typing.Optional[ClientProfileName] + + description : typing.Optional[ClientProfileDescription] + + client_configuration : typing.Optional[ClientProfileClientConfiguration] + + apply_policy : typing.Optional[ClientProfileApplyPolicy] + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + ClientProfile + Client profile successfully updated. + + Examples + -------- + from auth0 import Auth0 + + client = Auth0( + token="YOUR_TOKEN", + ) + client.client_profiles.update( + id="id", + ) + """ + _response = self._raw_client.update( + id, + name=name, + description=description, + client_configuration=client_configuration, + apply_policy=apply_policy, + request_options=request_options, + ) + return _response.data + + +class AsyncClientProfilesClient: + def __init__(self, *, client_wrapper: AsyncClientWrapper): + self._raw_client = AsyncRawClientProfilesClient(client_wrapper=client_wrapper) + + @property + def with_raw_response(self) -> AsyncRawClientProfilesClient: + """ + Retrieves a raw implementation of this client that returns raw responses. + + Returns + ------- + AsyncRawClientProfilesClient + """ + return self._raw_client + + async def list( + self, + *, + from_: typing.Optional[str] = None, + take: typing.Optional[int] = 50, + request_options: typing.Optional[RequestOptions] = None, + ) -> AsyncPager[ClientProfile, ListClientProfilesPaginatedResponseContent]: + """ + Retrieve a paginated list of client profiles for the tenant. Uses checkpoint pagination: pass the next cursor from a previous response as the from query parameter to retrieve the following page. + + Parameters + ---------- + from_ : typing.Optional[str] + Optional Id from which to start selection. + + take : typing.Optional[int] + Number of results per page. Defaults to 50. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncPager[ClientProfile, ListClientProfilesPaginatedResponseContent] + Client profiles successfully retrieved. + + Examples + -------- + import asyncio + + from auth0 import AsyncAuth0 + + client = AsyncAuth0( + token="YOUR_TOKEN", + ) + + + async def main() -> None: + response = await client.client_profiles.list( + from_="from", + take=1, + ) + async for item in response: + yield item + + # alternatively, you can paginate page-by-page + async for page in response.iter_pages(): + yield page + + + asyncio.run(main()) + """ + return await self._raw_client.list(from_=from_, take=take, request_options=request_options) + + async def create( + self, + *, + name: ClientProfileName, + client_configuration: ClientProfileClientConfiguration, + apply_policy: ClientProfileApplyPolicy, + description: typing.Optional[ClientProfileDescription] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> ClientProfile: + """ + Create a client profile. At most one profile is allowed per tenant in this release; attempting to create a second returns 409 Conflict. The profile governs Dynamic CIMD clients matched by its apply_policy at runtime. + + Parameters + ---------- + name : ClientProfileName + + client_configuration : ClientProfileClientConfiguration + + apply_policy : ClientProfileApplyPolicy + + description : typing.Optional[ClientProfileDescription] + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + ClientProfile + Client profile successfully created. + + Examples + -------- + import asyncio + + from auth0 import ( + AsyncAuth0, + ClientProfileApplyPolicy, + ClientProfileClientConfiguration, + ) + + client = AsyncAuth0( + token="YOUR_TOKEN", + ) + + + async def main() -> None: + await client.client_profiles.create( + name="name", + client_configuration=ClientProfileClientConfiguration(), + apply_policy=ClientProfileApplyPolicy( + external_metadata_type="cimd", + external_metadata_created_by="client", + ), + ) + + + asyncio.run(main()) + """ + _response = await self._raw_client.create( + name=name, + client_configuration=client_configuration, + apply_policy=apply_policy, + description=description, + request_options=request_options, + ) + return _response.data + + async def get( + self, id: ClientProfileId, *, request_options: typing.Optional[RequestOptions] = None + ) -> ClientProfile: + """ + Retrieve a single client profile by its identifier. Returns 404 if no profile with the given ID exists for the tenant. + + Parameters + ---------- + id : ClientProfileId + ID of the client profile. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + ClientProfile + Record for existing client profile. + + Examples + -------- + import asyncio + + from auth0 import AsyncAuth0 + + client = AsyncAuth0( + token="YOUR_TOKEN", + ) + + + async def main() -> None: + await client.client_profiles.get( + id="id", + ) + + + asyncio.run(main()) + """ + _response = await self._raw_client.get(id, request_options=request_options) + return _response.data + + async def delete(self, id: ClientProfileId, *, request_options: typing.Optional[RequestOptions] = None) -> None: + """ + Delete a client profile. Idempotent: returns 204 No Content whether or not a profile with the given ID existed. Deleting the profile removes fleet governance for matched clients immediately. + + Parameters + ---------- + id : ClientProfileId + ID of the client profile. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + None + + Examples + -------- + import asyncio + + from auth0 import AsyncAuth0 + + client = AsyncAuth0( + token="YOUR_TOKEN", + ) + + + async def main() -> None: + await client.client_profiles.delete( + id="id", + ) + + + asyncio.run(main()) + """ + _response = await self._raw_client.delete(id, request_options=request_options) + return _response.data + + async def update( + self, + id: ClientProfileId, + *, + name: typing.Optional[ClientProfileName] = OMIT, + description: typing.Optional[ClientProfileDescription] = OMIT, + client_configuration: typing.Optional[ClientProfileClientConfiguration] = OMIT, + apply_policy: typing.Optional[ClientProfileApplyPolicy] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> ClientProfile: + """ + Update a client profile. Supports partial updates at the top level (JSON Merge Patch); omitted top-level fields remain unchanged. Nested objects such as client_configuration must be supplied in full. + + Parameters + ---------- + id : ClientProfileId + ID of the client profile. + + name : typing.Optional[ClientProfileName] + + description : typing.Optional[ClientProfileDescription] + + client_configuration : typing.Optional[ClientProfileClientConfiguration] + + apply_policy : typing.Optional[ClientProfileApplyPolicy] + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + ClientProfile + Client profile successfully updated. + + Examples + -------- + import asyncio + + from auth0 import AsyncAuth0 + + client = AsyncAuth0( + token="YOUR_TOKEN", + ) + + + async def main() -> None: + await client.client_profiles.update( + id="id", + ) + + + asyncio.run(main()) + """ + _response = await self._raw_client.update( + id, + name=name, + description=description, + client_configuration=client_configuration, + apply_policy=apply_policy, + request_options=request_options, + ) + return _response.data diff --git a/src/auth0/management/client_profiles/raw_client.py b/src/auth0/management/client_profiles/raw_client.py new file mode 100644 index 00000000..e8a484f5 --- /dev/null +++ b/src/auth0/management/client_profiles/raw_client.py @@ -0,0 +1,1110 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing +from json.decoder import JSONDecodeError + +from ..core.api_error import ApiError +from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper +from ..core.http_response import AsyncHttpResponse, HttpResponse +from ..core.jsonable_encoder import quote_path_param +from ..core.pagination import AsyncPager, SyncPager +from ..core.parse_error import ParsingError +from ..core.pydantic_utilities import parse_obj_as +from ..core.request_options import RequestOptions +from ..core.serialization import convert_and_respect_annotation_metadata +from ..errors.bad_request_error import BadRequestError +from ..errors.conflict_error import ConflictError +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.client_profile import ClientProfile +from ..types.client_profile_apply_policy import ClientProfileApplyPolicy +from ..types.client_profile_client_configuration import ClientProfileClientConfiguration +from ..types.client_profile_description import ClientProfileDescription +from ..types.client_profile_id import ClientProfileId +from ..types.client_profile_name import ClientProfileName +from ..types.list_client_profiles_paginated_response_content import ListClientProfilesPaginatedResponseContent +from pydantic import ValidationError + +# this is used as the default value for optional parameters +OMIT = typing.cast(typing.Any, ...) + + +class RawClientProfilesClient: + def __init__(self, *, client_wrapper: SyncClientWrapper): + self._client_wrapper = client_wrapper + + def list( + self, + *, + from_: typing.Optional[str] = None, + take: typing.Optional[int] = 50, + request_options: typing.Optional[RequestOptions] = None, + ) -> SyncPager[ClientProfile, ListClientProfilesPaginatedResponseContent]: + """ + Retrieve a paginated list of client profiles for the tenant. Uses checkpoint pagination: pass the next cursor from a previous response as the from query parameter to retrieve the following page. + + Parameters + ---------- + from_ : typing.Optional[str] + Optional Id from which to start selection. + + take : typing.Optional[int] + Number of results per page. Defaults to 50. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + SyncPager[ClientProfile, ListClientProfilesPaginatedResponseContent] + Client profiles successfully retrieved. + """ + _response = self._client_wrapper.httpx_client.request( + "client-profiles", + method="GET", + params={ + "from": from_, + "take": take, + }, + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _parsed_response = typing.cast( + ListClientProfilesPaginatedResponseContent, + parse_obj_as( + type_=ListClientProfilesPaginatedResponseContent, # type: ignore + object_=_response.json(), + ), + ) + _items = _parsed_response.client_profiles + _parsed_next = _parsed_response.next + _has_next = _parsed_next is not None and _parsed_next != "" + _get_next = lambda: self.list( + from_=_parsed_next, + take=take, + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + def create( + self, + *, + name: ClientProfileName, + client_configuration: ClientProfileClientConfiguration, + apply_policy: ClientProfileApplyPolicy, + description: typing.Optional[ClientProfileDescription] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> HttpResponse[ClientProfile]: + """ + Create a client profile. At most one profile is allowed per tenant in this release; attempting to create a second returns 409 Conflict. The profile governs Dynamic CIMD clients matched by its apply_policy at runtime. + + Parameters + ---------- + name : ClientProfileName + + client_configuration : ClientProfileClientConfiguration + + apply_policy : ClientProfileApplyPolicy + + description : typing.Optional[ClientProfileDescription] + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[ClientProfile] + Client profile successfully created. + """ + _response = self._client_wrapper.httpx_client.request( + "client-profiles", + method="POST", + json={ + "name": name, + "description": description, + "client_configuration": convert_and_respect_annotation_metadata( + object_=client_configuration, annotation=ClientProfileClientConfiguration, direction="write" + ), + "apply_policy": convert_and_respect_annotation_metadata( + object_=apply_policy, annotation=ClientProfileApplyPolicy, direction="write" + ), + }, + headers={ + "content-type": "application/json", + }, + request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + ClientProfile, + parse_obj_as( + type_=ClientProfile, # type: ignore + object_=_response.json(), + ), + ) + return HttpResponse(response=_response, data=_data) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 409: + raise ConflictError( + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + def get( + self, id: ClientProfileId, *, request_options: typing.Optional[RequestOptions] = None + ) -> HttpResponse[ClientProfile]: + """ + Retrieve a single client profile by its identifier. Returns 404 if no profile with the given ID exists for the tenant. + + Parameters + ---------- + id : ClientProfileId + ID of the client profile. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[ClientProfile] + Record for existing client profile. + """ + _response = self._client_wrapper.httpx_client.request( + f"client-profiles/{quote_path_param(id)}", + method="GET", + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + ClientProfile, + parse_obj_as( + type_=ClientProfile, # type: ignore + object_=_response.json(), + ), + ) + return HttpResponse(response=_response, data=_data) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + def delete( + self, id: ClientProfileId, *, request_options: typing.Optional[RequestOptions] = None + ) -> HttpResponse[None]: + """ + Delete a client profile. Idempotent: returns 204 No Content whether or not a profile with the given ID existed. Deleting the profile removes fleet governance for matched clients immediately. + + Parameters + ---------- + id : ClientProfileId + ID of the client profile. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[None] + """ + _response = self._client_wrapper.httpx_client.request( + f"client-profiles/{quote_path_param(id)}", + method="DELETE", + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + return HttpResponse(response=_response, data=None) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + def update( + self, + id: ClientProfileId, + *, + name: typing.Optional[ClientProfileName] = OMIT, + description: typing.Optional[ClientProfileDescription] = OMIT, + client_configuration: typing.Optional[ClientProfileClientConfiguration] = OMIT, + apply_policy: typing.Optional[ClientProfileApplyPolicy] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> HttpResponse[ClientProfile]: + """ + Update a client profile. Supports partial updates at the top level (JSON Merge Patch); omitted top-level fields remain unchanged. Nested objects such as client_configuration must be supplied in full. + + Parameters + ---------- + id : ClientProfileId + ID of the client profile. + + name : typing.Optional[ClientProfileName] + + description : typing.Optional[ClientProfileDescription] + + client_configuration : typing.Optional[ClientProfileClientConfiguration] + + apply_policy : typing.Optional[ClientProfileApplyPolicy] + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[ClientProfile] + Client profile successfully updated. + """ + _response = self._client_wrapper.httpx_client.request( + f"client-profiles/{quote_path_param(id)}", + method="PATCH", + json={ + "name": name, + "description": description, + "client_configuration": convert_and_respect_annotation_metadata( + object_=client_configuration, annotation=ClientProfileClientConfiguration, direction="write" + ), + "apply_policy": convert_and_respect_annotation_metadata( + object_=apply_policy, annotation=ClientProfileApplyPolicy, direction="write" + ), + }, + headers={ + "content-type": "application/json", + }, + request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + ClientProfile, + parse_obj_as( + type_=ClientProfile, # type: ignore + object_=_response.json(), + ), + ) + return HttpResponse(response=_response, data=_data) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + +class AsyncRawClientProfilesClient: + def __init__(self, *, client_wrapper: AsyncClientWrapper): + self._client_wrapper = client_wrapper + + async def list( + self, + *, + from_: typing.Optional[str] = None, + take: typing.Optional[int] = 50, + request_options: typing.Optional[RequestOptions] = None, + ) -> AsyncPager[ClientProfile, ListClientProfilesPaginatedResponseContent]: + """ + Retrieve a paginated list of client profiles for the tenant. Uses checkpoint pagination: pass the next cursor from a previous response as the from query parameter to retrieve the following page. + + Parameters + ---------- + from_ : typing.Optional[str] + Optional Id from which to start selection. + + take : typing.Optional[int] + Number of results per page. Defaults to 50. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncPager[ClientProfile, ListClientProfilesPaginatedResponseContent] + Client profiles successfully retrieved. + """ + _response = await self._client_wrapper.httpx_client.request( + "client-profiles", + method="GET", + params={ + "from": from_, + "take": take, + }, + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _parsed_response = typing.cast( + ListClientProfilesPaginatedResponseContent, + parse_obj_as( + type_=ListClientProfilesPaginatedResponseContent, # type: ignore + object_=_response.json(), + ), + ) + _items = _parsed_response.client_profiles + _parsed_next = _parsed_response.next + _has_next = _parsed_next is not None and _parsed_next != "" + + async def _get_next(): + return await self.list( + from_=_parsed_next, + take=take, + request_options=request_options, + ) + + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + async def create( + self, + *, + name: ClientProfileName, + client_configuration: ClientProfileClientConfiguration, + apply_policy: ClientProfileApplyPolicy, + description: typing.Optional[ClientProfileDescription] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> AsyncHttpResponse[ClientProfile]: + """ + Create a client profile. At most one profile is allowed per tenant in this release; attempting to create a second returns 409 Conflict. The profile governs Dynamic CIMD clients matched by its apply_policy at runtime. + + Parameters + ---------- + name : ClientProfileName + + client_configuration : ClientProfileClientConfiguration + + apply_policy : ClientProfileApplyPolicy + + description : typing.Optional[ClientProfileDescription] + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[ClientProfile] + Client profile successfully created. + """ + _response = await self._client_wrapper.httpx_client.request( + "client-profiles", + method="POST", + json={ + "name": name, + "description": description, + "client_configuration": convert_and_respect_annotation_metadata( + object_=client_configuration, annotation=ClientProfileClientConfiguration, direction="write" + ), + "apply_policy": convert_and_respect_annotation_metadata( + object_=apply_policy, annotation=ClientProfileApplyPolicy, direction="write" + ), + }, + headers={ + "content-type": "application/json", + }, + request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + ClientProfile, + parse_obj_as( + type_=ClientProfile, # type: ignore + object_=_response.json(), + ), + ) + return AsyncHttpResponse(response=_response, data=_data) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 409: + raise ConflictError( + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + async def get( + self, id: ClientProfileId, *, request_options: typing.Optional[RequestOptions] = None + ) -> AsyncHttpResponse[ClientProfile]: + """ + Retrieve a single client profile by its identifier. Returns 404 if no profile with the given ID exists for the tenant. + + Parameters + ---------- + id : ClientProfileId + ID of the client profile. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[ClientProfile] + Record for existing client profile. + """ + _response = await self._client_wrapper.httpx_client.request( + f"client-profiles/{quote_path_param(id)}", + method="GET", + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + ClientProfile, + parse_obj_as( + type_=ClientProfile, # type: ignore + object_=_response.json(), + ), + ) + return AsyncHttpResponse(response=_response, data=_data) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + async def delete( + self, id: ClientProfileId, *, request_options: typing.Optional[RequestOptions] = None + ) -> AsyncHttpResponse[None]: + """ + Delete a client profile. Idempotent: returns 204 No Content whether or not a profile with the given ID existed. Deleting the profile removes fleet governance for matched clients immediately. + + Parameters + ---------- + id : ClientProfileId + ID of the client profile. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[None] + """ + _response = await self._client_wrapper.httpx_client.request( + f"client-profiles/{quote_path_param(id)}", + method="DELETE", + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + return AsyncHttpResponse(response=_response, data=None) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + async def update( + self, + id: ClientProfileId, + *, + name: typing.Optional[ClientProfileName] = OMIT, + description: typing.Optional[ClientProfileDescription] = OMIT, + client_configuration: typing.Optional[ClientProfileClientConfiguration] = OMIT, + apply_policy: typing.Optional[ClientProfileApplyPolicy] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> AsyncHttpResponse[ClientProfile]: + """ + Update a client profile. Supports partial updates at the top level (JSON Merge Patch); omitted top-level fields remain unchanged. Nested objects such as client_configuration must be supplied in full. + + Parameters + ---------- + id : ClientProfileId + ID of the client profile. + + name : typing.Optional[ClientProfileName] + + description : typing.Optional[ClientProfileDescription] + + client_configuration : typing.Optional[ClientProfileClientConfiguration] + + apply_policy : typing.Optional[ClientProfileApplyPolicy] + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[ClientProfile] + Client profile successfully updated. + """ + _response = await self._client_wrapper.httpx_client.request( + f"client-profiles/{quote_path_param(id)}", + method="PATCH", + json={ + "name": name, + "description": description, + "client_configuration": convert_and_respect_annotation_metadata( + object_=client_configuration, annotation=ClientProfileClientConfiguration, direction="write" + ), + "apply_policy": convert_and_respect_annotation_metadata( + object_=apply_policy, annotation=ClientProfileApplyPolicy, direction="write" + ), + }, + headers={ + "content-type": "application/json", + }, + request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + ClientProfile, + parse_obj_as( + type_=ClientProfile, # type: ignore + object_=_response.json(), + ), + ) + return AsyncHttpResponse(response=_response, data=_data) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) diff --git a/src/auth0/management/clients/client.py b/src/auth0/management/clients/client.py index 881a8eec..0f2e60f8 100644 --- a/src/auth0/management/clients/client.py +++ b/src/auth0/management/clients/client.py @@ -10,6 +10,9 @@ from ..types.b_2_b_integration_configuration import B2BIntegrationConfiguration from ..types.client import Client from ..types.client_addons import ClientAddons +from ..types.client_anonymous_session_transfer_network_binding_enum import ( + ClientAnonymousSessionTransferNetworkBindingEnum, +) from ..types.client_app_type_enum import ClientAppTypeEnum from ..types.client_async_approval_notifications_channels_api_patch_configuration import ( ClientAsyncApprovalNotificationsChannelsApiPatchConfiguration, @@ -28,6 +31,7 @@ from ..types.client_my_organization_patch_configuration import ClientMyOrganizationPatchConfiguration from ..types.client_my_organization_post_configuration import ClientMyOrganizationPostConfiguration from ..types.client_oidc_backchannel_logout_settings import ClientOidcBackchannelLogoutSettings +from ..types.client_oidc_support_patch import ClientOidcSupportPatch from ..types.client_oidc_support_post import ClientOidcSupportPost from ..types.client_organization_discovery_enum import ClientOrganizationDiscoveryEnum from ..types.client_organization_require_behavior_enum import ClientOrganizationRequireBehaviorEnum @@ -36,9 +40,11 @@ from ..types.client_organization_usage_patch_enum import ClientOrganizationUsagePatchEnum from ..types.client_redirection_policy_enum import ClientRedirectionPolicyEnum from ..types.client_refresh_token_configuration import ClientRefreshTokenConfiguration +from ..types.client_search_response import ClientSearchResponse from ..types.client_session_transfer_configuration import ClientSessionTransferConfiguration from ..types.client_signed_request_object_with_credential_id import ClientSignedRequestObjectWithCredentialId from ..types.client_signed_request_object_with_public_key import ClientSignedRequestObjectWithPublicKey +from ..types.client_sort_field_enum import ClientSortFieldEnum from ..types.client_third_party_security_mode_enum import ClientThirdPartySecurityModeEnum from ..types.client_token_endpoint_auth_method_enum import ClientTokenEndpointAuthMethodEnum from ..types.client_token_endpoint_auth_method_or_null_enum import ClientTokenEndpointAuthMethodOrNullEnum @@ -63,6 +69,8 @@ from ..types.preview_cimd_metadata_response_content import PreviewCimdMetadataResponseContent from ..types.register_cimd_client_response_content import RegisterCimdClientResponseContent from ..types.rotate_client_secret_response_content import RotateClientSecretResponseContent +from ..types.search_clients_response_content import SearchClientsResponseContent +from ..types.search_parser_enum import SearchParserEnum from ..types.update_anonymous_sessions import UpdateAnonymousSessions from ..types.update_client_response_content import UpdateClientResponseContent from ..types.update_identity_assertion_authorization_grant import UpdateIdentityAssertionAuthorizationGrant @@ -270,6 +278,9 @@ def create( resource_server_identifier: typing.Optional[str] = OMIT, identity_assertion_authorization_grant: typing.Optional[CreateIdentityAssertionAuthorizationGrant] = OMIT, anonymous_sessions: typing.Optional[CreateAnonymousSessions] = OMIT, + enforce_anon_session_transfer_network_binding: typing.Optional[ + ClientAnonymousSessionTransferNetworkBindingEnum + ] = OMIT, third_party_security_mode: typing.Optional[ClientThirdPartySecurityModeEnum] = OMIT, redirection_policy: typing.Optional[ClientRedirectionPolicyEnum] = OMIT, express_configuration: typing.Optional[ExpressConfiguration] = OMIT, @@ -434,6 +445,8 @@ def create( anonymous_sessions : typing.Optional[CreateAnonymousSessions] + enforce_anon_session_transfer_network_binding : typing.Optional[ClientAnonymousSessionTransferNetworkBindingEnum] + third_party_security_mode : typing.Optional[ClientThirdPartySecurityModeEnum] redirection_policy : typing.Optional[ClientRedirectionPolicyEnum] @@ -520,6 +533,7 @@ def create( resource_server_identifier=resource_server_identifier, identity_assertion_authorization_grant=identity_assertion_authorization_grant, anonymous_sessions=anonymous_sessions, + enforce_anon_session_transfer_network_binding=enforce_anon_session_transfer_network_binding, third_party_security_mode=third_party_security_mode, redirection_policy=redirection_policy, express_configuration=express_configuration, @@ -615,6 +629,96 @@ def register_cimd_client( ) return _response.data + def search( + self, + *, + q: typing.Optional[str] = None, + parser: typing.Optional[SearchParserEnum] = None, + fields: typing.Optional[str] = None, + include_fields: typing.Optional[bool] = None, + take: typing.Optional[int] = 50, + from_: typing.Optional[str] = None, + sort: typing.Optional[ClientSortFieldEnum] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> SyncPager[ClientSearchResponse, SearchClientsResponseContent]: + """ + Search clients using SCIM or Lucene filter syntax with low-latency, eventually consistent results. + Use the parser parameter to specify "scim" or "lucene" syntax (default: "lucene"). + This endpoint provides an alternative to the standard GET /clients endpoint with better performance + for complex queries. Results may not reflect recent updates immediately. + + - This endpoint only supports `read:clients` and `read:client_summary` scopes. The `read:client_keys` and `read:client_credentials` scopes are not supported. + - The following fields are never returned by this endpoint: + - `client_secret` + - `encryption_key` + - `signing_keys` + - `owners` + - `addons` + + Parameters + ---------- + q : typing.Optional[str] + Filter expression in SCIM or Lucene syntax (depending on parser parameter). SCIM examples: `name eq "Auth0"`, `name sw "auth" and app_type eq "spa"`. SCIM operators: eq, ne, sw, ew, co, pr, gt, ge, lt, le, and, or.

Supported Fields:
  • client_id - Auth0 client ID (case-sensitive, exact match)
  • external_client_id - URL of the Client ID Metadata Document (CIMD); case-sensitive, exact match
  • name - Client name (supports contains, starts-with, ends-with operators; sortable)
  • app_type - Application type (e.g. "spa", "native", "non_interactive")
  • is_first_party - Whether the client is first-party (boolean)
  • updated_at - Last update timestamp (supports date range operators; sortable)
  • metadata.{key} - Filter by client metadata key-value pairs (max 2-level key depth, values indexed up to 64 characters)
  • client_grant.organization_id - Filter by associated organization ID
  • client_grant.allow_any_organization - Filter by allow any organization setting
Maximum 5 filter operations per query. Results are eventually consistent and may not reflect recent updates. + + parser : typing.Optional[SearchParserEnum] + Query parser to use for the filter expression. Use "scim" for SCIM filter syntax or "lucene" for Lucene query syntax (default). + + fields : typing.Optional[str] + Comma-separated list of fields to include or exclude in the response. Works with the include_fields parameter to control projection mode. Maximum 50 fields. + + include_fields : typing.Optional[bool] + Controls field projection mode. Set to true to include only fields specified in the fields parameter. Set to false to exclude fields specified in the fields parameter. Defaults to true if not specified. + + take : typing.Optional[int] + Maximum number of results to return per page (1-100). Defaults to 50. + + from_ : typing.Optional[str] + Cursor for the next page of results. Use the value from the next field in the previous response. + + sort : typing.Optional[ClientSortFieldEnum] + Field name to sort results by in ascending order. Defaults to insertion order (oldest first) if not provided. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + SyncPager[ClientSearchResponse, SearchClientsResponseContent] + Clients successfully retrieved. + + Examples + -------- + from auth0 import Auth0 + + client = Auth0( + token="YOUR_TOKEN", + ) + response = client.clients.search( + q="q", + parser="scim", + fields="fields", + include_fields=True, + take=1, + from_="from", + sort="name", + ) + for item in response: + yield item + # alternatively, you can paginate page-by-page + for page in response.iter_pages(): + yield page + """ + return self._raw_client.search( + q=q, + parser=parser, + fields=fields, + include_fields=include_fields, + take=take, + from_=from_, + sort=sort, + request_options=request_options, + ) + def get( self, id: str, @@ -751,6 +855,9 @@ def update( token_quota: typing.Optional[UpdateTokenQuota] = OMIT, identity_assertion_authorization_grant: typing.Optional[UpdateIdentityAssertionAuthorizationGrant] = OMIT, anonymous_sessions: typing.Optional[UpdateAnonymousSessions] = OMIT, + enforce_anon_session_transfer_network_binding: typing.Optional[ + ClientAnonymousSessionTransferNetworkBindingEnum + ] = OMIT, form_template: typing.Optional[str] = OMIT, addons: typing.Optional[ClientAddons] = OMIT, client_metadata: typing.Optional[ClientMetadata] = OMIT, @@ -780,6 +887,7 @@ def update( ] = OMIT, third_party_security_mode: typing.Optional[ClientThirdPartySecurityModeEnum] = OMIT, redirection_policy: typing.Optional[ClientRedirectionPolicyEnum] = OMIT, + oidc_support: typing.Optional[ClientOidcSupportPatch] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> UpdateClientResponseContent: """ @@ -883,6 +991,8 @@ def update( anonymous_sessions : typing.Optional[UpdateAnonymousSessions] + enforce_anon_session_transfer_network_binding : typing.Optional[ClientAnonymousSessionTransferNetworkBindingEnum] + form_template : typing.Optional[str] Form template for WS-Federation protocol @@ -947,6 +1057,8 @@ def update( redirection_policy : typing.Optional[ClientRedirectionPolicyEnum] + oidc_support : typing.Optional[ClientOidcSupportPatch] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -999,6 +1111,7 @@ def update( token_quota=token_quota, identity_assertion_authorization_grant=identity_assertion_authorization_grant, anonymous_sessions=anonymous_sessions, + enforce_anon_session_transfer_network_binding=enforce_anon_session_transfer_network_binding, form_template=form_template, addons=addons, client_metadata=client_metadata, @@ -1026,6 +1139,7 @@ def update( async_approval_notification_channels=async_approval_notification_channels, third_party_security_mode=third_party_security_mode, redirection_policy=redirection_policy, + oidc_support=oidc_support, request_options=request_options, ) return _response.data @@ -1287,6 +1401,9 @@ async def create( resource_server_identifier: typing.Optional[str] = OMIT, identity_assertion_authorization_grant: typing.Optional[CreateIdentityAssertionAuthorizationGrant] = OMIT, anonymous_sessions: typing.Optional[CreateAnonymousSessions] = OMIT, + enforce_anon_session_transfer_network_binding: typing.Optional[ + ClientAnonymousSessionTransferNetworkBindingEnum + ] = OMIT, third_party_security_mode: typing.Optional[ClientThirdPartySecurityModeEnum] = OMIT, redirection_policy: typing.Optional[ClientRedirectionPolicyEnum] = OMIT, express_configuration: typing.Optional[ExpressConfiguration] = OMIT, @@ -1451,6 +1568,8 @@ async def create( anonymous_sessions : typing.Optional[CreateAnonymousSessions] + enforce_anon_session_transfer_network_binding : typing.Optional[ClientAnonymousSessionTransferNetworkBindingEnum] + third_party_security_mode : typing.Optional[ClientThirdPartySecurityModeEnum] redirection_policy : typing.Optional[ClientRedirectionPolicyEnum] @@ -1545,6 +1664,7 @@ async def main() -> None: resource_server_identifier=resource_server_identifier, identity_assertion_authorization_grant=identity_assertion_authorization_grant, anonymous_sessions=anonymous_sessions, + enforce_anon_session_transfer_network_binding=enforce_anon_session_transfer_network_binding, third_party_security_mode=third_party_security_mode, redirection_policy=redirection_policy, express_configuration=express_configuration, @@ -1656,6 +1776,105 @@ async def main() -> None: ) return _response.data + async def search( + self, + *, + q: typing.Optional[str] = None, + parser: typing.Optional[SearchParserEnum] = None, + fields: typing.Optional[str] = None, + include_fields: typing.Optional[bool] = None, + take: typing.Optional[int] = 50, + from_: typing.Optional[str] = None, + sort: typing.Optional[ClientSortFieldEnum] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> AsyncPager[ClientSearchResponse, SearchClientsResponseContent]: + """ + Search clients using SCIM or Lucene filter syntax with low-latency, eventually consistent results. + Use the parser parameter to specify "scim" or "lucene" syntax (default: "lucene"). + This endpoint provides an alternative to the standard GET /clients endpoint with better performance + for complex queries. Results may not reflect recent updates immediately. + + - This endpoint only supports `read:clients` and `read:client_summary` scopes. The `read:client_keys` and `read:client_credentials` scopes are not supported. + - The following fields are never returned by this endpoint: + - `client_secret` + - `encryption_key` + - `signing_keys` + - `owners` + - `addons` + + Parameters + ---------- + q : typing.Optional[str] + Filter expression in SCIM or Lucene syntax (depending on parser parameter). SCIM examples: `name eq "Auth0"`, `name sw "auth" and app_type eq "spa"`. SCIM operators: eq, ne, sw, ew, co, pr, gt, ge, lt, le, and, or.

Supported Fields:
  • client_id - Auth0 client ID (case-sensitive, exact match)
  • external_client_id - URL of the Client ID Metadata Document (CIMD); case-sensitive, exact match
  • name - Client name (supports contains, starts-with, ends-with operators; sortable)
  • app_type - Application type (e.g. "spa", "native", "non_interactive")
  • is_first_party - Whether the client is first-party (boolean)
  • updated_at - Last update timestamp (supports date range operators; sortable)
  • metadata.{key} - Filter by client metadata key-value pairs (max 2-level key depth, values indexed up to 64 characters)
  • client_grant.organization_id - Filter by associated organization ID
  • client_grant.allow_any_organization - Filter by allow any organization setting
Maximum 5 filter operations per query. Results are eventually consistent and may not reflect recent updates. + + parser : typing.Optional[SearchParserEnum] + Query parser to use for the filter expression. Use "scim" for SCIM filter syntax or "lucene" for Lucene query syntax (default). + + fields : typing.Optional[str] + Comma-separated list of fields to include or exclude in the response. Works with the include_fields parameter to control projection mode. Maximum 50 fields. + + include_fields : typing.Optional[bool] + Controls field projection mode. Set to true to include only fields specified in the fields parameter. Set to false to exclude fields specified in the fields parameter. Defaults to true if not specified. + + take : typing.Optional[int] + Maximum number of results to return per page (1-100). Defaults to 50. + + from_ : typing.Optional[str] + Cursor for the next page of results. Use the value from the next field in the previous response. + + sort : typing.Optional[ClientSortFieldEnum] + Field name to sort results by in ascending order. Defaults to insertion order (oldest first) if not provided. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncPager[ClientSearchResponse, SearchClientsResponseContent] + Clients successfully retrieved. + + Examples + -------- + import asyncio + + from auth0 import AsyncAuth0 + + client = AsyncAuth0( + token="YOUR_TOKEN", + ) + + + async def main() -> None: + response = await client.clients.search( + q="q", + parser="scim", + fields="fields", + include_fields=True, + take=1, + from_="from", + sort="name", + ) + async for item in response: + yield item + + # alternatively, you can paginate page-by-page + async for page in response.iter_pages(): + yield page + + + asyncio.run(main()) + """ + return await self._raw_client.search( + q=q, + parser=parser, + fields=fields, + include_fields=include_fields, + take=take, + from_=from_, + sort=sort, + request_options=request_options, + ) + async def get( self, id: str, @@ -1808,6 +2027,9 @@ async def update( token_quota: typing.Optional[UpdateTokenQuota] = OMIT, identity_assertion_authorization_grant: typing.Optional[UpdateIdentityAssertionAuthorizationGrant] = OMIT, anonymous_sessions: typing.Optional[UpdateAnonymousSessions] = OMIT, + enforce_anon_session_transfer_network_binding: typing.Optional[ + ClientAnonymousSessionTransferNetworkBindingEnum + ] = OMIT, form_template: typing.Optional[str] = OMIT, addons: typing.Optional[ClientAddons] = OMIT, client_metadata: typing.Optional[ClientMetadata] = OMIT, @@ -1837,6 +2059,7 @@ async def update( ] = OMIT, third_party_security_mode: typing.Optional[ClientThirdPartySecurityModeEnum] = OMIT, redirection_policy: typing.Optional[ClientRedirectionPolicyEnum] = OMIT, + oidc_support: typing.Optional[ClientOidcSupportPatch] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> UpdateClientResponseContent: """ @@ -1940,6 +2163,8 @@ async def update( anonymous_sessions : typing.Optional[UpdateAnonymousSessions] + enforce_anon_session_transfer_network_binding : typing.Optional[ClientAnonymousSessionTransferNetworkBindingEnum] + form_template : typing.Optional[str] Form template for WS-Federation protocol @@ -2004,6 +2229,8 @@ async def update( redirection_policy : typing.Optional[ClientRedirectionPolicyEnum] + oidc_support : typing.Optional[ClientOidcSupportPatch] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -2064,6 +2291,7 @@ async def main() -> None: token_quota=token_quota, identity_assertion_authorization_grant=identity_assertion_authorization_grant, anonymous_sessions=anonymous_sessions, + enforce_anon_session_transfer_network_binding=enforce_anon_session_transfer_network_binding, form_template=form_template, addons=addons, client_metadata=client_metadata, @@ -2091,6 +2319,7 @@ async def main() -> None: async_approval_notification_channels=async_approval_notification_channels, third_party_security_mode=third_party_security_mode, redirection_policy=redirection_policy, + oidc_support=oidc_support, request_options=request_options, ) return _response.data diff --git a/src/auth0/management/clients/raw_client.py b/src/auth0/management/clients/raw_client.py index 0484a914..949ba67a 100644 --- a/src/auth0/management/clients/raw_client.py +++ b/src/auth0/management/clients/raw_client.py @@ -15,6 +15,7 @@ from ..errors.bad_request_error import BadRequestError from ..errors.conflict_error import ConflictError from ..errors.forbidden_error import ForbiddenError +from ..errors.gateway_timeout_error import GatewayTimeoutError from ..errors.internal_server_error import InternalServerError from ..errors.not_found_error import NotFoundError from ..errors.too_many_requests_error import TooManyRequestsError @@ -22,6 +23,9 @@ from ..types.b_2_b_integration_configuration import B2BIntegrationConfiguration from ..types.client import Client from ..types.client_addons import ClientAddons +from ..types.client_anonymous_session_transfer_network_binding_enum import ( + ClientAnonymousSessionTransferNetworkBindingEnum, +) from ..types.client_app_type_enum import ClientAppTypeEnum from ..types.client_async_approval_notifications_channels_api_patch_configuration import ( ClientAsyncApprovalNotificationsChannelsApiPatchConfiguration, @@ -40,6 +44,7 @@ from ..types.client_my_organization_patch_configuration import ClientMyOrganizationPatchConfiguration from ..types.client_my_organization_post_configuration import ClientMyOrganizationPostConfiguration from ..types.client_oidc_backchannel_logout_settings import ClientOidcBackchannelLogoutSettings +from ..types.client_oidc_support_patch import ClientOidcSupportPatch from ..types.client_oidc_support_post import ClientOidcSupportPost from ..types.client_organization_discovery_enum import ClientOrganizationDiscoveryEnum from ..types.client_organization_require_behavior_enum import ClientOrganizationRequireBehaviorEnum @@ -48,9 +53,11 @@ from ..types.client_organization_usage_patch_enum import ClientOrganizationUsagePatchEnum from ..types.client_redirection_policy_enum import ClientRedirectionPolicyEnum from ..types.client_refresh_token_configuration import ClientRefreshTokenConfiguration +from ..types.client_search_response import ClientSearchResponse from ..types.client_session_transfer_configuration import ClientSessionTransferConfiguration from ..types.client_signed_request_object_with_credential_id import ClientSignedRequestObjectWithCredentialId from ..types.client_signed_request_object_with_public_key import ClientSignedRequestObjectWithPublicKey +from ..types.client_sort_field_enum import ClientSortFieldEnum from ..types.client_third_party_security_mode_enum import ClientThirdPartySecurityModeEnum from ..types.client_token_endpoint_auth_method_enum import ClientTokenEndpointAuthMethodEnum from ..types.client_token_endpoint_auth_method_or_null_enum import ClientTokenEndpointAuthMethodOrNullEnum @@ -75,6 +82,8 @@ from ..types.preview_cimd_metadata_response_content import PreviewCimdMetadataResponseContent from ..types.register_cimd_client_response_content import RegisterCimdClientResponseContent from ..types.rotate_client_secret_response_content import RotateClientSecretResponseContent +from ..types.search_clients_response_content import SearchClientsResponseContent +from ..types.search_parser_enum import SearchParserEnum from ..types.update_anonymous_sessions import UpdateAnonymousSessions from ..types.update_client_response_content import UpdateClientResponseContent from ..types.update_identity_assertion_authorization_grant import UpdateIdentityAssertionAuthorizationGrant @@ -323,6 +332,9 @@ def create( resource_server_identifier: typing.Optional[str] = OMIT, identity_assertion_authorization_grant: typing.Optional[CreateIdentityAssertionAuthorizationGrant] = OMIT, anonymous_sessions: typing.Optional[CreateAnonymousSessions] = OMIT, + enforce_anon_session_transfer_network_binding: typing.Optional[ + ClientAnonymousSessionTransferNetworkBindingEnum + ] = OMIT, third_party_security_mode: typing.Optional[ClientThirdPartySecurityModeEnum] = OMIT, redirection_policy: typing.Optional[ClientRedirectionPolicyEnum] = OMIT, express_configuration: typing.Optional[ExpressConfiguration] = OMIT, @@ -487,6 +499,8 @@ def create( anonymous_sessions : typing.Optional[CreateAnonymousSessions] + enforce_anon_session_transfer_network_binding : typing.Optional[ClientAnonymousSessionTransferNetworkBindingEnum] + third_party_security_mode : typing.Optional[ClientThirdPartySecurityModeEnum] redirection_policy : typing.Optional[ClientRedirectionPolicyEnum] @@ -613,6 +627,7 @@ def create( "anonymous_sessions": convert_and_respect_annotation_metadata( object_=anonymous_sessions, annotation=CreateAnonymousSessions, direction="write" ), + "enforce_anon_session_transfer_network_binding": enforce_anon_session_transfer_network_binding, "third_party_security_mode": third_party_security_mode, "redirection_policy": redirection_policy, "express_configuration": convert_and_respect_annotation_metadata( @@ -915,6 +930,186 @@ def register_cimd_client( ), ), ) + if _response.status_code == 409: + raise ConflictError( + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 500: + raise InternalServerError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + def search( + self, + *, + q: typing.Optional[str] = None, + parser: typing.Optional[SearchParserEnum] = None, + fields: typing.Optional[str] = None, + include_fields: typing.Optional[bool] = None, + take: typing.Optional[int] = 50, + from_: typing.Optional[str] = None, + sort: typing.Optional[ClientSortFieldEnum] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> SyncPager[ClientSearchResponse, SearchClientsResponseContent]: + """ + Search clients using SCIM or Lucene filter syntax with low-latency, eventually consistent results. + Use the parser parameter to specify "scim" or "lucene" syntax (default: "lucene"). + This endpoint provides an alternative to the standard GET /clients endpoint with better performance + for complex queries. Results may not reflect recent updates immediately. + + - This endpoint only supports `read:clients` and `read:client_summary` scopes. The `read:client_keys` and `read:client_credentials` scopes are not supported. + - The following fields are never returned by this endpoint: + - `client_secret` + - `encryption_key` + - `signing_keys` + - `owners` + - `addons` + + Parameters + ---------- + q : typing.Optional[str] + Filter expression in SCIM or Lucene syntax (depending on parser parameter). SCIM examples: `name eq "Auth0"`, `name sw "auth" and app_type eq "spa"`. SCIM operators: eq, ne, sw, ew, co, pr, gt, ge, lt, le, and, or.

Supported Fields:
  • client_id - Auth0 client ID (case-sensitive, exact match)
  • external_client_id - URL of the Client ID Metadata Document (CIMD); case-sensitive, exact match
  • name - Client name (supports contains, starts-with, ends-with operators; sortable)
  • app_type - Application type (e.g. "spa", "native", "non_interactive")
  • is_first_party - Whether the client is first-party (boolean)
  • updated_at - Last update timestamp (supports date range operators; sortable)
  • metadata.{key} - Filter by client metadata key-value pairs (max 2-level key depth, values indexed up to 64 characters)
  • client_grant.organization_id - Filter by associated organization ID
  • client_grant.allow_any_organization - Filter by allow any organization setting
Maximum 5 filter operations per query. Results are eventually consistent and may not reflect recent updates. + + parser : typing.Optional[SearchParserEnum] + Query parser to use for the filter expression. Use "scim" for SCIM filter syntax or "lucene" for Lucene query syntax (default). + + fields : typing.Optional[str] + Comma-separated list of fields to include or exclude in the response. Works with the include_fields parameter to control projection mode. Maximum 50 fields. + + include_fields : typing.Optional[bool] + Controls field projection mode. Set to true to include only fields specified in the fields parameter. Set to false to exclude fields specified in the fields parameter. Defaults to true if not specified. + + take : typing.Optional[int] + Maximum number of results to return per page (1-100). Defaults to 50. + + from_ : typing.Optional[str] + Cursor for the next page of results. Use the value from the next field in the previous response. + + sort : typing.Optional[ClientSortFieldEnum] + Field name to sort results by in ascending order. Defaults to insertion order (oldest first) if not provided. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + SyncPager[ClientSearchResponse, SearchClientsResponseContent] + Clients successfully retrieved. + """ + _response = self._client_wrapper.httpx_client.request( + "clients/search", + method="GET", + params={ + "q": q, + "parser": parser, + "fields": fields, + "include_fields": include_fields, + "take": take, + "from": from_, + "sort": sort, + }, + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _parsed_response = typing.cast( + SearchClientsResponseContent, + parse_obj_as( + type_=SearchClientsResponseContent, # type: ignore + object_=_response.json(), + ), + ) + _items = _parsed_response.clients + _parsed_next = _parsed_response.next + _has_next = _parsed_next is not None and _parsed_next != "" + _get_next = lambda: self.search( + q=q, + parser=parser, + fields=fields, + include_fields=include_fields, + take=take, + from_=_parsed_next, + sort=sort, + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + 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), @@ -937,6 +1132,17 @@ def register_cimd_client( ), ), ) + if _response.status_code == 504: + raise GatewayTimeoutError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) _response_json = _response.json() except JSONDecodeError: raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) @@ -1194,6 +1400,9 @@ def update( token_quota: typing.Optional[UpdateTokenQuota] = OMIT, identity_assertion_authorization_grant: typing.Optional[UpdateIdentityAssertionAuthorizationGrant] = OMIT, anonymous_sessions: typing.Optional[UpdateAnonymousSessions] = OMIT, + enforce_anon_session_transfer_network_binding: typing.Optional[ + ClientAnonymousSessionTransferNetworkBindingEnum + ] = OMIT, form_template: typing.Optional[str] = OMIT, addons: typing.Optional[ClientAddons] = OMIT, client_metadata: typing.Optional[ClientMetadata] = OMIT, @@ -1223,6 +1432,7 @@ def update( ] = OMIT, third_party_security_mode: typing.Optional[ClientThirdPartySecurityModeEnum] = OMIT, redirection_policy: typing.Optional[ClientRedirectionPolicyEnum] = OMIT, + oidc_support: typing.Optional[ClientOidcSupportPatch] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> HttpResponse[UpdateClientResponseContent]: """ @@ -1326,6 +1536,8 @@ def update( anonymous_sessions : typing.Optional[UpdateAnonymousSessions] + enforce_anon_session_transfer_network_binding : typing.Optional[ClientAnonymousSessionTransferNetworkBindingEnum] + form_template : typing.Optional[str] Form template for WS-Federation protocol @@ -1390,6 +1602,8 @@ def update( redirection_policy : typing.Optional[ClientRedirectionPolicyEnum] + oidc_support : typing.Optional[ClientOidcSupportPatch] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -1453,6 +1667,7 @@ def update( "anonymous_sessions": convert_and_respect_annotation_metadata( object_=anonymous_sessions, annotation=typing.Optional[UpdateAnonymousSessions], direction="write" ), + "enforce_anon_session_transfer_network_binding": enforce_anon_session_transfer_network_binding, "form_template": form_template, "addons": convert_and_respect_annotation_metadata( object_=addons, annotation=ClientAddons, direction="write" @@ -1522,6 +1737,9 @@ def update( "async_approval_notification_channels": async_approval_notification_channels, "third_party_security_mode": third_party_security_mode, "redirection_policy": redirection_policy, + "oidc_support": convert_and_respect_annotation_metadata( + object_=oidc_support, annotation=typing.Optional[ClientOidcSupportPatch], direction="write" + ), }, headers={ "content-type": "application/json", @@ -1947,6 +2165,9 @@ async def create( resource_server_identifier: typing.Optional[str] = OMIT, identity_assertion_authorization_grant: typing.Optional[CreateIdentityAssertionAuthorizationGrant] = OMIT, anonymous_sessions: typing.Optional[CreateAnonymousSessions] = OMIT, + enforce_anon_session_transfer_network_binding: typing.Optional[ + ClientAnonymousSessionTransferNetworkBindingEnum + ] = OMIT, third_party_security_mode: typing.Optional[ClientThirdPartySecurityModeEnum] = OMIT, redirection_policy: typing.Optional[ClientRedirectionPolicyEnum] = OMIT, express_configuration: typing.Optional[ExpressConfiguration] = OMIT, @@ -2111,6 +2332,8 @@ async def create( anonymous_sessions : typing.Optional[CreateAnonymousSessions] + enforce_anon_session_transfer_network_binding : typing.Optional[ClientAnonymousSessionTransferNetworkBindingEnum] + third_party_security_mode : typing.Optional[ClientThirdPartySecurityModeEnum] redirection_policy : typing.Optional[ClientRedirectionPolicyEnum] @@ -2237,6 +2460,7 @@ async def create( "anonymous_sessions": convert_and_respect_annotation_metadata( object_=anonymous_sessions, annotation=CreateAnonymousSessions, direction="write" ), + "enforce_anon_session_transfer_network_binding": enforce_anon_session_transfer_network_binding, "third_party_security_mode": third_party_security_mode, "redirection_policy": redirection_policy, "express_configuration": convert_and_respect_annotation_metadata( @@ -2539,6 +2763,189 @@ async def register_cimd_client( ), ), ) + if _response.status_code == 409: + raise ConflictError( + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 500: + raise InternalServerError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + async def search( + self, + *, + q: typing.Optional[str] = None, + parser: typing.Optional[SearchParserEnum] = None, + fields: typing.Optional[str] = None, + include_fields: typing.Optional[bool] = None, + take: typing.Optional[int] = 50, + from_: typing.Optional[str] = None, + sort: typing.Optional[ClientSortFieldEnum] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> AsyncPager[ClientSearchResponse, SearchClientsResponseContent]: + """ + Search clients using SCIM or Lucene filter syntax with low-latency, eventually consistent results. + Use the parser parameter to specify "scim" or "lucene" syntax (default: "lucene"). + This endpoint provides an alternative to the standard GET /clients endpoint with better performance + for complex queries. Results may not reflect recent updates immediately. + + - This endpoint only supports `read:clients` and `read:client_summary` scopes. The `read:client_keys` and `read:client_credentials` scopes are not supported. + - The following fields are never returned by this endpoint: + - `client_secret` + - `encryption_key` + - `signing_keys` + - `owners` + - `addons` + + Parameters + ---------- + q : typing.Optional[str] + Filter expression in SCIM or Lucene syntax (depending on parser parameter). SCIM examples: `name eq "Auth0"`, `name sw "auth" and app_type eq "spa"`. SCIM operators: eq, ne, sw, ew, co, pr, gt, ge, lt, le, and, or.

Supported Fields:
  • client_id - Auth0 client ID (case-sensitive, exact match)
  • external_client_id - URL of the Client ID Metadata Document (CIMD); case-sensitive, exact match
  • name - Client name (supports contains, starts-with, ends-with operators; sortable)
  • app_type - Application type (e.g. "spa", "native", "non_interactive")
  • is_first_party - Whether the client is first-party (boolean)
  • updated_at - Last update timestamp (supports date range operators; sortable)
  • metadata.{key} - Filter by client metadata key-value pairs (max 2-level key depth, values indexed up to 64 characters)
  • client_grant.organization_id - Filter by associated organization ID
  • client_grant.allow_any_organization - Filter by allow any organization setting
Maximum 5 filter operations per query. Results are eventually consistent and may not reflect recent updates. + + parser : typing.Optional[SearchParserEnum] + Query parser to use for the filter expression. Use "scim" for SCIM filter syntax or "lucene" for Lucene query syntax (default). + + fields : typing.Optional[str] + Comma-separated list of fields to include or exclude in the response. Works with the include_fields parameter to control projection mode. Maximum 50 fields. + + include_fields : typing.Optional[bool] + Controls field projection mode. Set to true to include only fields specified in the fields parameter. Set to false to exclude fields specified in the fields parameter. Defaults to true if not specified. + + take : typing.Optional[int] + Maximum number of results to return per page (1-100). Defaults to 50. + + from_ : typing.Optional[str] + Cursor for the next page of results. Use the value from the next field in the previous response. + + sort : typing.Optional[ClientSortFieldEnum] + Field name to sort results by in ascending order. Defaults to insertion order (oldest first) if not provided. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncPager[ClientSearchResponse, SearchClientsResponseContent] + Clients successfully retrieved. + """ + _response = await self._client_wrapper.httpx_client.request( + "clients/search", + method="GET", + params={ + "q": q, + "parser": parser, + "fields": fields, + "include_fields": include_fields, + "take": take, + "from": from_, + "sort": sort, + }, + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _parsed_response = typing.cast( + SearchClientsResponseContent, + parse_obj_as( + type_=SearchClientsResponseContent, # type: ignore + object_=_response.json(), + ), + ) + _items = _parsed_response.clients + _parsed_next = _parsed_response.next + _has_next = _parsed_next is not None and _parsed_next != "" + + async def _get_next(): + return await self.search( + q=q, + parser=parser, + fields=fields, + include_fields=include_fields, + take=take, + from_=_parsed_next, + sort=sort, + request_options=request_options, + ) + + 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), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + 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), @@ -2561,6 +2968,17 @@ async def register_cimd_client( ), ), ) + if _response.status_code == 504: + raise GatewayTimeoutError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) _response_json = _response.json() except JSONDecodeError: raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) @@ -2820,6 +3238,9 @@ async def update( token_quota: typing.Optional[UpdateTokenQuota] = OMIT, identity_assertion_authorization_grant: typing.Optional[UpdateIdentityAssertionAuthorizationGrant] = OMIT, anonymous_sessions: typing.Optional[UpdateAnonymousSessions] = OMIT, + enforce_anon_session_transfer_network_binding: typing.Optional[ + ClientAnonymousSessionTransferNetworkBindingEnum + ] = OMIT, form_template: typing.Optional[str] = OMIT, addons: typing.Optional[ClientAddons] = OMIT, client_metadata: typing.Optional[ClientMetadata] = OMIT, @@ -2849,6 +3270,7 @@ async def update( ] = OMIT, third_party_security_mode: typing.Optional[ClientThirdPartySecurityModeEnum] = OMIT, redirection_policy: typing.Optional[ClientRedirectionPolicyEnum] = OMIT, + oidc_support: typing.Optional[ClientOidcSupportPatch] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> AsyncHttpResponse[UpdateClientResponseContent]: """ @@ -2952,6 +3374,8 @@ async def update( anonymous_sessions : typing.Optional[UpdateAnonymousSessions] + enforce_anon_session_transfer_network_binding : typing.Optional[ClientAnonymousSessionTransferNetworkBindingEnum] + form_template : typing.Optional[str] Form template for WS-Federation protocol @@ -3016,6 +3440,8 @@ async def update( redirection_policy : typing.Optional[ClientRedirectionPolicyEnum] + oidc_support : typing.Optional[ClientOidcSupportPatch] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -3079,6 +3505,7 @@ async def update( "anonymous_sessions": convert_and_respect_annotation_metadata( object_=anonymous_sessions, annotation=typing.Optional[UpdateAnonymousSessions], direction="write" ), + "enforce_anon_session_transfer_network_binding": enforce_anon_session_transfer_network_binding, "form_template": form_template, "addons": convert_and_respect_annotation_metadata( object_=addons, annotation=ClientAddons, direction="write" @@ -3148,6 +3575,9 @@ async def update( "async_approval_notification_channels": async_approval_notification_channels, "third_party_security_mode": third_party_security_mode, "redirection_policy": redirection_policy, + "oidc_support": convert_and_respect_annotation_metadata( + object_=oidc_support, annotation=typing.Optional[ClientOidcSupportPatch], direction="write" + ), }, headers={ "content-type": "application/json", diff --git a/src/auth0/management/experimentation/experiments/client.py b/src/auth0/management/experimentation/experiments/client.py index 45bbc1b4..9f1ab1a3 100644 --- a/src/auth0/management/experimentation/experiments/client.py +++ b/src/auth0/management/experimentation/experiments/client.py @@ -17,7 +17,6 @@ from ...types.get_experiment_response_content import GetExperimentResponseContent from ...types.list_experiments_response_content import ListExperimentsResponseContent from ...types.update_experiment_response_content import UpdateExperimentResponseContent -from ...types.update_experiment_status_response_content import UpdateExperimentStatusResponseContent from ...types.validate_experiment_response_content import ValidateExperimentResponseContent from .raw_client import AsyncRawExperimentsClient, RawExperimentsClient @@ -253,6 +252,7 @@ def update( allocations: typing.Optional[typing.Sequence[AllocationRequestItem]] = OMIT, default_config: typing.Optional[DefaultConfigEnum] = OMIT, levels: typing.Optional[typing.Sequence[int]] = OMIT, + status: typing.Optional[ExperimentTransitionStatusEnum] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> UpdateExperimentResponseContent: """ @@ -281,6 +281,8 @@ def update( levels : typing.Optional[typing.Sequence[int]] Ramp experiment levels configuration. A strictly-increasing sequence of exposure percentages, each an integer in [0, 100]. Can only be modified on draft experiments. + status : typing.Optional[ExperimentTransitionStatusEnum] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -308,6 +310,7 @@ def update( allocations=allocations, default_config=default_config, levels=levels, + status=status, request_options=request_options, ) return _response.data @@ -349,46 +352,6 @@ def advance_ramp( _response = self._raw_client.advance_ramp(id, target_level=target_level, request_options=request_options) return _response.data - def update_status( - self, - id: str, - *, - status: ExperimentTransitionStatusEnum, - request_options: typing.Optional[RequestOptions] = None, - ) -> UpdateExperimentStatusResponseContent: - """ - Transitions an experiment through its lifecycle: draft → active, active → paused, paused → active, active/paused → completed. Activation runs full readiness validation. - - Parameters - ---------- - id : str - The ID of the experiment to transition. - - status : ExperimentTransitionStatusEnum - - request_options : typing.Optional[RequestOptions] - Request-specific configuration. - - Returns - ------- - UpdateExperimentStatusResponseContent - Experiment status successfully updated. - - Examples - -------- - from auth0 import Auth0 - - client = Auth0( - token="YOUR_TOKEN", - ) - client.experimentation.experiments.update_status( - id="id", - status="active", - ) - """ - _response = self._raw_client.update_status(id, status=status, request_options=request_options) - return _response.data - def validate( self, id: str, *, request_options: typing.Optional[RequestOptions] = None ) -> ValidateExperimentResponseContent: @@ -686,6 +649,7 @@ async def update( allocations: typing.Optional[typing.Sequence[AllocationRequestItem]] = OMIT, default_config: typing.Optional[DefaultConfigEnum] = OMIT, levels: typing.Optional[typing.Sequence[int]] = OMIT, + status: typing.Optional[ExperimentTransitionStatusEnum] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> UpdateExperimentResponseContent: """ @@ -714,6 +678,8 @@ async def update( levels : typing.Optional[typing.Sequence[int]] Ramp experiment levels configuration. A strictly-increasing sequence of exposure percentages, each an integer in [0, 100]. Can only be modified on draft experiments. + status : typing.Optional[ExperimentTransitionStatusEnum] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -749,6 +715,7 @@ async def main() -> None: allocations=allocations, default_config=default_config, levels=levels, + status=status, request_options=request_options, ) return _response.data @@ -798,54 +765,6 @@ async def main() -> None: _response = await self._raw_client.advance_ramp(id, target_level=target_level, request_options=request_options) return _response.data - async def update_status( - self, - id: str, - *, - status: ExperimentTransitionStatusEnum, - request_options: typing.Optional[RequestOptions] = None, - ) -> UpdateExperimentStatusResponseContent: - """ - Transitions an experiment through its lifecycle: draft → active, active → paused, paused → active, active/paused → completed. Activation runs full readiness validation. - - Parameters - ---------- - id : str - The ID of the experiment to transition. - - status : ExperimentTransitionStatusEnum - - request_options : typing.Optional[RequestOptions] - Request-specific configuration. - - Returns - ------- - UpdateExperimentStatusResponseContent - Experiment status successfully updated. - - Examples - -------- - import asyncio - - from auth0 import AsyncAuth0 - - client = AsyncAuth0( - token="YOUR_TOKEN", - ) - - - async def main() -> None: - await client.experimentation.experiments.update_status( - id="id", - status="active", - ) - - - asyncio.run(main()) - """ - _response = await self._raw_client.update_status(id, status=status, request_options=request_options) - return _response.data - async def validate( self, id: str, *, request_options: typing.Optional[RequestOptions] = None ) -> ValidateExperimentResponseContent: diff --git a/src/auth0/management/experimentation/experiments/raw_client.py b/src/auth0/management/experimentation/experiments/raw_client.py index c6dad9eb..f512ef5b 100644 --- a/src/auth0/management/experimentation/experiments/raw_client.py +++ b/src/auth0/management/experimentation/experiments/raw_client.py @@ -31,7 +31,6 @@ from ...types.get_experiment_response_content import GetExperimentResponseContent from ...types.list_experiments_response_content import ListExperimentsResponseContent from ...types.update_experiment_response_content import UpdateExperimentResponseContent -from ...types.update_experiment_status_response_content import UpdateExperimentStatusResponseContent from ...types.validate_experiment_response_content import ValidateExperimentResponseContent from pydantic import ValidationError @@ -496,6 +495,7 @@ def update( allocations: typing.Optional[typing.Sequence[AllocationRequestItem]] = OMIT, default_config: typing.Optional[DefaultConfigEnum] = OMIT, levels: typing.Optional[typing.Sequence[int]] = OMIT, + status: typing.Optional[ExperimentTransitionStatusEnum] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> HttpResponse[UpdateExperimentResponseContent]: """ @@ -524,6 +524,8 @@ def update( levels : typing.Optional[typing.Sequence[int]] Ramp experiment levels configuration. A strictly-increasing sequence of exposure percentages, each an integer in [0, 100]. Can only be modified on draft experiments. + status : typing.Optional[ExperimentTransitionStatusEnum] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -544,6 +546,7 @@ def update( ), "default_config": default_config, "levels": levels, + "status": status, }, headers={ "content-type": "application/json", @@ -766,139 +769,6 @@ def advance_ramp( ) raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) - def update_status( - self, - id: str, - *, - status: ExperimentTransitionStatusEnum, - request_options: typing.Optional[RequestOptions] = None, - ) -> HttpResponse[UpdateExperimentStatusResponseContent]: - """ - Transitions an experiment through its lifecycle: draft → active, active → paused, paused → active, active/paused → completed. Activation runs full readiness validation. - - Parameters - ---------- - id : str - The ID of the experiment to transition. - - status : ExperimentTransitionStatusEnum - - request_options : typing.Optional[RequestOptions] - Request-specific configuration. - - Returns - ------- - HttpResponse[UpdateExperimentStatusResponseContent] - Experiment status successfully updated. - """ - _response = self._client_wrapper.httpx_client.request( - f"experimentation/experiments/{quote_path_param(id)}/status", - method="POST", - json={ - "status": status, - }, - headers={ - "content-type": "application/json", - }, - request_options=request_options, - omit=OMIT, - ) - try: - if 200 <= _response.status_code < 300: - _data = typing.cast( - UpdateExperimentStatusResponseContent, - parse_obj_as( - type_=UpdateExperimentStatusResponseContent, # type: ignore - object_=_response.json(), - ), - ) - return HttpResponse(response=_response, data=_data) - 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), - body=typing.cast( - typing.Any, - parse_obj_as( - type_=typing.Any, # type: ignore - object_=_response.json(), - ), - ), - ) - if _response.status_code == 403: - raise ForbiddenError( - headers=dict(_response.headers), - body=typing.cast( - typing.Any, - parse_obj_as( - type_=typing.Any, # type: ignore - object_=_response.json(), - ), - ), - ) - 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 == 409: - raise ConflictError( - headers=dict(_response.headers), - body=typing.cast( - typing.Any, - parse_obj_as( - type_=typing.Any, # type: ignore - object_=_response.json(), - ), - ), - ) - if _response.status_code == 422: - raise UnprocessableEntityError( - 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), - body=typing.cast( - typing.Any, - parse_obj_as( - type_=typing.Any, # type: ignore - object_=_response.json(), - ), - ), - ) - _response_json = _response.json() - except JSONDecodeError: - raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) - except ValidationError as e: - raise ParsingError( - status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e - ) - raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) - def validate( self, id: str, *, request_options: typing.Optional[RequestOptions] = None ) -> HttpResponse[ValidateExperimentResponseContent]: @@ -1449,6 +1319,7 @@ async def update( allocations: typing.Optional[typing.Sequence[AllocationRequestItem]] = OMIT, default_config: typing.Optional[DefaultConfigEnum] = OMIT, levels: typing.Optional[typing.Sequence[int]] = OMIT, + status: typing.Optional[ExperimentTransitionStatusEnum] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> AsyncHttpResponse[UpdateExperimentResponseContent]: """ @@ -1477,6 +1348,8 @@ async def update( levels : typing.Optional[typing.Sequence[int]] Ramp experiment levels configuration. A strictly-increasing sequence of exposure percentages, each an integer in [0, 100]. Can only be modified on draft experiments. + status : typing.Optional[ExperimentTransitionStatusEnum] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -1497,6 +1370,7 @@ async def update( ), "default_config": default_config, "levels": levels, + "status": status, }, headers={ "content-type": "application/json", @@ -1719,139 +1593,6 @@ async def advance_ramp( ) raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) - async def update_status( - self, - id: str, - *, - status: ExperimentTransitionStatusEnum, - request_options: typing.Optional[RequestOptions] = None, - ) -> AsyncHttpResponse[UpdateExperimentStatusResponseContent]: - """ - Transitions an experiment through its lifecycle: draft → active, active → paused, paused → active, active/paused → completed. Activation runs full readiness validation. - - Parameters - ---------- - id : str - The ID of the experiment to transition. - - status : ExperimentTransitionStatusEnum - - request_options : typing.Optional[RequestOptions] - Request-specific configuration. - - Returns - ------- - AsyncHttpResponse[UpdateExperimentStatusResponseContent] - Experiment status successfully updated. - """ - _response = await self._client_wrapper.httpx_client.request( - f"experimentation/experiments/{quote_path_param(id)}/status", - method="POST", - json={ - "status": status, - }, - headers={ - "content-type": "application/json", - }, - request_options=request_options, - omit=OMIT, - ) - try: - if 200 <= _response.status_code < 300: - _data = typing.cast( - UpdateExperimentStatusResponseContent, - parse_obj_as( - type_=UpdateExperimentStatusResponseContent, # type: ignore - object_=_response.json(), - ), - ) - return AsyncHttpResponse(response=_response, data=_data) - 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), - body=typing.cast( - typing.Any, - parse_obj_as( - type_=typing.Any, # type: ignore - object_=_response.json(), - ), - ), - ) - if _response.status_code == 403: - raise ForbiddenError( - headers=dict(_response.headers), - body=typing.cast( - typing.Any, - parse_obj_as( - type_=typing.Any, # type: ignore - object_=_response.json(), - ), - ), - ) - 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 == 409: - raise ConflictError( - headers=dict(_response.headers), - body=typing.cast( - typing.Any, - parse_obj_as( - type_=typing.Any, # type: ignore - object_=_response.json(), - ), - ), - ) - if _response.status_code == 422: - raise UnprocessableEntityError( - 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), - body=typing.cast( - typing.Any, - parse_obj_as( - type_=typing.Any, # type: ignore - object_=_response.json(), - ), - ), - ) - _response_json = _response.json() - except JSONDecodeError: - raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) - except ValidationError as e: - raise ParsingError( - status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e - ) - raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) - async def validate( self, id: str, *, request_options: typing.Optional[RequestOptions] = None ) -> AsyncHttpResponse[ValidateExperimentResponseContent]: diff --git a/src/auth0/management/experimentation/feature_flags/client.py b/src/auth0/management/experimentation/feature_flags/client.py index da6ac727..c4594f82 100644 --- a/src/auth0/management/experimentation/feature_flags/client.py +++ b/src/auth0/management/experimentation/feature_flags/client.py @@ -16,7 +16,6 @@ from ...types.list_feature_flags_response_content import ListFeatureFlagsResponseContent from ...types.update_feature_flag_parameters import UpdateFeatureFlagParameters from ...types.update_feature_flag_response_content import UpdateFeatureFlagResponseContent -from ...types.update_feature_flag_status_response_content import UpdateFeatureFlagStatusResponseContent from .raw_client import AsyncRawFeatureFlagsClient, RawFeatureFlagsClient if typing.TYPE_CHECKING: @@ -211,6 +210,7 @@ def update( name: typing.Optional[str] = OMIT, description: typing.Optional[str] = OMIT, parameters: typing.Optional[UpdateFeatureFlagParameters] = OMIT, + status: typing.Optional[FeatureFlagStatusEnum] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> UpdateFeatureFlagResponseContent: """ @@ -229,6 +229,9 @@ def update( parameters : typing.Optional[UpdateFeatureFlagParameters] + status : typing.Optional[FeatureFlagStatusEnum] + Target lifecycle status (draft → active, draft → archived, active → archived). Activating a flag requires at least 2 variations. When combined with field edits, the edits and the transition are applied together; if the transition is rejected, no edits are applied. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -249,45 +252,13 @@ def update( ) """ _response = self._raw_client.update( - id, name=name, description=description, parameters=parameters, request_options=request_options - ) - return _response.data - - def update_status( - self, id: str, *, status: FeatureFlagStatusEnum, request_options: typing.Optional[RequestOptions] = None - ) -> UpdateFeatureFlagStatusResponseContent: - """ - Transitions a feature flag through its lifecycle states: draft → active, draft → archived, active → archived. - - Parameters - ---------- - id : str - The ID of the feature flag to transition. - - status : FeatureFlagStatusEnum - The target status to transition the feature flag to. - - request_options : typing.Optional[RequestOptions] - Request-specific configuration. - - Returns - ------- - UpdateFeatureFlagStatusResponseContent - Feature flag status successfully updated. - - Examples - -------- - from auth0 import Auth0 - - client = Auth0( - token="YOUR_TOKEN", + id, + name=name, + description=description, + parameters=parameters, + status=status, + request_options=request_options, ) - client.experimentation.feature_flags.update_status( - id="id", - status="draft", - ) - """ - _response = self._raw_client.update_status(id, status=status, request_options=request_options) return _response.data @property @@ -522,6 +493,7 @@ async def update( name: typing.Optional[str] = OMIT, description: typing.Optional[str] = OMIT, parameters: typing.Optional[UpdateFeatureFlagParameters] = OMIT, + status: typing.Optional[FeatureFlagStatusEnum] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> UpdateFeatureFlagResponseContent: """ @@ -540,6 +512,9 @@ async def update( parameters : typing.Optional[UpdateFeatureFlagParameters] + status : typing.Optional[FeatureFlagStatusEnum] + Target lifecycle status (draft → active, draft → archived, active → archived). Activating a flag requires at least 2 variations. When combined with field edits, the edits and the transition are applied together; if the transition is rejected, no edits are applied. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -568,53 +543,13 @@ async def main() -> None: asyncio.run(main()) """ _response = await self._raw_client.update( - id, name=name, description=description, parameters=parameters, request_options=request_options - ) - return _response.data - - async def update_status( - self, id: str, *, status: FeatureFlagStatusEnum, request_options: typing.Optional[RequestOptions] = None - ) -> UpdateFeatureFlagStatusResponseContent: - """ - Transitions a feature flag through its lifecycle states: draft → active, draft → archived, active → archived. - - Parameters - ---------- - id : str - The ID of the feature flag to transition. - - status : FeatureFlagStatusEnum - The target status to transition the feature flag to. - - request_options : typing.Optional[RequestOptions] - Request-specific configuration. - - Returns - ------- - UpdateFeatureFlagStatusResponseContent - Feature flag status successfully updated. - - Examples - -------- - import asyncio - - from auth0 import AsyncAuth0 - - client = AsyncAuth0( - token="YOUR_TOKEN", + id, + name=name, + description=description, + parameters=parameters, + status=status, + request_options=request_options, ) - - - async def main() -> None: - await client.experimentation.feature_flags.update_status( - id="id", - status="draft", - ) - - - asyncio.run(main()) - """ - _response = await self._raw_client.update_status(id, status=status, request_options=request_options) return _response.data @property diff --git a/src/auth0/management/experimentation/feature_flags/raw_client.py b/src/auth0/management/experimentation/feature_flags/raw_client.py index 340ed8d2..07984c69 100644 --- a/src/auth0/management/experimentation/feature_flags/raw_client.py +++ b/src/auth0/management/experimentation/feature_flags/raw_client.py @@ -27,7 +27,6 @@ from ...types.list_feature_flags_response_content import ListFeatureFlagsResponseContent from ...types.update_feature_flag_parameters import UpdateFeatureFlagParameters from ...types.update_feature_flag_response_content import UpdateFeatureFlagResponseContent -from ...types.update_feature_flag_status_response_content import UpdateFeatureFlagStatusResponseContent from pydantic import ValidationError # this is used as the default value for optional parameters @@ -435,6 +434,7 @@ def update( name: typing.Optional[str] = OMIT, description: typing.Optional[str] = OMIT, parameters: typing.Optional[UpdateFeatureFlagParameters] = OMIT, + status: typing.Optional[FeatureFlagStatusEnum] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> HttpResponse[UpdateFeatureFlagResponseContent]: """ @@ -453,6 +453,9 @@ def update( parameters : typing.Optional[UpdateFeatureFlagParameters] + status : typing.Optional[FeatureFlagStatusEnum] + Target lifecycle status (draft → active, draft → archived, active → archived). Activating a flag requires at least 2 variations. When combined with field edits, the edits and the transition are applied together; if the transition is rejected, no edits are applied. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -470,6 +473,7 @@ def update( "parameters": convert_and_respect_annotation_metadata( object_=parameters, annotation=UpdateFeatureFlagParameters, direction="write" ), + "status": status, }, headers={ "content-type": "application/json", @@ -562,114 +566,6 @@ def update( ) raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) - def update_status( - self, id: str, *, status: FeatureFlagStatusEnum, request_options: typing.Optional[RequestOptions] = None - ) -> HttpResponse[UpdateFeatureFlagStatusResponseContent]: - """ - Transitions a feature flag through its lifecycle states: draft → active, draft → archived, active → archived. - - Parameters - ---------- - id : str - The ID of the feature flag to transition. - - status : FeatureFlagStatusEnum - The target status to transition the feature flag to. - - request_options : typing.Optional[RequestOptions] - Request-specific configuration. - - Returns - ------- - HttpResponse[UpdateFeatureFlagStatusResponseContent] - Feature flag status successfully updated. - """ - _response = self._client_wrapper.httpx_client.request( - f"experimentation/feature-flags/{quote_path_param(id)}/status", - method="POST", - json={ - "status": status, - }, - headers={ - "content-type": "application/json", - }, - request_options=request_options, - omit=OMIT, - ) - try: - if 200 <= _response.status_code < 300: - _data = typing.cast( - UpdateFeatureFlagStatusResponseContent, - parse_obj_as( - type_=UpdateFeatureFlagStatusResponseContent, # type: ignore - object_=_response.json(), - ), - ) - return HttpResponse(response=_response, data=_data) - 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), - body=typing.cast( - typing.Any, - parse_obj_as( - type_=typing.Any, # type: ignore - object_=_response.json(), - ), - ), - ) - if _response.status_code == 403: - raise ForbiddenError( - headers=dict(_response.headers), - body=typing.cast( - typing.Any, - parse_obj_as( - type_=typing.Any, # type: ignore - object_=_response.json(), - ), - ), - ) - 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), - body=typing.cast( - typing.Any, - parse_obj_as( - type_=typing.Any, # type: ignore - object_=_response.json(), - ), - ), - ) - _response_json = _response.json() - except JSONDecodeError: - raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) - except ValidationError as e: - raise ParsingError( - status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e - ) - raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) - class AsyncRawFeatureFlagsClient: def __init__(self, *, client_wrapper: AsyncClientWrapper): @@ -1077,6 +973,7 @@ async def update( name: typing.Optional[str] = OMIT, description: typing.Optional[str] = OMIT, parameters: typing.Optional[UpdateFeatureFlagParameters] = OMIT, + status: typing.Optional[FeatureFlagStatusEnum] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> AsyncHttpResponse[UpdateFeatureFlagResponseContent]: """ @@ -1095,6 +992,9 @@ async def update( parameters : typing.Optional[UpdateFeatureFlagParameters] + status : typing.Optional[FeatureFlagStatusEnum] + Target lifecycle status (draft → active, draft → archived, active → archived). Activating a flag requires at least 2 variations. When combined with field edits, the edits and the transition are applied together; if the transition is rejected, no edits are applied. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -1112,6 +1012,7 @@ async def update( "parameters": convert_and_respect_annotation_metadata( object_=parameters, annotation=UpdateFeatureFlagParameters, direction="write" ), + "status": status, }, headers={ "content-type": "application/json", @@ -1203,111 +1104,3 @@ async def update( status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e ) raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) - - async def update_status( - self, id: str, *, status: FeatureFlagStatusEnum, request_options: typing.Optional[RequestOptions] = None - ) -> AsyncHttpResponse[UpdateFeatureFlagStatusResponseContent]: - """ - Transitions a feature flag through its lifecycle states: draft → active, draft → archived, active → archived. - - Parameters - ---------- - id : str - The ID of the feature flag to transition. - - status : FeatureFlagStatusEnum - The target status to transition the feature flag to. - - request_options : typing.Optional[RequestOptions] - Request-specific configuration. - - Returns - ------- - AsyncHttpResponse[UpdateFeatureFlagStatusResponseContent] - Feature flag status successfully updated. - """ - _response = await self._client_wrapper.httpx_client.request( - f"experimentation/feature-flags/{quote_path_param(id)}/status", - method="POST", - json={ - "status": status, - }, - headers={ - "content-type": "application/json", - }, - request_options=request_options, - omit=OMIT, - ) - try: - if 200 <= _response.status_code < 300: - _data = typing.cast( - UpdateFeatureFlagStatusResponseContent, - parse_obj_as( - type_=UpdateFeatureFlagStatusResponseContent, # type: ignore - object_=_response.json(), - ), - ) - return AsyncHttpResponse(response=_response, data=_data) - 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), - body=typing.cast( - typing.Any, - parse_obj_as( - type_=typing.Any, # type: ignore - object_=_response.json(), - ), - ), - ) - if _response.status_code == 403: - raise ForbiddenError( - headers=dict(_response.headers), - body=typing.cast( - typing.Any, - parse_obj_as( - type_=typing.Any, # type: ignore - object_=_response.json(), - ), - ), - ) - 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), - body=typing.cast( - typing.Any, - parse_obj_as( - type_=typing.Any, # type: ignore - object_=_response.json(), - ), - ), - ) - _response_json = _response.json() - except JSONDecodeError: - raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) - except ValidationError as e: - raise ParsingError( - status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e - ) - raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) diff --git a/src/auth0/management/experimentation/feature_flags/variations/raw_client.py b/src/auth0/management/experimentation/feature_flags/variations/raw_client.py index 9b33461f..8c181537 100644 --- a/src/auth0/management/experimentation/feature_flags/variations/raw_client.py +++ b/src/auth0/management/experimentation/feature_flags/variations/raw_client.py @@ -382,17 +382,6 @@ def delete( try: if 200 <= _response.status_code < 300: return HttpResponse(response=_response, data=None) - 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 == 403: raise ForbiddenError( headers=dict(_response.headers), @@ -937,17 +926,6 @@ async def delete( try: if 200 <= _response.status_code < 300: return AsyncHttpResponse(response=_response, data=None) - 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 == 403: raise ForbiddenError( headers=dict(_response.headers), diff --git a/src/auth0/management/experimentation/segments/client.py b/src/auth0/management/experimentation/segments/client.py index bea2f1da..c32ebec7 100644 --- a/src/auth0/management/experimentation/segments/client.py +++ b/src/auth0/management/experimentation/segments/client.py @@ -10,6 +10,7 @@ from ...types.list_segments_response_content import ListSegmentsResponseContent from ...types.segment import Segment from ...types.segment_rule import SegmentRule +from ...types.segment_status_enum import SegmentStatusEnum from ...types.segment_type_filter_enum import SegmentTypeFilterEnum from ...types.update_segment_response_content import UpdateSegmentResponseContent from .raw_client import AsyncRawSegmentsClient, RawSegmentsClient @@ -198,6 +199,7 @@ def update( name: typing.Optional[str] = OMIT, description: typing.Optional[str] = OMIT, rules: typing.Optional[typing.Sequence[SegmentRule]] = OMIT, + status: typing.Optional[SegmentStatusEnum] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> UpdateSegmentResponseContent: """ @@ -217,6 +219,9 @@ def update( rules : typing.Optional[typing.Sequence[SegmentRule]] Replaces the entire rules array. Each rule is limited to 4KB and the whole segment to 10KB (serialized). + status : typing.Optional[SegmentStatusEnum] + Target lifecycle status. Archiving removes the segment from the active pool and is terminal (an archived segment cannot return to active). When combined with field edits, the edits apply first and the transition follows. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -237,7 +242,7 @@ def update( ) """ _response = self._raw_client.update( - id, name=name, description=description, rules=rules, request_options=request_options + id, name=name, description=description, rules=rules, status=status, request_options=request_options ) return _response.data @@ -457,6 +462,7 @@ async def update( name: typing.Optional[str] = OMIT, description: typing.Optional[str] = OMIT, rules: typing.Optional[typing.Sequence[SegmentRule]] = OMIT, + status: typing.Optional[SegmentStatusEnum] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> UpdateSegmentResponseContent: """ @@ -476,6 +482,9 @@ async def update( rules : typing.Optional[typing.Sequence[SegmentRule]] Replaces the entire rules array. Each rule is limited to 4KB and the whole segment to 10KB (serialized). + status : typing.Optional[SegmentStatusEnum] + Target lifecycle status. Archiving removes the segment from the active pool and is terminal (an archived segment cannot return to active). When combined with field edits, the edits apply first and the transition follows. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -504,6 +513,6 @@ async def main() -> None: asyncio.run(main()) """ _response = await self._raw_client.update( - id, name=name, description=description, rules=rules, request_options=request_options + id, name=name, description=description, rules=rules, status=status, request_options=request_options ) return _response.data diff --git a/src/auth0/management/experimentation/segments/raw_client.py b/src/auth0/management/experimentation/segments/raw_client.py index 998cfba2..30281d9f 100644 --- a/src/auth0/management/experimentation/segments/raw_client.py +++ b/src/auth0/management/experimentation/segments/raw_client.py @@ -24,6 +24,7 @@ from ...types.list_segments_response_content import ListSegmentsResponseContent from ...types.segment import Segment from ...types.segment_rule import SegmentRule +from ...types.segment_status_enum import SegmentStatusEnum from ...types.segment_type_filter_enum import SegmentTypeFilterEnum from ...types.update_segment_response_content import UpdateSegmentResponseContent from pydantic import ValidationError @@ -439,6 +440,7 @@ def update( name: typing.Optional[str] = OMIT, description: typing.Optional[str] = OMIT, rules: typing.Optional[typing.Sequence[SegmentRule]] = OMIT, + status: typing.Optional[SegmentStatusEnum] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> HttpResponse[UpdateSegmentResponseContent]: """ @@ -458,6 +460,9 @@ def update( rules : typing.Optional[typing.Sequence[SegmentRule]] Replaces the entire rules array. Each rule is limited to 4KB and the whole segment to 10KB (serialized). + status : typing.Optional[SegmentStatusEnum] + Target lifecycle status. Archiving removes the segment from the active pool and is terminal (an archived segment cannot return to active). When combined with field edits, the edits apply first and the transition follows. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -475,6 +480,7 @@ def update( "rules": convert_and_respect_annotation_metadata( object_=rules, annotation=typing.Sequence[SegmentRule], direction="write" ), + "status": status, }, headers={ "content-type": "application/json", @@ -991,6 +997,7 @@ async def update( name: typing.Optional[str] = OMIT, description: typing.Optional[str] = OMIT, rules: typing.Optional[typing.Sequence[SegmentRule]] = OMIT, + status: typing.Optional[SegmentStatusEnum] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> AsyncHttpResponse[UpdateSegmentResponseContent]: """ @@ -1010,6 +1017,9 @@ async def update( rules : typing.Optional[typing.Sequence[SegmentRule]] Replaces the entire rules array. Each rule is limited to 4KB and the whole segment to 10KB (serialized). + status : typing.Optional[SegmentStatusEnum] + Target lifecycle status. Archiving removes the segment from the active pool and is terminal (an archived segment cannot return to active). When combined with field edits, the edits apply first and the transition follows. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -1027,6 +1037,7 @@ async def update( "rules": convert_and_respect_annotation_metadata( object_=rules, annotation=typing.Sequence[SegmentRule], direction="write" ), + "status": status, }, headers={ "content-type": "application/json", diff --git a/src/auth0/management/groups/client.py b/src/auth0/management/groups/client.py index cdefe9b0..b2a0f456 100644 --- a/src/auth0/management/groups/client.py +++ b/src/auth0/management/groups/client.py @@ -73,7 +73,7 @@ def list( Whether specified fields are to be included (true) or excluded (false). include_totals : typing.Optional[bool] - Return results inside an object that contains the total result count (true) or as a direct array of results (false, default). + Return results inside an object that contains the total result count (true) or as a direct array of results (false, default). The returned total reflects at most 1,000 results. from_ : typing.Optional[str] Optional Id from which to start selection. @@ -260,7 +260,7 @@ async def list( Whether specified fields are to be included (true) or excluded (false). include_totals : typing.Optional[bool] - Return results inside an object that contains the total result count (true) or as a direct array of results (false, default). + Return results inside an object that contains the total result count (true) or as a direct array of results (false, default). The returned total reflects at most 1,000 results. from_ : typing.Optional[str] Optional Id from which to start selection. diff --git a/src/auth0/management/groups/raw_client.py b/src/auth0/management/groups/raw_client.py index 08e5f270..1ad7dfb1 100644 --- a/src/auth0/management/groups/raw_client.py +++ b/src/auth0/management/groups/raw_client.py @@ -64,7 +64,7 @@ def list( Whether specified fields are to be included (true) or excluded (false). include_totals : typing.Optional[bool] - Return results inside an object that contains the total result count (true) or as a direct array of results (false, default). + Return results inside an object that contains the total result count (true) or as a direct array of results (false, default). The returned total reflects at most 1,000 results. from_ : typing.Optional[str] Optional Id from which to start selection. @@ -392,7 +392,7 @@ async def list( Whether specified fields are to be included (true) or excluded (false). include_totals : typing.Optional[bool] - Return results inside an object that contains the total result count (true) or as a direct array of results (false, default). + Return results inside an object that contains the total result count (true) or as a direct array of results (false, default). The returned total reflects at most 1,000 results. from_ : typing.Optional[str] Optional Id from which to start selection. diff --git a/src/auth0/management/guardian/factors/client.py b/src/auth0/management/guardian/factors/client.py index 19481b5f..339ccfda 100644 --- a/src/auth0/management/guardian/factors/client.py +++ b/src/auth0/management/guardian/factors/client.py @@ -77,7 +77,7 @@ def set( Parameters ---------- name : GuardianFactorNameEnum - Factor name. Can be `sms`, `push-notification`, `email`, `duo` `otp` `webauthn-roaming`, `webauthn-platform`, or `recovery-code`. + Factor name. Can be `sms`, `push-notification`, `email`, `duo`, `otp`, `webauthn-roaming`, `webauthn-platform`, `recovery-code`, or `passkey`. enabled : bool Whether this factor is enabled (true) or disabled (false). @@ -210,7 +210,7 @@ async def set( Parameters ---------- name : GuardianFactorNameEnum - Factor name. Can be `sms`, `push-notification`, `email`, `duo` `otp` `webauthn-roaming`, `webauthn-platform`, or `recovery-code`. + Factor name. Can be `sms`, `push-notification`, `email`, `duo`, `otp`, `webauthn-roaming`, `webauthn-platform`, `recovery-code`, or `passkey`. enabled : bool Whether this factor is enabled (true) or disabled (false). diff --git a/src/auth0/management/guardian/factors/raw_client.py b/src/auth0/management/guardian/factors/raw_client.py index 13d28950..df8567e5 100644 --- a/src/auth0/management/guardian/factors/raw_client.py +++ b/src/auth0/management/guardian/factors/raw_client.py @@ -108,7 +108,7 @@ def set( Parameters ---------- name : GuardianFactorNameEnum - Factor name. Can be `sms`, `push-notification`, `email`, `duo` `otp` `webauthn-roaming`, `webauthn-platform`, or `recovery-code`. + Factor name. Can be `sms`, `push-notification`, `email`, `duo`, `otp`, `webauthn-roaming`, `webauthn-platform`, `recovery-code`, or `passkey`. enabled : bool Whether this factor is enabled (true) or disabled (false). @@ -272,7 +272,7 @@ async def set( Parameters ---------- name : GuardianFactorNameEnum - Factor name. Can be `sms`, `push-notification`, `email`, `duo` `otp` `webauthn-roaming`, `webauthn-platform`, or `recovery-code`. + Factor name. Can be `sms`, `push-notification`, `email`, `duo`, `otp`, `webauthn-roaming`, `webauthn-platform`, `recovery-code`, or `passkey`. enabled : bool Whether this factor is enabled (true) or disabled (false). diff --git a/src/auth0/management/management_client.py b/src/auth0/management/management_client.py index 421f9bda..82c5cd1c 100644 --- a/src/auth0/management/management_client.py +++ b/src/auth0/management/management_client.py @@ -1,3 +1,7 @@ +# This file is hand-written and listed in .fernignore, so Fern does not overwrite it. +# Each resource that the generated Auth0 client exposes needs a matching property +# on ManagementClient and AsyncManagementClient, plus a TYPE_CHECKING import. +# tests/management/test_management_client.py fails and lists any missing resource. from __future__ import annotations import base64 @@ -61,19 +65,25 @@ def CustomDomainHeader(domain: str) -> RequestOptions: if TYPE_CHECKING: from .actions.client import ActionsClient, AsyncActionsClient + from .agents.client import AsyncAgentsClient, AgentsClient from .anomaly.client import AnomalyClient, AsyncAnomalyClient from .attack_protection.client import AsyncAttackProtectionClient, AttackProtectionClient from .branding.client import AsyncBrandingClient, BrandingClient from .client_grants.client import AsyncClientGrantsClient, ClientGrantsClient + from .client_profiles.client import AsyncClientProfilesClient, ClientProfilesClient from .clients.client import AsyncClientsClient, ClientsClient + from .connection_profiles.client import AsyncConnectionProfilesClient, ConnectionProfilesClient from .connections.client import AsyncConnectionsClient, ConnectionsClient from .custom_domains.client import AsyncCustomDomainsClient, CustomDomainsClient from .device_credentials.client import AsyncDeviceCredentialsClient, DeviceCredentialsClient from .email_templates.client import AsyncEmailTemplatesClient, EmailTemplatesClient from .emails.client import AsyncEmailsClient, EmailsClient from .event_streams.client import AsyncEventStreamsClient, EventStreamsClient + from .events.client import AsyncEventsClient, EventsClient + from .experimentation.client import AsyncExperimentationClient, ExperimentationClient from .flows.client import AsyncFlowsClient, FlowsClient from .forms.client import AsyncFormsClient, FormsClient + from .groups.client import AsyncGroupsClient, GroupsClient from .guardian.client import AsyncGuardianClient, GuardianClient from .hooks.client import AsyncHooksClient, HooksClient from .jobs.client import AsyncJobsClient, JobsClient @@ -83,8 +93,10 @@ def CustomDomainHeader(domain: str) -> RequestOptions: from .network_acls.client import AsyncNetworkAclsClient, NetworkAclsClient from .organizations.client import AsyncOrganizationsClient, OrganizationsClient from .prompts.client import AsyncPromptsClient, PromptsClient + from .rate_limit_policies.client import AsyncRateLimitPoliciesClient, RateLimitPoliciesClient from .refresh_tokens.client import AsyncRefreshTokensClient, RefreshTokensClient from .resource_servers.client import AsyncResourceServersClient, ResourceServersClient + from .risk_assessments.client import AsyncRiskAssessmentsClient, RiskAssessmentsClient from .roles.client import AsyncRolesClient, RolesClient from .rules.client import AsyncRulesClient, RulesClient from .rules_configs.client import AsyncRulesConfigsClient, RulesConfigsClient @@ -95,6 +107,7 @@ def CustomDomainHeader(domain: str) -> RequestOptions: from .tenants.client import AsyncTenantsClient, TenantsClient from .tickets.client import AsyncTicketsClient, TicketsClient from .token_exchange_profiles.client import AsyncTokenExchangeProfilesClient, TokenExchangeProfilesClient + from .user_attribute_profiles.client import AsyncUserAttributeProfilesClient, UserAttributeProfilesClient from .user_blocks.client import AsyncUserBlocksClient, UserBlocksClient from .user_grants.client import AsyncUserGrantsClient, UserGrantsClient from .users.client import AsyncUsersClient, UsersClient @@ -221,6 +234,10 @@ def __init__( def actions(self) -> "ActionsClient": return self._api.actions + @property + def agents(self) -> "AgentsClient": + return self._api.agents + @property def anomaly(self) -> "AnomalyClient": return self._api.anomaly @@ -237,10 +254,18 @@ def branding(self) -> "BrandingClient": def client_grants(self) -> "ClientGrantsClient": return self._api.client_grants + @property + def client_profiles(self) -> "ClientProfilesClient": + return self._api.client_profiles + @property def clients(self) -> "ClientsClient": return self._api.clients + @property + def connection_profiles(self) -> "ConnectionProfilesClient": + return self._api.connection_profiles + @property def connections(self) -> "ConnectionsClient": return self._api.connections @@ -265,6 +290,14 @@ def emails(self) -> "EmailsClient": def event_streams(self) -> "EventStreamsClient": return self._api.event_streams + @property + def events(self) -> "EventsClient": + return self._api.events + + @property + def experimentation(self) -> "ExperimentationClient": + return self._api.experimentation + @property def flows(self) -> "FlowsClient": return self._api.flows @@ -273,6 +306,10 @@ def flows(self) -> "FlowsClient": def forms(self) -> "FormsClient": return self._api.forms + @property + def groups(self) -> "GroupsClient": + return self._api.groups + @property def guardian(self) -> "GuardianClient": return self._api.guardian @@ -309,6 +346,10 @@ def organizations(self) -> "OrganizationsClient": def prompts(self) -> "PromptsClient": return self._api.prompts + @property + def rate_limit_policies(self) -> "RateLimitPoliciesClient": + return self._api.rate_limit_policies + @property def refresh_tokens(self) -> "RefreshTokensClient": return self._api.refresh_tokens @@ -317,6 +358,10 @@ def refresh_tokens(self) -> "RefreshTokensClient": def resource_servers(self) -> "ResourceServersClient": return self._api.resource_servers + @property + def risk_assessments(self) -> "RiskAssessmentsClient": + return self._api.risk_assessments + @property def roles(self) -> "RolesClient": return self._api.roles @@ -357,6 +402,10 @@ def tickets(self) -> "TicketsClient": def token_exchange_profiles(self) -> "TokenExchangeProfilesClient": return self._api.token_exchange_profiles + @property + def user_attribute_profiles(self) -> "UserAttributeProfilesClient": + return self._api.user_attribute_profiles + @property def user_blocks(self) -> "UserBlocksClient": return self._api.user_blocks @@ -497,6 +546,10 @@ def __init__( def actions(self) -> "AsyncActionsClient": return self._api.actions + @property + def agents(self) -> "AsyncAgentsClient": + return self._api.agents + @property def anomaly(self) -> "AsyncAnomalyClient": return self._api.anomaly @@ -513,10 +566,18 @@ def branding(self) -> "AsyncBrandingClient": def client_grants(self) -> "AsyncClientGrantsClient": return self._api.client_grants + @property + def client_profiles(self) -> "AsyncClientProfilesClient": + return self._api.client_profiles + @property def clients(self) -> "AsyncClientsClient": return self._api.clients + @property + def connection_profiles(self) -> "AsyncConnectionProfilesClient": + return self._api.connection_profiles + @property def connections(self) -> "AsyncConnectionsClient": return self._api.connections @@ -541,6 +602,14 @@ def emails(self) -> "AsyncEmailsClient": def event_streams(self) -> "AsyncEventStreamsClient": return self._api.event_streams + @property + def events(self) -> "AsyncEventsClient": + return self._api.events + + @property + def experimentation(self) -> "AsyncExperimentationClient": + return self._api.experimentation + @property def flows(self) -> "AsyncFlowsClient": return self._api.flows @@ -549,6 +618,10 @@ def flows(self) -> "AsyncFlowsClient": def forms(self) -> "AsyncFormsClient": return self._api.forms + @property + def groups(self) -> "AsyncGroupsClient": + return self._api.groups + @property def guardian(self) -> "AsyncGuardianClient": return self._api.guardian @@ -585,6 +658,10 @@ def organizations(self) -> "AsyncOrganizationsClient": def prompts(self) -> "AsyncPromptsClient": return self._api.prompts + @property + def rate_limit_policies(self) -> "AsyncRateLimitPoliciesClient": + return self._api.rate_limit_policies + @property def refresh_tokens(self) -> "AsyncRefreshTokensClient": return self._api.refresh_tokens @@ -593,6 +670,10 @@ def refresh_tokens(self) -> "AsyncRefreshTokensClient": def resource_servers(self) -> "AsyncResourceServersClient": return self._api.resource_servers + @property + def risk_assessments(self) -> "AsyncRiskAssessmentsClient": + return self._api.risk_assessments + @property def roles(self) -> "AsyncRolesClient": return self._api.roles @@ -633,6 +714,10 @@ def tickets(self) -> "AsyncTicketsClient": def token_exchange_profiles(self) -> "AsyncTokenExchangeProfilesClient": return self._api.token_exchange_profiles + @property + def user_attribute_profiles(self) -> "AsyncUserAttributeProfilesClient": + return self._api.user_attribute_profiles + @property def user_blocks(self) -> "AsyncUserBlocksClient": return self._api.user_blocks diff --git a/src/auth0/management/roles/client.py b/src/auth0/management/roles/client.py index d4269f95..91e5ad8e 100644 --- a/src/auth0/management/roles/client.py +++ b/src/auth0/management/roles/client.py @@ -11,6 +11,7 @@ from ..types.get_role_response_content import GetRoleResponseContent from ..types.list_roles_offset_paginated_response_content import ListRolesOffsetPaginatedResponseContent from ..types.role import Role +from ..types.role_owner_id_filter import RoleOwnerIdFilter from ..types.role_type_enum import RoleTypeEnum from ..types.update_role_response_content import UpdateRoleResponseContent from .raw_client import AsyncRawRolesClient, RawRolesClient @@ -50,11 +51,11 @@ def list( include_totals: typing.Optional[bool] = True, name_filter: typing.Optional[str] = None, type: typing.Optional[RoleTypeEnum] = None, - owner_id: typing.Optional[str] = None, + owner_id: typing.Optional[RoleOwnerIdFilter] = None, request_options: typing.Optional[RequestOptions] = None, ) -> SyncPager[Role, ListRolesOffsetPaginatedResponseContent]: """ - Retrieve detailed list of user roles created in your tenant. + Retrieve a list of roles. Includes roles created in your tenant and, when `owner_id=auth0` is supplied, Auth0-managed System Roles. **Note**: The returned list does not include standard roles available for tenant members, such as Admin or Support Access. @@ -75,8 +76,8 @@ def list( type : typing.Optional[RoleTypeEnum] Optional filter on the type of the role - owner_id : typing.Optional[str] - Filter organization-level roles by owner ID. Required when type is "organization". + owner_id : typing.Optional[RoleOwnerIdFilter] + Filter organization-level roles by owner ID. Use an organization ID to filter that organization's roles, or "auth0" to retrieve Auth0-managed System Roles. Required when type is "organization". request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -326,11 +327,11 @@ async def list( include_totals: typing.Optional[bool] = True, name_filter: typing.Optional[str] = None, type: typing.Optional[RoleTypeEnum] = None, - owner_id: typing.Optional[str] = None, + owner_id: typing.Optional[RoleOwnerIdFilter] = None, request_options: typing.Optional[RequestOptions] = None, ) -> AsyncPager[Role, ListRolesOffsetPaginatedResponseContent]: """ - Retrieve detailed list of user roles created in your tenant. + Retrieve a list of roles. Includes roles created in your tenant and, when `owner_id=auth0` is supplied, Auth0-managed System Roles. **Note**: The returned list does not include standard roles available for tenant members, such as Admin or Support Access. @@ -351,8 +352,8 @@ async def list( type : typing.Optional[RoleTypeEnum] Optional filter on the type of the role - owner_id : typing.Optional[str] - Filter organization-level roles by owner ID. Required when type is "organization". + owner_id : typing.Optional[RoleOwnerIdFilter] + Filter organization-level roles by owner ID. Use an organization ID to filter that organization's roles, or "auth0" to retrieve Auth0-managed System Roles. Required when type is "organization". request_options : typing.Optional[RequestOptions] Request-specific configuration. diff --git a/src/auth0/management/roles/raw_client.py b/src/auth0/management/roles/raw_client.py index bdd88d22..5530bd4d 100644 --- a/src/auth0/management/roles/raw_client.py +++ b/src/auth0/management/roles/raw_client.py @@ -21,6 +21,7 @@ from ..types.get_role_response_content import GetRoleResponseContent from ..types.list_roles_offset_paginated_response_content import ListRolesOffsetPaginatedResponseContent from ..types.role import Role +from ..types.role_owner_id_filter import RoleOwnerIdFilter from ..types.role_type_enum import RoleTypeEnum from ..types.update_role_response_content import UpdateRoleResponseContent from pydantic import ValidationError @@ -41,11 +42,11 @@ def list( include_totals: typing.Optional[bool] = True, name_filter: typing.Optional[str] = None, type: typing.Optional[RoleTypeEnum] = None, - owner_id: typing.Optional[str] = None, + owner_id: typing.Optional[RoleOwnerIdFilter] = None, request_options: typing.Optional[RequestOptions] = None, ) -> SyncPager[Role, ListRolesOffsetPaginatedResponseContent]: """ - Retrieve detailed list of user roles created in your tenant. + Retrieve a list of roles. Includes roles created in your tenant and, when `owner_id=auth0` is supplied, Auth0-managed System Roles. **Note**: The returned list does not include standard roles available for tenant members, such as Admin or Support Access. @@ -66,8 +67,8 @@ def list( type : typing.Optional[RoleTypeEnum] Optional filter on the type of the role - owner_id : typing.Optional[str] - Filter organization-level roles by owner ID. Required when type is "organization". + owner_id : typing.Optional[RoleOwnerIdFilter] + Filter organization-level roles by owner ID. Use an organization ID to filter that organization's roles, or "auth0" to retrieve Auth0-managed System Roles. Required when type is "organization". request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -596,11 +597,11 @@ async def list( include_totals: typing.Optional[bool] = True, name_filter: typing.Optional[str] = None, type: typing.Optional[RoleTypeEnum] = None, - owner_id: typing.Optional[str] = None, + owner_id: typing.Optional[RoleOwnerIdFilter] = None, request_options: typing.Optional[RequestOptions] = None, ) -> AsyncPager[Role, ListRolesOffsetPaginatedResponseContent]: """ - Retrieve detailed list of user roles created in your tenant. + Retrieve a list of roles. Includes roles created in your tenant and, when `owner_id=auth0` is supplied, Auth0-managed System Roles. **Note**: The returned list does not include standard roles available for tenant members, such as Admin or Support Access. @@ -621,8 +622,8 @@ async def list( type : typing.Optional[RoleTypeEnum] Optional filter on the type of the role - owner_id : typing.Optional[str] - Filter organization-level roles by owner ID. Required when type is "organization". + owner_id : typing.Optional[RoleOwnerIdFilter] + Filter organization-level roles by owner ID. Use an organization ID to filter that organization's roles, or "auth0" to retrieve Auth0-managed System Roles. Required when type is "organization". request_options : typing.Optional[RequestOptions] Request-specific configuration. diff --git a/src/auth0/management/tenants/settings/client.py b/src/auth0/management/tenants/settings/client.py index 8038e045..3163173e 100644 --- a/src/auth0/management/tenants/settings/client.py +++ b/src/auth0/management/tenants/settings/client.py @@ -125,9 +125,11 @@ def update( mtls: typing.Optional[TenantSettingsMtls] = OMIT, pushed_authorization_requests_supported: typing.Optional[bool] = OMIT, authorization_response_iss_parameter_supported: typing.Optional[bool] = OMIT, + dpop_strict_refresh_token_binding: typing.Optional[bool] = OMIT, skip_non_verifiable_callback_uri_confirmation_prompt: typing.Optional[bool] = OMIT, resource_parameter_profile: typing.Optional[TenantSettingsResourceParameterProfile] = OMIT, client_id_metadata_document_supported: typing.Optional[bool] = OMIT, + client_id_metadata_document_dynamic_registration_supported: typing.Optional[bool] = OMIT, enable_ai_guide: typing.Optional[bool] = OMIT, phone_consolidated_experience: typing.Optional[bool] = OMIT, include_session_metadata_in_tenant_logs: typing.Optional[bool] = OMIT, @@ -239,6 +241,9 @@ def update( authorization_response_iss_parameter_supported : typing.Optional[bool] Supports iss parameter in authorization responses + dpop_strict_refresh_token_binding : typing.Optional[bool] + Enables strict DPoP refresh token binding per RFC 9449: all refresh tokens issued to public clients that present a DPoP proof are bound to the sender's key, and the binding is validated on every subsequent exchange. When disabled, DPoP refresh token binding may still apply for specific audiences for backwards compatibility. + skip_non_verifiable_callback_uri_confirmation_prompt : typing.Optional[bool] Controls whether a confirmation prompt is shown during login flows when the redirect URI uses non-verifiable callback URIs (for example, a custom URI schema such as `myapp://`, or `localhost`). If set to true, a confirmation prompt will not be shown. We recommend that this is set to false for improved protection from malicious apps. @@ -249,6 +254,9 @@ def update( client_id_metadata_document_supported : typing.Optional[bool] Whether the authorization server supports retrieving client metadata from a client_id URL. + client_id_metadata_document_dynamic_registration_supported : typing.Optional[bool] + Whether the authorization server supports registering clients dynamically from a client_id URL. Requires client_id_metadata_document_supported to be enabled. + enable_ai_guide : typing.Optional[bool] Whether Auth0 Guide (AI-powered assistance) is enabled for this tenant. @@ -316,9 +324,11 @@ def update( mtls=mtls, pushed_authorization_requests_supported=pushed_authorization_requests_supported, authorization_response_iss_parameter_supported=authorization_response_iss_parameter_supported, + dpop_strict_refresh_token_binding=dpop_strict_refresh_token_binding, skip_non_verifiable_callback_uri_confirmation_prompt=skip_non_verifiable_callback_uri_confirmation_prompt, resource_parameter_profile=resource_parameter_profile, client_id_metadata_document_supported=client_id_metadata_document_supported, + client_id_metadata_document_dynamic_registration_supported=client_id_metadata_document_dynamic_registration_supported, enable_ai_guide=enable_ai_guide, phone_consolidated_experience=phone_consolidated_experience, include_session_metadata_in_tenant_logs=include_session_metadata_in_tenant_logs, @@ -434,9 +444,11 @@ async def update( mtls: typing.Optional[TenantSettingsMtls] = OMIT, pushed_authorization_requests_supported: typing.Optional[bool] = OMIT, authorization_response_iss_parameter_supported: typing.Optional[bool] = OMIT, + dpop_strict_refresh_token_binding: typing.Optional[bool] = OMIT, skip_non_verifiable_callback_uri_confirmation_prompt: typing.Optional[bool] = OMIT, resource_parameter_profile: typing.Optional[TenantSettingsResourceParameterProfile] = OMIT, client_id_metadata_document_supported: typing.Optional[bool] = OMIT, + client_id_metadata_document_dynamic_registration_supported: typing.Optional[bool] = OMIT, enable_ai_guide: typing.Optional[bool] = OMIT, phone_consolidated_experience: typing.Optional[bool] = OMIT, include_session_metadata_in_tenant_logs: typing.Optional[bool] = OMIT, @@ -548,6 +560,9 @@ async def update( authorization_response_iss_parameter_supported : typing.Optional[bool] Supports iss parameter in authorization responses + dpop_strict_refresh_token_binding : typing.Optional[bool] + Enables strict DPoP refresh token binding per RFC 9449: all refresh tokens issued to public clients that present a DPoP proof are bound to the sender's key, and the binding is validated on every subsequent exchange. When disabled, DPoP refresh token binding may still apply for specific audiences for backwards compatibility. + skip_non_verifiable_callback_uri_confirmation_prompt : typing.Optional[bool] Controls whether a confirmation prompt is shown during login flows when the redirect URI uses non-verifiable callback URIs (for example, a custom URI schema such as `myapp://`, or `localhost`). If set to true, a confirmation prompt will not be shown. We recommend that this is set to false for improved protection from malicious apps. @@ -558,6 +573,9 @@ async def update( client_id_metadata_document_supported : typing.Optional[bool] Whether the authorization server supports retrieving client metadata from a client_id URL. + client_id_metadata_document_dynamic_registration_supported : typing.Optional[bool] + Whether the authorization server supports registering clients dynamically from a client_id URL. Requires client_id_metadata_document_supported to be enabled. + enable_ai_guide : typing.Optional[bool] Whether Auth0 Guide (AI-powered assistance) is enabled for this tenant. @@ -633,9 +651,11 @@ async def main() -> None: mtls=mtls, pushed_authorization_requests_supported=pushed_authorization_requests_supported, authorization_response_iss_parameter_supported=authorization_response_iss_parameter_supported, + dpop_strict_refresh_token_binding=dpop_strict_refresh_token_binding, skip_non_verifiable_callback_uri_confirmation_prompt=skip_non_verifiable_callback_uri_confirmation_prompt, resource_parameter_profile=resource_parameter_profile, client_id_metadata_document_supported=client_id_metadata_document_supported, + client_id_metadata_document_dynamic_registration_supported=client_id_metadata_document_dynamic_registration_supported, enable_ai_guide=enable_ai_guide, phone_consolidated_experience=phone_consolidated_experience, include_session_metadata_in_tenant_logs=include_session_metadata_in_tenant_logs, diff --git a/src/auth0/management/tenants/settings/raw_client.py b/src/auth0/management/tenants/settings/raw_client.py index f373ef96..036d228f 100644 --- a/src/auth0/management/tenants/settings/raw_client.py +++ b/src/auth0/management/tenants/settings/raw_client.py @@ -181,9 +181,11 @@ def update( mtls: typing.Optional[TenantSettingsMtls] = OMIT, pushed_authorization_requests_supported: typing.Optional[bool] = OMIT, authorization_response_iss_parameter_supported: typing.Optional[bool] = OMIT, + dpop_strict_refresh_token_binding: typing.Optional[bool] = OMIT, skip_non_verifiable_callback_uri_confirmation_prompt: typing.Optional[bool] = OMIT, resource_parameter_profile: typing.Optional[TenantSettingsResourceParameterProfile] = OMIT, client_id_metadata_document_supported: typing.Optional[bool] = OMIT, + client_id_metadata_document_dynamic_registration_supported: typing.Optional[bool] = OMIT, enable_ai_guide: typing.Optional[bool] = OMIT, phone_consolidated_experience: typing.Optional[bool] = OMIT, include_session_metadata_in_tenant_logs: typing.Optional[bool] = OMIT, @@ -295,6 +297,9 @@ def update( authorization_response_iss_parameter_supported : typing.Optional[bool] Supports iss parameter in authorization responses + dpop_strict_refresh_token_binding : typing.Optional[bool] + Enables strict DPoP refresh token binding per RFC 9449: all refresh tokens issued to public clients that present a DPoP proof are bound to the sender's key, and the binding is validated on every subsequent exchange. When disabled, DPoP refresh token binding may still apply for specific audiences for backwards compatibility. + skip_non_verifiable_callback_uri_confirmation_prompt : typing.Optional[bool] Controls whether a confirmation prompt is shown during login flows when the redirect URI uses non-verifiable callback URIs (for example, a custom URI schema such as `myapp://`, or `localhost`). If set to true, a confirmation prompt will not be shown. We recommend that this is set to false for improved protection from malicious apps. @@ -305,6 +310,9 @@ def update( client_id_metadata_document_supported : typing.Optional[bool] Whether the authorization server supports retrieving client metadata from a client_id URL. + client_id_metadata_document_dynamic_registration_supported : typing.Optional[bool] + Whether the authorization server supports registering clients dynamically from a client_id URL. Requires client_id_metadata_document_supported to be enabled. + enable_ai_guide : typing.Optional[bool] Whether Auth0 Guide (AI-powered assistance) is enabled for this tenant. @@ -392,9 +400,11 @@ def update( ), "pushed_authorization_requests_supported": pushed_authorization_requests_supported, "authorization_response_iss_parameter_supported": authorization_response_iss_parameter_supported, + "dpop_strict_refresh_token_binding": dpop_strict_refresh_token_binding, "skip_non_verifiable_callback_uri_confirmation_prompt": skip_non_verifiable_callback_uri_confirmation_prompt, "resource_parameter_profile": resource_parameter_profile, "client_id_metadata_document_supported": client_id_metadata_document_supported, + "client_id_metadata_document_dynamic_registration_supported": client_id_metadata_document_dynamic_registration_supported, "enable_ai_guide": enable_ai_guide, "phone_consolidated_experience": phone_consolidated_experience, "include_session_metadata_in_tenant_logs": include_session_metadata_in_tenant_logs, @@ -614,9 +624,11 @@ async def update( mtls: typing.Optional[TenantSettingsMtls] = OMIT, pushed_authorization_requests_supported: typing.Optional[bool] = OMIT, authorization_response_iss_parameter_supported: typing.Optional[bool] = OMIT, + dpop_strict_refresh_token_binding: typing.Optional[bool] = OMIT, skip_non_verifiable_callback_uri_confirmation_prompt: typing.Optional[bool] = OMIT, resource_parameter_profile: typing.Optional[TenantSettingsResourceParameterProfile] = OMIT, client_id_metadata_document_supported: typing.Optional[bool] = OMIT, + client_id_metadata_document_dynamic_registration_supported: typing.Optional[bool] = OMIT, enable_ai_guide: typing.Optional[bool] = OMIT, phone_consolidated_experience: typing.Optional[bool] = OMIT, include_session_metadata_in_tenant_logs: typing.Optional[bool] = OMIT, @@ -728,6 +740,9 @@ async def update( authorization_response_iss_parameter_supported : typing.Optional[bool] Supports iss parameter in authorization responses + dpop_strict_refresh_token_binding : typing.Optional[bool] + Enables strict DPoP refresh token binding per RFC 9449: all refresh tokens issued to public clients that present a DPoP proof are bound to the sender's key, and the binding is validated on every subsequent exchange. When disabled, DPoP refresh token binding may still apply for specific audiences for backwards compatibility. + skip_non_verifiable_callback_uri_confirmation_prompt : typing.Optional[bool] Controls whether a confirmation prompt is shown during login flows when the redirect URI uses non-verifiable callback URIs (for example, a custom URI schema such as `myapp://`, or `localhost`). If set to true, a confirmation prompt will not be shown. We recommend that this is set to false for improved protection from malicious apps. @@ -738,6 +753,9 @@ async def update( client_id_metadata_document_supported : typing.Optional[bool] Whether the authorization server supports retrieving client metadata from a client_id URL. + client_id_metadata_document_dynamic_registration_supported : typing.Optional[bool] + Whether the authorization server supports registering clients dynamically from a client_id URL. Requires client_id_metadata_document_supported to be enabled. + enable_ai_guide : typing.Optional[bool] Whether Auth0 Guide (AI-powered assistance) is enabled for this tenant. @@ -825,9 +843,11 @@ async def update( ), "pushed_authorization_requests_supported": pushed_authorization_requests_supported, "authorization_response_iss_parameter_supported": authorization_response_iss_parameter_supported, + "dpop_strict_refresh_token_binding": dpop_strict_refresh_token_binding, "skip_non_verifiable_callback_uri_confirmation_prompt": skip_non_verifiable_callback_uri_confirmation_prompt, "resource_parameter_profile": resource_parameter_profile, "client_id_metadata_document_supported": client_id_metadata_document_supported, + "client_id_metadata_document_dynamic_registration_supported": client_id_metadata_document_dynamic_registration_supported, "enable_ai_guide": enable_ai_guide, "phone_consolidated_experience": phone_consolidated_experience, "include_session_metadata_in_tenant_logs": include_session_metadata_in_tenant_logs, diff --git a/src/auth0/management/types/__init__.py b/src/auth0/management/types/__init__.py index 1a548259..b1f90043 100644 --- a/src/auth0/management/types/__init__.py +++ b/src/auth0/management/types/__init__.py @@ -80,6 +80,10 @@ AttackProtectionCaptchaFriendlyCaptchaResponseContent, ) from .attack_protection_captcha_hcaptcha_response_content import AttackProtectionCaptchaHcaptchaResponseContent + from .attack_protection_captcha_policy import AttackProtectionCaptchaPolicy + from .attack_protection_captcha_policy_action import AttackProtectionCaptchaPolicyAction + from .attack_protection_captcha_policy_action_input import AttackProtectionCaptchaPolicyActionInput + from .attack_protection_captcha_policy_match import AttackProtectionCaptchaPolicyMatch from .attack_protection_captcha_provider_id import AttackProtectionCaptchaProviderId from .attack_protection_captcha_recaptcha_enterprise_response_content import ( AttackProtectionCaptchaRecaptchaEnterpriseResponseContent, @@ -160,13 +164,28 @@ ) from .breached_password_detection_shields_enum import BreachedPasswordDetectionShieldsEnum from .breached_password_detection_stage import BreachedPasswordDetectionStage + from .brute_force_protection_form_submission_mode_enum import BruteForceProtectionFormSubmissionModeEnum from .brute_force_protection_mode_enum import BruteForceProtectionModeEnum from .brute_force_protection_shields_enum import BruteForceProtectionShieldsEnum from .bulk_update_acul_response_content import BulkUpdateAculResponseContent + from .captcha_active_provider_enum import CaptchaActiveProviderEnum + from .captcha_policy_action_arkose import CaptchaPolicyActionArkose + from .captcha_policy_action_arkose_input import CaptchaPolicyActionArkoseInput + from .captcha_policy_action_auth_challenge import CaptchaPolicyActionAuthChallenge + from .captcha_policy_action_friendly_captcha import CaptchaPolicyActionFriendlyCaptcha + from .captcha_policy_action_friendly_captcha_input import CaptchaPolicyActionFriendlyCaptchaInput + from .captcha_policy_action_hcaptcha import CaptchaPolicyActionHcaptcha + from .captcha_policy_action_hcaptcha_input import CaptchaPolicyActionHcaptchaInput + from .captcha_policy_action_recaptcha_enterprise import CaptchaPolicyActionRecaptchaEnterprise + from .captcha_policy_action_recaptcha_enterprise_input import CaptchaPolicyActionRecaptchaEnterpriseInput + from .captcha_policy_action_recaptcha_v_2 import CaptchaPolicyActionRecaptchaV2 + from .captcha_policy_action_recaptcha_v_2_input import CaptchaPolicyActionRecaptchaV2Input + from .captcha_policy_action_simple_captcha import CaptchaPolicyActionSimpleCaptcha from .certificate_subject_dn_credential import CertificateSubjectDnCredential from .certificate_subject_dn_credential_type_enum import CertificateSubjectDnCredentialTypeEnum from .change_password_ticket_identity import ChangePasswordTicketIdentity from .change_password_ticket_response_content import ChangePasswordTicketResponseContent + from .cimd_external_metadata_created_by_enum import CimdExternalMetadataCreatedByEnum from .cimd_mapped_client_authentication_methods import CimdMappedClientAuthenticationMethods from .cimd_mapped_client_authentication_methods_private_key_jwt import ( CimdMappedClientAuthenticationMethodsPrivateKeyJwt, @@ -208,6 +227,7 @@ from .client_addon_zendesk import ClientAddonZendesk from .client_addon_zoom import ClientAddonZoom from .client_addons import ClientAddons + from .client_anonymous_session_transfer_network_binding_enum import ClientAnonymousSessionTransferNetworkBindingEnum from .client_app_type_enum import ClientAppTypeEnum from .client_async_approval_notifications_channels_api_patch_configuration import ( ClientAsyncApprovalNotificationsChannelsApiPatchConfiguration, @@ -247,12 +267,14 @@ from .client_default_organization_flows_enum import ClientDefaultOrganizationFlowsEnum from .client_encryption_key import ClientEncryptionKey from .client_external_metadata_created_by_enum import ClientExternalMetadataCreatedByEnum + from .client_external_metadata_status_enum import ClientExternalMetadataStatusEnum from .client_external_metadata_type_enum import ClientExternalMetadataTypeEnum from .client_grant_allow_any_organization_enum import ClientGrantAllowAnyOrganizationEnum from .client_grant_default_for_enum import ClientGrantDefaultForEnum from .client_grant_organization_nullable_usage_enum import ClientGrantOrganizationNullableUsageEnum from .client_grant_organization_usage_enum import ClientGrantOrganizationUsageEnum from .client_grant_response_content import ClientGrantResponseContent + from .client_grant_sort_field_enum import ClientGrantSortFieldEnum from .client_grant_subject_type_enum import ClientGrantSubjectTypeEnum from .client_jwt_configuration import ClientJwtConfiguration from .client_jwt_configuration_scopes import ClientJwtConfigurationScopes @@ -282,15 +304,54 @@ from .client_oidc_backchannel_logout_session_metadata import ClientOidcBackchannelLogoutSessionMetadata from .client_oidc_backchannel_logout_settings import ClientOidcBackchannelLogoutSettings from .client_oidc_support_allowed_scopes_enum import ClientOidcSupportAllowedScopesEnum + from .client_oidc_support_patch import ClientOidcSupportPatch from .client_oidc_support_post import ClientOidcSupportPost from .client_organization_discovery_enum import ClientOrganizationDiscoveryEnum from .client_organization_require_behavior_enum import ClientOrganizationRequireBehaviorEnum from .client_organization_require_behavior_patch_enum import ClientOrganizationRequireBehaviorPatchEnum from .client_organization_usage_enum import ClientOrganizationUsageEnum from .client_organization_usage_patch_enum import ClientOrganizationUsagePatchEnum + from .client_profile import ClientProfile + from .client_profile_apply_policy import ClientProfileApplyPolicy + from .client_profile_apply_policy_external_metadata_created_by_enum import ( + ClientProfileApplyPolicyExternalMetadataCreatedByEnum, + ) + from .client_profile_apply_policy_external_metadata_type_enum import ( + ClientProfileApplyPolicyExternalMetadataTypeEnum, + ) + from .client_profile_client_configuration import ClientProfileClientConfiguration + from .client_profile_client_configuration_organization_discovery_method_enum import ( + ClientProfileClientConfigurationOrganizationDiscoveryMethodEnum, + ) + from .client_profile_client_configuration_organization_discovery_methods import ( + ClientProfileClientConfigurationOrganizationDiscoveryMethods, + ) + from .client_profile_client_configuration_organization_require_behavior import ( + ClientProfileClientConfigurationOrganizationRequireBehavior, + ) + from .client_profile_client_configuration_organization_require_behavior_enum import ( + ClientProfileClientConfigurationOrganizationRequireBehaviorEnum, + ) + from .client_profile_client_configuration_organization_usage import ( + ClientProfileClientConfigurationOrganizationUsage, + ) + from .client_profile_client_configuration_organization_usage_enum import ( + ClientProfileClientConfigurationOrganizationUsageEnum, + ) + from .client_profile_client_configuration_refresh_token import ClientProfileClientConfigurationRefreshToken + from .client_profile_client_configuration_require_proof_of_possession import ( + ClientProfileClientConfigurationRequireProofOfPossession, + ) + from .client_profile_description import ClientProfileDescription + from .client_profile_id import ClientProfileId + from .client_profile_name import ClientProfileName + from .client_profile_refresh_token_idle_token_lifetime import ClientProfileRefreshTokenIdleTokenLifetime + from .client_profile_refresh_token_leeway import ClientProfileRefreshTokenLeeway + from .client_profile_refresh_token_token_lifetime import ClientProfileRefreshTokenTokenLifetime from .client_redirection_policy_enum import ClientRedirectionPolicyEnum from .client_refresh_token_configuration import ClientRefreshTokenConfiguration from .client_refresh_token_policy import ClientRefreshTokenPolicy + from .client_search_response import ClientSearchResponse from .client_session_transfer_allowed_authentication_methods_enum import ( ClientSessionTransferAllowedAuthenticationMethodsEnum, ) @@ -302,6 +363,7 @@ from .client_signed_request_object_with_public_key import ClientSignedRequestObjectWithPublicKey from .client_signing_key import ClientSigningKey from .client_signing_keys import ClientSigningKeys + from .client_sort_field_enum import ClientSortFieldEnum from .client_third_party_security_mode_enum import ClientThirdPartySecurityModeEnum from .client_token_endpoint_auth_method_enum import ClientTokenEndpointAuthMethodEnum from .client_token_endpoint_auth_method_or_null_enum import ClientTokenEndpointAuthMethodOrNullEnum @@ -623,6 +685,10 @@ ) from .connection_profile_organization_show_as_button_enum import ConnectionProfileOrganizationShowAsButtonEnum from .connection_profile_provisioning import ConnectionProfileProvisioning + from .connection_profile_provisioning_google_workspace import ConnectionProfileProvisioningGoogleWorkspace + from .connection_profile_provisioning_google_workspace_sync_users import ( + ConnectionProfileProvisioningGoogleWorkspaceSyncUsers, + ) from .connection_profile_provisioning_scim import ConnectionProfileProvisioningScim from .connection_profile_provisioning_scim_token_default_expiry import ( ConnectionProfileProvisioningScimTokenDefaultExpiry, @@ -3844,6 +3910,21 @@ from .event_stream_cloud_event_org_connection_added_object_organization_access_level_3_enum import ( EventStreamCloudEventOrgConnectionAddedObjectOrganizationAccessLevel3Enum, ) + from .event_stream_cloud_event_org_connection_added_object_organization_member_access_level import ( + EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel, + ) + from .event_stream_cloud_event_org_connection_added_object_organization_member_access_level_0_enum import ( + EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel0Enum, + ) + from .event_stream_cloud_event_org_connection_added_object_organization_member_access_level_1_enum import ( + EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel1Enum, + ) + from .event_stream_cloud_event_org_connection_added_object_organization_member_access_level_2_enum import ( + EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel2Enum, + ) + from .event_stream_cloud_event_org_connection_added_object_organization_member_access_level_3_enum import ( + EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel3Enum, + ) from .event_stream_cloud_event_org_connection_added_previous_object import ( EventStreamCloudEventOrgConnectionAddedPreviousObject, ) @@ -3868,6 +3949,21 @@ from .event_stream_cloud_event_org_connection_added_previous_object_organization_access_level_3_enum import ( EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationAccessLevel3Enum, ) + from .event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level import ( + EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel, + ) + from .event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level_0_enum import ( + EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel0Enum, + ) + from .event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level_1_enum import ( + EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel1Enum, + ) + from .event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level_2_enum import ( + EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel2Enum, + ) + from .event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level_3_enum import ( + EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel3Enum, + ) from .event_stream_cloud_event_org_connection_added_type_enum import EventStreamCloudEventOrgConnectionAddedTypeEnum from .event_stream_cloud_event_org_connection_removed import EventStreamCloudEventOrgConnectionRemoved from .event_stream_cloud_event_org_connection_removed_cloud_event import ( @@ -3926,6 +4022,21 @@ from .event_stream_cloud_event_org_connection_updated_object_organization_access_level_3_enum import ( EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationAccessLevel3Enum, ) + from .event_stream_cloud_event_org_connection_updated_object_organization_member_access_level import ( + EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel, + ) + from .event_stream_cloud_event_org_connection_updated_object_organization_member_access_level_0_enum import ( + EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel0Enum, + ) + from .event_stream_cloud_event_org_connection_updated_object_organization_member_access_level_1_enum import ( + EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel1Enum, + ) + from .event_stream_cloud_event_org_connection_updated_object_organization_member_access_level_2_enum import ( + EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel2Enum, + ) + from .event_stream_cloud_event_org_connection_updated_object_organization_member_access_level_3_enum import ( + EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel3Enum, + ) from .event_stream_cloud_event_org_connection_updated_previous_object import ( EventStreamCloudEventOrgConnectionUpdatedPreviousObject, ) @@ -3950,6 +4061,21 @@ from .event_stream_cloud_event_org_connection_updated_previous_object_organization_access_level_3_enum import ( EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationAccessLevel3Enum, ) + from .event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level import ( + EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel, + ) + from .event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level_0_enum import ( + EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel0Enum, + ) + from .event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level_1_enum import ( + EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel1Enum, + ) + from .event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level_2_enum import ( + EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel2Enum, + ) + from .event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level_3_enum import ( + EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel3Enum, + ) from .event_stream_cloud_event_org_connection_updated_type_enum import ( EventStreamCloudEventOrgConnectionUpdatedTypeEnum, ) @@ -5616,12 +5742,16 @@ from .list_aculs_offset_paginated_response_content import ListAculsOffsetPaginatedResponseContent from .list_aculs_response_content_item import ListAculsResponseContentItem from .list_agents_response_content import ListAgentsResponseContent + from .list_attack_protection_captcha_policies_response_content import ( + ListAttackProtectionCaptchaPoliciesResponseContent, + ) from .list_branding_phone_providers_response_content import ListBrandingPhoneProvidersResponseContent from .list_client_connections_response_content import ListClientConnectionsResponseContent from .list_client_grant_organizations_paginated_response_content import ( ListClientGrantOrganizationsPaginatedResponseContent, ) from .list_client_grant_paginated_response_content import ListClientGrantPaginatedResponseContent + from .list_client_profiles_paginated_response_content import ListClientProfilesPaginatedResponseContent from .list_clients_offset_paginated_response_content import ListClientsOffsetPaginatedResponseContent from .list_connection_profile_template_response_content import ListConnectionProfileTemplateResponseContent from .list_connection_profiles_paginated_response_content import ListConnectionProfilesPaginatedResponseContent @@ -5960,6 +6090,8 @@ from .role import Role from .role_group import RoleGroup from .role_member import RoleMember + from .role_owner_id import RoleOwnerId + from .role_owner_id_filter import RoleOwnerIdFilter from .role_type_enum import RoleTypeEnum from .role_user import RoleUser from .rollback_action_module_response_content import RollbackActionModuleResponseContent @@ -5974,6 +6106,8 @@ from .scim_mapping_item import ScimMappingItem from .scim_token_item import ScimTokenItem from .screen_group_name_enum import ScreenGroupNameEnum + from .search_client_grants_response_content import SearchClientGrantsResponseContent + from .search_clients_response_content import SearchClientsResponseContent from .search_engine_versions_enum import SearchEngineVersionsEnum from .search_organization import SearchOrganization from .search_organizations_paginated_response_content import SearchOrganizationsPaginatedResponseContent @@ -5988,6 +6122,7 @@ from .segment_not_match_conditions import SegmentNotMatchConditions from .segment_rule import SegmentRule from .segment_starts_with_expression import SegmentStartsWithExpression + from .segment_status_enum import SegmentStatusEnum from .segment_type_enum import SegmentTypeEnum from .segment_type_filter_enum import SegmentTypeFilterEnum from .self_service_profile import SelfServiceProfile @@ -6099,6 +6234,7 @@ from .synchronize_groups_enum import SynchronizeGroupsEnum from .synchronized_group_payload import SynchronizedGroupPayload from .synchronized_group_selection_id import SynchronizedGroupSelectionId + from .system_role_owner_id import SystemRoleOwnerId from .tenant_oidc_logout_settings import TenantOidcLogoutSettings from .tenant_settings_country_codes import TenantSettingsCountryCodes from .tenant_settings_country_codes_mode import TenantSettingsCountryCodesMode @@ -6234,10 +6370,8 @@ from .update_enabled_client_connections_request_content_item import UpdateEnabledClientConnectionsRequestContentItem from .update_event_stream_response_content import UpdateEventStreamResponseContent from .update_experiment_response_content import UpdateExperimentResponseContent - from .update_experiment_status_response_content import UpdateExperimentStatusResponseContent from .update_feature_flag_parameters import UpdateFeatureFlagParameters from .update_feature_flag_response_content import UpdateFeatureFlagResponseContent - from .update_feature_flag_status_response_content import UpdateFeatureFlagStatusResponseContent from .update_flow_response_content import UpdateFlowResponseContent from .update_flows_vault_connection_response_content import UpdateFlowsVaultConnectionResponseContent from .update_flows_vault_connection_setup import UpdateFlowsVaultConnectionSetup @@ -6434,6 +6568,10 @@ "AttackProtectionCaptchaAuthChallengeResponseContent": ".attack_protection_captcha_auth_challenge_response_content", "AttackProtectionCaptchaFriendlyCaptchaResponseContent": ".attack_protection_captcha_friendly_captcha_response_content", "AttackProtectionCaptchaHcaptchaResponseContent": ".attack_protection_captcha_hcaptcha_response_content", + "AttackProtectionCaptchaPolicy": ".attack_protection_captcha_policy", + "AttackProtectionCaptchaPolicyAction": ".attack_protection_captcha_policy_action", + "AttackProtectionCaptchaPolicyActionInput": ".attack_protection_captcha_policy_action_input", + "AttackProtectionCaptchaPolicyMatch": ".attack_protection_captcha_policy_match", "AttackProtectionCaptchaProviderId": ".attack_protection_captcha_provider_id", "AttackProtectionCaptchaRecaptchaEnterpriseResponseContent": ".attack_protection_captcha_recaptcha_enterprise_response_content", "AttackProtectionCaptchaRecaptchaV2ResponseContent": ".attack_protection_captcha_recaptcha_v_2_response_content", @@ -6496,13 +6634,28 @@ "BreachedPasswordDetectionPreUserRegistrationStage": ".breached_password_detection_pre_user_registration_stage", "BreachedPasswordDetectionShieldsEnum": ".breached_password_detection_shields_enum", "BreachedPasswordDetectionStage": ".breached_password_detection_stage", + "BruteForceProtectionFormSubmissionModeEnum": ".brute_force_protection_form_submission_mode_enum", "BruteForceProtectionModeEnum": ".brute_force_protection_mode_enum", "BruteForceProtectionShieldsEnum": ".brute_force_protection_shields_enum", "BulkUpdateAculResponseContent": ".bulk_update_acul_response_content", + "CaptchaActiveProviderEnum": ".captcha_active_provider_enum", + "CaptchaPolicyActionArkose": ".captcha_policy_action_arkose", + "CaptchaPolicyActionArkoseInput": ".captcha_policy_action_arkose_input", + "CaptchaPolicyActionAuthChallenge": ".captcha_policy_action_auth_challenge", + "CaptchaPolicyActionFriendlyCaptcha": ".captcha_policy_action_friendly_captcha", + "CaptchaPolicyActionFriendlyCaptchaInput": ".captcha_policy_action_friendly_captcha_input", + "CaptchaPolicyActionHcaptcha": ".captcha_policy_action_hcaptcha", + "CaptchaPolicyActionHcaptchaInput": ".captcha_policy_action_hcaptcha_input", + "CaptchaPolicyActionRecaptchaEnterprise": ".captcha_policy_action_recaptcha_enterprise", + "CaptchaPolicyActionRecaptchaEnterpriseInput": ".captcha_policy_action_recaptcha_enterprise_input", + "CaptchaPolicyActionRecaptchaV2": ".captcha_policy_action_recaptcha_v_2", + "CaptchaPolicyActionRecaptchaV2Input": ".captcha_policy_action_recaptcha_v_2_input", + "CaptchaPolicyActionSimpleCaptcha": ".captcha_policy_action_simple_captcha", "CertificateSubjectDnCredential": ".certificate_subject_dn_credential", "CertificateSubjectDnCredentialTypeEnum": ".certificate_subject_dn_credential_type_enum", "ChangePasswordTicketIdentity": ".change_password_ticket_identity", "ChangePasswordTicketResponseContent": ".change_password_ticket_response_content", + "CimdExternalMetadataCreatedByEnum": ".cimd_external_metadata_created_by_enum", "CimdMappedClientAuthenticationMethods": ".cimd_mapped_client_authentication_methods", "CimdMappedClientAuthenticationMethodsPrivateKeyJwt": ".cimd_mapped_client_authentication_methods_private_key_jwt", "CimdMappedClientFields": ".cimd_mapped_client_fields", @@ -6542,6 +6695,7 @@ "ClientAddonZendesk": ".client_addon_zendesk", "ClientAddonZoom": ".client_addon_zoom", "ClientAddons": ".client_addons", + "ClientAnonymousSessionTransferNetworkBindingEnum": ".client_anonymous_session_transfer_network_binding_enum", "ClientAppTypeEnum": ".client_app_type_enum", "ClientAsyncApprovalNotificationsChannelsApiPatchConfiguration": ".client_async_approval_notifications_channels_api_patch_configuration", "ClientAsyncApprovalNotificationsChannelsApiPostConfiguration": ".client_async_approval_notifications_channels_api_post_configuration", @@ -6565,12 +6719,14 @@ "ClientDefaultOrganizationFlowsEnum": ".client_default_organization_flows_enum", "ClientEncryptionKey": ".client_encryption_key", "ClientExternalMetadataCreatedByEnum": ".client_external_metadata_created_by_enum", + "ClientExternalMetadataStatusEnum": ".client_external_metadata_status_enum", "ClientExternalMetadataTypeEnum": ".client_external_metadata_type_enum", "ClientGrantAllowAnyOrganizationEnum": ".client_grant_allow_any_organization_enum", "ClientGrantDefaultForEnum": ".client_grant_default_for_enum", "ClientGrantOrganizationNullableUsageEnum": ".client_grant_organization_nullable_usage_enum", "ClientGrantOrganizationUsageEnum": ".client_grant_organization_usage_enum", "ClientGrantResponseContent": ".client_grant_response_content", + "ClientGrantSortFieldEnum": ".client_grant_sort_field_enum", "ClientGrantSubjectTypeEnum": ".client_grant_subject_type_enum", "ClientJwtConfiguration": ".client_jwt_configuration", "ClientJwtConfigurationScopes": ".client_jwt_configuration_scopes", @@ -6592,15 +6748,36 @@ "ClientOidcBackchannelLogoutSessionMetadata": ".client_oidc_backchannel_logout_session_metadata", "ClientOidcBackchannelLogoutSettings": ".client_oidc_backchannel_logout_settings", "ClientOidcSupportAllowedScopesEnum": ".client_oidc_support_allowed_scopes_enum", + "ClientOidcSupportPatch": ".client_oidc_support_patch", "ClientOidcSupportPost": ".client_oidc_support_post", "ClientOrganizationDiscoveryEnum": ".client_organization_discovery_enum", "ClientOrganizationRequireBehaviorEnum": ".client_organization_require_behavior_enum", "ClientOrganizationRequireBehaviorPatchEnum": ".client_organization_require_behavior_patch_enum", "ClientOrganizationUsageEnum": ".client_organization_usage_enum", "ClientOrganizationUsagePatchEnum": ".client_organization_usage_patch_enum", + "ClientProfile": ".client_profile", + "ClientProfileApplyPolicy": ".client_profile_apply_policy", + "ClientProfileApplyPolicyExternalMetadataCreatedByEnum": ".client_profile_apply_policy_external_metadata_created_by_enum", + "ClientProfileApplyPolicyExternalMetadataTypeEnum": ".client_profile_apply_policy_external_metadata_type_enum", + "ClientProfileClientConfiguration": ".client_profile_client_configuration", + "ClientProfileClientConfigurationOrganizationDiscoveryMethodEnum": ".client_profile_client_configuration_organization_discovery_method_enum", + "ClientProfileClientConfigurationOrganizationDiscoveryMethods": ".client_profile_client_configuration_organization_discovery_methods", + "ClientProfileClientConfigurationOrganizationRequireBehavior": ".client_profile_client_configuration_organization_require_behavior", + "ClientProfileClientConfigurationOrganizationRequireBehaviorEnum": ".client_profile_client_configuration_organization_require_behavior_enum", + "ClientProfileClientConfigurationOrganizationUsage": ".client_profile_client_configuration_organization_usage", + "ClientProfileClientConfigurationOrganizationUsageEnum": ".client_profile_client_configuration_organization_usage_enum", + "ClientProfileClientConfigurationRefreshToken": ".client_profile_client_configuration_refresh_token", + "ClientProfileClientConfigurationRequireProofOfPossession": ".client_profile_client_configuration_require_proof_of_possession", + "ClientProfileDescription": ".client_profile_description", + "ClientProfileId": ".client_profile_id", + "ClientProfileName": ".client_profile_name", + "ClientProfileRefreshTokenIdleTokenLifetime": ".client_profile_refresh_token_idle_token_lifetime", + "ClientProfileRefreshTokenLeeway": ".client_profile_refresh_token_leeway", + "ClientProfileRefreshTokenTokenLifetime": ".client_profile_refresh_token_token_lifetime", "ClientRedirectionPolicyEnum": ".client_redirection_policy_enum", "ClientRefreshTokenConfiguration": ".client_refresh_token_configuration", "ClientRefreshTokenPolicy": ".client_refresh_token_policy", + "ClientSearchResponse": ".client_search_response", "ClientSessionTransferAllowedAuthenticationMethodsEnum": ".client_session_transfer_allowed_authentication_methods_enum", "ClientSessionTransferConfiguration": ".client_session_transfer_configuration", "ClientSessionTransferDelegationConfiguration": ".client_session_transfer_delegation_configuration", @@ -6610,6 +6787,7 @@ "ClientSignedRequestObjectWithPublicKey": ".client_signed_request_object_with_public_key", "ClientSigningKey": ".client_signing_key", "ClientSigningKeys": ".client_signing_keys", + "ClientSortFieldEnum": ".client_sort_field_enum", "ClientThirdPartySecurityModeEnum": ".client_third_party_security_mode_enum", "ClientTokenEndpointAuthMethodEnum": ".client_token_endpoint_auth_method_enum", "ClientTokenEndpointAuthMethodOrNullEnum": ".client_token_endpoint_auth_method_or_null_enum", @@ -6915,6 +7093,8 @@ "ConnectionProfileOrganizationAssignMembershipOnLoginEnum": ".connection_profile_organization_assign_membership_on_login_enum", "ConnectionProfileOrganizationShowAsButtonEnum": ".connection_profile_organization_show_as_button_enum", "ConnectionProfileProvisioning": ".connection_profile_provisioning", + "ConnectionProfileProvisioningGoogleWorkspace": ".connection_profile_provisioning_google_workspace", + "ConnectionProfileProvisioningGoogleWorkspaceSyncUsers": ".connection_profile_provisioning_google_workspace_sync_users", "ConnectionProfileProvisioningScim": ".connection_profile_provisioning_scim", "ConnectionProfileProvisioningScimTokenDefaultExpiry": ".connection_profile_provisioning_scim_token_default_expiry", "ConnectionProfileProvisioningScimTokenMaxAllowedExpiry": ".connection_profile_provisioning_scim_token_max_allowed_expiry", @@ -8434,6 +8614,11 @@ "EventStreamCloudEventOrgConnectionAddedObjectOrganizationAccessLevel1Enum": ".event_stream_cloud_event_org_connection_added_object_organization_access_level_1_enum", "EventStreamCloudEventOrgConnectionAddedObjectOrganizationAccessLevel2Enum": ".event_stream_cloud_event_org_connection_added_object_organization_access_level_2_enum", "EventStreamCloudEventOrgConnectionAddedObjectOrganizationAccessLevel3Enum": ".event_stream_cloud_event_org_connection_added_object_organization_access_level_3_enum", + "EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel": ".event_stream_cloud_event_org_connection_added_object_organization_member_access_level", + "EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel0Enum": ".event_stream_cloud_event_org_connection_added_object_organization_member_access_level_0_enum", + "EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel1Enum": ".event_stream_cloud_event_org_connection_added_object_organization_member_access_level_1_enum", + "EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel2Enum": ".event_stream_cloud_event_org_connection_added_object_organization_member_access_level_2_enum", + "EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel3Enum": ".event_stream_cloud_event_org_connection_added_object_organization_member_access_level_3_enum", "EventStreamCloudEventOrgConnectionAddedPreviousObject": ".event_stream_cloud_event_org_connection_added_previous_object", "EventStreamCloudEventOrgConnectionAddedPreviousObjectConnection": ".event_stream_cloud_event_org_connection_added_previous_object_connection", "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganization": ".event_stream_cloud_event_org_connection_added_previous_object_organization", @@ -8442,6 +8627,11 @@ "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationAccessLevel1Enum": ".event_stream_cloud_event_org_connection_added_previous_object_organization_access_level_1_enum", "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationAccessLevel2Enum": ".event_stream_cloud_event_org_connection_added_previous_object_organization_access_level_2_enum", "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationAccessLevel3Enum": ".event_stream_cloud_event_org_connection_added_previous_object_organization_access_level_3_enum", + "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel": ".event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level", + "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel0Enum": ".event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level_0_enum", + "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel1Enum": ".event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level_1_enum", + "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel2Enum": ".event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level_2_enum", + "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel3Enum": ".event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level_3_enum", "EventStreamCloudEventOrgConnectionAddedTypeEnum": ".event_stream_cloud_event_org_connection_added_type_enum", "EventStreamCloudEventOrgConnectionRemoved": ".event_stream_cloud_event_org_connection_removed", "EventStreamCloudEventOrgConnectionRemovedCloudEvent": ".event_stream_cloud_event_org_connection_removed_cloud_event", @@ -8466,6 +8656,11 @@ "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationAccessLevel1Enum": ".event_stream_cloud_event_org_connection_updated_object_organization_access_level_1_enum", "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationAccessLevel2Enum": ".event_stream_cloud_event_org_connection_updated_object_organization_access_level_2_enum", "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationAccessLevel3Enum": ".event_stream_cloud_event_org_connection_updated_object_organization_access_level_3_enum", + "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel": ".event_stream_cloud_event_org_connection_updated_object_organization_member_access_level", + "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel0Enum": ".event_stream_cloud_event_org_connection_updated_object_organization_member_access_level_0_enum", + "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel1Enum": ".event_stream_cloud_event_org_connection_updated_object_organization_member_access_level_1_enum", + "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel2Enum": ".event_stream_cloud_event_org_connection_updated_object_organization_member_access_level_2_enum", + "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel3Enum": ".event_stream_cloud_event_org_connection_updated_object_organization_member_access_level_3_enum", "EventStreamCloudEventOrgConnectionUpdatedPreviousObject": ".event_stream_cloud_event_org_connection_updated_previous_object", "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectConnection": ".event_stream_cloud_event_org_connection_updated_previous_object_connection", "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganization": ".event_stream_cloud_event_org_connection_updated_previous_object_organization", @@ -8474,6 +8669,11 @@ "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationAccessLevel1Enum": ".event_stream_cloud_event_org_connection_updated_previous_object_organization_access_level_1_enum", "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationAccessLevel2Enum": ".event_stream_cloud_event_org_connection_updated_previous_object_organization_access_level_2_enum", "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationAccessLevel3Enum": ".event_stream_cloud_event_org_connection_updated_previous_object_organization_access_level_3_enum", + "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel": ".event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level", + "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel0Enum": ".event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level_0_enum", + "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel1Enum": ".event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level_1_enum", + "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel2Enum": ".event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level_2_enum", + "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel3Enum": ".event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level_3_enum", "EventStreamCloudEventOrgConnectionUpdatedTypeEnum": ".event_stream_cloud_event_org_connection_updated_type_enum", "EventStreamCloudEventOrgCreated": ".event_stream_cloud_event_org_created", "EventStreamCloudEventOrgCreatedCloudEvent": ".event_stream_cloud_event_org_created_cloud_event", @@ -9582,10 +9782,12 @@ "ListAculsOffsetPaginatedResponseContent": ".list_aculs_offset_paginated_response_content", "ListAculsResponseContentItem": ".list_aculs_response_content_item", "ListAgentsResponseContent": ".list_agents_response_content", + "ListAttackProtectionCaptchaPoliciesResponseContent": ".list_attack_protection_captcha_policies_response_content", "ListBrandingPhoneProvidersResponseContent": ".list_branding_phone_providers_response_content", "ListClientConnectionsResponseContent": ".list_client_connections_response_content", "ListClientGrantOrganizationsPaginatedResponseContent": ".list_client_grant_organizations_paginated_response_content", "ListClientGrantPaginatedResponseContent": ".list_client_grant_paginated_response_content", + "ListClientProfilesPaginatedResponseContent": ".list_client_profiles_paginated_response_content", "ListClientsOffsetPaginatedResponseContent": ".list_clients_offset_paginated_response_content", "ListConnectionProfileTemplateResponseContent": ".list_connection_profile_template_response_content", "ListConnectionProfilesPaginatedResponseContent": ".list_connection_profiles_paginated_response_content", @@ -9868,6 +10070,8 @@ "Role": ".role", "RoleGroup": ".role_group", "RoleMember": ".role_member", + "RoleOwnerId": ".role_owner_id", + "RoleOwnerIdFilter": ".role_owner_id_filter", "RoleTypeEnum": ".role_type_enum", "RoleUser": ".role_user", "RollbackActionModuleResponseContent": ".rollback_action_module_response_content", @@ -9882,6 +10086,8 @@ "ScimMappingItem": ".scim_mapping_item", "ScimTokenItem": ".scim_token_item", "ScreenGroupNameEnum": ".screen_group_name_enum", + "SearchClientGrantsResponseContent": ".search_client_grants_response_content", + "SearchClientsResponseContent": ".search_clients_response_content", "SearchEngineVersionsEnum": ".search_engine_versions_enum", "SearchOrganization": ".search_organization", "SearchOrganizationsPaginatedResponseContent": ".search_organizations_paginated_response_content", @@ -9896,6 +10102,7 @@ "SegmentNotMatchConditions": ".segment_not_match_conditions", "SegmentRule": ".segment_rule", "SegmentStartsWithExpression": ".segment_starts_with_expression", + "SegmentStatusEnum": ".segment_status_enum", "SegmentTypeEnum": ".segment_type_enum", "SegmentTypeFilterEnum": ".segment_type_filter_enum", "SelfServiceProfile": ".self_service_profile", @@ -9981,6 +10188,7 @@ "SynchronizeGroupsEnum": ".synchronize_groups_enum", "SynchronizedGroupPayload": ".synchronized_group_payload", "SynchronizedGroupSelectionId": ".synchronized_group_selection_id", + "SystemRoleOwnerId": ".system_role_owner_id", "TenantOidcLogoutSettings": ".tenant_oidc_logout_settings", "TenantSettingsCountryCodes": ".tenant_settings_country_codes", "TenantSettingsCountryCodesMode": ".tenant_settings_country_codes_mode", @@ -10110,10 +10318,8 @@ "UpdateEnabledClientConnectionsRequestContentItem": ".update_enabled_client_connections_request_content_item", "UpdateEventStreamResponseContent": ".update_event_stream_response_content", "UpdateExperimentResponseContent": ".update_experiment_response_content", - "UpdateExperimentStatusResponseContent": ".update_experiment_status_response_content", "UpdateFeatureFlagParameters": ".update_feature_flag_parameters", "UpdateFeatureFlagResponseContent": ".update_feature_flag_response_content", - "UpdateFeatureFlagStatusResponseContent": ".update_feature_flag_status_response_content", "UpdateFlowResponseContent": ".update_flow_response_content", "UpdateFlowsVaultConnectionResponseContent": ".update_flows_vault_connection_response_content", "UpdateFlowsVaultConnectionSetup": ".update_flows_vault_connection_setup", @@ -10312,6 +10518,10 @@ def __dir__(): "AttackProtectionCaptchaAuthChallengeResponseContent", "AttackProtectionCaptchaFriendlyCaptchaResponseContent", "AttackProtectionCaptchaHcaptchaResponseContent", + "AttackProtectionCaptchaPolicy", + "AttackProtectionCaptchaPolicyAction", + "AttackProtectionCaptchaPolicyActionInput", + "AttackProtectionCaptchaPolicyMatch", "AttackProtectionCaptchaProviderId", "AttackProtectionCaptchaRecaptchaEnterpriseResponseContent", "AttackProtectionCaptchaRecaptchaV2ResponseContent", @@ -10374,13 +10584,28 @@ def __dir__(): "BreachedPasswordDetectionPreUserRegistrationStage", "BreachedPasswordDetectionShieldsEnum", "BreachedPasswordDetectionStage", + "BruteForceProtectionFormSubmissionModeEnum", "BruteForceProtectionModeEnum", "BruteForceProtectionShieldsEnum", "BulkUpdateAculResponseContent", + "CaptchaActiveProviderEnum", + "CaptchaPolicyActionArkose", + "CaptchaPolicyActionArkoseInput", + "CaptchaPolicyActionAuthChallenge", + "CaptchaPolicyActionFriendlyCaptcha", + "CaptchaPolicyActionFriendlyCaptchaInput", + "CaptchaPolicyActionHcaptcha", + "CaptchaPolicyActionHcaptchaInput", + "CaptchaPolicyActionRecaptchaEnterprise", + "CaptchaPolicyActionRecaptchaEnterpriseInput", + "CaptchaPolicyActionRecaptchaV2", + "CaptchaPolicyActionRecaptchaV2Input", + "CaptchaPolicyActionSimpleCaptcha", "CertificateSubjectDnCredential", "CertificateSubjectDnCredentialTypeEnum", "ChangePasswordTicketIdentity", "ChangePasswordTicketResponseContent", + "CimdExternalMetadataCreatedByEnum", "CimdMappedClientAuthenticationMethods", "CimdMappedClientAuthenticationMethodsPrivateKeyJwt", "CimdMappedClientFields", @@ -10420,6 +10645,7 @@ def __dir__(): "ClientAddonZendesk", "ClientAddonZoom", "ClientAddons", + "ClientAnonymousSessionTransferNetworkBindingEnum", "ClientAppTypeEnum", "ClientAsyncApprovalNotificationsChannelsApiPatchConfiguration", "ClientAsyncApprovalNotificationsChannelsApiPostConfiguration", @@ -10443,12 +10669,14 @@ def __dir__(): "ClientDefaultOrganizationFlowsEnum", "ClientEncryptionKey", "ClientExternalMetadataCreatedByEnum", + "ClientExternalMetadataStatusEnum", "ClientExternalMetadataTypeEnum", "ClientGrantAllowAnyOrganizationEnum", "ClientGrantDefaultForEnum", "ClientGrantOrganizationNullableUsageEnum", "ClientGrantOrganizationUsageEnum", "ClientGrantResponseContent", + "ClientGrantSortFieldEnum", "ClientGrantSubjectTypeEnum", "ClientJwtConfiguration", "ClientJwtConfigurationScopes", @@ -10470,15 +10698,36 @@ def __dir__(): "ClientOidcBackchannelLogoutSessionMetadata", "ClientOidcBackchannelLogoutSettings", "ClientOidcSupportAllowedScopesEnum", + "ClientOidcSupportPatch", "ClientOidcSupportPost", "ClientOrganizationDiscoveryEnum", "ClientOrganizationRequireBehaviorEnum", "ClientOrganizationRequireBehaviorPatchEnum", "ClientOrganizationUsageEnum", "ClientOrganizationUsagePatchEnum", + "ClientProfile", + "ClientProfileApplyPolicy", + "ClientProfileApplyPolicyExternalMetadataCreatedByEnum", + "ClientProfileApplyPolicyExternalMetadataTypeEnum", + "ClientProfileClientConfiguration", + "ClientProfileClientConfigurationOrganizationDiscoveryMethodEnum", + "ClientProfileClientConfigurationOrganizationDiscoveryMethods", + "ClientProfileClientConfigurationOrganizationRequireBehavior", + "ClientProfileClientConfigurationOrganizationRequireBehaviorEnum", + "ClientProfileClientConfigurationOrganizationUsage", + "ClientProfileClientConfigurationOrganizationUsageEnum", + "ClientProfileClientConfigurationRefreshToken", + "ClientProfileClientConfigurationRequireProofOfPossession", + "ClientProfileDescription", + "ClientProfileId", + "ClientProfileName", + "ClientProfileRefreshTokenIdleTokenLifetime", + "ClientProfileRefreshTokenLeeway", + "ClientProfileRefreshTokenTokenLifetime", "ClientRedirectionPolicyEnum", "ClientRefreshTokenConfiguration", "ClientRefreshTokenPolicy", + "ClientSearchResponse", "ClientSessionTransferAllowedAuthenticationMethodsEnum", "ClientSessionTransferConfiguration", "ClientSessionTransferDelegationConfiguration", @@ -10488,6 +10737,7 @@ def __dir__(): "ClientSignedRequestObjectWithPublicKey", "ClientSigningKey", "ClientSigningKeys", + "ClientSortFieldEnum", "ClientThirdPartySecurityModeEnum", "ClientTokenEndpointAuthMethodEnum", "ClientTokenEndpointAuthMethodOrNullEnum", @@ -10793,6 +11043,8 @@ def __dir__(): "ConnectionProfileOrganizationAssignMembershipOnLoginEnum", "ConnectionProfileOrganizationShowAsButtonEnum", "ConnectionProfileProvisioning", + "ConnectionProfileProvisioningGoogleWorkspace", + "ConnectionProfileProvisioningGoogleWorkspaceSyncUsers", "ConnectionProfileProvisioningScim", "ConnectionProfileProvisioningScimTokenDefaultExpiry", "ConnectionProfileProvisioningScimTokenMaxAllowedExpiry", @@ -12312,6 +12564,11 @@ def __dir__(): "EventStreamCloudEventOrgConnectionAddedObjectOrganizationAccessLevel1Enum", "EventStreamCloudEventOrgConnectionAddedObjectOrganizationAccessLevel2Enum", "EventStreamCloudEventOrgConnectionAddedObjectOrganizationAccessLevel3Enum", + "EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel", + "EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel0Enum", + "EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel1Enum", + "EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel2Enum", + "EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel3Enum", "EventStreamCloudEventOrgConnectionAddedPreviousObject", "EventStreamCloudEventOrgConnectionAddedPreviousObjectConnection", "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganization", @@ -12320,6 +12577,11 @@ def __dir__(): "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationAccessLevel1Enum", "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationAccessLevel2Enum", "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationAccessLevel3Enum", + "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel", + "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel0Enum", + "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel1Enum", + "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel2Enum", + "EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel3Enum", "EventStreamCloudEventOrgConnectionAddedTypeEnum", "EventStreamCloudEventOrgConnectionRemoved", "EventStreamCloudEventOrgConnectionRemovedCloudEvent", @@ -12344,6 +12606,11 @@ def __dir__(): "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationAccessLevel1Enum", "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationAccessLevel2Enum", "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationAccessLevel3Enum", + "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel", + "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel0Enum", + "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel1Enum", + "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel2Enum", + "EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel3Enum", "EventStreamCloudEventOrgConnectionUpdatedPreviousObject", "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectConnection", "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganization", @@ -12352,6 +12619,11 @@ def __dir__(): "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationAccessLevel1Enum", "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationAccessLevel2Enum", "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationAccessLevel3Enum", + "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel", + "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel0Enum", + "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel1Enum", + "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel2Enum", + "EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel3Enum", "EventStreamCloudEventOrgConnectionUpdatedTypeEnum", "EventStreamCloudEventOrgCreated", "EventStreamCloudEventOrgCreatedCloudEvent", @@ -13460,10 +13732,12 @@ def __dir__(): "ListAculsOffsetPaginatedResponseContent", "ListAculsResponseContentItem", "ListAgentsResponseContent", + "ListAttackProtectionCaptchaPoliciesResponseContent", "ListBrandingPhoneProvidersResponseContent", "ListClientConnectionsResponseContent", "ListClientGrantOrganizationsPaginatedResponseContent", "ListClientGrantPaginatedResponseContent", + "ListClientProfilesPaginatedResponseContent", "ListClientsOffsetPaginatedResponseContent", "ListConnectionProfileTemplateResponseContent", "ListConnectionProfilesPaginatedResponseContent", @@ -13746,6 +14020,8 @@ def __dir__(): "Role", "RoleGroup", "RoleMember", + "RoleOwnerId", + "RoleOwnerIdFilter", "RoleTypeEnum", "RoleUser", "RollbackActionModuleResponseContent", @@ -13760,6 +14036,8 @@ def __dir__(): "ScimMappingItem", "ScimTokenItem", "ScreenGroupNameEnum", + "SearchClientGrantsResponseContent", + "SearchClientsResponseContent", "SearchEngineVersionsEnum", "SearchOrganization", "SearchOrganizationsPaginatedResponseContent", @@ -13774,6 +14052,7 @@ def __dir__(): "SegmentNotMatchConditions", "SegmentRule", "SegmentStartsWithExpression", + "SegmentStatusEnum", "SegmentTypeEnum", "SegmentTypeFilterEnum", "SelfServiceProfile", @@ -13859,6 +14138,7 @@ def __dir__(): "SynchronizeGroupsEnum", "SynchronizedGroupPayload", "SynchronizedGroupSelectionId", + "SystemRoleOwnerId", "TenantOidcLogoutSettings", "TenantSettingsCountryCodes", "TenantSettingsCountryCodesMode", @@ -13988,10 +14268,8 @@ def __dir__(): "UpdateEnabledClientConnectionsRequestContentItem", "UpdateEventStreamResponseContent", "UpdateExperimentResponseContent", - "UpdateExperimentStatusResponseContent", "UpdateFeatureFlagParameters", "UpdateFeatureFlagResponseContent", - "UpdateFeatureFlagStatusResponseContent", "UpdateFlowResponseContent", "UpdateFlowsVaultConnectionResponseContent", "UpdateFlowsVaultConnectionSetup", diff --git a/src/auth0/management/types/attack_protection_captcha_policy.py b/src/auth0/management/types/attack_protection_captcha_policy.py new file mode 100644 index 00000000..8b772eed --- /dev/null +++ b/src/auth0/management/types/attack_protection_captcha_policy.py @@ -0,0 +1,56 @@ +# This file was auto-generated by Fern from our API Definition. + +import datetime as dt +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .attack_protection_captcha_policy_action import AttackProtectionCaptchaPolicyAction +from .attack_protection_captcha_policy_match import AttackProtectionCaptchaPolicyMatch + + +class AttackProtectionCaptchaPolicy(UniversalBaseModel): + """ + An attack protection policy override for CAPTCHA. + """ + + id: str = pydantic.Field() + """ + System-generated identifier for the policy. + """ + + name: str = pydantic.Field() + """ + Human-readable policy name. + """ + + description: typing.Optional[str] = pydantic.Field(default=None) + """ + Description of the policy's purpose. + """ + + priority: int = pydantic.Field() + """ + Conflict resolution order. Lower number takes higher precedence. + """ + + match: AttackProtectionCaptchaPolicyMatch + action: AttackProtectionCaptchaPolicyAction + created_at: dt.datetime = pydantic.Field() + """ + ISO 8601 timestamp when the policy was created. + """ + + updated_at: dt.datetime = pydantic.Field() + """ + ISO 8601 timestamp when the policy was last updated. + """ + + 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/attack_protection_captcha_policy_action.py b/src/auth0/management/types/attack_protection_captcha_policy_action.py new file mode 100644 index 00000000..0a34effc --- /dev/null +++ b/src/auth0/management/types/attack_protection_captcha_policy_action.py @@ -0,0 +1,44 @@ +# 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 .captcha_active_provider_enum import CaptchaActiveProviderEnum +from .captcha_policy_action_arkose import CaptchaPolicyActionArkose +from .captcha_policy_action_auth_challenge import CaptchaPolicyActionAuthChallenge +from .captcha_policy_action_friendly_captcha import CaptchaPolicyActionFriendlyCaptcha +from .captcha_policy_action_hcaptcha import CaptchaPolicyActionHcaptcha +from .captcha_policy_action_recaptcha_enterprise import CaptchaPolicyActionRecaptchaEnterprise +from .captcha_policy_action_recaptcha_v_2 import CaptchaPolicyActionRecaptchaV2 +from .captcha_policy_action_simple_captcha import CaptchaPolicyActionSimpleCaptcha + + +class AttackProtectionCaptchaPolicyAction(UniversalBaseModel): + """ + CAPTCHA configuration override stored for this policy. + """ + + active_provider_id: typing.Optional[CaptchaActiveProviderEnum] = None + simple_captcha: typing.Optional[CaptchaPolicyActionSimpleCaptcha] = None + auth_challenge: typing.Optional[CaptchaPolicyActionAuthChallenge] = None + recaptcha_v_2: typing_extensions.Annotated[ + typing.Optional[CaptchaPolicyActionRecaptchaV2], + FieldMetadata(alias="recaptcha_v2"), + pydantic.Field(alias="recaptcha_v2"), + ] = None + recaptcha_enterprise: typing.Optional[CaptchaPolicyActionRecaptchaEnterprise] = None + hcaptcha: typing.Optional[CaptchaPolicyActionHcaptcha] = None + friendly_captcha: typing.Optional[CaptchaPolicyActionFriendlyCaptcha] = None + arkose: typing.Optional[CaptchaPolicyActionArkose] = 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/attack_protection_captcha_policy_action_input.py b/src/auth0/management/types/attack_protection_captcha_policy_action_input.py new file mode 100644 index 00000000..393f0d64 --- /dev/null +++ b/src/auth0/management/types/attack_protection_captcha_policy_action_input.py @@ -0,0 +1,44 @@ +# 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 .captcha_active_provider_enum import CaptchaActiveProviderEnum +from .captcha_policy_action_arkose_input import CaptchaPolicyActionArkoseInput +from .captcha_policy_action_auth_challenge import CaptchaPolicyActionAuthChallenge +from .captcha_policy_action_friendly_captcha_input import CaptchaPolicyActionFriendlyCaptchaInput +from .captcha_policy_action_hcaptcha_input import CaptchaPolicyActionHcaptchaInput +from .captcha_policy_action_recaptcha_enterprise_input import CaptchaPolicyActionRecaptchaEnterpriseInput +from .captcha_policy_action_recaptcha_v_2_input import CaptchaPolicyActionRecaptchaV2Input +from .captcha_policy_action_simple_captcha import CaptchaPolicyActionSimpleCaptcha + + +class AttackProtectionCaptchaPolicyActionInput(UniversalBaseModel): + """ + CAPTCHA configuration override for this policy. + """ + + active_provider_id: typing.Optional[CaptchaActiveProviderEnum] = None + simple_captcha: typing.Optional[CaptchaPolicyActionSimpleCaptcha] = None + auth_challenge: typing.Optional[CaptchaPolicyActionAuthChallenge] = None + recaptcha_v_2: typing_extensions.Annotated[ + typing.Optional[CaptchaPolicyActionRecaptchaV2Input], + FieldMetadata(alias="recaptcha_v2"), + pydantic.Field(alias="recaptcha_v2"), + ] = None + recaptcha_enterprise: typing.Optional[CaptchaPolicyActionRecaptchaEnterpriseInput] = None + hcaptcha: typing.Optional[CaptchaPolicyActionHcaptchaInput] = None + friendly_captcha: typing.Optional[CaptchaPolicyActionFriendlyCaptchaInput] = None + arkose: typing.Optional[CaptchaPolicyActionArkoseInput] = 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/attack_protection_captcha_policy_match.py b/src/auth0/management/types/attack_protection_captcha_policy_match.py new file mode 100644 index 00000000..06023e04 --- /dev/null +++ b/src/auth0/management/types/attack_protection_captcha_policy_match.py @@ -0,0 +1,37 @@ +# 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 + + +class AttackProtectionCaptchaPolicyMatch(UniversalBaseModel): + """ + Traffic matching criteria for the policy. Exactly one of auth0_managed or geo_country_codes must be specified. + """ + + auth_0_managed: typing_extensions.Annotated[ + typing.Optional[typing.List[str]], + FieldMetadata(alias="auth0_managed"), + pydantic.Field(alias="auth0_managed", description="Match by Auth0-managed traffic identifiers."), + ] = None + """ + Match by Auth0-managed traffic identifiers. + """ + + geo_country_codes: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + Match by ISO 3166-1 alpha-2 country codes. + """ + + 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/brute_force_protection_form_submission_mode_enum.py b/src/auth0/management/types/brute_force_protection_form_submission_mode_enum.py new file mode 100644 index 00000000..682a79bd --- /dev/null +++ b/src/auth0/management/types/brute_force_protection_form_submission_mode_enum.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +BruteForceProtectionFormSubmissionModeEnum = typing.Union[typing.Literal["auto", "manual"], typing.Any] diff --git a/src/auth0/management/types/captcha_active_provider_enum.py b/src/auth0/management/types/captcha_active_provider_enum.py new file mode 100644 index 00000000..3d166297 --- /dev/null +++ b/src/auth0/management/types/captcha_active_provider_enum.py @@ -0,0 +1,16 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +CaptchaActiveProviderEnum = typing.Union[ + typing.Literal[ + "simple_captcha", + "auth_challenge", + "recaptcha_v2", + "recaptcha_enterprise", + "hcaptcha", + "friendly_captcha", + "arkose", + ], + typing.Any, +] diff --git a/src/auth0/management/types/captcha_policy_action_arkose.py b/src/auth0/management/types/captcha_policy_action_arkose.py new file mode 100644 index 00000000..1953ae18 --- /dev/null +++ b/src/auth0/management/types/captcha_policy_action_arkose.py @@ -0,0 +1,41 @@ +# 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 CaptchaPolicyActionArkose(UniversalBaseModel): + """ + Arkose Labs provider configuration. + """ + + site_key: typing.Optional[str] = pydantic.Field(default=None) + """ + The Arkose Labs site key. + """ + + client_subdomain: typing.Optional[str] = pydantic.Field(default=None) + """ + The Arkose Labs client subdomain. + """ + + verify_subdomain: typing.Optional[str] = pydantic.Field(default=None) + """ + The Arkose Labs verify subdomain. + """ + + fail_open: typing.Optional[bool] = pydantic.Field(default=None) + """ + Whether to allow access when Arkose Labs is unavailable. + """ + + 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/captcha_policy_action_arkose_input.py b/src/auth0/management/types/captcha_policy_action_arkose_input.py new file mode 100644 index 00000000..13e18d5d --- /dev/null +++ b/src/auth0/management/types/captcha_policy_action_arkose_input.py @@ -0,0 +1,46 @@ +# 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 CaptchaPolicyActionArkoseInput(UniversalBaseModel): + """ + Arkose Labs provider configuration. + """ + + site_key: typing.Optional[str] = pydantic.Field(default=None) + """ + The Arkose Labs site key. + """ + + secret: typing.Optional[str] = pydantic.Field(default=None) + """ + The Arkose Labs private key. Encrypted at rest. + """ + + client_subdomain: typing.Optional[str] = pydantic.Field(default=None) + """ + The Arkose Labs client subdomain. + """ + + verify_subdomain: typing.Optional[str] = pydantic.Field(default=None) + """ + The Arkose Labs verify subdomain. + """ + + fail_open: typing.Optional[bool] = pydantic.Field(default=None) + """ + Whether to allow access when Arkose Labs is unavailable. + """ + + 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/captcha_policy_action_auth_challenge.py b/src/auth0/management/types/captcha_policy_action_auth_challenge.py new file mode 100644 index 00000000..a4b6c4e0 --- /dev/null +++ b/src/auth0/management/types/captcha_policy_action_auth_challenge.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 CaptchaPolicyActionAuthChallenge(UniversalBaseModel): + """ + Auth Challenge CAPTCHA provider configuration. + """ + + fail_open: typing.Optional[bool] = pydantic.Field(default=None) + """ + Whether to allow access when the challenge provider is unavailable. + """ + + 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/captcha_policy_action_friendly_captcha.py b/src/auth0/management/types/captcha_policy_action_friendly_captcha.py new file mode 100644 index 00000000..4181e538 --- /dev/null +++ b/src/auth0/management/types/captcha_policy_action_friendly_captcha.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 CaptchaPolicyActionFriendlyCaptcha(UniversalBaseModel): + """ + Friendly Captcha provider configuration. + """ + + site_key: typing.Optional[str] = pydantic.Field(default=None) + """ + The Friendly Captcha site key. + """ + + 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/captcha_policy_action_friendly_captcha_input.py b/src/auth0/management/types/captcha_policy_action_friendly_captcha_input.py new file mode 100644 index 00000000..fbb19958 --- /dev/null +++ b/src/auth0/management/types/captcha_policy_action_friendly_captcha_input.py @@ -0,0 +1,31 @@ +# 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 CaptchaPolicyActionFriendlyCaptchaInput(UniversalBaseModel): + """ + Friendly Captcha provider configuration. + """ + + site_key: typing.Optional[str] = pydantic.Field(default=None) + """ + The Friendly Captcha site key. + """ + + secret: typing.Optional[str] = pydantic.Field(default=None) + """ + The Friendly Captcha secret key. Encrypted at rest. + """ + + 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/captcha_policy_action_hcaptcha.py b/src/auth0/management/types/captcha_policy_action_hcaptcha.py new file mode 100644 index 00000000..3b763446 --- /dev/null +++ b/src/auth0/management/types/captcha_policy_action_hcaptcha.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 CaptchaPolicyActionHcaptcha(UniversalBaseModel): + """ + hCaptcha provider configuration. + """ + + site_key: typing.Optional[str] = pydantic.Field(default=None) + """ + The hCaptcha site key. + """ + + 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/captcha_policy_action_hcaptcha_input.py b/src/auth0/management/types/captcha_policy_action_hcaptcha_input.py new file mode 100644 index 00000000..52666e5f --- /dev/null +++ b/src/auth0/management/types/captcha_policy_action_hcaptcha_input.py @@ -0,0 +1,31 @@ +# 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 CaptchaPolicyActionHcaptchaInput(UniversalBaseModel): + """ + hCaptcha provider configuration. + """ + + site_key: typing.Optional[str] = pydantic.Field(default=None) + """ + The hCaptcha site key. + """ + + secret: typing.Optional[str] = pydantic.Field(default=None) + """ + The hCaptcha secret key. Encrypted at rest. + """ + + 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/captcha_policy_action_recaptcha_enterprise.py b/src/auth0/management/types/captcha_policy_action_recaptcha_enterprise.py new file mode 100644 index 00000000..30e1748e --- /dev/null +++ b/src/auth0/management/types/captcha_policy_action_recaptcha_enterprise.py @@ -0,0 +1,31 @@ +# 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 CaptchaPolicyActionRecaptchaEnterprise(UniversalBaseModel): + """ + reCAPTCHA Enterprise provider configuration. + """ + + site_key: typing.Optional[str] = pydantic.Field(default=None) + """ + The reCAPTCHA Enterprise site key. + """ + + project_id: typing.Optional[str] = pydantic.Field(default=None) + """ + The Google Cloud project ID. + """ + + 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/captcha_policy_action_recaptcha_enterprise_input.py b/src/auth0/management/types/captcha_policy_action_recaptcha_enterprise_input.py new file mode 100644 index 00000000..0cc9b210 --- /dev/null +++ b/src/auth0/management/types/captcha_policy_action_recaptcha_enterprise_input.py @@ -0,0 +1,36 @@ +# 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 CaptchaPolicyActionRecaptchaEnterpriseInput(UniversalBaseModel): + """ + reCAPTCHA Enterprise provider configuration. + """ + + site_key: typing.Optional[str] = pydantic.Field(default=None) + """ + The reCAPTCHA Enterprise site key. + """ + + project_id: typing.Optional[str] = pydantic.Field(default=None) + """ + The Google Cloud project ID. + """ + + api_key: typing.Optional[str] = pydantic.Field(default=None) + """ + The reCAPTCHA Enterprise API key. Encrypted at rest. + """ + + 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/captcha_policy_action_recaptcha_v_2.py b/src/auth0/management/types/captcha_policy_action_recaptcha_v_2.py new file mode 100644 index 00000000..dc3d9d3d --- /dev/null +++ b/src/auth0/management/types/captcha_policy_action_recaptcha_v_2.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 CaptchaPolicyActionRecaptchaV2(UniversalBaseModel): + """ + reCAPTCHA v2 provider configuration. + """ + + site_key: typing.Optional[str] = pydantic.Field(default=None) + """ + The reCAPTCHA v2 site key. + """ + + 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/captcha_policy_action_recaptcha_v_2_input.py b/src/auth0/management/types/captcha_policy_action_recaptcha_v_2_input.py new file mode 100644 index 00000000..9d38bf32 --- /dev/null +++ b/src/auth0/management/types/captcha_policy_action_recaptcha_v_2_input.py @@ -0,0 +1,31 @@ +# 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 CaptchaPolicyActionRecaptchaV2Input(UniversalBaseModel): + """ + reCAPTCHA v2 provider configuration. + """ + + site_key: typing.Optional[str] = pydantic.Field(default=None) + """ + The reCAPTCHA v2 site key. + """ + + secret: typing.Optional[str] = pydantic.Field(default=None) + """ + The reCAPTCHA v2 secret key. Encrypted at rest. + """ + + 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/captcha_policy_action_simple_captcha.py b/src/auth0/management/types/captcha_policy_action_simple_captcha.py new file mode 100644 index 00000000..d730dc0d --- /dev/null +++ b/src/auth0/management/types/captcha_policy_action_simple_captcha.py @@ -0,0 +1,21 @@ +# 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 CaptchaPolicyActionSimpleCaptcha(UniversalBaseModel): + """ + Simple CAPTCHA provider configuration. + """ + + 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/cimd_external_metadata_created_by_enum.py b/src/auth0/management/types/cimd_external_metadata_created_by_enum.py new file mode 100644 index 00000000..81b73f40 --- /dev/null +++ b/src/auth0/management/types/cimd_external_metadata_created_by_enum.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +CimdExternalMetadataCreatedByEnum = typing.Union[typing.Literal["admin", "client"], typing.Any] diff --git a/src/auth0/management/types/client.py b/src/auth0/management/types/client.py index 7cb171e4..1e420ddd 100644 --- a/src/auth0/management/types/client.py +++ b/src/auth0/management/types/client.py @@ -10,6 +10,7 @@ from .anonymous_sessions import AnonymousSessions from .b_2_b_integration_configuration import B2BIntegrationConfiguration from .client_addons import ClientAddons +from .client_anonymous_session_transfer_network_binding_enum import ClientAnonymousSessionTransferNetworkBindingEnum from .client_app_type_enum import ClientAppTypeEnum from .client_async_approval_notifications_channels_api_post_configuration import ( ClientAsyncApprovalNotificationsChannelsApiPostConfiguration, @@ -19,6 +20,7 @@ from .client_default_organization import ClientDefaultOrganization from .client_encryption_key import ClientEncryptionKey from .client_external_metadata_created_by_enum import ClientExternalMetadataCreatedByEnum +from .client_external_metadata_status_enum import ClientExternalMetadataStatusEnum from .client_external_metadata_type_enum import ClientExternalMetadataTypeEnum from .client_jwt_configuration import ClientJwtConfiguration from .client_metadata import ClientMetadata @@ -252,6 +254,9 @@ class Client(UniversalBaseModel): my_organization_configuration: typing.Optional[ClientMyOrganizationResponseConfiguration] = None identity_assertion_authorization_grant: typing.Optional[IdentityAssertionAuthorizationGrant] = None anonymous_sessions: typing.Optional[AnonymousSessions] = None + enforce_anon_session_transfer_network_binding: typing.Optional[ClientAnonymousSessionTransferNetworkBindingEnum] = ( + None + ) third_party_security_mode: typing.Optional[ClientThirdPartySecurityModeEnum] = None redirection_policy: typing.Optional[ClientRedirectionPolicyEnum] = None resource_server_identifier: typing.Optional[str] = pydantic.Field(default=None) @@ -264,6 +269,7 @@ class Client(UniversalBaseModel): ] = None external_metadata_type: typing.Optional[ClientExternalMetadataTypeEnum] = None external_metadata_created_by: typing.Optional[ClientExternalMetadataCreatedByEnum] = None + external_metadata_status: typing.Optional[ClientExternalMetadataStatusEnum] = None external_client_id: typing.Optional[str] = pydantic.Field(default=None) """ An alternate client identifier to be used during authorization flows. Only supports CIMD-based client identifiers. diff --git a/src/auth0/management/types/client_anonymous_session_transfer_network_binding_enum.py b/src/auth0/management/types/client_anonymous_session_transfer_network_binding_enum.py new file mode 100644 index 00000000..be429783 --- /dev/null +++ b/src/auth0/management/types/client_anonymous_session_transfer_network_binding_enum.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +ClientAnonymousSessionTransferNetworkBindingEnum = typing.Union[typing.Literal["ip", "asn", "none"], typing.Any] diff --git a/src/auth0/management/types/client_external_metadata_status_enum.py b/src/auth0/management/types/client_external_metadata_status_enum.py new file mode 100644 index 00000000..99437acf --- /dev/null +++ b/src/auth0/management/types/client_external_metadata_status_enum.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +ClientExternalMetadataStatusEnum = typing.Union[typing.Literal["available", "unavailable"], typing.Any] diff --git a/src/auth0/management/types/client_grant_sort_field_enum.py b/src/auth0/management/types/client_grant_sort_field_enum.py new file mode 100644 index 00000000..44741018 --- /dev/null +++ b/src/auth0/management/types/client_grant_sort_field_enum.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +ClientGrantSortFieldEnum = typing.Union[typing.Literal["audience", "updated_at"], typing.Any] diff --git a/src/auth0/management/types/client_oidc_support_patch.py b/src/auth0/management/types/client_oidc_support_patch.py new file mode 100644 index 00000000..88d9bd69 --- /dev/null +++ b/src/auth0/management/types/client_oidc_support_patch.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 +from .client_oidc_support_allowed_scopes_enum import ClientOidcSupportAllowedScopesEnum + + +class ClientOidcSupportPatch(UniversalBaseModel): + """ + OIDC support configuration for a client. Replaces the stored object entirely; send null to unset it. + """ + + is_allowed: bool + allow_all_scopes: typing.Optional[bool] = None + allowed_scopes: typing.Optional[typing.List[ClientOidcSupportAllowedScopesEnum]] = 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/client_profile.py b/src/auth0/management/types/client_profile.py new file mode 100644 index 00000000..10c695d6 --- /dev/null +++ b/src/auth0/management/types/client_profile.py @@ -0,0 +1,38 @@ +# This file was auto-generated by Fern from our API Definition. + +import datetime as dt +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .client_profile_apply_policy import ClientProfileApplyPolicy +from .client_profile_client_configuration import ClientProfileClientConfiguration +from .client_profile_description import ClientProfileDescription +from .client_profile_id import ClientProfileId +from .client_profile_name import ClientProfileName + + +class ClientProfile(UniversalBaseModel): + id: ClientProfileId + name: ClientProfileName + description: typing.Optional[ClientProfileDescription] = None + client_configuration: ClientProfileClientConfiguration + apply_policy: ClientProfileApplyPolicy + created_at: typing.Optional[dt.datetime] = pydantic.Field(default=None) + """ + Timestamp of creation. + """ + + updated_at: typing.Optional[dt.datetime] = pydantic.Field(default=None) + """ + Timestamp of last update. + """ + + 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/client_profile_apply_policy.py b/src/auth0/management/types/client_profile_apply_policy.py new file mode 100644 index 00000000..adb33924 --- /dev/null +++ b/src/auth0/management/types/client_profile_apply_policy.py @@ -0,0 +1,28 @@ +# 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 .client_profile_apply_policy_external_metadata_created_by_enum import ( + ClientProfileApplyPolicyExternalMetadataCreatedByEnum, +) +from .client_profile_apply_policy_external_metadata_type_enum import ClientProfileApplyPolicyExternalMetadataTypeEnum + + +class ClientProfileApplyPolicy(UniversalBaseModel): + """ + Runtime matching rules that determine which clients this profile governs. + """ + + external_metadata_type: ClientProfileApplyPolicyExternalMetadataTypeEnum + external_metadata_created_by: ClientProfileApplyPolicyExternalMetadataCreatedByEnum + + 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/client_profile_apply_policy_external_metadata_created_by_enum.py b/src/auth0/management/types/client_profile_apply_policy_external_metadata_created_by_enum.py new file mode 100644 index 00000000..70f13ed9 --- /dev/null +++ b/src/auth0/management/types/client_profile_apply_policy_external_metadata_created_by_enum.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +ClientProfileApplyPolicyExternalMetadataCreatedByEnum = typing.Union[typing.Literal["client"], typing.Any] diff --git a/src/auth0/management/types/client_profile_apply_policy_external_metadata_type_enum.py b/src/auth0/management/types/client_profile_apply_policy_external_metadata_type_enum.py new file mode 100644 index 00000000..f41a3147 --- /dev/null +++ b/src/auth0/management/types/client_profile_apply_policy_external_metadata_type_enum.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +ClientProfileApplyPolicyExternalMetadataTypeEnum = typing.Union[typing.Literal["cimd"], typing.Any] diff --git a/src/auth0/management/types/client_profile_client_configuration.py b/src/auth0/management/types/client_profile_client_configuration.py new file mode 100644 index 00000000..285823d9 --- /dev/null +++ b/src/auth0/management/types/client_profile_client_configuration.py @@ -0,0 +1,38 @@ +# 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 .client_profile_client_configuration_organization_discovery_methods import ( + ClientProfileClientConfigurationOrganizationDiscoveryMethods, +) +from .client_profile_client_configuration_organization_require_behavior import ( + ClientProfileClientConfigurationOrganizationRequireBehavior, +) +from .client_profile_client_configuration_organization_usage import ClientProfileClientConfigurationOrganizationUsage +from .client_profile_client_configuration_refresh_token import ClientProfileClientConfigurationRefreshToken +from .client_profile_client_configuration_require_proof_of_possession import ( + ClientProfileClientConfigurationRequireProofOfPossession, +) + + +class ClientProfileClientConfiguration(UniversalBaseModel): + """ + Runtime policy applied to matched clients. Omitted fields fall back to each client's own setting. + """ + + refresh_token: typing.Optional[ClientProfileClientConfigurationRefreshToken] = None + organization_usage: typing.Optional[ClientProfileClientConfigurationOrganizationUsage] = None + organization_require_behavior: typing.Optional[ClientProfileClientConfigurationOrganizationRequireBehavior] = None + organization_discovery_methods: typing.Optional[ClientProfileClientConfigurationOrganizationDiscoveryMethods] = None + require_proof_of_possession: typing.Optional[ClientProfileClientConfigurationRequireProofOfPossession] = 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/client_profile_client_configuration_organization_discovery_method_enum.py b/src/auth0/management/types/client_profile_client_configuration_organization_discovery_method_enum.py new file mode 100644 index 00000000..9356620d --- /dev/null +++ b/src/auth0/management/types/client_profile_client_configuration_organization_discovery_method_enum.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +ClientProfileClientConfigurationOrganizationDiscoveryMethodEnum = typing.Union[ + typing.Literal["email", "organization_name"], typing.Any +] diff --git a/src/auth0/management/types/client_profile_client_configuration_organization_discovery_methods.py b/src/auth0/management/types/client_profile_client_configuration_organization_discovery_methods.py new file mode 100644 index 00000000..81162123 --- /dev/null +++ b/src/auth0/management/types/client_profile_client_configuration_organization_discovery_methods.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 +from .client_profile_client_configuration_organization_discovery_method_enum import ( + ClientProfileClientConfigurationOrganizationDiscoveryMethodEnum, +) + + +class ClientProfileClientConfigurationOrganizationDiscoveryMethods(UniversalBaseModel): + """ + Default organization discovery methods applied to matched clients. + """ + + default_value: typing.Optional[typing.List[ClientProfileClientConfigurationOrganizationDiscoveryMethodEnum]] = 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/client_profile_client_configuration_organization_require_behavior.py b/src/auth0/management/types/client_profile_client_configuration_organization_require_behavior.py new file mode 100644 index 00000000..68359783 --- /dev/null +++ b/src/auth0/management/types/client_profile_client_configuration_organization_require_behavior.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 +from .client_profile_client_configuration_organization_require_behavior_enum import ( + ClientProfileClientConfigurationOrganizationRequireBehaviorEnum, +) + + +class ClientProfileClientConfigurationOrganizationRequireBehavior(UniversalBaseModel): + """ + Default organization prompt behavior applied to matched clients. + """ + + default_value: typing.Optional[ClientProfileClientConfigurationOrganizationRequireBehaviorEnum] = 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/client_profile_client_configuration_organization_require_behavior_enum.py b/src/auth0/management/types/client_profile_client_configuration_organization_require_behavior_enum.py new file mode 100644 index 00000000..6b53df5f --- /dev/null +++ b/src/auth0/management/types/client_profile_client_configuration_organization_require_behavior_enum.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +ClientProfileClientConfigurationOrganizationRequireBehaviorEnum = typing.Union[ + typing.Literal["no_prompt", "pre_login_prompt", "post_login_prompt"], typing.Any +] diff --git a/src/auth0/management/types/client_profile_client_configuration_organization_usage.py b/src/auth0/management/types/client_profile_client_configuration_organization_usage.py new file mode 100644 index 00000000..0caffa58 --- /dev/null +++ b/src/auth0/management/types/client_profile_client_configuration_organization_usage.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 +from .client_profile_client_configuration_organization_usage_enum import ( + ClientProfileClientConfigurationOrganizationUsageEnum, +) + + +class ClientProfileClientConfigurationOrganizationUsage(UniversalBaseModel): + """ + Default organization usage applied to matched clients. + """ + + default_value: typing.Optional[ClientProfileClientConfigurationOrganizationUsageEnum] = 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/client_profile_client_configuration_organization_usage_enum.py b/src/auth0/management/types/client_profile_client_configuration_organization_usage_enum.py new file mode 100644 index 00000000..ddc1284e --- /dev/null +++ b/src/auth0/management/types/client_profile_client_configuration_organization_usage_enum.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +ClientProfileClientConfigurationOrganizationUsageEnum = typing.Union[ + typing.Literal["deny", "allow", "require"], typing.Any +] diff --git a/src/auth0/management/types/client_profile_client_configuration_refresh_token.py b/src/auth0/management/types/client_profile_client_configuration_refresh_token.py new file mode 100644 index 00000000..f5980e9b --- /dev/null +++ b/src/auth0/management/types/client_profile_client_configuration_refresh_token.py @@ -0,0 +1,28 @@ +# 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 .client_profile_refresh_token_idle_token_lifetime import ClientProfileRefreshTokenIdleTokenLifetime +from .client_profile_refresh_token_leeway import ClientProfileRefreshTokenLeeway +from .client_profile_refresh_token_token_lifetime import ClientProfileRefreshTokenTokenLifetime + + +class ClientProfileClientConfigurationRefreshToken(UniversalBaseModel): + """ + Refresh token settings. Omit any sub-field to use the client's own value. + """ + + token_lifetime: typing.Optional[ClientProfileRefreshTokenTokenLifetime] = None + idle_token_lifetime: typing.Optional[ClientProfileRefreshTokenIdleTokenLifetime] = None + leeway: typing.Optional[ClientProfileRefreshTokenLeeway] = 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/client_profile_client_configuration_require_proof_of_possession.py b/src/auth0/management/types/client_profile_client_configuration_require_proof_of_possession.py new file mode 100644 index 00000000..a5b4b1fa --- /dev/null +++ b/src/auth0/management/types/client_profile_client_configuration_require_proof_of_possession.py @@ -0,0 +1,23 @@ +# 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 ClientProfileClientConfigurationRequireProofOfPossession(UniversalBaseModel): + """ + Whether matched clients default to requiring proof of possession. + """ + + default_value: typing.Optional[bool] = 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/client_profile_description.py b/src/auth0/management/types/client_profile_description.py new file mode 100644 index 00000000..4de059fb --- /dev/null +++ b/src/auth0/management/types/client_profile_description.py @@ -0,0 +1,8 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +ClientProfileDescription = typing.Optional[str] +""" +Optional description of the client profile. +""" diff --git a/src/auth0/management/types/client_profile_id.py b/src/auth0/management/types/client_profile_id.py new file mode 100644 index 00000000..ab6b68cf --- /dev/null +++ b/src/auth0/management/types/client_profile_id.py @@ -0,0 +1,6 @@ +# This file was auto-generated by Fern from our API Definition. + +ClientProfileId = str +""" +Client Profile identifier. +""" diff --git a/src/auth0/management/types/client_profile_name.py b/src/auth0/management/types/client_profile_name.py new file mode 100644 index 00000000..95dfb903 --- /dev/null +++ b/src/auth0/management/types/client_profile_name.py @@ -0,0 +1,6 @@ +# This file was auto-generated by Fern from our API Definition. + +ClientProfileName = str +""" +Display name of the client profile. +""" diff --git a/src/auth0/management/types/client_profile_refresh_token_idle_token_lifetime.py b/src/auth0/management/types/client_profile_refresh_token_idle_token_lifetime.py new file mode 100644 index 00000000..7f0d8733 --- /dev/null +++ b/src/auth0/management/types/client_profile_refresh_token_idle_token_lifetime.py @@ -0,0 +1,23 @@ +# 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 ClientProfileRefreshTokenIdleTokenLifetime(UniversalBaseModel): + """ + Default idle refresh token lifetime, in seconds, applied to matched clients. + """ + + default_value: typing.Optional[int] = 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/client_profile_refresh_token_leeway.py b/src/auth0/management/types/client_profile_refresh_token_leeway.py new file mode 100644 index 00000000..9517a2f8 --- /dev/null +++ b/src/auth0/management/types/client_profile_refresh_token_leeway.py @@ -0,0 +1,23 @@ +# 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 ClientProfileRefreshTokenLeeway(UniversalBaseModel): + """ + Default refresh token rotation leeway, in seconds, applied to matched clients. + """ + + default_value: typing.Optional[int] = 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/client_profile_refresh_token_token_lifetime.py b/src/auth0/management/types/client_profile_refresh_token_token_lifetime.py new file mode 100644 index 00000000..d1246e73 --- /dev/null +++ b/src/auth0/management/types/client_profile_refresh_token_token_lifetime.py @@ -0,0 +1,23 @@ +# 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 ClientProfileRefreshTokenTokenLifetime(UniversalBaseModel): + """ + Default refresh token lifetime, in seconds, applied to matched clients. + """ + + default_value: typing.Optional[int] = 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/client_search_response.py b/src/auth0/management/types/client_search_response.py new file mode 100644 index 00000000..892d794e --- /dev/null +++ b/src/auth0/management/types/client_search_response.py @@ -0,0 +1,279 @@ +# This file was auto-generated by Fern from our API Definition. + +import datetime as dt +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata +from .anonymous_sessions import AnonymousSessions +from .b_2_b_integration_configuration import B2BIntegrationConfiguration +from .client_anonymous_session_transfer_network_binding_enum import ClientAnonymousSessionTransferNetworkBindingEnum +from .client_app_type_enum import ClientAppTypeEnum +from .client_async_approval_notifications_channels_api_post_configuration import ( + ClientAsyncApprovalNotificationsChannelsApiPostConfiguration, +) +from .client_authentication_method import ClientAuthenticationMethod +from .client_compliance_level_enum import ClientComplianceLevelEnum +from .client_default_organization import ClientDefaultOrganization +from .client_external_metadata_created_by_enum import ClientExternalMetadataCreatedByEnum +from .client_external_metadata_status_enum import ClientExternalMetadataStatusEnum +from .client_external_metadata_type_enum import ClientExternalMetadataTypeEnum +from .client_jwt_configuration import ClientJwtConfiguration +from .client_metadata import ClientMetadata +from .client_mobile import ClientMobile +from .client_my_organization_response_configuration import ClientMyOrganizationResponseConfiguration +from .client_oidc_backchannel_logout_settings import ClientOidcBackchannelLogoutSettings +from .client_organization_discovery_enum import ClientOrganizationDiscoveryEnum +from .client_organization_require_behavior_enum import ClientOrganizationRequireBehaviorEnum +from .client_organization_usage_enum import ClientOrganizationUsageEnum +from .client_redirection_policy_enum import ClientRedirectionPolicyEnum +from .client_refresh_token_configuration import ClientRefreshTokenConfiguration +from .client_session_transfer_configuration import ClientSessionTransferConfiguration +from .client_signed_request_object_with_credential_id import ClientSignedRequestObjectWithCredentialId +from .client_third_party_security_mode_enum import ClientThirdPartySecurityModeEnum +from .client_token_endpoint_auth_method_enum import ClientTokenEndpointAuthMethodEnum +from .client_token_exchange_configuration import ClientTokenExchangeConfiguration +from .client_token_vault_privileged_access_with_credential_id import ClientTokenVaultPrivilegedAccessWithCredentialId +from .express_configuration import ExpressConfiguration +from .fed_cm_login import FedCmLogin +from .identity_assertion_authorization_grant import IdentityAssertionAuthorizationGrant +from .native_social_login import NativeSocialLogin +from .token_quota import TokenQuota + + +class ClientSearchResponse(UniversalBaseModel): + client_id: typing.Optional[str] = pydantic.Field(default=None) + """ + ID of this client. + """ + + created_at: typing.Optional[dt.datetime] = pydantic.Field(default=None) + """ + The ISO 8601 timestamp of when this client was created. + """ + + updated_at: typing.Optional[dt.datetime] = pydantic.Field(default=None) + """ + The ISO 8601 timestamp of when this client was last updated. + """ + + tenant: typing.Optional[str] = pydantic.Field(default=None) + """ + Name of the tenant this client belongs to. + """ + + name: typing.Optional[str] = pydantic.Field(default=None) + """ + Name of this client (min length: 1 character, does not allow `<` or `>`). + """ + + description: typing.Optional[str] = pydantic.Field(default=None) + """ + Free text description of this client (max length: 140 characters). + """ + + global_: typing_extensions.Annotated[ + typing.Optional[bool], + FieldMetadata(alias="global"), + pydantic.Field( + alias="global", + description="Whether this is your global 'All Applications' client representing legacy tenant settings (true) or a regular client (false).", + ), + ] = None + """ + Whether this is your global 'All Applications' client representing legacy tenant settings (true) or a regular client (false). + """ + + app_type: typing.Optional[ClientAppTypeEnum] = None + logo_uri: typing.Optional[str] = pydantic.Field(default=None) + """ + URL of the logo to display for this client. Recommended size is 150x150 pixels. + """ + + is_first_party: typing.Optional[bool] = pydantic.Field(default=None) + """ + Whether this client a first party client (true) or not (false). + """ + + oidc_conformant: typing.Optional[bool] = pydantic.Field(default=None) + """ + Whether this client conforms to strict OIDC specifications (true) or uses legacy features (false). + """ + + callbacks: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + Comma-separated list of URLs whitelisted for Auth0 to use as a callback to the client after authentication. + """ + + allowed_origins: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + Comma-separated list of URLs allowed to make requests from JavaScript to Auth0 API (typically used with CORS). By default, all your callback URLs will be allowed. This field allows you to enter other origins if necessary. You can also use wildcards at the subdomain level (e.g., https://*.contoso.com). Query strings and hash information are not taken into account when validating these URLs. + """ + + web_origins: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + Comma-separated list of allowed origins for use with Cross-Origin Authentication, Device Flow, and web message response mode. + """ + + client_aliases: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + List of audiences/realms for SAML protocol. Used by the wsfed addon. + """ + + allowed_clients: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + List of allow clients and API ids that are allowed to make delegation requests. Empty means all all your clients are allowed. + """ + + allowed_logout_urls: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + Comma-separated list of URLs that are valid to redirect to after logout from Auth0. Wildcards are allowed for subdomains. + """ + + session_transfer: typing.Optional[ClientSessionTransferConfiguration] = None + oidc_logout: typing.Optional[ClientOidcBackchannelLogoutSettings] = None + grant_types: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + List of grant types supported for this application. Can include `authorization_code`, `implicit`, `refresh_token`, `client_credentials`, `password`, `http://auth0.com/oauth/grant-type/password-realm`, `http://auth0.com/oauth/grant-type/mfa-oob`, `http://auth0.com/oauth/grant-type/mfa-otp`, `http://auth0.com/oauth/grant-type/mfa-recovery-code`, `urn:openid:params:grant-type:ciba`, `urn:ietf:params:oauth:grant-type:device_code`, and `urn:auth0:params:oauth:grant-type:token-exchange:federated-connection-access-token`. + """ + + jwt_configuration: typing.Optional[ClientJwtConfiguration] = None + sso: typing.Optional[bool] = pydantic.Field(default=None) + """ + Applies only to SSO clients and determines whether Auth0 will handle Single Sign On (true) or whether the Identity Provider will (false). + """ + + sso_disabled: typing.Optional[bool] = pydantic.Field(default=None) + """ + Whether Single Sign On is disabled (true) or enabled (true). Defaults to true. + """ + + cross_origin_authentication: typing.Optional[bool] = pydantic.Field(default=None) + """ + Whether this client can be used to make cross-origin authentication requests (true) or it is not allowed to make such requests (false). + """ + + cross_origin_loc: typing.Optional[str] = pydantic.Field(default=None) + """ + URL of the location in your site where the cross origin verification takes place for the cross-origin auth flow when performing Auth in your own domain instead of Auth0 hosted login page. + """ + + custom_login_page_on: typing.Optional[bool] = pydantic.Field(default=None) + """ + Whether a custom login page is to be used (true) or the default provided login page (false). + """ + + custom_login_page: typing.Optional[str] = pydantic.Field(default=None) + """ + The content (HTML, CSS, JS) of the custom login page. + """ + + custom_login_page_preview: typing.Optional[str] = pydantic.Field(default=None) + """ + The content (HTML, CSS, JS) of the custom login page. (Used on Previews) + """ + + form_template: typing.Optional[str] = pydantic.Field(default=None) + """ + HTML form template to be used for WS-Federation. + """ + + token_endpoint_auth_method: typing.Optional[ClientTokenEndpointAuthMethodEnum] = None + is_token_endpoint_ip_header_trusted: typing.Optional[bool] = pydantic.Field(default=None) + """ + If true, trust that the IP specified in the `auth0-forwarded-for` header is the end-user's IP for brute-force-protection on token endpoint. + """ + + client_metadata: typing.Optional[ClientMetadata] = None + mobile: typing.Optional[ClientMobile] = None + initiate_login_uri: typing.Optional[str] = pydantic.Field(default=None) + """ + Initiate login uri, must be https + """ + + native_social_login: typing.Optional[NativeSocialLogin] = None + fedcm_login: typing.Optional[FedCmLogin] = None + refresh_token: typing.Optional[ClientRefreshTokenConfiguration] = None + default_organization: typing.Optional[ClientDefaultOrganization] = None + organization_usage: typing.Optional[ClientOrganizationUsageEnum] = None + organization_require_behavior: typing.Optional[ClientOrganizationRequireBehaviorEnum] = None + organization_discovery_methods: typing.Optional[typing.List[ClientOrganizationDiscoveryEnum]] = pydantic.Field( + default=None + ) + """ + Defines the available methods for organization discovery during the `pre_login_prompt`. Users can discover their organization either by `email`, `organization_name` or both. + """ + + client_authentication_methods: typing.Optional[ClientAuthenticationMethod] = None + require_pushed_authorization_requests: typing.Optional[bool] = pydantic.Field(default=None) + """ + Makes the use of Pushed Authorization Requests mandatory for this client + """ + + require_proof_of_possession: typing.Optional[bool] = pydantic.Field(default=None) + """ + Makes the use of Proof-of-Possession mandatory for this client + """ + + signed_request_object: typing.Optional[ClientSignedRequestObjectWithCredentialId] = None + token_vault_privileged_access: typing.Optional[ClientTokenVaultPrivilegedAccessWithCredentialId] = None + compliance_level: typing.Optional[ClientComplianceLevelEnum] = None + skip_non_verifiable_callback_uri_confirmation_prompt: typing.Optional[bool] = pydantic.Field(default=None) + """ + Controls whether a confirmation prompt is shown during login flows when the redirect URI uses non-verifiable callback URIs (for example, a custom URI schema such as `myapp://`, or `localhost`). + If set to true, a confirmation prompt will not be shown. We recommend that this is set to false for improved protection from malicious apps. + See https://auth0.com/docs/secure/security-guidance/measures-against-app-impersonation for more information. + """ + + token_exchange: typing.Optional[ClientTokenExchangeConfiguration] = None + par_request_expiry: typing.Optional[int] = pydantic.Field(default=None) + """ + Specifies how long, in seconds, a Pushed Authorization Request URI remains valid + """ + + token_quota: typing.Optional[TokenQuota] = None + express_configuration: typing.Optional[ExpressConfiguration] = None + b_2_b_integration_configuration: typing_extensions.Annotated[ + typing.Optional[B2BIntegrationConfiguration], + FieldMetadata(alias="b2b_integration_configuration"), + pydantic.Field(alias="b2b_integration_configuration"), + ] = None + my_organization_configuration: typing.Optional[ClientMyOrganizationResponseConfiguration] = None + identity_assertion_authorization_grant: typing.Optional[IdentityAssertionAuthorizationGrant] = None + anonymous_sessions: typing.Optional[AnonymousSessions] = None + enforce_anon_session_transfer_network_binding: typing.Optional[ClientAnonymousSessionTransferNetworkBindingEnum] = ( + None + ) + third_party_security_mode: typing.Optional[ClientThirdPartySecurityModeEnum] = None + redirection_policy: typing.Optional[ClientRedirectionPolicyEnum] = None + resource_server_identifier: typing.Optional[str] = pydantic.Field(default=None) + """ + The identifier of the resource server that this client is linked to. + """ + + async_approval_notification_channels: typing.Optional[ + ClientAsyncApprovalNotificationsChannelsApiPostConfiguration + ] = None + external_metadata_type: typing.Optional[ClientExternalMetadataTypeEnum] = None + external_metadata_created_by: typing.Optional[ClientExternalMetadataCreatedByEnum] = None + external_metadata_status: typing.Optional[ClientExternalMetadataStatusEnum] = None + external_client_id: typing.Optional[str] = pydantic.Field(default=None) + """ + An alternate client identifier to be used during authorization flows. Only supports CIMD-based client identifiers. + """ + + jwks_uri: typing.Optional[str] = pydantic.Field(default=None) + """ + URL for the JSON Web Key Set (JWKS) containing the public keys used for private_key_jwt authentication. Only present for CIMD clients using private_key_jwt authentication. + """ + + 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/client_sort_field_enum.py b/src/auth0/management/types/client_sort_field_enum.py new file mode 100644 index 00000000..e7e54a66 --- /dev/null +++ b/src/auth0/management/types/client_sort_field_enum.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +ClientSortFieldEnum = typing.Union[typing.Literal["name", "updated_at"], typing.Any] diff --git a/src/auth0/management/types/connection_profile_provisioning.py b/src/auth0/management/types/connection_profile_provisioning.py index cd7bd618..0766f512 100644 --- a/src/auth0/management/types/connection_profile_provisioning.py +++ b/src/auth0/management/types/connection_profile_provisioning.py @@ -4,6 +4,7 @@ import pydantic from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .connection_profile_provisioning_google_workspace import ConnectionProfileProvisioningGoogleWorkspace from .connection_profile_provisioning_scim import ConnectionProfileProvisioningScim @@ -13,6 +14,7 @@ class ConnectionProfileProvisioning(UniversalBaseModel): """ scim: typing.Optional[ConnectionProfileProvisioningScim] = None + google_workspace: typing.Optional[ConnectionProfileProvisioningGoogleWorkspace] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/auth0/management/types/connection_profile_provisioning_google_workspace.py b/src/auth0/management/types/connection_profile_provisioning_google_workspace.py new file mode 100644 index 00000000..9c079d4d --- /dev/null +++ b/src/auth0/management/types/connection_profile_provisioning_google_workspace.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 +from .connection_profile_provisioning_google_workspace_sync_users import ( + ConnectionProfileProvisioningGoogleWorkspaceSyncUsers, +) + + +class ConnectionProfileProvisioningGoogleWorkspace(UniversalBaseModel): + """ + Google Workspace provisioning settings. + """ + + sync_users: ConnectionProfileProvisioningGoogleWorkspaceSyncUsers + + 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/connection_profile_provisioning_google_workspace_sync_users.py b/src/auth0/management/types/connection_profile_provisioning_google_workspace_sync_users.py new file mode 100644 index 00000000..bf956297 --- /dev/null +++ b/src/auth0/management/types/connection_profile_provisioning_google_workspace_sync_users.py @@ -0,0 +1,6 @@ +# This file was auto-generated by Fern from our API Definition. + +ConnectionProfileProvisioningGoogleWorkspaceSyncUsers = bool +""" +Whether the connection is authorized to run Google Workspace user provisioning. +""" diff --git a/src/auth0/management/types/connection_profile_strategy_overrides_provisioning.py b/src/auth0/management/types/connection_profile_strategy_overrides_provisioning.py index e0d6a981..54f070c1 100644 --- a/src/auth0/management/types/connection_profile_strategy_overrides_provisioning.py +++ b/src/auth0/management/types/connection_profile_strategy_overrides_provisioning.py @@ -4,6 +4,7 @@ import pydantic from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .connection_profile_provisioning_google_workspace import ConnectionProfileProvisioningGoogleWorkspace from .connection_profile_provisioning_scim import ConnectionProfileProvisioningScim @@ -13,6 +14,7 @@ class ConnectionProfileStrategyOverridesProvisioning(UniversalBaseModel): """ scim: typing.Optional[ConnectionProfileProvisioningScim] = None + google_workspace: typing.Optional[ConnectionProfileProvisioningGoogleWorkspace] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/auth0/management/types/connection_response_common.py b/src/auth0/management/types/connection_response_common.py index 9bc63e2c..029db176 100644 --- a/src/auth0/management/types/connection_response_common.py +++ b/src/auth0/management/types/connection_response_common.py @@ -3,15 +3,27 @@ import typing import pydantic -from ..core.pydantic_utilities import IS_PYDANTIC_V2 +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .connection_display_name import ConnectionDisplayName from .connection_id import ConnectionId +from .connection_is_domain_connection import ConnectionIsDomainConnection +from .connection_name import ConnectionName from .connection_realms import ConnectionRealms -from .create_connection_common import CreateConnectionCommon +from .connections_metadata import ConnectionsMetadata -class ConnectionResponseCommon(CreateConnectionCommon): +class ConnectionResponseCommon(UniversalBaseModel): + display_name: ConnectionDisplayName id: ConnectionId realms: typing.Optional[ConnectionRealms] = 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. + """ + + is_domain_connection: typing.Optional[ConnectionIsDomainConnection] = None + metadata: typing.Optional[ConnectionsMetadata] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/auth0/management/types/create_client_response_content.py b/src/auth0/management/types/create_client_response_content.py index 136d8f75..15f8291d 100644 --- a/src/auth0/management/types/create_client_response_content.py +++ b/src/auth0/management/types/create_client_response_content.py @@ -10,6 +10,7 @@ from .anonymous_sessions import AnonymousSessions from .b_2_b_integration_configuration import B2BIntegrationConfiguration from .client_addons import ClientAddons +from .client_anonymous_session_transfer_network_binding_enum import ClientAnonymousSessionTransferNetworkBindingEnum from .client_app_type_enum import ClientAppTypeEnum from .client_async_approval_notifications_channels_api_post_configuration import ( ClientAsyncApprovalNotificationsChannelsApiPostConfiguration, @@ -19,6 +20,7 @@ from .client_default_organization import ClientDefaultOrganization from .client_encryption_key import ClientEncryptionKey from .client_external_metadata_created_by_enum import ClientExternalMetadataCreatedByEnum +from .client_external_metadata_status_enum import ClientExternalMetadataStatusEnum from .client_external_metadata_type_enum import ClientExternalMetadataTypeEnum from .client_jwt_configuration import ClientJwtConfiguration from .client_metadata import ClientMetadata @@ -252,6 +254,9 @@ class CreateClientResponseContent(UniversalBaseModel): my_organization_configuration: typing.Optional[ClientMyOrganizationResponseConfiguration] = None identity_assertion_authorization_grant: typing.Optional[IdentityAssertionAuthorizationGrant] = None anonymous_sessions: typing.Optional[AnonymousSessions] = None + enforce_anon_session_transfer_network_binding: typing.Optional[ClientAnonymousSessionTransferNetworkBindingEnum] = ( + None + ) third_party_security_mode: typing.Optional[ClientThirdPartySecurityModeEnum] = None redirection_policy: typing.Optional[ClientRedirectionPolicyEnum] = None resource_server_identifier: typing.Optional[str] = pydantic.Field(default=None) @@ -264,6 +269,7 @@ class CreateClientResponseContent(UniversalBaseModel): ] = None external_metadata_type: typing.Optional[ClientExternalMetadataTypeEnum] = None external_metadata_created_by: typing.Optional[ClientExternalMetadataCreatedByEnum] = None + external_metadata_status: typing.Optional[ClientExternalMetadataStatusEnum] = None external_client_id: typing.Optional[str] = pydantic.Field(default=None) """ An alternate client identifier to be used during authorization flows. Only supports CIMD-based client identifiers. diff --git a/src/auth0/management/types/create_role_response_content.py b/src/auth0/management/types/create_role_response_content.py index 8a1ab09f..9137a164 100644 --- a/src/auth0/management/types/create_role_response_content.py +++ b/src/auth0/management/types/create_role_response_content.py @@ -4,6 +4,7 @@ import pydantic from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .role_owner_id import RoleOwnerId from .role_type_enum import RoleTypeEnum @@ -24,10 +25,7 @@ class CreateRoleResponseContent(UniversalBaseModel): """ type: typing.Optional[RoleTypeEnum] = None - owner_id: typing.Optional[str] = pydantic.Field(default=None) - """ - The id of the entity that owns this role, such as an organization id. - """ + owner_id: typing.Optional[RoleOwnerId] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/auth0/management/types/create_segment_response_content.py b/src/auth0/management/types/create_segment_response_content.py index 5d97af4b..a6404cfa 100644 --- a/src/auth0/management/types/create_segment_response_content.py +++ b/src/auth0/management/types/create_segment_response_content.py @@ -6,6 +6,7 @@ import pydantic from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel from .segment_rule import SegmentRule +from .segment_status_enum import SegmentStatusEnum from .segment_type_enum import SegmentTypeEnum @@ -14,6 +15,7 @@ class CreateSegmentResponseContent(UniversalBaseModel): name: str description: typing.Optional[str] = None type: SegmentTypeEnum + status: SegmentStatusEnum rules: typing.List[SegmentRule] created_at: dt.datetime updated_at: dt.datetime diff --git a/src/auth0/management/types/enabled_features_enum.py b/src/auth0/management/types/enabled_features_enum.py index 23283f92..88893555 100644 --- a/src/auth0/management/types/enabled_features_enum.py +++ b/src/auth0/management/types/enabled_features_enum.py @@ -2,4 +2,4 @@ import typing -EnabledFeaturesEnum = typing.Union[typing.Literal["scim", "universal_logout"], typing.Any] +EnabledFeaturesEnum = typing.Union[typing.Literal["scim", "universal_logout", "directory_sync"], typing.Any] diff --git a/src/auth0/management/types/event_stream_cloud_event_connection_created_cloud_event.py b/src/auth0/management/types/event_stream_cloud_event_connection_created_cloud_event.py index 66e2fc12..ab78ad12 100644 --- a/src/auth0/management/types/event_stream_cloud_event_connection_created_cloud_event.py +++ b/src/auth0/management/types/event_stream_cloud_event_connection_created_cloud_event.py @@ -48,14 +48,17 @@ class EventStreamCloudEventConnectionCreatedCloudEvent(UniversalBaseModel): """ a_0_stream: typing_extensions.Annotated[ - str, + typing.Optional[str], FieldMetadata(alias="a0stream"), pydantic.Field( - alias="a0stream", description="The auth0 event stream ID of the stream the event was delivered on." + alias="a0stream", + description="The auth0 event stream ID of the stream the event was delivered on.\nPresent when the event is delivered via an event stream; omitted when\nevents are retrieved via the Events API (GET /api/v2/events).", ), - ] + ] = None """ The auth0 event stream ID of the stream the event was delivered on. + Present when the event is delivered via an event stream; omitted when + events are retrieved via the Events API (GET /api/v2/events). """ a_0_purpose: typing_extensions.Annotated[ diff --git a/src/auth0/management/types/event_stream_cloud_event_connection_deleted_cloud_event.py b/src/auth0/management/types/event_stream_cloud_event_connection_deleted_cloud_event.py index b0679858..780c7b65 100644 --- a/src/auth0/management/types/event_stream_cloud_event_connection_deleted_cloud_event.py +++ b/src/auth0/management/types/event_stream_cloud_event_connection_deleted_cloud_event.py @@ -48,14 +48,17 @@ class EventStreamCloudEventConnectionDeletedCloudEvent(UniversalBaseModel): """ a_0_stream: typing_extensions.Annotated[ - str, + typing.Optional[str], FieldMetadata(alias="a0stream"), pydantic.Field( - alias="a0stream", description="The auth0 event stream ID of the stream the event was delivered on." + alias="a0stream", + description="The auth0 event stream ID of the stream the event was delivered on.\nPresent when the event is delivered via an event stream; omitted when\nevents are retrieved via the Events API (GET /api/v2/events).", ), - ] + ] = None """ The auth0 event stream ID of the stream the event was delivered on. + Present when the event is delivered via an event stream; omitted when + events are retrieved via the Events API (GET /api/v2/events). """ a_0_purpose: typing_extensions.Annotated[ diff --git a/src/auth0/management/types/event_stream_cloud_event_connection_updated_cloud_event.py b/src/auth0/management/types/event_stream_cloud_event_connection_updated_cloud_event.py index 02d4874d..15b52cd0 100644 --- a/src/auth0/management/types/event_stream_cloud_event_connection_updated_cloud_event.py +++ b/src/auth0/management/types/event_stream_cloud_event_connection_updated_cloud_event.py @@ -48,14 +48,17 @@ class EventStreamCloudEventConnectionUpdatedCloudEvent(UniversalBaseModel): """ a_0_stream: typing_extensions.Annotated[ - str, + typing.Optional[str], FieldMetadata(alias="a0stream"), pydantic.Field( - alias="a0stream", description="The auth0 event stream ID of the stream the event was delivered on." + alias="a0stream", + description="The auth0 event stream ID of the stream the event was delivered on.\nPresent when the event is delivered via an event stream; omitted when\nevents are retrieved via the Events API (GET /api/v2/events).", ), - ] + ] = None """ The auth0 event stream ID of the stream the event was delivered on. + Present when the event is delivered via an event stream; omitted when + events are retrieved via the Events API (GET /api/v2/events). """ a_0_purpose: typing_extensions.Annotated[ diff --git a/src/auth0/management/types/event_stream_cloud_event_group_created_cloud_event.py b/src/auth0/management/types/event_stream_cloud_event_group_created_cloud_event.py index 50a6f667..3725c514 100644 --- a/src/auth0/management/types/event_stream_cloud_event_group_created_cloud_event.py +++ b/src/auth0/management/types/event_stream_cloud_event_group_created_cloud_event.py @@ -48,14 +48,17 @@ class EventStreamCloudEventGroupCreatedCloudEvent(UniversalBaseModel): """ a_0_stream: typing_extensions.Annotated[ - str, + typing.Optional[str], FieldMetadata(alias="a0stream"), pydantic.Field( - alias="a0stream", description="The auth0 event stream ID of the stream the event was delivered on." + alias="a0stream", + description="The auth0 event stream ID of the stream the event was delivered on.\nPresent when the event is delivered via an event stream; omitted when\nevents are retrieved via the Events API (GET /api/v2/events).", ), - ] + ] = None """ The auth0 event stream ID of the stream the event was delivered on. + Present when the event is delivered via an event stream; omitted when + events are retrieved via the Events API (GET /api/v2/events). """ a_0_purpose: typing_extensions.Annotated[ diff --git a/src/auth0/management/types/event_stream_cloud_event_group_deleted_cloud_event.py b/src/auth0/management/types/event_stream_cloud_event_group_deleted_cloud_event.py index e6ec1e82..ecea1104 100644 --- a/src/auth0/management/types/event_stream_cloud_event_group_deleted_cloud_event.py +++ b/src/auth0/management/types/event_stream_cloud_event_group_deleted_cloud_event.py @@ -48,14 +48,17 @@ class EventStreamCloudEventGroupDeletedCloudEvent(UniversalBaseModel): """ a_0_stream: typing_extensions.Annotated[ - str, + typing.Optional[str], FieldMetadata(alias="a0stream"), pydantic.Field( - alias="a0stream", description="The auth0 event stream ID of the stream the event was delivered on." + alias="a0stream", + description="The auth0 event stream ID of the stream the event was delivered on.\nPresent when the event is delivered via an event stream; omitted when\nevents are retrieved via the Events API (GET /api/v2/events).", ), - ] + ] = None """ The auth0 event stream ID of the stream the event was delivered on. + Present when the event is delivered via an event stream; omitted when + events are retrieved via the Events API (GET /api/v2/events). """ a_0_purpose: typing_extensions.Annotated[ diff --git a/src/auth0/management/types/event_stream_cloud_event_group_member_added_cloud_event.py b/src/auth0/management/types/event_stream_cloud_event_group_member_added_cloud_event.py index a5875fcd..490bc035 100644 --- a/src/auth0/management/types/event_stream_cloud_event_group_member_added_cloud_event.py +++ b/src/auth0/management/types/event_stream_cloud_event_group_member_added_cloud_event.py @@ -48,14 +48,17 @@ class EventStreamCloudEventGroupMemberAddedCloudEvent(UniversalBaseModel): """ a_0_stream: typing_extensions.Annotated[ - str, + typing.Optional[str], FieldMetadata(alias="a0stream"), pydantic.Field( - alias="a0stream", description="The auth0 event stream ID of the stream the event was delivered on." + alias="a0stream", + description="The auth0 event stream ID of the stream the event was delivered on.\nPresent when the event is delivered via an event stream; omitted when\nevents are retrieved via the Events API (GET /api/v2/events).", ), - ] + ] = None """ The auth0 event stream ID of the stream the event was delivered on. + Present when the event is delivered via an event stream; omitted when + events are retrieved via the Events API (GET /api/v2/events). """ a_0_purpose: typing_extensions.Annotated[ diff --git a/src/auth0/management/types/event_stream_cloud_event_group_member_deleted_cloud_event.py b/src/auth0/management/types/event_stream_cloud_event_group_member_deleted_cloud_event.py index f221fb2c..8fa80793 100644 --- a/src/auth0/management/types/event_stream_cloud_event_group_member_deleted_cloud_event.py +++ b/src/auth0/management/types/event_stream_cloud_event_group_member_deleted_cloud_event.py @@ -48,14 +48,17 @@ class EventStreamCloudEventGroupMemberDeletedCloudEvent(UniversalBaseModel): """ a_0_stream: typing_extensions.Annotated[ - str, + typing.Optional[str], FieldMetadata(alias="a0stream"), pydantic.Field( - alias="a0stream", description="The auth0 event stream ID of the stream the event was delivered on." + alias="a0stream", + description="The auth0 event stream ID of the stream the event was delivered on.\nPresent when the event is delivered via an event stream; omitted when\nevents are retrieved via the Events API (GET /api/v2/events).", ), - ] + ] = None """ The auth0 event stream ID of the stream the event was delivered on. + Present when the event is delivered via an event stream; omitted when + events are retrieved via the Events API (GET /api/v2/events). """ a_0_purpose: typing_extensions.Annotated[ diff --git a/src/auth0/management/types/event_stream_cloud_event_group_role_assigned_cloud_event.py b/src/auth0/management/types/event_stream_cloud_event_group_role_assigned_cloud_event.py index 6fb9a6ce..d27fd9f9 100644 --- a/src/auth0/management/types/event_stream_cloud_event_group_role_assigned_cloud_event.py +++ b/src/auth0/management/types/event_stream_cloud_event_group_role_assigned_cloud_event.py @@ -48,14 +48,17 @@ class EventStreamCloudEventGroupRoleAssignedCloudEvent(UniversalBaseModel): """ a_0_stream: typing_extensions.Annotated[ - str, + typing.Optional[str], FieldMetadata(alias="a0stream"), pydantic.Field( - alias="a0stream", description="The auth0 event stream ID of the stream the event was delivered on." + alias="a0stream", + description="The auth0 event stream ID of the stream the event was delivered on.\nPresent when the event is delivered via an event stream; omitted when\nevents are retrieved via the Events API (GET /api/v2/events).", ), - ] + ] = None """ The auth0 event stream ID of the stream the event was delivered on. + Present when the event is delivered via an event stream; omitted when + events are retrieved via the Events API (GET /api/v2/events). """ a_0_purpose: typing_extensions.Annotated[ diff --git a/src/auth0/management/types/event_stream_cloud_event_group_role_deleted_cloud_event.py b/src/auth0/management/types/event_stream_cloud_event_group_role_deleted_cloud_event.py index 234b6689..dd2df1bb 100644 --- a/src/auth0/management/types/event_stream_cloud_event_group_role_deleted_cloud_event.py +++ b/src/auth0/management/types/event_stream_cloud_event_group_role_deleted_cloud_event.py @@ -48,14 +48,17 @@ class EventStreamCloudEventGroupRoleDeletedCloudEvent(UniversalBaseModel): """ a_0_stream: typing_extensions.Annotated[ - str, + typing.Optional[str], FieldMetadata(alias="a0stream"), pydantic.Field( - alias="a0stream", description="The auth0 event stream ID of the stream the event was delivered on." + alias="a0stream", + description="The auth0 event stream ID of the stream the event was delivered on.\nPresent when the event is delivered via an event stream; omitted when\nevents are retrieved via the Events API (GET /api/v2/events).", ), - ] + ] = None """ The auth0 event stream ID of the stream the event was delivered on. + Present when the event is delivered via an event stream; omitted when + events are retrieved via the Events API (GET /api/v2/events). """ a_0_purpose: typing_extensions.Annotated[ diff --git a/src/auth0/management/types/event_stream_cloud_event_group_updated_cloud_event.py b/src/auth0/management/types/event_stream_cloud_event_group_updated_cloud_event.py index 1746d61d..f73ce928 100644 --- a/src/auth0/management/types/event_stream_cloud_event_group_updated_cloud_event.py +++ b/src/auth0/management/types/event_stream_cloud_event_group_updated_cloud_event.py @@ -48,14 +48,17 @@ class EventStreamCloudEventGroupUpdatedCloudEvent(UniversalBaseModel): """ a_0_stream: typing_extensions.Annotated[ - str, + typing.Optional[str], FieldMetadata(alias="a0stream"), pydantic.Field( - alias="a0stream", description="The auth0 event stream ID of the stream the event was delivered on." + alias="a0stream", + description="The auth0 event stream ID of the stream the event was delivered on.\nPresent when the event is delivered via an event stream; omitted when\nevents are retrieved via the Events API (GET /api/v2/events).", ), - ] + ] = None """ The auth0 event stream ID of the stream the event was delivered on. + Present when the event is delivered via an event stream; omitted when + events are retrieved via the Events API (GET /api/v2/events). """ a_0_purpose: typing_extensions.Annotated[ diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_added_cloud_event.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_added_cloud_event.py index 205ccc3f..b088e28a 100644 --- a/src/auth0/management/types/event_stream_cloud_event_org_connection_added_cloud_event.py +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_added_cloud_event.py @@ -48,14 +48,17 @@ class EventStreamCloudEventOrgConnectionAddedCloudEvent(UniversalBaseModel): """ a_0_stream: typing_extensions.Annotated[ - str, + typing.Optional[str], FieldMetadata(alias="a0stream"), pydantic.Field( - alias="a0stream", description="The auth0 event stream ID of the stream the event was delivered on." + alias="a0stream", + description="The auth0 event stream ID of the stream the event was delivered on.\nPresent when the event is delivered via an event stream; omitted when\nevents are retrieved via the Events API (GET /api/v2/events).", ), - ] + ] = None """ The auth0 event stream ID of the stream the event was delivered on. + Present when the event is delivered via an event stream; omitted when + events are retrieved via the Events API (GET /api/v2/events). """ a_0_purpose: typing_extensions.Annotated[ diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_added_object.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_added_object.py index 6f51ca51..dc6246aa 100644 --- a/src/auth0/management/types/event_stream_cloud_event_org_connection_added_object.py +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_added_object.py @@ -13,6 +13,9 @@ from .event_stream_cloud_event_org_connection_added_object_organization_access_level import ( EventStreamCloudEventOrgConnectionAddedObjectOrganizationAccessLevel, ) +from .event_stream_cloud_event_org_connection_added_object_organization_member_access_level import ( + EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel, +) class EventStreamCloudEventOrgConnectionAddedObject(UniversalBaseModel): @@ -49,6 +52,9 @@ class EventStreamCloudEventOrgConnectionAddedObject(UniversalBaseModel): organization_access_level: typing.Optional[EventStreamCloudEventOrgConnectionAddedObjectOrganizationAccessLevel] = ( None ) + organization_member_access_level: typing.Optional[ + EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel + ] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_added_object_organization_member_access_level.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_added_object_organization_member_access_level.py new file mode 100644 index 00000000..5cd0e0e1 --- /dev/null +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_added_object_organization_member_access_level.py @@ -0,0 +1,23 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .event_stream_cloud_event_org_connection_added_object_organization_member_access_level_0_enum import ( + EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel0Enum, +) +from .event_stream_cloud_event_org_connection_added_object_organization_member_access_level_1_enum import ( + EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel1Enum, +) +from .event_stream_cloud_event_org_connection_added_object_organization_member_access_level_2_enum import ( + EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel2Enum, +) +from .event_stream_cloud_event_org_connection_added_object_organization_member_access_level_3_enum import ( + EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel3Enum, +) + +EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel = typing.Union[ + EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel0Enum, + EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel1Enum, + EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel2Enum, + EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel3Enum, +] diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_added_object_organization_member_access_level_0_enum.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_added_object_organization_member_access_level_0_enum.py new file mode 100644 index 00000000..a74eb699 --- /dev/null +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_added_object_organization_member_access_level_0_enum.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel0Enum = typing.Union[ + typing.Literal["none"], typing.Any +] diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_added_object_organization_member_access_level_1_enum.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_added_object_organization_member_access_level_1_enum.py new file mode 100644 index 00000000..f8763297 --- /dev/null +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_added_object_organization_member_access_level_1_enum.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel1Enum = typing.Union[ + typing.Literal["readonly"], typing.Any +] diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_added_object_organization_member_access_level_2_enum.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_added_object_organization_member_access_level_2_enum.py new file mode 100644 index 00000000..880e3274 --- /dev/null +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_added_object_organization_member_access_level_2_enum.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel2Enum = typing.Union[ + typing.Literal["limited"], typing.Any +] diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_added_object_organization_member_access_level_3_enum.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_added_object_organization_member_access_level_3_enum.py new file mode 100644 index 00000000..6273aa19 --- /dev/null +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_added_object_organization_member_access_level_3_enum.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel3Enum = typing.Union[ + typing.Literal["full"], typing.Any +] diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_added_previous_object.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_added_previous_object.py index 283e2112..b1a034f3 100644 --- a/src/auth0/management/types/event_stream_cloud_event_org_connection_added_previous_object.py +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_added_previous_object.py @@ -13,6 +13,9 @@ from .event_stream_cloud_event_org_connection_added_previous_object_organization_access_level import ( EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationAccessLevel, ) +from .event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level import ( + EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel, +) class EventStreamCloudEventOrgConnectionAddedPreviousObject(UniversalBaseModel): @@ -49,6 +52,9 @@ class EventStreamCloudEventOrgConnectionAddedPreviousObject(UniversalBaseModel): organization_access_level: typing.Optional[ EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationAccessLevel ] = None + organization_member_access_level: typing.Optional[ + EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel + ] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level.py new file mode 100644 index 00000000..c2c19780 --- /dev/null +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level.py @@ -0,0 +1,23 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level_0_enum import ( + EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel0Enum, +) +from .event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level_1_enum import ( + EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel1Enum, +) +from .event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level_2_enum import ( + EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel2Enum, +) +from .event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level_3_enum import ( + EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel3Enum, +) + +EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel = typing.Union[ + EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel0Enum, + EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel1Enum, + EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel2Enum, + EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel3Enum, +] diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level_0_enum.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level_0_enum.py new file mode 100644 index 00000000..d4ab69f4 --- /dev/null +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level_0_enum.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel0Enum = typing.Union[ + typing.Literal["none"], typing.Any +] diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level_1_enum.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level_1_enum.py new file mode 100644 index 00000000..9a9ebaa4 --- /dev/null +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level_1_enum.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel1Enum = typing.Union[ + typing.Literal["readonly"], typing.Any +] diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level_2_enum.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level_2_enum.py new file mode 100644 index 00000000..a1593a0f --- /dev/null +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level_2_enum.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel2Enum = typing.Union[ + typing.Literal["limited"], typing.Any +] diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level_3_enum.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level_3_enum.py new file mode 100644 index 00000000..a65f7b8d --- /dev/null +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_added_previous_object_organization_member_access_level_3_enum.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel3Enum = typing.Union[ + typing.Literal["full"], typing.Any +] diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_removed_cloud_event.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_removed_cloud_event.py index 1a21e71d..305f80ef 100644 --- a/src/auth0/management/types/event_stream_cloud_event_org_connection_removed_cloud_event.py +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_removed_cloud_event.py @@ -48,14 +48,17 @@ class EventStreamCloudEventOrgConnectionRemovedCloudEvent(UniversalBaseModel): """ a_0_stream: typing_extensions.Annotated[ - str, + typing.Optional[str], FieldMetadata(alias="a0stream"), pydantic.Field( - alias="a0stream", description="The auth0 event stream ID of the stream the event was delivered on." + alias="a0stream", + description="The auth0 event stream ID of the stream the event was delivered on.\nPresent when the event is delivered via an event stream; omitted when\nevents are retrieved via the Events API (GET /api/v2/events).", ), - ] + ] = None """ The auth0 event stream ID of the stream the event was delivered on. + Present when the event is delivered via an event stream; omitted when + events are retrieved via the Events API (GET /api/v2/events). """ a_0_purpose: typing_extensions.Annotated[ diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_cloud_event.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_cloud_event.py index 3a5430ee..8afd9d66 100644 --- a/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_cloud_event.py +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_cloud_event.py @@ -48,14 +48,17 @@ class EventStreamCloudEventOrgConnectionUpdatedCloudEvent(UniversalBaseModel): """ a_0_stream: typing_extensions.Annotated[ - str, + typing.Optional[str], FieldMetadata(alias="a0stream"), pydantic.Field( - alias="a0stream", description="The auth0 event stream ID of the stream the event was delivered on." + alias="a0stream", + description="The auth0 event stream ID of the stream the event was delivered on.\nPresent when the event is delivered via an event stream; omitted when\nevents are retrieved via the Events API (GET /api/v2/events).", ), - ] + ] = None """ The auth0 event stream ID of the stream the event was delivered on. + Present when the event is delivered via an event stream; omitted when + events are retrieved via the Events API (GET /api/v2/events). """ a_0_purpose: typing_extensions.Annotated[ diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_object.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_object.py index 358458ba..28ae5ca5 100644 --- a/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_object.py +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_object.py @@ -13,6 +13,9 @@ from .event_stream_cloud_event_org_connection_updated_object_organization_access_level import ( EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationAccessLevel, ) +from .event_stream_cloud_event_org_connection_updated_object_organization_member_access_level import ( + EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel, +) class EventStreamCloudEventOrgConnectionUpdatedObject(UniversalBaseModel): @@ -49,6 +52,9 @@ class EventStreamCloudEventOrgConnectionUpdatedObject(UniversalBaseModel): organization_access_level: typing.Optional[ EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationAccessLevel ] = None + organization_member_access_level: typing.Optional[ + EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel + ] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_object_organization_member_access_level.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_object_organization_member_access_level.py new file mode 100644 index 00000000..8945f1ff --- /dev/null +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_object_organization_member_access_level.py @@ -0,0 +1,23 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .event_stream_cloud_event_org_connection_updated_object_organization_member_access_level_0_enum import ( + EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel0Enum, +) +from .event_stream_cloud_event_org_connection_updated_object_organization_member_access_level_1_enum import ( + EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel1Enum, +) +from .event_stream_cloud_event_org_connection_updated_object_organization_member_access_level_2_enum import ( + EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel2Enum, +) +from .event_stream_cloud_event_org_connection_updated_object_organization_member_access_level_3_enum import ( + EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel3Enum, +) + +EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel = typing.Union[ + EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel0Enum, + EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel1Enum, + EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel2Enum, + EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel3Enum, +] diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_object_organization_member_access_level_0_enum.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_object_organization_member_access_level_0_enum.py new file mode 100644 index 00000000..15fb0ff7 --- /dev/null +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_object_organization_member_access_level_0_enum.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel0Enum = typing.Union[ + typing.Literal["none"], typing.Any +] diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_object_organization_member_access_level_1_enum.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_object_organization_member_access_level_1_enum.py new file mode 100644 index 00000000..c1a833ea --- /dev/null +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_object_organization_member_access_level_1_enum.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel1Enum = typing.Union[ + typing.Literal["readonly"], typing.Any +] diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_object_organization_member_access_level_2_enum.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_object_organization_member_access_level_2_enum.py new file mode 100644 index 00000000..8a0597e1 --- /dev/null +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_object_organization_member_access_level_2_enum.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel2Enum = typing.Union[ + typing.Literal["limited"], typing.Any +] diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_object_organization_member_access_level_3_enum.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_object_organization_member_access_level_3_enum.py new file mode 100644 index 00000000..d748dbcc --- /dev/null +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_object_organization_member_access_level_3_enum.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel3Enum = typing.Union[ + typing.Literal["full"], typing.Any +] diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_previous_object.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_previous_object.py index b1a04af9..1d4c3ba0 100644 --- a/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_previous_object.py +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_previous_object.py @@ -13,6 +13,9 @@ from .event_stream_cloud_event_org_connection_updated_previous_object_organization_access_level import ( EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationAccessLevel, ) +from .event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level import ( + EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel, +) class EventStreamCloudEventOrgConnectionUpdatedPreviousObject(UniversalBaseModel): @@ -49,6 +52,9 @@ class EventStreamCloudEventOrgConnectionUpdatedPreviousObject(UniversalBaseModel organization_access_level: typing.Optional[ EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationAccessLevel ] = None + organization_member_access_level: typing.Optional[ + EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel + ] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level.py new file mode 100644 index 00000000..cf539427 --- /dev/null +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level.py @@ -0,0 +1,23 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level_0_enum import ( + EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel0Enum, +) +from .event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level_1_enum import ( + EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel1Enum, +) +from .event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level_2_enum import ( + EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel2Enum, +) +from .event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level_3_enum import ( + EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel3Enum, +) + +EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel = typing.Union[ + EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel0Enum, + EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel1Enum, + EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel2Enum, + EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel3Enum, +] diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level_0_enum.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level_0_enum.py new file mode 100644 index 00000000..ee2a7cea --- /dev/null +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level_0_enum.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel0Enum = typing.Union[ + typing.Literal["none"], typing.Any +] diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level_1_enum.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level_1_enum.py new file mode 100644 index 00000000..46a0a81a --- /dev/null +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level_1_enum.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel1Enum = typing.Union[ + typing.Literal["readonly"], typing.Any +] diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level_2_enum.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level_2_enum.py new file mode 100644 index 00000000..2fb9aab8 --- /dev/null +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level_2_enum.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel2Enum = typing.Union[ + typing.Literal["limited"], typing.Any +] diff --git a/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level_3_enum.py b/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level_3_enum.py new file mode 100644 index 00000000..2aba1018 --- /dev/null +++ b/src/auth0/management/types/event_stream_cloud_event_org_connection_updated_previous_object_organization_member_access_level_3_enum.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel3Enum = typing.Union[ + typing.Literal["full"], typing.Any +] diff --git a/src/auth0/management/types/event_stream_cloud_event_org_created_cloud_event.py b/src/auth0/management/types/event_stream_cloud_event_org_created_cloud_event.py index 3f6d5d18..8e581963 100644 --- a/src/auth0/management/types/event_stream_cloud_event_org_created_cloud_event.py +++ b/src/auth0/management/types/event_stream_cloud_event_org_created_cloud_event.py @@ -48,14 +48,17 @@ class EventStreamCloudEventOrgCreatedCloudEvent(UniversalBaseModel): """ a_0_stream: typing_extensions.Annotated[ - str, + typing.Optional[str], FieldMetadata(alias="a0stream"), pydantic.Field( - alias="a0stream", description="The auth0 event stream ID of the stream the event was delivered on." + alias="a0stream", + description="The auth0 event stream ID of the stream the event was delivered on.\nPresent when the event is delivered via an event stream; omitted when\nevents are retrieved via the Events API (GET /api/v2/events).", ), - ] + ] = None """ The auth0 event stream ID of the stream the event was delivered on. + Present when the event is delivered via an event stream; omitted when + events are retrieved via the Events API (GET /api/v2/events). """ a_0_purpose: typing_extensions.Annotated[ diff --git a/src/auth0/management/types/event_stream_cloud_event_org_deleted_cloud_event.py b/src/auth0/management/types/event_stream_cloud_event_org_deleted_cloud_event.py index 97e5a1b4..2187db05 100644 --- a/src/auth0/management/types/event_stream_cloud_event_org_deleted_cloud_event.py +++ b/src/auth0/management/types/event_stream_cloud_event_org_deleted_cloud_event.py @@ -48,14 +48,17 @@ class EventStreamCloudEventOrgDeletedCloudEvent(UniversalBaseModel): """ a_0_stream: typing_extensions.Annotated[ - str, + typing.Optional[str], FieldMetadata(alias="a0stream"), pydantic.Field( - alias="a0stream", description="The auth0 event stream ID of the stream the event was delivered on." + alias="a0stream", + description="The auth0 event stream ID of the stream the event was delivered on.\nPresent when the event is delivered via an event stream; omitted when\nevents are retrieved via the Events API (GET /api/v2/events).", ), - ] + ] = None """ The auth0 event stream ID of the stream the event was delivered on. + Present when the event is delivered via an event stream; omitted when + events are retrieved via the Events API (GET /api/v2/events). """ a_0_purpose: typing_extensions.Annotated[ diff --git a/src/auth0/management/types/event_stream_cloud_event_org_group_role_assigned_cloud_event.py b/src/auth0/management/types/event_stream_cloud_event_org_group_role_assigned_cloud_event.py index c7871aef..12ee9612 100644 --- a/src/auth0/management/types/event_stream_cloud_event_org_group_role_assigned_cloud_event.py +++ b/src/auth0/management/types/event_stream_cloud_event_org_group_role_assigned_cloud_event.py @@ -48,14 +48,17 @@ class EventStreamCloudEventOrgGroupRoleAssignedCloudEvent(UniversalBaseModel): """ a_0_stream: typing_extensions.Annotated[ - str, + typing.Optional[str], FieldMetadata(alias="a0stream"), pydantic.Field( - alias="a0stream", description="The auth0 event stream ID of the stream the event was delivered on." + alias="a0stream", + description="The auth0 event stream ID of the stream the event was delivered on.\nPresent when the event is delivered via an event stream; omitted when\nevents are retrieved via the Events API (GET /api/v2/events).", ), - ] + ] = None """ The auth0 event stream ID of the stream the event was delivered on. + Present when the event is delivered via an event stream; omitted when + events are retrieved via the Events API (GET /api/v2/events). """ a_0_purpose: typing_extensions.Annotated[ diff --git a/src/auth0/management/types/event_stream_cloud_event_org_group_role_deleted_cloud_event.py b/src/auth0/management/types/event_stream_cloud_event_org_group_role_deleted_cloud_event.py index faf74c6f..3ca2e011 100644 --- a/src/auth0/management/types/event_stream_cloud_event_org_group_role_deleted_cloud_event.py +++ b/src/auth0/management/types/event_stream_cloud_event_org_group_role_deleted_cloud_event.py @@ -48,14 +48,17 @@ class EventStreamCloudEventOrgGroupRoleDeletedCloudEvent(UniversalBaseModel): """ a_0_stream: typing_extensions.Annotated[ - str, + typing.Optional[str], FieldMetadata(alias="a0stream"), pydantic.Field( - alias="a0stream", description="The auth0 event stream ID of the stream the event was delivered on." + alias="a0stream", + description="The auth0 event stream ID of the stream the event was delivered on.\nPresent when the event is delivered via an event stream; omitted when\nevents are retrieved via the Events API (GET /api/v2/events).", ), - ] + ] = None """ The auth0 event stream ID of the stream the event was delivered on. + Present when the event is delivered via an event stream; omitted when + events are retrieved via the Events API (GET /api/v2/events). """ a_0_purpose: typing_extensions.Annotated[ diff --git a/src/auth0/management/types/event_stream_cloud_event_org_member_added_cloud_event.py b/src/auth0/management/types/event_stream_cloud_event_org_member_added_cloud_event.py index 34ba260d..41f5a668 100644 --- a/src/auth0/management/types/event_stream_cloud_event_org_member_added_cloud_event.py +++ b/src/auth0/management/types/event_stream_cloud_event_org_member_added_cloud_event.py @@ -48,14 +48,17 @@ class EventStreamCloudEventOrgMemberAddedCloudEvent(UniversalBaseModel): """ a_0_stream: typing_extensions.Annotated[ - str, + typing.Optional[str], FieldMetadata(alias="a0stream"), pydantic.Field( - alias="a0stream", description="The auth0 event stream ID of the stream the event was delivered on." + alias="a0stream", + description="The auth0 event stream ID of the stream the event was delivered on.\nPresent when the event is delivered via an event stream; omitted when\nevents are retrieved via the Events API (GET /api/v2/events).", ), - ] + ] = None """ The auth0 event stream ID of the stream the event was delivered on. + Present when the event is delivered via an event stream; omitted when + events are retrieved via the Events API (GET /api/v2/events). """ a_0_purpose: typing_extensions.Annotated[ diff --git a/src/auth0/management/types/event_stream_cloud_event_org_member_deleted_cloud_event.py b/src/auth0/management/types/event_stream_cloud_event_org_member_deleted_cloud_event.py index df4bc8de..ae728af9 100644 --- a/src/auth0/management/types/event_stream_cloud_event_org_member_deleted_cloud_event.py +++ b/src/auth0/management/types/event_stream_cloud_event_org_member_deleted_cloud_event.py @@ -48,14 +48,17 @@ class EventStreamCloudEventOrgMemberDeletedCloudEvent(UniversalBaseModel): """ a_0_stream: typing_extensions.Annotated[ - str, + typing.Optional[str], FieldMetadata(alias="a0stream"), pydantic.Field( - alias="a0stream", description="The auth0 event stream ID of the stream the event was delivered on." + alias="a0stream", + description="The auth0 event stream ID of the stream the event was delivered on.\nPresent when the event is delivered via an event stream; omitted when\nevents are retrieved via the Events API (GET /api/v2/events).", ), - ] + ] = None """ The auth0 event stream ID of the stream the event was delivered on. + Present when the event is delivered via an event stream; omitted when + events are retrieved via the Events API (GET /api/v2/events). """ a_0_purpose: typing_extensions.Annotated[ diff --git a/src/auth0/management/types/event_stream_cloud_event_org_member_role_assigned_cloud_event.py b/src/auth0/management/types/event_stream_cloud_event_org_member_role_assigned_cloud_event.py index 0c0c5cad..57944ecc 100644 --- a/src/auth0/management/types/event_stream_cloud_event_org_member_role_assigned_cloud_event.py +++ b/src/auth0/management/types/event_stream_cloud_event_org_member_role_assigned_cloud_event.py @@ -48,14 +48,17 @@ class EventStreamCloudEventOrgMemberRoleAssignedCloudEvent(UniversalBaseModel): """ a_0_stream: typing_extensions.Annotated[ - str, + typing.Optional[str], FieldMetadata(alias="a0stream"), pydantic.Field( - alias="a0stream", description="The auth0 event stream ID of the stream the event was delivered on." + alias="a0stream", + description="The auth0 event stream ID of the stream the event was delivered on.\nPresent when the event is delivered via an event stream; omitted when\nevents are retrieved via the Events API (GET /api/v2/events).", ), - ] + ] = None """ The auth0 event stream ID of the stream the event was delivered on. + Present when the event is delivered via an event stream; omitted when + events are retrieved via the Events API (GET /api/v2/events). """ a_0_purpose: typing_extensions.Annotated[ diff --git a/src/auth0/management/types/event_stream_cloud_event_org_member_role_deleted_cloud_event.py b/src/auth0/management/types/event_stream_cloud_event_org_member_role_deleted_cloud_event.py index 89cdf13d..596a0a5b 100644 --- a/src/auth0/management/types/event_stream_cloud_event_org_member_role_deleted_cloud_event.py +++ b/src/auth0/management/types/event_stream_cloud_event_org_member_role_deleted_cloud_event.py @@ -48,14 +48,17 @@ class EventStreamCloudEventOrgMemberRoleDeletedCloudEvent(UniversalBaseModel): """ a_0_stream: typing_extensions.Annotated[ - str, + typing.Optional[str], FieldMetadata(alias="a0stream"), pydantic.Field( - alias="a0stream", description="The auth0 event stream ID of the stream the event was delivered on." + alias="a0stream", + description="The auth0 event stream ID of the stream the event was delivered on.\nPresent when the event is delivered via an event stream; omitted when\nevents are retrieved via the Events API (GET /api/v2/events).", ), - ] + ] = None """ The auth0 event stream ID of the stream the event was delivered on. + Present when the event is delivered via an event stream; omitted when + events are retrieved via the Events API (GET /api/v2/events). """ a_0_purpose: typing_extensions.Annotated[ diff --git a/src/auth0/management/types/event_stream_cloud_event_org_updated_cloud_event.py b/src/auth0/management/types/event_stream_cloud_event_org_updated_cloud_event.py index 8b270971..1ace98b7 100644 --- a/src/auth0/management/types/event_stream_cloud_event_org_updated_cloud_event.py +++ b/src/auth0/management/types/event_stream_cloud_event_org_updated_cloud_event.py @@ -48,14 +48,17 @@ class EventStreamCloudEventOrgUpdatedCloudEvent(UniversalBaseModel): """ a_0_stream: typing_extensions.Annotated[ - str, + typing.Optional[str], FieldMetadata(alias="a0stream"), pydantic.Field( - alias="a0stream", description="The auth0 event stream ID of the stream the event was delivered on." + alias="a0stream", + description="The auth0 event stream ID of the stream the event was delivered on.\nPresent when the event is delivered via an event stream; omitted when\nevents are retrieved via the Events API (GET /api/v2/events).", ), - ] + ] = None """ The auth0 event stream ID of the stream the event was delivered on. + Present when the event is delivered via an event stream; omitted when + events are retrieved via the Events API (GET /api/v2/events). """ a_0_purpose: typing_extensions.Annotated[ diff --git a/src/auth0/management/types/event_stream_cloud_event_user_created_cloud_event.py b/src/auth0/management/types/event_stream_cloud_event_user_created_cloud_event.py index 3bb7b755..136d9efd 100644 --- a/src/auth0/management/types/event_stream_cloud_event_user_created_cloud_event.py +++ b/src/auth0/management/types/event_stream_cloud_event_user_created_cloud_event.py @@ -48,14 +48,17 @@ class EventStreamCloudEventUserCreatedCloudEvent(UniversalBaseModel): """ a_0_stream: typing_extensions.Annotated[ - str, + typing.Optional[str], FieldMetadata(alias="a0stream"), pydantic.Field( - alias="a0stream", description="The auth0 event stream ID of the stream the event was delivered on." + alias="a0stream", + description="The auth0 event stream ID of the stream the event was delivered on.\nPresent when the event is delivered via an event stream; omitted when\nevents are retrieved via the Events API (GET /api/v2/events).", ), - ] + ] = None """ The auth0 event stream ID of the stream the event was delivered on. + Present when the event is delivered via an event stream; omitted when + events are retrieved via the Events API (GET /api/v2/events). """ a_0_purpose: typing_extensions.Annotated[ diff --git a/src/auth0/management/types/event_stream_cloud_event_user_deleted_cloud_event.py b/src/auth0/management/types/event_stream_cloud_event_user_deleted_cloud_event.py index e43d8bc8..6ebe685d 100644 --- a/src/auth0/management/types/event_stream_cloud_event_user_deleted_cloud_event.py +++ b/src/auth0/management/types/event_stream_cloud_event_user_deleted_cloud_event.py @@ -48,14 +48,17 @@ class EventStreamCloudEventUserDeletedCloudEvent(UniversalBaseModel): """ a_0_stream: typing_extensions.Annotated[ - str, + typing.Optional[str], FieldMetadata(alias="a0stream"), pydantic.Field( - alias="a0stream", description="The auth0 event stream ID of the stream the event was delivered on." + alias="a0stream", + description="The auth0 event stream ID of the stream the event was delivered on.\nPresent when the event is delivered via an event stream; omitted when\nevents are retrieved via the Events API (GET /api/v2/events).", ), - ] + ] = None """ The auth0 event stream ID of the stream the event was delivered on. + Present when the event is delivered via an event stream; omitted when + events are retrieved via the Events API (GET /api/v2/events). """ a_0_purpose: typing_extensions.Annotated[ diff --git a/src/auth0/management/types/event_stream_cloud_event_user_updated_cloud_event.py b/src/auth0/management/types/event_stream_cloud_event_user_updated_cloud_event.py index 5e911cb0..d37b06af 100644 --- a/src/auth0/management/types/event_stream_cloud_event_user_updated_cloud_event.py +++ b/src/auth0/management/types/event_stream_cloud_event_user_updated_cloud_event.py @@ -48,14 +48,17 @@ class EventStreamCloudEventUserUpdatedCloudEvent(UniversalBaseModel): """ a_0_stream: typing_extensions.Annotated[ - str, + typing.Optional[str], FieldMetadata(alias="a0stream"), pydantic.Field( - alias="a0stream", description="The auth0 event stream ID of the stream the event was delivered on." + alias="a0stream", + description="The auth0 event stream ID of the stream the event was delivered on.\nPresent when the event is delivered via an event stream; omitted when\nevents are retrieved via the Events API (GET /api/v2/events).", ), - ] + ] = None """ The auth0 event stream ID of the stream the event was delivered on. + Present when the event is delivered via an event stream; omitted when + events are retrieved via the Events API (GET /api/v2/events). """ a_0_purpose: typing_extensions.Annotated[ diff --git a/src/auth0/management/types/get_brute_force_settings_response_content.py b/src/auth0/management/types/get_brute_force_settings_response_content.py index ab9f96d0..2799d068 100644 --- a/src/auth0/management/types/get_brute_force_settings_response_content.py +++ b/src/auth0/management/types/get_brute_force_settings_response_content.py @@ -4,6 +4,7 @@ import pydantic from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .brute_force_protection_form_submission_mode_enum import BruteForceProtectionFormSubmissionModeEnum from .brute_force_protection_mode_enum import BruteForceProtectionModeEnum from .brute_force_protection_shields_enum import BruteForceProtectionShieldsEnum @@ -31,6 +32,8 @@ class GetBruteForceSettingsResponseContent(UniversalBaseModel): Maximum number of unsuccessful attempts. """ + form_submission_mode: typing.Optional[BruteForceProtectionFormSubmissionModeEnum] = None + if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 else: diff --git a/src/auth0/management/types/get_client_response_content.py b/src/auth0/management/types/get_client_response_content.py index 31686ed2..41399951 100644 --- a/src/auth0/management/types/get_client_response_content.py +++ b/src/auth0/management/types/get_client_response_content.py @@ -10,6 +10,7 @@ from .anonymous_sessions import AnonymousSessions from .b_2_b_integration_configuration import B2BIntegrationConfiguration from .client_addons import ClientAddons +from .client_anonymous_session_transfer_network_binding_enum import ClientAnonymousSessionTransferNetworkBindingEnum from .client_app_type_enum import ClientAppTypeEnum from .client_async_approval_notifications_channels_api_post_configuration import ( ClientAsyncApprovalNotificationsChannelsApiPostConfiguration, @@ -19,6 +20,7 @@ from .client_default_organization import ClientDefaultOrganization from .client_encryption_key import ClientEncryptionKey from .client_external_metadata_created_by_enum import ClientExternalMetadataCreatedByEnum +from .client_external_metadata_status_enum import ClientExternalMetadataStatusEnum from .client_external_metadata_type_enum import ClientExternalMetadataTypeEnum from .client_jwt_configuration import ClientJwtConfiguration from .client_metadata import ClientMetadata @@ -252,6 +254,9 @@ class GetClientResponseContent(UniversalBaseModel): my_organization_configuration: typing.Optional[ClientMyOrganizationResponseConfiguration] = None identity_assertion_authorization_grant: typing.Optional[IdentityAssertionAuthorizationGrant] = None anonymous_sessions: typing.Optional[AnonymousSessions] = None + enforce_anon_session_transfer_network_binding: typing.Optional[ClientAnonymousSessionTransferNetworkBindingEnum] = ( + None + ) third_party_security_mode: typing.Optional[ClientThirdPartySecurityModeEnum] = None redirection_policy: typing.Optional[ClientRedirectionPolicyEnum] = None resource_server_identifier: typing.Optional[str] = pydantic.Field(default=None) @@ -264,6 +269,7 @@ class GetClientResponseContent(UniversalBaseModel): ] = None external_metadata_type: typing.Optional[ClientExternalMetadataTypeEnum] = None external_metadata_created_by: typing.Optional[ClientExternalMetadataCreatedByEnum] = None + external_metadata_status: typing.Optional[ClientExternalMetadataStatusEnum] = None external_client_id: typing.Optional[str] = pydantic.Field(default=None) """ An alternate client identifier to be used during authorization flows. Only supports CIMD-based client identifiers. diff --git a/src/auth0/management/types/get_role_response_content.py b/src/auth0/management/types/get_role_response_content.py index 94b97931..a912ffe7 100644 --- a/src/auth0/management/types/get_role_response_content.py +++ b/src/auth0/management/types/get_role_response_content.py @@ -4,6 +4,7 @@ import pydantic from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .role_owner_id import RoleOwnerId from .role_type_enum import RoleTypeEnum @@ -24,10 +25,7 @@ class GetRoleResponseContent(UniversalBaseModel): """ type: typing.Optional[RoleTypeEnum] = None - owner_id: typing.Optional[str] = pydantic.Field(default=None) - """ - The id of the entity that owns this role, such as an organization id. - """ + owner_id: typing.Optional[RoleOwnerId] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/auth0/management/types/get_segment_response_content.py b/src/auth0/management/types/get_segment_response_content.py index 7e808477..0aa1724e 100644 --- a/src/auth0/management/types/get_segment_response_content.py +++ b/src/auth0/management/types/get_segment_response_content.py @@ -6,6 +6,7 @@ import pydantic from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel from .segment_rule import SegmentRule +from .segment_status_enum import SegmentStatusEnum from .segment_type_enum import SegmentTypeEnum @@ -14,6 +15,7 @@ class GetSegmentResponseContent(UniversalBaseModel): name: str description: typing.Optional[str] = None type: SegmentTypeEnum + status: SegmentStatusEnum rules: typing.List[SegmentRule] created_at: dt.datetime updated_at: dt.datetime diff --git a/src/auth0/management/types/get_tenant_settings_response_content.py b/src/auth0/management/types/get_tenant_settings_response_content.py index f6432ee6..8b510bbe 100644 --- a/src/auth0/management/types/get_tenant_settings_response_content.py +++ b/src/auth0/management/types/get_tenant_settings_response_content.py @@ -142,6 +142,11 @@ class GetTenantSettingsResponseContent(UniversalBaseModel): Supports iss parameter in authorization responses """ + dpop_strict_refresh_token_binding: typing.Optional[bool] = pydantic.Field(default=None) + """ + Enables strict DPoP refresh token binding per RFC 9449: all refresh tokens issued to public clients that present a DPoP proof are bound to the sender's key, and the binding is validated on every subsequent exchange. When disabled, DPoP refresh token binding may still apply for specific audiences for backwards compatibility. + """ + skip_non_verifiable_callback_uri_confirmation_prompt: typing.Optional[bool] = pydantic.Field(default=None) """ Controls whether a confirmation prompt is shown during login flows when the redirect URI uses non-verifiable callback URIs (for example, a custom URI schema such as `myapp://`, or `localhost`). @@ -155,6 +160,11 @@ class GetTenantSettingsResponseContent(UniversalBaseModel): Whether the authorization server supports retrieving client metadata from a client_id URL. """ + client_id_metadata_document_dynamic_registration_supported: typing.Optional[bool] = pydantic.Field(default=None) + """ + Whether the authorization server supports registering clients dynamically from a client_id URL. Requires client_id_metadata_document_supported to be enabled. + """ + phone_consolidated_experience: typing.Optional[bool] = pydantic.Field(default=None) """ Whether Phone Consolidated Experience is enabled for this tenant. diff --git a/src/auth0/management/types/guardian_factor_name_enum.py b/src/auth0/management/types/guardian_factor_name_enum.py index edd7f1e4..f147a42d 100644 --- a/src/auth0/management/types/guardian_factor_name_enum.py +++ b/src/auth0/management/types/guardian_factor_name_enum.py @@ -4,7 +4,15 @@ GuardianFactorNameEnum = typing.Union[ typing.Literal[ - "push-notification", "sms", "email", "duo", "otp", "webauthn-roaming", "webauthn-platform", "recovery-code" + "push-notification", + "sms", + "email", + "duo", + "otp", + "webauthn-roaming", + "webauthn-platform", + "recovery-code", + "passkey", ], typing.Any, ] diff --git a/src/auth0/management/types/list_attack_protection_captcha_policies_response_content.py b/src/auth0/management/types/list_attack_protection_captcha_policies_response_content.py new file mode 100644 index 00000000..17c79979 --- /dev/null +++ b/src/auth0/management/types/list_attack_protection_captcha_policies_response_content.py @@ -0,0 +1,10 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from .attack_protection_captcha_policy import AttackProtectionCaptchaPolicy + +ListAttackProtectionCaptchaPoliciesResponseContent = typing.List[AttackProtectionCaptchaPolicy] +""" +List of CAPTCHA attack protection policies for the tenant, sorted by priority ascending. +""" diff --git a/src/auth0/management/types/list_client_profiles_paginated_response_content.py b/src/auth0/management/types/list_client_profiles_paginated_response_content.py new file mode 100644 index 00000000..4352075a --- /dev/null +++ b/src/auth0/management/types/list_client_profiles_paginated_response_content.py @@ -0,0 +1,29 @@ +# 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 .client_profile import ClientProfile + + +class ListClientProfilesPaginatedResponseContent(UniversalBaseModel): + """ + Checkpoint paginated list of client profiles. + """ + + next: typing.Optional[str] = pydantic.Field(default=None) + """ + A cursor to be used as the "from" query parameter for the next page of results. + """ + + client_profiles: typing.List[ClientProfile] + + 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/oauth_scope.py b/src/auth0/management/types/oauth_scope.py index 78347dc7..904eb43b 100644 --- a/src/auth0/management/types/oauth_scope.py +++ b/src/auth0/management/types/oauth_scope.py @@ -248,6 +248,10 @@ "read:vdcs_templates", "update:vdcs_templates", "delete:vdcs_templates", + "create:client_profiles", + "read:client_profiles", + "update:client_profiles", + "delete:client_profiles", "create:organization_clients", "read:organization_clients", "update:organization_clients", diff --git a/src/auth0/management/types/preview_cimd_metadata_response_content.py b/src/auth0/management/types/preview_cimd_metadata_response_content.py index 14f9e312..90b6d838 100644 --- a/src/auth0/management/types/preview_cimd_metadata_response_content.py +++ b/src/auth0/management/types/preview_cimd_metadata_response_content.py @@ -4,6 +4,7 @@ import pydantic from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .cimd_external_metadata_created_by_enum import CimdExternalMetadataCreatedByEnum from .cimd_mapped_client_fields import CimdMappedClientFields from .cimd_validation_result import CimdValidationResult @@ -14,6 +15,7 @@ class PreviewCimdMetadataResponseContent(UniversalBaseModel): The client_id of an existing client registered with this external_client_id, if one exists. """ + external_metadata_created_by: typing.Optional[CimdExternalMetadataCreatedByEnum] = None errors: typing.Optional[typing.List[str]] = pydantic.Field(default=None) """ Array of retrieval errors (populated when the metadata document could not be fetched). When present, validation is omitted. diff --git a/src/auth0/management/types/role.py b/src/auth0/management/types/role.py index d10cac42..1938f4b0 100644 --- a/src/auth0/management/types/role.py +++ b/src/auth0/management/types/role.py @@ -4,6 +4,7 @@ import pydantic from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .role_owner_id import RoleOwnerId from .role_type_enum import RoleTypeEnum @@ -24,10 +25,7 @@ class Role(UniversalBaseModel): """ type: typing.Optional[RoleTypeEnum] = None - owner_id: typing.Optional[str] = pydantic.Field(default=None) - """ - The id of the entity that owns this role, such as an organization id. - """ + owner_id: typing.Optional[RoleOwnerId] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/auth0/management/types/role_owner_id.py b/src/auth0/management/types/role_owner_id.py new file mode 100644 index 00000000..bf828cce --- /dev/null +++ b/src/auth0/management/types/role_owner_id.py @@ -0,0 +1,6 @@ +# This file was auto-generated by Fern from our API Definition. + +RoleOwnerId = str +""" +The id of the entity that owns this role: an organization id, or "auth0" for Auth0-managed System Roles. +""" diff --git a/src/auth0/management/types/role_owner_id_filter.py b/src/auth0/management/types/role_owner_id_filter.py new file mode 100644 index 00000000..6c0fba28 --- /dev/null +++ b/src/auth0/management/types/role_owner_id_filter.py @@ -0,0 +1,6 @@ +# This file was auto-generated by Fern from our API Definition. + +RoleOwnerIdFilter = str +""" +Filter organization-level roles by owner ID. Use an organization ID to filter that organization's roles, or "auth0" to retrieve Auth0-managed System Roles. Required when type is "organization". +""" diff --git a/src/auth0/management/types/rotate_client_secret_response_content.py b/src/auth0/management/types/rotate_client_secret_response_content.py index 0c71569c..dc45bad3 100644 --- a/src/auth0/management/types/rotate_client_secret_response_content.py +++ b/src/auth0/management/types/rotate_client_secret_response_content.py @@ -10,6 +10,7 @@ from .anonymous_sessions import AnonymousSessions from .b_2_b_integration_configuration import B2BIntegrationConfiguration from .client_addons import ClientAddons +from .client_anonymous_session_transfer_network_binding_enum import ClientAnonymousSessionTransferNetworkBindingEnum from .client_app_type_enum import ClientAppTypeEnum from .client_async_approval_notifications_channels_api_post_configuration import ( ClientAsyncApprovalNotificationsChannelsApiPostConfiguration, @@ -19,6 +20,7 @@ from .client_default_organization import ClientDefaultOrganization from .client_encryption_key import ClientEncryptionKey from .client_external_metadata_created_by_enum import ClientExternalMetadataCreatedByEnum +from .client_external_metadata_status_enum import ClientExternalMetadataStatusEnum from .client_external_metadata_type_enum import ClientExternalMetadataTypeEnum from .client_jwt_configuration import ClientJwtConfiguration from .client_metadata import ClientMetadata @@ -252,6 +254,9 @@ class RotateClientSecretResponseContent(UniversalBaseModel): my_organization_configuration: typing.Optional[ClientMyOrganizationResponseConfiguration] = None identity_assertion_authorization_grant: typing.Optional[IdentityAssertionAuthorizationGrant] = None anonymous_sessions: typing.Optional[AnonymousSessions] = None + enforce_anon_session_transfer_network_binding: typing.Optional[ClientAnonymousSessionTransferNetworkBindingEnum] = ( + None + ) third_party_security_mode: typing.Optional[ClientThirdPartySecurityModeEnum] = None redirection_policy: typing.Optional[ClientRedirectionPolicyEnum] = None resource_server_identifier: typing.Optional[str] = pydantic.Field(default=None) @@ -264,6 +269,7 @@ class RotateClientSecretResponseContent(UniversalBaseModel): ] = None external_metadata_type: typing.Optional[ClientExternalMetadataTypeEnum] = None external_metadata_created_by: typing.Optional[ClientExternalMetadataCreatedByEnum] = None + external_metadata_status: typing.Optional[ClientExternalMetadataStatusEnum] = None external_client_id: typing.Optional[str] = pydantic.Field(default=None) """ An alternate client identifier to be used during authorization flows. Only supports CIMD-based client identifiers. diff --git a/src/auth0/management/types/search_client_grants_response_content.py b/src/auth0/management/types/search_client_grants_response_content.py new file mode 100644 index 00000000..de7de006 --- /dev/null +++ b/src/auth0/management/types/search_client_grants_response_content.py @@ -0,0 +1,28 @@ +# 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 .client_grant_response_content import ClientGrantResponseContent + + +class SearchClientGrantsResponseContent(UniversalBaseModel): + client_grants: typing.List[ClientGrantResponseContent] = pydantic.Field() + """ + Array of client grant objects matching the search criteria. + """ + + next: typing.Optional[str] = pydantic.Field(default=None) + """ + Cursor for retrieving the next page of results. Omitted if there are no more results. + """ + + 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/search_clients_response_content.py b/src/auth0/management/types/search_clients_response_content.py new file mode 100644 index 00000000..207e6bb7 --- /dev/null +++ b/src/auth0/management/types/search_clients_response_content.py @@ -0,0 +1,28 @@ +# 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 .client_search_response import ClientSearchResponse + + +class SearchClientsResponseContent(UniversalBaseModel): + clients: typing.List[ClientSearchResponse] = pydantic.Field() + """ + Array of client objects matching the search criteria. + """ + + next: typing.Optional[str] = pydantic.Field(default=None) + """ + Cursor for retrieving the next page of results. Absent when no more results are available. + """ + + 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/search_organization.py b/src/auth0/management/types/search_organization.py index f8b77776..79a03ece 100644 --- a/src/auth0/management/types/search_organization.py +++ b/src/auth0/management/types/search_organization.py @@ -5,7 +5,6 @@ import pydantic from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel from .organization_branding import OrganizationBranding -from .organization_metadata import OrganizationMetadata from .organization_third_party_client_access_enum import OrganizationThirdPartyClientAccessEnum from .token_quota import TokenQuota @@ -27,7 +26,6 @@ class SearchOrganization(UniversalBaseModel): """ branding: typing.Optional[OrganizationBranding] = None - metadata: typing.Optional[OrganizationMetadata] = None token_quota: typing.Optional[TokenQuota] = None third_party_client_access: typing.Optional[OrganizationThirdPartyClientAccessEnum] = None is_app_entitlement_active: typing.Optional[bool] = pydantic.Field(default=None) diff --git a/src/auth0/management/types/search_organizations_paginated_response_content.py b/src/auth0/management/types/search_organizations_paginated_response_content.py index 409dbf8f..a8d2c7cd 100644 --- a/src/auth0/management/types/search_organizations_paginated_response_content.py +++ b/src/auth0/management/types/search_organizations_paginated_response_content.py @@ -8,7 +8,11 @@ class SearchOrganizationsPaginatedResponseContent(UniversalBaseModel): - organizations: typing.List[SearchOrganization] + organizations: typing.List[SearchOrganization] = pydantic.Field() + """ + Array of organization objects matching the search criteria. + """ + next: typing.Optional[str] = pydantic.Field(default=None) """ Cursor for retrieving the next page of results. Absent when no more results are available. diff --git a/src/auth0/management/types/segment.py b/src/auth0/management/types/segment.py index c208be50..e0cd89d6 100644 --- a/src/auth0/management/types/segment.py +++ b/src/auth0/management/types/segment.py @@ -6,6 +6,7 @@ import pydantic from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel from .segment_rule import SegmentRule +from .segment_status_enum import SegmentStatusEnum from .segment_type_enum import SegmentTypeEnum @@ -14,6 +15,7 @@ class Segment(UniversalBaseModel): name: str description: typing.Optional[str] = None type: SegmentTypeEnum + status: SegmentStatusEnum rules: typing.List[SegmentRule] created_at: dt.datetime updated_at: dt.datetime diff --git a/src/auth0/management/types/segment_status_enum.py b/src/auth0/management/types/segment_status_enum.py new file mode 100644 index 00000000..7d9a103d --- /dev/null +++ b/src/auth0/management/types/segment_status_enum.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SegmentStatusEnum = typing.Union[typing.Literal["active", "archived"], typing.Any] diff --git a/src/auth0/management/types/system_role_owner_id.py b/src/auth0/management/types/system_role_owner_id.py new file mode 100644 index 00000000..61a8a3e3 --- /dev/null +++ b/src/auth0/management/types/system_role_owner_id.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SystemRoleOwnerId = typing.Union[typing.Literal["auth0"], typing.Any] diff --git a/src/auth0/management/types/update_brute_force_settings_response_content.py b/src/auth0/management/types/update_brute_force_settings_response_content.py index 72e054e1..e3f673f1 100644 --- a/src/auth0/management/types/update_brute_force_settings_response_content.py +++ b/src/auth0/management/types/update_brute_force_settings_response_content.py @@ -4,6 +4,7 @@ import pydantic from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .brute_force_protection_form_submission_mode_enum import BruteForceProtectionFormSubmissionModeEnum from .brute_force_protection_mode_enum import BruteForceProtectionModeEnum from .brute_force_protection_shields_enum import BruteForceProtectionShieldsEnum @@ -31,6 +32,8 @@ class UpdateBruteForceSettingsResponseContent(UniversalBaseModel): Maximum number of unsuccessful attempts. """ + form_submission_mode: typing.Optional[BruteForceProtectionFormSubmissionModeEnum] = None + if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 else: diff --git a/src/auth0/management/types/update_client_response_content.py b/src/auth0/management/types/update_client_response_content.py index 0ec7f9a0..304fd3aa 100644 --- a/src/auth0/management/types/update_client_response_content.py +++ b/src/auth0/management/types/update_client_response_content.py @@ -10,6 +10,7 @@ from .anonymous_sessions import AnonymousSessions from .b_2_b_integration_configuration import B2BIntegrationConfiguration from .client_addons import ClientAddons +from .client_anonymous_session_transfer_network_binding_enum import ClientAnonymousSessionTransferNetworkBindingEnum from .client_app_type_enum import ClientAppTypeEnum from .client_async_approval_notifications_channels_api_post_configuration import ( ClientAsyncApprovalNotificationsChannelsApiPostConfiguration, @@ -19,6 +20,7 @@ from .client_default_organization import ClientDefaultOrganization from .client_encryption_key import ClientEncryptionKey from .client_external_metadata_created_by_enum import ClientExternalMetadataCreatedByEnum +from .client_external_metadata_status_enum import ClientExternalMetadataStatusEnum from .client_external_metadata_type_enum import ClientExternalMetadataTypeEnum from .client_jwt_configuration import ClientJwtConfiguration from .client_metadata import ClientMetadata @@ -252,6 +254,9 @@ class UpdateClientResponseContent(UniversalBaseModel): my_organization_configuration: typing.Optional[ClientMyOrganizationResponseConfiguration] = None identity_assertion_authorization_grant: typing.Optional[IdentityAssertionAuthorizationGrant] = None anonymous_sessions: typing.Optional[AnonymousSessions] = None + enforce_anon_session_transfer_network_binding: typing.Optional[ClientAnonymousSessionTransferNetworkBindingEnum] = ( + None + ) third_party_security_mode: typing.Optional[ClientThirdPartySecurityModeEnum] = None redirection_policy: typing.Optional[ClientRedirectionPolicyEnum] = None resource_server_identifier: typing.Optional[str] = pydantic.Field(default=None) @@ -264,6 +269,7 @@ class UpdateClientResponseContent(UniversalBaseModel): ] = None external_metadata_type: typing.Optional[ClientExternalMetadataTypeEnum] = None external_metadata_created_by: typing.Optional[ClientExternalMetadataCreatedByEnum] = None + external_metadata_status: typing.Optional[ClientExternalMetadataStatusEnum] = None external_client_id: typing.Optional[str] = pydantic.Field(default=None) """ An alternate client identifier to be used during authorization flows. Only supports CIMD-based client identifiers. diff --git a/src/auth0/management/types/update_experiment_status_response_content.py b/src/auth0/management/types/update_experiment_status_response_content.py deleted file mode 100644 index 44887508..00000000 --- a/src/auth0/management/types/update_experiment_status_response_content.py +++ /dev/null @@ -1,54 +0,0 @@ -# This file was auto-generated by Fern from our API Definition. - -import datetime as dt -import typing - -import pydantic -from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel -from .allocation_item import AllocationItem -from .allocation_strategy_enum import AllocationStrategyEnum -from .default_config_enum import DefaultConfigEnum -from .experiment_status_enum import ExperimentStatusEnum - - -class UpdateExperimentStatusResponseContent(UniversalBaseModel): - id: str - name: str - description: typing.Optional[str] = None - feature_flag_id: str - feature_flag_name: typing.Optional[str] = None - authentication_flow: str - allocation_strategy: AllocationStrategyEnum - status: ExperimentStatusEnum - is_valid: bool - default_config: typing.Optional[DefaultConfigEnum] = None - feature_flag_snapshot: typing.Optional[typing.Dict[str, typing.Any]] = None - allocations: typing.List[AllocationItem] - editable_fields: typing.List[str] = pydantic.Field() - """ - Fields that may be mutated given the experiment's current status. Computed at response time; always current with the API's enforcement logic. - """ - - levels: typing.Optional[typing.List[int]] = pydantic.Field(default=None) - """ - Ramp experiment levels configuration. - """ - - current_level: typing.Optional[int] = pydantic.Field(default=None) - """ - Read-only. The active exposure percentage for the current ramp step. Null when no ramp schedule is active. - """ - - started_at: typing.Optional[dt.datetime] = None - ended_at: typing.Optional[dt.datetime] = None - created_at: dt.datetime - updated_at: dt.datetime - - 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/update_feature_flag_status_response_content.py b/src/auth0/management/types/update_feature_flag_status_response_content.py deleted file mode 100644 index 523a2715..00000000 --- a/src/auth0/management/types/update_feature_flag_status_response_content.py +++ /dev/null @@ -1,30 +0,0 @@ -# This file was auto-generated by Fern from our API Definition. - -import datetime as dt -import typing - -import pydantic -from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel -from .feature_flag_config_params import FeatureFlagConfigParams -from .feature_flag_status_enum import FeatureFlagStatusEnum -from .feature_flag_type_enum import FeatureFlagTypeEnum - - -class UpdateFeatureFlagStatusResponseContent(UniversalBaseModel): - id: str - name: str - description: typing.Optional[str] = None - type: FeatureFlagTypeEnum - status: FeatureFlagStatusEnum - parameters: typing.Optional[FeatureFlagConfigParams] = None - created_at: dt.datetime - updated_at: dt.datetime - - 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/update_role_response_content.py b/src/auth0/management/types/update_role_response_content.py index 9e606868..eca3708e 100644 --- a/src/auth0/management/types/update_role_response_content.py +++ b/src/auth0/management/types/update_role_response_content.py @@ -4,6 +4,7 @@ import pydantic from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .role_owner_id import RoleOwnerId from .role_type_enum import RoleTypeEnum @@ -24,10 +25,7 @@ class UpdateRoleResponseContent(UniversalBaseModel): """ type: typing.Optional[RoleTypeEnum] = None - owner_id: typing.Optional[str] = pydantic.Field(default=None) - """ - The id of the entity that owns this role, such as an organization id. - """ + owner_id: typing.Optional[RoleOwnerId] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/auth0/management/types/update_segment_response_content.py b/src/auth0/management/types/update_segment_response_content.py index 2036765d..f498c118 100644 --- a/src/auth0/management/types/update_segment_response_content.py +++ b/src/auth0/management/types/update_segment_response_content.py @@ -6,6 +6,7 @@ import pydantic from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel from .segment_rule import SegmentRule +from .segment_status_enum import SegmentStatusEnum from .segment_type_enum import SegmentTypeEnum @@ -14,6 +15,7 @@ class UpdateSegmentResponseContent(UniversalBaseModel): name: str description: typing.Optional[str] = None type: SegmentTypeEnum + status: SegmentStatusEnum rules: typing.List[SegmentRule] created_at: dt.datetime updated_at: dt.datetime diff --git a/src/auth0/management/types/update_tenant_settings_response_content.py b/src/auth0/management/types/update_tenant_settings_response_content.py index ff4b3a5e..fa5b3869 100644 --- a/src/auth0/management/types/update_tenant_settings_response_content.py +++ b/src/auth0/management/types/update_tenant_settings_response_content.py @@ -142,6 +142,11 @@ class UpdateTenantSettingsResponseContent(UniversalBaseModel): Supports iss parameter in authorization responses """ + dpop_strict_refresh_token_binding: typing.Optional[bool] = pydantic.Field(default=None) + """ + Enables strict DPoP refresh token binding per RFC 9449: all refresh tokens issued to public clients that present a DPoP proof are bound to the sender's key, and the binding is validated on every subsequent exchange. When disabled, DPoP refresh token binding may still apply for specific audiences for backwards compatibility. + """ + skip_non_verifiable_callback_uri_confirmation_prompt: typing.Optional[bool] = pydantic.Field(default=None) """ Controls whether a confirmation prompt is shown during login flows when the redirect URI uses non-verifiable callback URIs (for example, a custom URI schema such as `myapp://`, or `localhost`). @@ -155,6 +160,11 @@ class UpdateTenantSettingsResponseContent(UniversalBaseModel): Whether the authorization server supports retrieving client metadata from a client_id URL. """ + client_id_metadata_document_dynamic_registration_supported: typing.Optional[bool] = pydantic.Field(default=None) + """ + Whether the authorization server supports registering clients dynamically from a client_id URL. Requires client_id_metadata_document_supported to be enabled. + """ + phone_consolidated_experience: typing.Optional[bool] = pydantic.Field(default=None) """ Whether Phone Consolidated Experience is enabled for this tenant. diff --git a/src/auth0/management/types/user_effective_permission_role_source_response_content.py b/src/auth0/management/types/user_effective_permission_role_source_response_content.py index 58d3a2f6..e174f7f9 100644 --- a/src/auth0/management/types/user_effective_permission_role_source_response_content.py +++ b/src/auth0/management/types/user_effective_permission_role_source_response_content.py @@ -4,6 +4,7 @@ import pydantic from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .role_owner_id import RoleOwnerId from .role_type_enum import RoleTypeEnum from .user_effective_permission_role_source_enum import UserEffectivePermissionRoleSourceEnum @@ -25,11 +26,7 @@ class UserEffectivePermissionRoleSourceResponseContent(UniversalBaseModel): """ type: typing.Optional[RoleTypeEnum] = None - owner_id: typing.Optional[str] = pydantic.Field(default=None) - """ - The id of the entity that owns this role, such as an organization id. - """ - + owner_id: typing.Optional[RoleOwnerId] = None sources: typing.Optional[typing.List[UserEffectivePermissionRoleSourceEnum]] = pydantic.Field(default=None) """ List of sources where this role is coming from. diff --git a/tests/management/test_management_client.py b/tests/management/test_management_client.py index 7901a4d5..766129eb 100644 --- a/tests/management/test_management_client.py +++ b/tests/management/test_management_client.py @@ -13,6 +13,7 @@ ManagementClient, TokenProvider, ) +from auth0.management.client import AsyncAuth0, Auth0 from auth0.management.management_client import ( CUSTOM_DOMAIN_HEADER as _CUSTOM_DOMAIN_HEADER, ) @@ -168,19 +169,25 @@ def test_has_all_expected_properties(self, client): """Should have all expected sub-client properties.""" expected_properties = [ "actions", + "agents", "anomaly", "attack_protection", "branding", "client_grants", + "client_profiles", "clients", + "connection_profiles", "connections", "custom_domains", "device_credentials", "email_templates", "emails", "event_streams", + "events", + "experimentation", "flows", "forms", + "groups", "guardian", "hooks", "jobs", @@ -190,8 +197,10 @@ def test_has_all_expected_properties(self, client): "network_acls", "organizations", "prompts", + "rate_limit_policies", "refresh_tokens", "resource_servers", + "risk_assessments", "roles", "rules", "rules_configs", @@ -202,6 +211,7 @@ def test_has_all_expected_properties(self, client): "tenants", "tickets", "token_exchange_profiles", + "user_attribute_profiles", "user_blocks", "user_grants", "users", @@ -256,6 +266,38 @@ def test_init_with_custom_client_info(self): assert decoded == custom_info +class TestManagementClientMatchesGeneratedClient: + """Keep the hand-written wrappers in step with the generated clients.""" + + @staticmethod + def _public_properties(cls): + return { + name + for name, value in vars(cls).items() + if isinstance(value, property) and not name.startswith("_") + } + + def test_management_client_exposes_every_generated_resource(self): + """Should expose every resource the generated Auth0 client has.""" + missing = self._public_properties(Auth0) - self._public_properties( + ManagementClient + ) + assert missing == set(), ( + f"ManagementClient is missing: {sorted(missing)}. Add a property and a " + "TYPE_CHECKING import for each one in management_client.py." + ) + + def test_async_management_client_exposes_every_generated_resource(self): + """Should expose every resource the generated AsyncAuth0 client has.""" + missing = self._public_properties(AsyncAuth0) - self._public_properties( + AsyncManagementClient + ) + assert missing == set(), ( + f"AsyncManagementClient is missing: {sorted(missing)}. Add a property and " + "a TYPE_CHECKING import for each one in management_client.py." + ) + + class TestTokenProvider: """Tests for TokenProvider.""" diff --git a/tests/wire/test_attackProtection_captchaPolicies.py b/tests/wire/test_attackProtection_captchaPolicies.py new file mode 100644 index 00000000..5b5544b5 --- /dev/null +++ b/tests/wire/test_attackProtection_captchaPolicies.py @@ -0,0 +1,54 @@ +from .conftest import get_client, verify_request_count + +from auth0.management import AttackProtectionCaptchaPolicyActionInput, AttackProtectionCaptchaPolicyMatch + + +def test_attackProtection_captchaPolicies_list_() -> None: + """Test list endpoint with WireMock""" + test_id = "attack_protection.captcha_policies.list_.0" + client = get_client(test_id) + client.attack_protection.captcha_policies.list() + verify_request_count(test_id, "GET", "/attack-protection/captcha/policies", None, 1) + + +def test_attackProtection_captchaPolicies_create() -> None: + """Test create endpoint with WireMock""" + test_id = "attack_protection.captcha_policies.create.0" + client = get_client(test_id) + client.attack_protection.captcha_policies.create( + name="name", + priority=1, + match=AttackProtectionCaptchaPolicyMatch(), + action=AttackProtectionCaptchaPolicyActionInput(), + ) + verify_request_count(test_id, "POST", "/attack-protection/captcha/policies", None, 1) + + +def test_attackProtection_captchaPolicies_get() -> None: + """Test get endpoint with WireMock""" + test_id = "attack_protection.captcha_policies.get.0" + client = get_client(test_id) + client.attack_protection.captcha_policies.get( + id="id", + ) + verify_request_count(test_id, "GET", "/attack-protection/captcha/policies/id", None, 1) + + +def test_attackProtection_captchaPolicies_delete() -> None: + """Test delete endpoint with WireMock""" + test_id = "attack_protection.captcha_policies.delete.0" + client = get_client(test_id) + client.attack_protection.captcha_policies.delete( + id="id", + ) + verify_request_count(test_id, "DELETE", "/attack-protection/captcha/policies/id", None, 1) + + +def test_attackProtection_captchaPolicies_update() -> None: + """Test update endpoint with WireMock""" + test_id = "attack_protection.captcha_policies.update.0" + client = get_client(test_id) + client.attack_protection.captcha_policies.update( + id="id", + ) + verify_request_count(test_id, "PATCH", "/attack-protection/captcha/policies/id", None, 1) diff --git a/tests/wire/test_clientGrants.py b/tests/wire/test_clientGrants.py index d87ec2a2..f9bda114 100644 --- a/tests/wire/test_clientGrants.py +++ b/tests/wire/test_clientGrants.py @@ -43,6 +43,36 @@ def test_clientGrants_create() -> None: verify_request_count(test_id, "POST", "/client-grants", None, 1) +def test_clientGrants_search() -> None: + """Test search endpoint with WireMock""" + test_id = "client_grants.search.0" + client = get_client(test_id) + client.client_grants.search( + q="q", + parser="scim", + fields="fields", + include_fields=True, + take=1, + from_="from", + sort="audience", + ) + verify_request_count( + test_id, + "GET", + "/client-grants/search", + { + "q": "q", + "parser": "scim", + "fields": "fields", + "include_fields": "true", + "take": "1", + "from": "from", + "sort": "audience", + }, + 1, + ) + + def test_clientGrants_get() -> None: """Test get endpoint with WireMock""" test_id = "client_grants.get.0" diff --git a/tests/wire/test_clientProfiles.py b/tests/wire/test_clientProfiles.py new file mode 100644 index 00000000..de409ce7 --- /dev/null +++ b/tests/wire/test_clientProfiles.py @@ -0,0 +1,59 @@ +from .conftest import get_client, verify_request_count + +from auth0.management import ClientProfileApplyPolicy, ClientProfileClientConfiguration + + +def test_clientProfiles_list_() -> None: + """Test list endpoint with WireMock""" + test_id = "client_profiles.list_.0" + client = get_client(test_id) + client.client_profiles.list( + from_="from", + take=1, + ) + verify_request_count(test_id, "GET", "/client-profiles", {"from": "from", "take": "1"}, 1) + + +def test_clientProfiles_create() -> None: + """Test create endpoint with WireMock""" + test_id = "client_profiles.create.0" + client = get_client(test_id) + client.client_profiles.create( + name="name", + client_configuration=ClientProfileClientConfiguration(), + apply_policy=ClientProfileApplyPolicy( + external_metadata_type="cimd", + external_metadata_created_by="client", + ), + ) + verify_request_count(test_id, "POST", "/client-profiles", None, 1) + + +def test_clientProfiles_get() -> None: + """Test get endpoint with WireMock""" + test_id = "client_profiles.get.0" + client = get_client(test_id) + client.client_profiles.get( + id="id", + ) + verify_request_count(test_id, "GET", "/client-profiles/id", None, 1) + + +def test_clientProfiles_delete() -> None: + """Test delete endpoint with WireMock""" + test_id = "client_profiles.delete.0" + client = get_client(test_id) + client.client_profiles.delete( + id="id", + ) + verify_request_count(test_id, "DELETE", "/client-profiles/id", None, 1) + + +def test_clientProfiles_update() -> None: + """Test update endpoint with WireMock""" + test_id = "client_profiles.update.0" + client = get_client(test_id) + client.client_profiles.update( + id="id", + ) + verify_request_count(test_id, "PATCH", "/client-profiles/id", None, 1) diff --git a/tests/wire/test_clients.py b/tests/wire/test_clients.py index fcac1939..d3b49c40 100644 --- a/tests/wire/test_clients.py +++ b/tests/wire/test_clients.py @@ -67,6 +67,36 @@ def test_clients_register_cimd_client() -> None: verify_request_count(test_id, "POST", "/clients/cimd/register", None, 1) +def test_clients_search() -> None: + """Test search endpoint with WireMock""" + test_id = "clients.search.0" + client = get_client(test_id) + client.clients.search( + q="q", + parser="scim", + fields="fields", + include_fields=True, + take=1, + from_="from", + sort="name", + ) + verify_request_count( + test_id, + "GET", + "/clients/search", + { + "q": "q", + "parser": "scim", + "fields": "fields", + "include_fields": "true", + "take": "1", + "from": "from", + "sort": "name", + }, + 1, + ) + + def test_clients_get() -> None: """Test get endpoint with WireMock""" test_id = "clients.get.0" diff --git a/tests/wire/test_emailTemplates.py b/tests/wire/test_emailTemplates.py index 496447cf..8824367d 100644 --- a/tests/wire/test_emailTemplates.py +++ b/tests/wire/test_emailTemplates.py @@ -7,6 +7,11 @@ def test_emailTemplates_create() -> None: client = get_client(test_id) client.email_templates.create( template="verify_email", + body=None, + from_=None, + subject=None, + syntax=None, + enabled=None, ) verify_request_count(test_id, "POST", "/email-templates", None, 1) @@ -28,6 +33,11 @@ def test_emailTemplates_set_() -> None: client.email_templates.set( template_name="verify_email", template="verify_email", + body=None, + from_=None, + subject=None, + syntax=None, + enabled=None, ) verify_request_count(test_id, "PUT", "/email-templates/verify_email", None, 1) diff --git a/tests/wire/test_experimentation_experiments.py b/tests/wire/test_experimentation_experiments.py index c16ec557..2e422c96 100644 --- a/tests/wire/test_experimentation_experiments.py +++ b/tests/wire/test_experimentation_experiments.py @@ -80,17 +80,6 @@ def test_experimentation_experiments_advance_ramp() -> None: verify_request_count(test_id, "POST", "/experimentation/experiments/id/advance-ramp", None, 1) -def test_experimentation_experiments_update_status() -> None: - """Test updateStatus endpoint with WireMock""" - test_id = "experimentation.experiments.update_status.0" - client = get_client(test_id) - client.experimentation.experiments.update_status( - id="id", - status="active", - ) - verify_request_count(test_id, "POST", "/experimentation/experiments/id/status", None, 1) - - def test_experimentation_experiments_validate() -> None: """Test validate endpoint with WireMock""" test_id = "experimentation.experiments.validate.0" diff --git a/tests/wire/test_experimentation_featureFlags.py b/tests/wire/test_experimentation_featureFlags.py index b09e3f44..fa33a650 100644 --- a/tests/wire/test_experimentation_featureFlags.py +++ b/tests/wire/test_experimentation_featureFlags.py @@ -59,14 +59,3 @@ def test_experimentation_featureFlags_update() -> None: id="id", ) verify_request_count(test_id, "PATCH", "/experimentation/feature-flags/id", None, 1) - - -def test_experimentation_featureFlags_update_status() -> None: - """Test updateStatus endpoint with WireMock""" - test_id = "experimentation.feature_flags.update_status.0" - client = get_client(test_id) - client.experimentation.feature_flags.update_status( - id="id", - status="draft", - ) - verify_request_count(test_id, "POST", "/experimentation/feature-flags/id/status", None, 1) diff --git a/wiremock/wiremock-mappings.json b/wiremock/wiremock-mappings.json index 8d6e75ef..bfc9967f 100644 --- a/wiremock/wiremock-mappings.json +++ b/wiremock/wiremock-mappings.json @@ -599,6 +599,61 @@ } } }, + { + "id": "e809df23-d9d6-4332-9016-571f480d902f", + "name": "Search client grants - default", + "request": { + "urlPathTemplate": "/client-grants/search", + "method": "GET", + "headers": { + "Authorization": { + "matches": "Bearer .+" + } + }, + "queryParameters": { + "q": { + "equalTo": "q" + }, + "parser": { + "equalTo": "scim" + }, + "fields": { + "equalTo": "fields" + }, + "include_fields": { + "equalTo": "true" + }, + "take": { + "equalTo": "1" + }, + "from": { + "equalTo": "from" + }, + "sort": { + "equalTo": "audience" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"client_grants\": [\n {\n \"id\": \"id\",\n \"client_id\": \"client_id\",\n \"audience\": \"audience\",\n \"scope\": [\n \"scope\"\n ],\n \"organization_usage\": \"deny\",\n \"allow_any_organization\": true,\n \"default_for\": \"third_party_clients\",\n \"is_system\": true,\n \"subject_type\": \"client\",\n \"authorization_details_types\": [\n \"authorization_details_types\"\n ],\n \"allow_all_scopes\": true\n }\n ],\n \"next\": \"next\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e809df23-d9d6-4332-9016-571f480d902f", + "persistent": true, + "priority": 3, + "metadata": { + "mocklab": { + "created": { + "at": "2020-01-01T00:00:00.000Z", + "via": "SYSTEM" + } + } + }, + "postServeActions": [] + }, { "id": "03f565a5-e2d6-4f29-ac5c-7e1d2bd25c37", "name": "Get client grant - default", @@ -707,6 +762,185 @@ } } }, + { + "id": "8f69f1ad-0119-4385-b58b-3613d7ce5ee1", + "name": "List client profiles - default", + "request": { + "urlPathTemplate": "/client-profiles", + "method": "GET", + "headers": { + "Authorization": { + "matches": "Bearer .+" + } + }, + "queryParameters": { + "from": { + "equalTo": "from" + }, + "take": { + "equalTo": "1" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"next\": \"next\",\n \"client_profiles\": [\n {\n \"id\": \"id\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"client_configuration\": {},\n \"apply_policy\": {\n \"external_metadata_type\": \"cimd\",\n \"external_metadata_created_by\": \"client\"\n },\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\"\n }\n ]\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "8f69f1ad-0119-4385-b58b-3613d7ce5ee1", + "persistent": true, + "priority": 3, + "metadata": { + "mocklab": { + "created": { + "at": "2020-01-01T00:00:00.000Z", + "via": "SYSTEM" + } + } + }, + "postServeActions": [] + }, + { + "id": "f65ac957-f4a8-4cb4-8a85-c5303f99f3dd", + "name": "Create a client profile - default", + "request": { + "urlPathTemplate": "/client-profiles", + "method": "POST", + "headers": { + "Authorization": { + "matches": "Bearer .+" + } + } + }, + "response": { + "status": 201, + "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"client_configuration\": {\n \"organization_usage\": {\n \"default_value\": \"deny\"\n },\n \"organization_require_behavior\": {\n \"default_value\": \"no_prompt\"\n },\n \"organization_discovery_methods\": {\n \"default_value\": [\n \"email\"\n ]\n },\n \"require_proof_of_possession\": {\n \"default_value\": true\n }\n },\n \"apply_policy\": {\n \"external_metadata_type\": \"cimd\",\n \"external_metadata_created_by\": \"client\"\n },\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "f65ac957-f4a8-4cb4-8a85-c5303f99f3dd", + "persistent": true, + "priority": 3, + "metadata": { + "mocklab": { + "created": { + "at": "2020-01-01T00:00:00.000Z", + "via": "SYSTEM" + } + } + } + }, + { + "id": "c42dd8bf-5033-45dd-9932-4fc6a7459ae6", + "name": "Get a client profile - default", + "request": { + "urlPathTemplate": "/client-profiles/{id}", + "method": "GET", + "headers": { + "Authorization": { + "matches": "Bearer .+" + } + }, + "pathParameters": { + "id": { + "equalTo": "id" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"client_configuration\": {\n \"organization_usage\": {\n \"default_value\": \"deny\"\n },\n \"organization_require_behavior\": {\n \"default_value\": \"no_prompt\"\n },\n \"organization_discovery_methods\": {\n \"default_value\": [\n \"email\"\n ]\n },\n \"require_proof_of_possession\": {\n \"default_value\": true\n }\n },\n \"apply_policy\": {\n \"external_metadata_type\": \"cimd\",\n \"external_metadata_created_by\": \"client\"\n },\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "c42dd8bf-5033-45dd-9932-4fc6a7459ae6", + "persistent": true, + "priority": 3, + "metadata": { + "mocklab": { + "created": { + "at": "2020-01-01T00:00:00.000Z", + "via": "SYSTEM" + } + } + } + }, + { + "id": "874f2f6a-21a0-4699-b722-67cfd41798dc", + "name": "Delete a client profile - default", + "request": { + "urlPathTemplate": "/client-profiles/{id}", + "method": "DELETE", + "headers": { + "Authorization": { + "matches": "Bearer .+" + } + }, + "pathParameters": { + "id": { + "equalTo": "id" + } + } + }, + "response": { + "status": 200, + "body": "\"\"", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "874f2f6a-21a0-4699-b722-67cfd41798dc", + "persistent": true, + "priority": 3, + "metadata": { + "mocklab": { + "created": { + "at": "2020-01-01T00:00:00.000Z", + "via": "SYSTEM" + } + } + } + }, + { + "id": "fa483d55-61de-42ae-8a75-bdc8bf1eaa99", + "name": "Update a client profile - default", + "request": { + "urlPathTemplate": "/client-profiles/{id}", + "method": "PATCH", + "headers": { + "Authorization": { + "matches": "Bearer .+" + } + }, + "pathParameters": { + "id": { + "equalTo": "id" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"client_configuration\": {\n \"organization_usage\": {\n \"default_value\": \"deny\"\n },\n \"organization_require_behavior\": {\n \"default_value\": \"no_prompt\"\n },\n \"organization_discovery_methods\": {\n \"default_value\": [\n \"email\"\n ]\n },\n \"require_proof_of_possession\": {\n \"default_value\": true\n }\n },\n \"apply_policy\": {\n \"external_metadata_type\": \"cimd\",\n \"external_metadata_created_by\": \"client\"\n },\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "fa483d55-61de-42ae-8a75-bdc8bf1eaa99", + "persistent": true, + "priority": 3, + "metadata": { + "mocklab": { + "created": { + "at": "2020-01-01T00:00:00.000Z", + "via": "SYSTEM" + } + } + } + }, { "id": "e9057410-f073-4b5b-83dc-dc4d5625ef27", "name": "Get clients - default", @@ -753,7 +987,7 @@ }, "response": { "status": 200, - "body": "{\n \"start\": 1.1,\n \"limit\": 1.1,\n \"total\": 1.1,\n \"clients\": [\n {\n \"client_id\": \"client_id\",\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\",\n \"tenant\": \"tenant\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"global\": true,\n \"client_secret\": \"client_secret\",\n \"app_type\": \"native\",\n \"logo_uri\": \"logo_uri\",\n \"is_first_party\": true,\n \"oidc_conformant\": true,\n \"callbacks\": [\n \"callbacks\"\n ],\n \"allowed_origins\": [\n \"allowed_origins\"\n ],\n \"web_origins\": [\n \"web_origins\"\n ],\n \"client_aliases\": [\n \"client_aliases\"\n ],\n \"allowed_clients\": [\n \"allowed_clients\"\n ],\n \"allowed_logout_urls\": [\n \"allowed_logout_urls\"\n ],\n \"grant_types\": [\n \"grant_types\"\n ],\n \"signing_keys\": [\n {}\n ],\n \"sso\": true,\n \"sso_disabled\": true,\n \"cross_origin_authentication\": true,\n \"cross_origin_loc\": \"cross_origin_loc\",\n \"custom_login_page_on\": true,\n \"custom_login_page\": \"custom_login_page\",\n \"custom_login_page_preview\": \"custom_login_page_preview\",\n \"form_template\": \"form_template\",\n \"token_endpoint_auth_method\": \"none\",\n \"is_token_endpoint_ip_header_trusted\": true,\n \"client_metadata\": {\n \"key\": \"value\"\n },\n \"initiate_login_uri\": \"initiate_login_uri\",\n \"refresh_token\": {\n \"rotation_type\": \"rotating\",\n \"expiration_type\": \"expiring\"\n },\n \"default_organization\": {\n \"organization_id\": \"organization_id\",\n \"flows\": [\n \"client_credentials\"\n ]\n },\n \"organization_usage\": \"deny\",\n \"organization_require_behavior\": \"no_prompt\",\n \"organization_discovery_methods\": [\n \"email\"\n ],\n \"require_pushed_authorization_requests\": true,\n \"require_proof_of_possession\": true,\n \"token_vault_privileged_access\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"compliance_level\": \"none\",\n \"skip_non_verifiable_callback_uri_confirmation_prompt\": true,\n \"par_request_expiry\": 1,\n \"token_quota\": {\n \"client_credentials\": {}\n },\n \"express_configuration\": {\n \"initiate_login_uri_template\": \"initiate_login_uri_template\",\n \"user_attribute_profile_id\": \"user_attribute_profile_id\",\n \"connection_profile_id\": \"connection_profile_id\",\n \"enable_client\": true,\n \"enable_organization\": true,\n \"okta_oin_client_id\": \"okta_oin_client_id\",\n \"admin_login_domain\": \"admin_login_domain\"\n },\n \"my_organization_configuration\": {\n \"allowed_strategies\": [\n \"pingfederate\"\n ],\n \"connection_deletion_behavior\": \"allow\"\n },\n \"identity_assertion_authorization_grant\": {\n \"active\": true\n },\n \"anonymous_sessions\": {\n \"active\": true\n },\n \"third_party_security_mode\": \"strict\",\n \"redirection_policy\": \"allow_always\",\n \"resource_server_identifier\": \"resource_server_identifier\",\n \"async_approval_notification_channels\": [\n \"guardian-push\"\n ],\n \"external_metadata_type\": \"cimd\",\n \"external_metadata_created_by\": \"admin\",\n \"external_client_id\": \"external_client_id\",\n \"jwks_uri\": \"jwks_uri\"\n }\n ]\n}", + "body": "{\n \"start\": 1.1,\n \"limit\": 1.1,\n \"total\": 1.1,\n \"clients\": [\n {\n \"client_id\": \"client_id\",\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\",\n \"tenant\": \"tenant\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"global\": true,\n \"client_secret\": \"client_secret\",\n \"app_type\": \"native\",\n \"logo_uri\": \"logo_uri\",\n \"is_first_party\": true,\n \"oidc_conformant\": true,\n \"callbacks\": [\n \"callbacks\"\n ],\n \"allowed_origins\": [\n \"allowed_origins\"\n ],\n \"web_origins\": [\n \"web_origins\"\n ],\n \"client_aliases\": [\n \"client_aliases\"\n ],\n \"allowed_clients\": [\n \"allowed_clients\"\n ],\n \"allowed_logout_urls\": [\n \"allowed_logout_urls\"\n ],\n \"grant_types\": [\n \"grant_types\"\n ],\n \"signing_keys\": [\n {}\n ],\n \"sso\": true,\n \"sso_disabled\": true,\n \"cross_origin_authentication\": true,\n \"cross_origin_loc\": \"cross_origin_loc\",\n \"custom_login_page_on\": true,\n \"custom_login_page\": \"custom_login_page\",\n \"custom_login_page_preview\": \"custom_login_page_preview\",\n \"form_template\": \"form_template\",\n \"token_endpoint_auth_method\": \"none\",\n \"is_token_endpoint_ip_header_trusted\": true,\n \"client_metadata\": {\n \"key\": \"value\"\n },\n \"initiate_login_uri\": \"initiate_login_uri\",\n \"refresh_token\": {\n \"rotation_type\": \"rotating\",\n \"expiration_type\": \"expiring\"\n },\n \"default_organization\": {\n \"organization_id\": \"organization_id\",\n \"flows\": [\n \"client_credentials\"\n ]\n },\n \"organization_usage\": \"deny\",\n \"organization_require_behavior\": \"no_prompt\",\n \"organization_discovery_methods\": [\n \"email\"\n ],\n \"require_pushed_authorization_requests\": true,\n \"require_proof_of_possession\": true,\n \"token_vault_privileged_access\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"compliance_level\": \"none\",\n \"skip_non_verifiable_callback_uri_confirmation_prompt\": true,\n \"par_request_expiry\": 1,\n \"token_quota\": {\n \"client_credentials\": {}\n },\n \"express_configuration\": {\n \"initiate_login_uri_template\": \"initiate_login_uri_template\",\n \"user_attribute_profile_id\": \"user_attribute_profile_id\",\n \"connection_profile_id\": \"connection_profile_id\",\n \"enable_client\": true,\n \"enable_organization\": true,\n \"okta_oin_client_id\": \"okta_oin_client_id\",\n \"admin_login_domain\": \"admin_login_domain\"\n },\n \"my_organization_configuration\": {\n \"allowed_strategies\": [\n \"pingfederate\"\n ],\n \"connection_deletion_behavior\": \"allow\"\n },\n \"identity_assertion_authorization_grant\": {\n \"active\": true\n },\n \"anonymous_sessions\": {\n \"active\": true\n },\n \"enforce_anon_session_transfer_network_binding\": \"ip\",\n \"third_party_security_mode\": \"strict\",\n \"redirection_policy\": \"allow_always\",\n \"resource_server_identifier\": \"resource_server_identifier\",\n \"async_approval_notification_channels\": [\n \"guardian-push\"\n ],\n \"external_metadata_type\": \"cimd\",\n \"external_metadata_created_by\": \"admin\",\n \"external_metadata_status\": \"available\",\n \"external_client_id\": \"external_client_id\",\n \"jwks_uri\": \"jwks_uri\"\n }\n ]\n}", "headers": { "Content-Type": "application/json" } @@ -785,7 +1019,7 @@ }, "response": { "status": 201, - "body": "{\n \"client_id\": \"client_id\",\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\",\n \"tenant\": \"tenant\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"global\": true,\n \"client_secret\": \"client_secret\",\n \"app_type\": \"native\",\n \"logo_uri\": \"logo_uri\",\n \"is_first_party\": true,\n \"oidc_conformant\": true,\n \"callbacks\": [\n \"callbacks\"\n ],\n \"allowed_origins\": [\n \"allowed_origins\"\n ],\n \"web_origins\": [\n \"web_origins\"\n ],\n \"client_aliases\": [\n \"client_aliases\"\n ],\n \"allowed_clients\": [\n \"allowed_clients\"\n ],\n \"allowed_logout_urls\": [\n \"allowed_logout_urls\"\n ],\n \"session_transfer\": {\n \"can_create_session_transfer_token\": true,\n \"enforce_cascade_revocation\": true,\n \"allowed_authentication_methods\": [\n \"cookie\"\n ],\n \"enforce_device_binding\": \"ip\",\n \"allow_refresh_token\": true,\n \"enforce_online_refresh_tokens\": true,\n \"delegation\": {\n \"allow_delegated_access\": true,\n \"enforce_device_binding\": \"ip\"\n }\n },\n \"oidc_logout\": {\n \"backchannel_logout_urls\": [\n \"backchannel_logout_urls\"\n ],\n \"backchannel_logout_initiators\": {\n \"mode\": \"custom\",\n \"selected_initiators\": [\n \"rp-logout\"\n ]\n },\n \"backchannel_logout_session_metadata\": {\n \"include\": true\n }\n },\n \"grant_types\": [\n \"grant_types\"\n ],\n \"jwt_configuration\": {\n \"lifetime_in_seconds\": 1,\n \"secret_encoded\": true,\n \"scopes\": {\n \"key\": \"value\"\n },\n \"alg\": \"HS256\"\n },\n \"signing_keys\": [\n {\n \"pkcs7\": \"pkcs7\",\n \"cert\": \"cert\",\n \"subject\": \"subject\"\n }\n ],\n \"encryption_key\": {\n \"pub\": \"pub\",\n \"cert\": \"cert\",\n \"subject\": \"subject\"\n },\n \"sso\": true,\n \"sso_disabled\": true,\n \"cross_origin_authentication\": true,\n \"cross_origin_loc\": \"cross_origin_loc\",\n \"custom_login_page_on\": true,\n \"custom_login_page\": \"custom_login_page\",\n \"custom_login_page_preview\": \"custom_login_page_preview\",\n \"form_template\": \"form_template\",\n \"addons\": {\n \"aws\": {\n \"principal\": \"principal\",\n \"role\": \"role\",\n \"lifetime_in_seconds\": 1\n },\n \"azure_blob\": {\n \"accountName\": \"accountName\",\n \"storageAccessKey\": \"storageAccessKey\",\n \"containerName\": \"containerName\",\n \"blobName\": \"blobName\",\n \"expiration\": 1,\n \"signedIdentifier\": \"signedIdentifier\",\n \"blob_read\": true,\n \"blob_write\": true,\n \"blob_delete\": true,\n \"container_read\": true,\n \"container_write\": true,\n \"container_delete\": true,\n \"container_list\": true\n },\n \"azure_sb\": {\n \"namespace\": \"namespace\",\n \"sasKeyName\": \"sasKeyName\",\n \"sasKey\": \"sasKey\",\n \"entityPath\": \"entityPath\",\n \"expiration\": 1\n },\n \"rms\": {\n \"url\": \"url\"\n },\n \"mscrm\": {\n \"url\": \"url\"\n },\n \"slack\": {\n \"team\": \"team\"\n },\n \"sentry\": {\n \"org_slug\": \"org_slug\",\n \"base_url\": \"base_url\"\n },\n \"box\": {\n \"key\": \"value\"\n },\n \"cloudbees\": {\n \"key\": \"value\"\n },\n \"concur\": {\n \"key\": \"value\"\n },\n \"dropbox\": {\n \"key\": \"value\"\n },\n \"echosign\": {\n \"domain\": \"domain\"\n },\n \"egnyte\": {\n \"domain\": \"domain\"\n },\n \"firebase\": {\n \"secret\": \"secret\",\n \"private_key_id\": \"private_key_id\",\n \"private_key\": \"private_key\",\n \"client_email\": \"client_email\",\n \"lifetime_in_seconds\": 1\n },\n \"newrelic\": {\n \"account\": \"account\"\n },\n \"office365\": {\n \"domain\": \"domain\",\n \"connection\": \"connection\"\n },\n \"salesforce\": {\n \"entity_id\": \"entity_id\"\n },\n \"salesforce_api\": {\n \"clientid\": \"clientid\",\n \"principal\": \"principal\",\n \"communityName\": \"communityName\",\n \"community_url_section\": \"community_url_section\"\n },\n \"salesforce_sandbox_api\": {\n \"clientid\": \"clientid\",\n \"principal\": \"principal\",\n \"communityName\": \"communityName\",\n \"community_url_section\": \"community_url_section\"\n },\n \"samlp\": {\n \"mappings\": {\n \"key\": \"value\"\n },\n \"audience\": \"audience\",\n \"recipient\": \"recipient\",\n \"createUpnClaim\": true,\n \"mapUnknownClaimsAsIs\": true,\n \"passthroughClaimsWithNoMapping\": true,\n \"mapIdentities\": true,\n \"signatureAlgorithm\": \"signatureAlgorithm\",\n \"digestAlgorithm\": \"digestAlgorithm\",\n \"issuer\": \"issuer\",\n \"destination\": \"destination\",\n \"lifetimeInSeconds\": 1,\n \"signResponse\": true,\n \"nameIdentifierFormat\": \"nameIdentifierFormat\",\n \"nameIdentifierProbes\": [\n \"nameIdentifierProbes\"\n ],\n \"authnContextClassRef\": \"authnContextClassRef\"\n },\n \"layer\": {\n \"providerId\": \"providerId\",\n \"keyId\": \"keyId\",\n \"privateKey\": \"privateKey\",\n \"principal\": \"principal\",\n \"expiration\": 1\n },\n \"sap_api\": {\n \"clientid\": \"clientid\",\n \"usernameAttribute\": \"usernameAttribute\",\n \"tokenEndpointUrl\": \"tokenEndpointUrl\",\n \"scope\": \"scope\",\n \"servicePassword\": \"servicePassword\",\n \"nameIdentifierFormat\": \"nameIdentifierFormat\"\n },\n \"sharepoint\": {\n \"url\": \"url\",\n \"external_url\": [\n \"external_url\"\n ]\n },\n \"springcm\": {\n \"acsurl\": \"acsurl\"\n },\n \"wams\": {\n \"masterkey\": \"masterkey\"\n },\n \"wsfed\": {\n \"key\": \"value\"\n },\n \"zendesk\": {\n \"accountName\": \"accountName\"\n },\n \"zoom\": {\n \"account\": \"account\"\n },\n \"sso_integration\": {\n \"name\": \"name\",\n \"version\": \"version\"\n }\n },\n \"token_endpoint_auth_method\": \"none\",\n \"is_token_endpoint_ip_header_trusted\": true,\n \"client_metadata\": {\n \"key\": \"value\"\n },\n \"mobile\": {\n \"android\": {\n \"app_package_name\": \"app_package_name\",\n \"sha256_cert_fingerprints\": [\n \"sha256_cert_fingerprints\"\n ]\n },\n \"ios\": {\n \"team_id\": \"team_id\",\n \"app_bundle_identifier\": \"app_bundle_identifier\"\n }\n },\n \"initiate_login_uri\": \"initiate_login_uri\",\n \"native_social_login\": {\n \"apple\": {\n \"enabled\": true\n },\n \"facebook\": {\n \"enabled\": true\n },\n \"google\": {\n \"enabled\": true\n }\n },\n \"fedcm_login\": {\n \"google\": {\n \"is_enabled\": true\n }\n },\n \"refresh_token\": {\n \"rotation_type\": \"rotating\",\n \"expiration_type\": \"expiring\",\n \"leeway\": 1,\n \"token_lifetime\": 1,\n \"infinite_token_lifetime\": true,\n \"idle_token_lifetime\": 1,\n \"infinite_idle_token_lifetime\": true,\n \"policies\": [\n {\n \"audience\": \"audience\",\n \"scope\": [\n \"scope\"\n ]\n }\n ]\n },\n \"default_organization\": {\n \"organization_id\": \"organization_id\",\n \"flows\": [\n \"client_credentials\"\n ]\n },\n \"organization_usage\": \"deny\",\n \"organization_require_behavior\": \"no_prompt\",\n \"organization_discovery_methods\": [\n \"email\"\n ],\n \"client_authentication_methods\": {\n \"private_key_jwt\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"tls_client_auth\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"self_signed_tls_client_auth\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n }\n },\n \"require_pushed_authorization_requests\": true,\n \"require_proof_of_possession\": true,\n \"signed_request_object\": {\n \"required\": true,\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"token_vault_privileged_access\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ],\n \"ip_allowlist\": [\n \"ip_allowlist\"\n ],\n \"grants\": [\n {\n \"connection\": \"connection\",\n \"scopes\": [\n \"scopes\"\n ]\n }\n ]\n },\n \"compliance_level\": \"none\",\n \"skip_non_verifiable_callback_uri_confirmation_prompt\": true,\n \"token_exchange\": {\n \"allow_any_profile_of_type\": [\n \"custom_authentication\"\n ]\n },\n \"par_request_expiry\": 1,\n \"token_quota\": {\n \"client_credentials\": {\n \"enforce\": true,\n \"per_day\": 1,\n \"per_hour\": 1\n }\n },\n \"express_configuration\": {\n \"initiate_login_uri_template\": \"initiate_login_uri_template\",\n \"user_attribute_profile_id\": \"user_attribute_profile_id\",\n \"connection_profile_id\": \"connection_profile_id\",\n \"enable_client\": true,\n \"enable_organization\": true,\n \"linked_clients\": [\n {\n \"client_id\": \"client_id\"\n }\n ],\n \"okta_oin_client_id\": \"okta_oin_client_id\",\n \"admin_login_domain\": \"admin_login_domain\",\n \"oin_submission_id\": \"oin_submission_id\"\n },\n \"b2b_integration_configuration\": {\n \"sso_profiles\": [\n \"sso_profiles\"\n ],\n \"integration_type\": \"custom_auth_server\"\n },\n \"my_organization_configuration\": {\n \"connection_profile_id\": \"connection_profile_id\",\n \"user_attribute_profile_id\": \"user_attribute_profile_id\",\n \"allowed_strategies\": [\n \"pingfederate\"\n ],\n \"third_party_client_access\": {\n \"default_value\": \"block\",\n \"allowed_values\": [\n \"allow\"\n ]\n },\n \"connection_deletion_behavior\": \"allow\",\n \"invitation_landing_client_id\": \"invitation_landing_client_id\",\n \"enforce_permission_ceiling\": true,\n \"enforce_self_assignment_restriction\": true\n },\n \"identity_assertion_authorization_grant\": {\n \"active\": true\n },\n \"anonymous_sessions\": {\n \"active\": true\n },\n \"third_party_security_mode\": \"strict\",\n \"redirection_policy\": \"allow_always\",\n \"resource_server_identifier\": \"resource_server_identifier\",\n \"async_approval_notification_channels\": [\n \"guardian-push\"\n ],\n \"external_metadata_type\": \"cimd\",\n \"external_metadata_created_by\": \"admin\",\n \"external_client_id\": \"external_client_id\",\n \"jwks_uri\": \"jwks_uri\"\n}", + "body": "{\n \"client_id\": \"client_id\",\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\",\n \"tenant\": \"tenant\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"global\": true,\n \"client_secret\": \"client_secret\",\n \"app_type\": \"native\",\n \"logo_uri\": \"logo_uri\",\n \"is_first_party\": true,\n \"oidc_conformant\": true,\n \"callbacks\": [\n \"callbacks\"\n ],\n \"allowed_origins\": [\n \"allowed_origins\"\n ],\n \"web_origins\": [\n \"web_origins\"\n ],\n \"client_aliases\": [\n \"client_aliases\"\n ],\n \"allowed_clients\": [\n \"allowed_clients\"\n ],\n \"allowed_logout_urls\": [\n \"allowed_logout_urls\"\n ],\n \"session_transfer\": {\n \"can_create_session_transfer_token\": true,\n \"enforce_cascade_revocation\": true,\n \"allowed_authentication_methods\": [\n \"cookie\"\n ],\n \"enforce_device_binding\": \"ip\",\n \"allow_refresh_token\": true,\n \"enforce_online_refresh_tokens\": true,\n \"delegation\": {\n \"allow_delegated_access\": true,\n \"enforce_device_binding\": \"ip\"\n }\n },\n \"oidc_logout\": {\n \"backchannel_logout_urls\": [\n \"backchannel_logout_urls\"\n ],\n \"backchannel_logout_initiators\": {\n \"mode\": \"custom\",\n \"selected_initiators\": [\n \"rp-logout\"\n ]\n },\n \"backchannel_logout_session_metadata\": {\n \"include\": true\n }\n },\n \"grant_types\": [\n \"grant_types\"\n ],\n \"jwt_configuration\": {\n \"lifetime_in_seconds\": 1,\n \"secret_encoded\": true,\n \"scopes\": {\n \"key\": \"value\"\n },\n \"alg\": \"HS256\"\n },\n \"signing_keys\": [\n {\n \"pkcs7\": \"pkcs7\",\n \"cert\": \"cert\",\n \"subject\": \"subject\"\n }\n ],\n \"encryption_key\": {\n \"pub\": \"pub\",\n \"cert\": \"cert\",\n \"subject\": \"subject\"\n },\n \"sso\": true,\n \"sso_disabled\": true,\n \"cross_origin_authentication\": true,\n \"cross_origin_loc\": \"cross_origin_loc\",\n \"custom_login_page_on\": true,\n \"custom_login_page\": \"custom_login_page\",\n \"custom_login_page_preview\": \"custom_login_page_preview\",\n \"form_template\": \"form_template\",\n \"addons\": {\n \"aws\": {\n \"principal\": \"principal\",\n \"role\": \"role\",\n \"lifetime_in_seconds\": 1\n },\n \"azure_blob\": {\n \"accountName\": \"accountName\",\n \"storageAccessKey\": \"storageAccessKey\",\n \"containerName\": \"containerName\",\n \"blobName\": \"blobName\",\n \"expiration\": 1,\n \"signedIdentifier\": \"signedIdentifier\",\n \"blob_read\": true,\n \"blob_write\": true,\n \"blob_delete\": true,\n \"container_read\": true,\n \"container_write\": true,\n \"container_delete\": true,\n \"container_list\": true\n },\n \"azure_sb\": {\n \"namespace\": \"namespace\",\n \"sasKeyName\": \"sasKeyName\",\n \"sasKey\": \"sasKey\",\n \"entityPath\": \"entityPath\",\n \"expiration\": 1\n },\n \"rms\": {\n \"url\": \"url\"\n },\n \"mscrm\": {\n \"url\": \"url\"\n },\n \"slack\": {\n \"team\": \"team\"\n },\n \"sentry\": {\n \"org_slug\": \"org_slug\",\n \"base_url\": \"base_url\"\n },\n \"box\": {\n \"key\": \"value\"\n },\n \"cloudbees\": {\n \"key\": \"value\"\n },\n \"concur\": {\n \"key\": \"value\"\n },\n \"dropbox\": {\n \"key\": \"value\"\n },\n \"echosign\": {\n \"domain\": \"domain\"\n },\n \"egnyte\": {\n \"domain\": \"domain\"\n },\n \"firebase\": {\n \"secret\": \"secret\",\n \"private_key_id\": \"private_key_id\",\n \"private_key\": \"private_key\",\n \"client_email\": \"client_email\",\n \"lifetime_in_seconds\": 1\n },\n \"newrelic\": {\n \"account\": \"account\"\n },\n \"office365\": {\n \"domain\": \"domain\",\n \"connection\": \"connection\"\n },\n \"salesforce\": {\n \"entity_id\": \"entity_id\"\n },\n \"salesforce_api\": {\n \"clientid\": \"clientid\",\n \"principal\": \"principal\",\n \"communityName\": \"communityName\",\n \"community_url_section\": \"community_url_section\"\n },\n \"salesforce_sandbox_api\": {\n \"clientid\": \"clientid\",\n \"principal\": \"principal\",\n \"communityName\": \"communityName\",\n \"community_url_section\": \"community_url_section\"\n },\n \"samlp\": {\n \"mappings\": {\n \"key\": \"value\"\n },\n \"audience\": \"audience\",\n \"recipient\": \"recipient\",\n \"createUpnClaim\": true,\n \"mapUnknownClaimsAsIs\": true,\n \"passthroughClaimsWithNoMapping\": true,\n \"mapIdentities\": true,\n \"signatureAlgorithm\": \"signatureAlgorithm\",\n \"digestAlgorithm\": \"digestAlgorithm\",\n \"issuer\": \"issuer\",\n \"destination\": \"destination\",\n \"lifetimeInSeconds\": 1,\n \"signResponse\": true,\n \"nameIdentifierFormat\": \"nameIdentifierFormat\",\n \"nameIdentifierProbes\": [\n \"nameIdentifierProbes\"\n ],\n \"authnContextClassRef\": \"authnContextClassRef\"\n },\n \"layer\": {\n \"providerId\": \"providerId\",\n \"keyId\": \"keyId\",\n \"privateKey\": \"privateKey\",\n \"principal\": \"principal\",\n \"expiration\": 1\n },\n \"sap_api\": {\n \"clientid\": \"clientid\",\n \"usernameAttribute\": \"usernameAttribute\",\n \"tokenEndpointUrl\": \"tokenEndpointUrl\",\n \"scope\": \"scope\",\n \"servicePassword\": \"servicePassword\",\n \"nameIdentifierFormat\": \"nameIdentifierFormat\"\n },\n \"sharepoint\": {\n \"url\": \"url\",\n \"external_url\": [\n \"external_url\"\n ]\n },\n \"springcm\": {\n \"acsurl\": \"acsurl\"\n },\n \"wams\": {\n \"masterkey\": \"masterkey\"\n },\n \"wsfed\": {\n \"key\": \"value\"\n },\n \"zendesk\": {\n \"accountName\": \"accountName\"\n },\n \"zoom\": {\n \"account\": \"account\"\n },\n \"sso_integration\": {\n \"name\": \"name\",\n \"version\": \"version\"\n }\n },\n \"token_endpoint_auth_method\": \"none\",\n \"is_token_endpoint_ip_header_trusted\": true,\n \"client_metadata\": {\n \"key\": \"value\"\n },\n \"mobile\": {\n \"android\": {\n \"app_package_name\": \"app_package_name\",\n \"sha256_cert_fingerprints\": [\n \"sha256_cert_fingerprints\"\n ]\n },\n \"ios\": {\n \"team_id\": \"team_id\",\n \"app_bundle_identifier\": \"app_bundle_identifier\"\n }\n },\n \"initiate_login_uri\": \"initiate_login_uri\",\n \"native_social_login\": {\n \"apple\": {\n \"enabled\": true\n },\n \"facebook\": {\n \"enabled\": true\n },\n \"google\": {\n \"enabled\": true\n }\n },\n \"fedcm_login\": {\n \"google\": {\n \"is_enabled\": true\n }\n },\n \"refresh_token\": {\n \"rotation_type\": \"rotating\",\n \"expiration_type\": \"expiring\",\n \"leeway\": 1,\n \"token_lifetime\": 1,\n \"infinite_token_lifetime\": true,\n \"idle_token_lifetime\": 1,\n \"infinite_idle_token_lifetime\": true,\n \"policies\": [\n {\n \"audience\": \"audience\",\n \"scope\": [\n \"scope\"\n ]\n }\n ]\n },\n \"default_organization\": {\n \"organization_id\": \"organization_id\",\n \"flows\": [\n \"client_credentials\"\n ]\n },\n \"organization_usage\": \"deny\",\n \"organization_require_behavior\": \"no_prompt\",\n \"organization_discovery_methods\": [\n \"email\"\n ],\n \"client_authentication_methods\": {\n \"private_key_jwt\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"tls_client_auth\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"self_signed_tls_client_auth\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n }\n },\n \"require_pushed_authorization_requests\": true,\n \"require_proof_of_possession\": true,\n \"signed_request_object\": {\n \"required\": true,\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"token_vault_privileged_access\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ],\n \"ip_allowlist\": [\n \"ip_allowlist\"\n ],\n \"grants\": [\n {\n \"connection\": \"connection\",\n \"scopes\": [\n \"scopes\"\n ]\n }\n ]\n },\n \"compliance_level\": \"none\",\n \"skip_non_verifiable_callback_uri_confirmation_prompt\": true,\n \"token_exchange\": {\n \"allow_any_profile_of_type\": [\n \"custom_authentication\"\n ]\n },\n \"par_request_expiry\": 1,\n \"token_quota\": {\n \"client_credentials\": {\n \"enforce\": true,\n \"per_day\": 1,\n \"per_hour\": 1\n }\n },\n \"express_configuration\": {\n \"initiate_login_uri_template\": \"initiate_login_uri_template\",\n \"user_attribute_profile_id\": \"user_attribute_profile_id\",\n \"connection_profile_id\": \"connection_profile_id\",\n \"enable_client\": true,\n \"enable_organization\": true,\n \"linked_clients\": [\n {\n \"client_id\": \"client_id\"\n }\n ],\n \"okta_oin_client_id\": \"okta_oin_client_id\",\n \"admin_login_domain\": \"admin_login_domain\",\n \"oin_submission_id\": \"oin_submission_id\"\n },\n \"b2b_integration_configuration\": {\n \"sso_profiles\": [\n \"sso_profiles\"\n ],\n \"integration_type\": \"custom_auth_server\"\n },\n \"my_organization_configuration\": {\n \"connection_profile_id\": \"connection_profile_id\",\n \"user_attribute_profile_id\": \"user_attribute_profile_id\",\n \"allowed_strategies\": [\n \"pingfederate\"\n ],\n \"third_party_client_access\": {\n \"default_value\": \"block\",\n \"allowed_values\": [\n \"allow\"\n ]\n },\n \"connection_deletion_behavior\": \"allow\",\n \"invitation_landing_client_id\": \"invitation_landing_client_id\",\n \"enforce_permission_ceiling\": true,\n \"enforce_self_assignment_restriction\": true\n },\n \"identity_assertion_authorization_grant\": {\n \"active\": true\n },\n \"anonymous_sessions\": {\n \"active\": true\n },\n \"enforce_anon_session_transfer_network_binding\": \"ip\",\n \"third_party_security_mode\": \"strict\",\n \"redirection_policy\": \"allow_always\",\n \"resource_server_identifier\": \"resource_server_identifier\",\n \"async_approval_notification_channels\": [\n \"guardian-push\"\n ],\n \"external_metadata_type\": \"cimd\",\n \"external_metadata_created_by\": \"admin\",\n \"external_metadata_status\": \"available\",\n \"external_client_id\": \"external_client_id\",\n \"jwks_uri\": \"jwks_uri\"\n}", "headers": { "Content-Type": "application/json" } @@ -816,7 +1050,7 @@ }, "response": { "status": 200, - "body": "{\n \"client_id\": \"client_id\",\n \"errors\": [\n \"errors\"\n ],\n \"validation\": {\n \"valid\": true,\n \"violations\": [\n \"violations\"\n ],\n \"warnings\": [\n \"warnings\"\n ]\n },\n \"mapped_fields\": {\n \"external_client_id\": \"external_client_id\",\n \"name\": \"name\",\n \"app_type\": \"app_type\",\n \"callbacks\": [\n \"callbacks\"\n ],\n \"logo_uri\": \"logo_uri\",\n \"description\": \"description\",\n \"grant_types\": [\n \"grant_types\"\n ],\n \"token_endpoint_auth_method\": \"token_endpoint_auth_method\",\n \"jwks_uri\": \"jwks_uri\",\n \"client_authentication_methods\": {\n \"private_key_jwt\": {\n \"credentials\": [\n {\n \"credential_type\": \"credential_type\",\n \"kid\": \"kid\",\n \"alg\": \"alg\"\n }\n ]\n }\n }\n }\n}", + "body": "{\n \"client_id\": \"client_id\",\n \"external_metadata_created_by\": \"admin\",\n \"errors\": [\n \"errors\"\n ],\n \"validation\": {\n \"valid\": true,\n \"violations\": [\n \"violations\"\n ],\n \"warnings\": [\n \"warnings\"\n ]\n },\n \"mapped_fields\": {\n \"external_client_id\": \"external_client_id\",\n \"name\": \"name\",\n \"app_type\": \"app_type\",\n \"callbacks\": [\n \"callbacks\"\n ],\n \"logo_uri\": \"logo_uri\",\n \"description\": \"description\",\n \"grant_types\": [\n \"grant_types\"\n ],\n \"token_endpoint_auth_method\": \"token_endpoint_auth_method\",\n \"jwks_uri\": \"jwks_uri\",\n \"client_authentication_methods\": {\n \"private_key_jwt\": {\n \"credentials\": [\n {\n \"credential_type\": \"credential_type\",\n \"kid\": \"kid\",\n \"alg\": \"alg\"\n }\n ]\n }\n }\n }\n}", "headers": { "Content-Type": "application/json" } @@ -864,6 +1098,61 @@ } } }, + { + "id": "e4f1c4be-c358-48c6-9536-845bfd9b7f1e", + "name": "Search clients using SCIM or Lucene filter syntax - default", + "request": { + "urlPathTemplate": "/clients/search", + "method": "GET", + "headers": { + "Authorization": { + "matches": "Bearer .+" + } + }, + "queryParameters": { + "q": { + "equalTo": "q" + }, + "parser": { + "equalTo": "scim" + }, + "fields": { + "equalTo": "fields" + }, + "include_fields": { + "equalTo": "true" + }, + "take": { + "equalTo": "1" + }, + "from": { + "equalTo": "from" + }, + "sort": { + "equalTo": "name" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"clients\": [\n {\n \"client_id\": \"client_id\",\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\",\n \"tenant\": \"tenant\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"global\": true,\n \"app_type\": \"native\",\n \"logo_uri\": \"logo_uri\",\n \"is_first_party\": true,\n \"oidc_conformant\": true,\n \"callbacks\": [\n \"callbacks\"\n ],\n \"allowed_origins\": [\n \"allowed_origins\"\n ],\n \"web_origins\": [\n \"web_origins\"\n ],\n \"client_aliases\": [\n \"client_aliases\"\n ],\n \"allowed_clients\": [\n \"allowed_clients\"\n ],\n \"allowed_logout_urls\": [\n \"allowed_logout_urls\"\n ],\n \"grant_types\": [\n \"grant_types\"\n ],\n \"sso\": true,\n \"sso_disabled\": true,\n \"cross_origin_authentication\": true,\n \"cross_origin_loc\": \"cross_origin_loc\",\n \"custom_login_page_on\": true,\n \"custom_login_page\": \"custom_login_page\",\n \"custom_login_page_preview\": \"custom_login_page_preview\",\n \"form_template\": \"form_template\",\n \"token_endpoint_auth_method\": \"none\",\n \"is_token_endpoint_ip_header_trusted\": true,\n \"client_metadata\": {\n \"key\": \"value\"\n },\n \"initiate_login_uri\": \"initiate_login_uri\",\n \"refresh_token\": {\n \"rotation_type\": \"rotating\",\n \"expiration_type\": \"expiring\"\n },\n \"default_organization\": {\n \"organization_id\": \"organization_id\",\n \"flows\": [\n \"client_credentials\"\n ]\n },\n \"organization_usage\": \"deny\",\n \"organization_require_behavior\": \"no_prompt\",\n \"organization_discovery_methods\": [\n \"email\"\n ],\n \"require_pushed_authorization_requests\": true,\n \"require_proof_of_possession\": true,\n \"token_vault_privileged_access\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"compliance_level\": \"none\",\n \"skip_non_verifiable_callback_uri_confirmation_prompt\": true,\n \"par_request_expiry\": 1,\n \"token_quota\": {\n \"client_credentials\": {}\n },\n \"express_configuration\": {\n \"initiate_login_uri_template\": \"initiate_login_uri_template\",\n \"user_attribute_profile_id\": \"user_attribute_profile_id\",\n \"connection_profile_id\": \"connection_profile_id\",\n \"enable_client\": true,\n \"enable_organization\": true,\n \"okta_oin_client_id\": \"okta_oin_client_id\",\n \"admin_login_domain\": \"admin_login_domain\"\n },\n \"my_organization_configuration\": {\n \"allowed_strategies\": [\n \"pingfederate\"\n ],\n \"connection_deletion_behavior\": \"allow\"\n },\n \"identity_assertion_authorization_grant\": {\n \"active\": true\n },\n \"anonymous_sessions\": {\n \"active\": true\n },\n \"enforce_anon_session_transfer_network_binding\": \"ip\",\n \"third_party_security_mode\": \"strict\",\n \"redirection_policy\": \"allow_always\",\n \"resource_server_identifier\": \"resource_server_identifier\",\n \"async_approval_notification_channels\": [\n \"guardian-push\"\n ],\n \"external_metadata_type\": \"cimd\",\n \"external_metadata_created_by\": \"admin\",\n \"external_metadata_status\": \"available\",\n \"external_client_id\": \"external_client_id\",\n \"jwks_uri\": \"jwks_uri\"\n }\n ],\n \"next\": \"next\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "e4f1c4be-c358-48c6-9536-845bfd9b7f1e", + "persistent": true, + "priority": 3, + "metadata": { + "mocklab": { + "created": { + "at": "2020-01-01T00:00:00.000Z", + "via": "SYSTEM" + } + } + }, + "postServeActions": [] + }, { "id": "12071cdc-1adc-4b32-8601-2cd12aa19c0c", "name": "Get client by ID - default", @@ -891,7 +1180,7 @@ }, "response": { "status": 200, - "body": "{\n \"client_id\": \"client_id\",\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\",\n \"tenant\": \"tenant\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"global\": true,\n \"client_secret\": \"client_secret\",\n \"app_type\": \"native\",\n \"logo_uri\": \"logo_uri\",\n \"is_first_party\": true,\n \"oidc_conformant\": true,\n \"callbacks\": [\n \"callbacks\"\n ],\n \"allowed_origins\": [\n \"allowed_origins\"\n ],\n \"web_origins\": [\n \"web_origins\"\n ],\n \"client_aliases\": [\n \"client_aliases\"\n ],\n \"allowed_clients\": [\n \"allowed_clients\"\n ],\n \"allowed_logout_urls\": [\n \"allowed_logout_urls\"\n ],\n \"session_transfer\": {\n \"can_create_session_transfer_token\": true,\n \"enforce_cascade_revocation\": true,\n \"allowed_authentication_methods\": [\n \"cookie\"\n ],\n \"enforce_device_binding\": \"ip\",\n \"allow_refresh_token\": true,\n \"enforce_online_refresh_tokens\": true,\n \"delegation\": {\n \"allow_delegated_access\": true,\n \"enforce_device_binding\": \"ip\"\n }\n },\n \"oidc_logout\": {\n \"backchannel_logout_urls\": [\n \"backchannel_logout_urls\"\n ],\n \"backchannel_logout_initiators\": {\n \"mode\": \"custom\",\n \"selected_initiators\": [\n \"rp-logout\"\n ]\n },\n \"backchannel_logout_session_metadata\": {\n \"include\": true\n }\n },\n \"grant_types\": [\n \"grant_types\"\n ],\n \"jwt_configuration\": {\n \"lifetime_in_seconds\": 1,\n \"secret_encoded\": true,\n \"scopes\": {\n \"key\": \"value\"\n },\n \"alg\": \"HS256\"\n },\n \"signing_keys\": [\n {\n \"pkcs7\": \"pkcs7\",\n \"cert\": \"cert\",\n \"subject\": \"subject\"\n }\n ],\n \"encryption_key\": {\n \"pub\": \"pub\",\n \"cert\": \"cert\",\n \"subject\": \"subject\"\n },\n \"sso\": true,\n \"sso_disabled\": true,\n \"cross_origin_authentication\": true,\n \"cross_origin_loc\": \"cross_origin_loc\",\n \"custom_login_page_on\": true,\n \"custom_login_page\": \"custom_login_page\",\n \"custom_login_page_preview\": \"custom_login_page_preview\",\n \"form_template\": \"form_template\",\n \"addons\": {\n \"aws\": {\n \"principal\": \"principal\",\n \"role\": \"role\",\n \"lifetime_in_seconds\": 1\n },\n \"azure_blob\": {\n \"accountName\": \"accountName\",\n \"storageAccessKey\": \"storageAccessKey\",\n \"containerName\": \"containerName\",\n \"blobName\": \"blobName\",\n \"expiration\": 1,\n \"signedIdentifier\": \"signedIdentifier\",\n \"blob_read\": true,\n \"blob_write\": true,\n \"blob_delete\": true,\n \"container_read\": true,\n \"container_write\": true,\n \"container_delete\": true,\n \"container_list\": true\n },\n \"azure_sb\": {\n \"namespace\": \"namespace\",\n \"sasKeyName\": \"sasKeyName\",\n \"sasKey\": \"sasKey\",\n \"entityPath\": \"entityPath\",\n \"expiration\": 1\n },\n \"rms\": {\n \"url\": \"url\"\n },\n \"mscrm\": {\n \"url\": \"url\"\n },\n \"slack\": {\n \"team\": \"team\"\n },\n \"sentry\": {\n \"org_slug\": \"org_slug\",\n \"base_url\": \"base_url\"\n },\n \"box\": {\n \"key\": \"value\"\n },\n \"cloudbees\": {\n \"key\": \"value\"\n },\n \"concur\": {\n \"key\": \"value\"\n },\n \"dropbox\": {\n \"key\": \"value\"\n },\n \"echosign\": {\n \"domain\": \"domain\"\n },\n \"egnyte\": {\n \"domain\": \"domain\"\n },\n \"firebase\": {\n \"secret\": \"secret\",\n \"private_key_id\": \"private_key_id\",\n \"private_key\": \"private_key\",\n \"client_email\": \"client_email\",\n \"lifetime_in_seconds\": 1\n },\n \"newrelic\": {\n \"account\": \"account\"\n },\n \"office365\": {\n \"domain\": \"domain\",\n \"connection\": \"connection\"\n },\n \"salesforce\": {\n \"entity_id\": \"entity_id\"\n },\n \"salesforce_api\": {\n \"clientid\": \"clientid\",\n \"principal\": \"principal\",\n \"communityName\": \"communityName\",\n \"community_url_section\": \"community_url_section\"\n },\n \"salesforce_sandbox_api\": {\n \"clientid\": \"clientid\",\n \"principal\": \"principal\",\n \"communityName\": \"communityName\",\n \"community_url_section\": \"community_url_section\"\n },\n \"samlp\": {\n \"mappings\": {\n \"key\": \"value\"\n },\n \"audience\": \"audience\",\n \"recipient\": \"recipient\",\n \"createUpnClaim\": true,\n \"mapUnknownClaimsAsIs\": true,\n \"passthroughClaimsWithNoMapping\": true,\n \"mapIdentities\": true,\n \"signatureAlgorithm\": \"signatureAlgorithm\",\n \"digestAlgorithm\": \"digestAlgorithm\",\n \"issuer\": \"issuer\",\n \"destination\": \"destination\",\n \"lifetimeInSeconds\": 1,\n \"signResponse\": true,\n \"nameIdentifierFormat\": \"nameIdentifierFormat\",\n \"nameIdentifierProbes\": [\n \"nameIdentifierProbes\"\n ],\n \"authnContextClassRef\": \"authnContextClassRef\"\n },\n \"layer\": {\n \"providerId\": \"providerId\",\n \"keyId\": \"keyId\",\n \"privateKey\": \"privateKey\",\n \"principal\": \"principal\",\n \"expiration\": 1\n },\n \"sap_api\": {\n \"clientid\": \"clientid\",\n \"usernameAttribute\": \"usernameAttribute\",\n \"tokenEndpointUrl\": \"tokenEndpointUrl\",\n \"scope\": \"scope\",\n \"servicePassword\": \"servicePassword\",\n \"nameIdentifierFormat\": \"nameIdentifierFormat\"\n },\n \"sharepoint\": {\n \"url\": \"url\",\n \"external_url\": [\n \"external_url\"\n ]\n },\n \"springcm\": {\n \"acsurl\": \"acsurl\"\n },\n \"wams\": {\n \"masterkey\": \"masterkey\"\n },\n \"wsfed\": {\n \"key\": \"value\"\n },\n \"zendesk\": {\n \"accountName\": \"accountName\"\n },\n \"zoom\": {\n \"account\": \"account\"\n },\n \"sso_integration\": {\n \"name\": \"name\",\n \"version\": \"version\"\n }\n },\n \"token_endpoint_auth_method\": \"none\",\n \"is_token_endpoint_ip_header_trusted\": true,\n \"client_metadata\": {\n \"key\": \"value\"\n },\n \"mobile\": {\n \"android\": {\n \"app_package_name\": \"app_package_name\",\n \"sha256_cert_fingerprints\": [\n \"sha256_cert_fingerprints\"\n ]\n },\n \"ios\": {\n \"team_id\": \"team_id\",\n \"app_bundle_identifier\": \"app_bundle_identifier\"\n }\n },\n \"initiate_login_uri\": \"initiate_login_uri\",\n \"native_social_login\": {\n \"apple\": {\n \"enabled\": true\n },\n \"facebook\": {\n \"enabled\": true\n },\n \"google\": {\n \"enabled\": true\n }\n },\n \"fedcm_login\": {\n \"google\": {\n \"is_enabled\": true\n }\n },\n \"refresh_token\": {\n \"rotation_type\": \"rotating\",\n \"expiration_type\": \"expiring\",\n \"leeway\": 1,\n \"token_lifetime\": 1,\n \"infinite_token_lifetime\": true,\n \"idle_token_lifetime\": 1,\n \"infinite_idle_token_lifetime\": true,\n \"policies\": [\n {\n \"audience\": \"audience\",\n \"scope\": [\n \"scope\"\n ]\n }\n ]\n },\n \"default_organization\": {\n \"organization_id\": \"organization_id\",\n \"flows\": [\n \"client_credentials\"\n ]\n },\n \"organization_usage\": \"deny\",\n \"organization_require_behavior\": \"no_prompt\",\n \"organization_discovery_methods\": [\n \"email\"\n ],\n \"client_authentication_methods\": {\n \"private_key_jwt\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"tls_client_auth\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"self_signed_tls_client_auth\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n }\n },\n \"require_pushed_authorization_requests\": true,\n \"require_proof_of_possession\": true,\n \"signed_request_object\": {\n \"required\": true,\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"token_vault_privileged_access\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ],\n \"ip_allowlist\": [\n \"ip_allowlist\"\n ],\n \"grants\": [\n {\n \"connection\": \"connection\",\n \"scopes\": [\n \"scopes\"\n ]\n }\n ]\n },\n \"compliance_level\": \"none\",\n \"skip_non_verifiable_callback_uri_confirmation_prompt\": true,\n \"token_exchange\": {\n \"allow_any_profile_of_type\": [\n \"custom_authentication\"\n ]\n },\n \"par_request_expiry\": 1,\n \"token_quota\": {\n \"client_credentials\": {\n \"enforce\": true,\n \"per_day\": 1,\n \"per_hour\": 1\n }\n },\n \"express_configuration\": {\n \"initiate_login_uri_template\": \"initiate_login_uri_template\",\n \"user_attribute_profile_id\": \"user_attribute_profile_id\",\n \"connection_profile_id\": \"connection_profile_id\",\n \"enable_client\": true,\n \"enable_organization\": true,\n \"linked_clients\": [\n {\n \"client_id\": \"client_id\"\n }\n ],\n \"okta_oin_client_id\": \"okta_oin_client_id\",\n \"admin_login_domain\": \"admin_login_domain\",\n \"oin_submission_id\": \"oin_submission_id\"\n },\n \"b2b_integration_configuration\": {\n \"sso_profiles\": [\n \"sso_profiles\"\n ],\n \"integration_type\": \"custom_auth_server\"\n },\n \"my_organization_configuration\": {\n \"connection_profile_id\": \"connection_profile_id\",\n \"user_attribute_profile_id\": \"user_attribute_profile_id\",\n \"allowed_strategies\": [\n \"pingfederate\"\n ],\n \"third_party_client_access\": {\n \"default_value\": \"block\",\n \"allowed_values\": [\n \"allow\"\n ]\n },\n \"connection_deletion_behavior\": \"allow\",\n \"invitation_landing_client_id\": \"invitation_landing_client_id\",\n \"enforce_permission_ceiling\": true,\n \"enforce_self_assignment_restriction\": true\n },\n \"identity_assertion_authorization_grant\": {\n \"active\": true\n },\n \"anonymous_sessions\": {\n \"active\": true\n },\n \"third_party_security_mode\": \"strict\",\n \"redirection_policy\": \"allow_always\",\n \"resource_server_identifier\": \"resource_server_identifier\",\n \"async_approval_notification_channels\": [\n \"guardian-push\"\n ],\n \"external_metadata_type\": \"cimd\",\n \"external_metadata_created_by\": \"admin\",\n \"external_client_id\": \"external_client_id\",\n \"jwks_uri\": \"jwks_uri\"\n}", + "body": "{\n \"client_id\": \"client_id\",\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\",\n \"tenant\": \"tenant\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"global\": true,\n \"client_secret\": \"client_secret\",\n \"app_type\": \"native\",\n \"logo_uri\": \"logo_uri\",\n \"is_first_party\": true,\n \"oidc_conformant\": true,\n \"callbacks\": [\n \"callbacks\"\n ],\n \"allowed_origins\": [\n \"allowed_origins\"\n ],\n \"web_origins\": [\n \"web_origins\"\n ],\n \"client_aliases\": [\n \"client_aliases\"\n ],\n \"allowed_clients\": [\n \"allowed_clients\"\n ],\n \"allowed_logout_urls\": [\n \"allowed_logout_urls\"\n ],\n \"session_transfer\": {\n \"can_create_session_transfer_token\": true,\n \"enforce_cascade_revocation\": true,\n \"allowed_authentication_methods\": [\n \"cookie\"\n ],\n \"enforce_device_binding\": \"ip\",\n \"allow_refresh_token\": true,\n \"enforce_online_refresh_tokens\": true,\n \"delegation\": {\n \"allow_delegated_access\": true,\n \"enforce_device_binding\": \"ip\"\n }\n },\n \"oidc_logout\": {\n \"backchannel_logout_urls\": [\n \"backchannel_logout_urls\"\n ],\n \"backchannel_logout_initiators\": {\n \"mode\": \"custom\",\n \"selected_initiators\": [\n \"rp-logout\"\n ]\n },\n \"backchannel_logout_session_metadata\": {\n \"include\": true\n }\n },\n \"grant_types\": [\n \"grant_types\"\n ],\n \"jwt_configuration\": {\n \"lifetime_in_seconds\": 1,\n \"secret_encoded\": true,\n \"scopes\": {\n \"key\": \"value\"\n },\n \"alg\": \"HS256\"\n },\n \"signing_keys\": [\n {\n \"pkcs7\": \"pkcs7\",\n \"cert\": \"cert\",\n \"subject\": \"subject\"\n }\n ],\n \"encryption_key\": {\n \"pub\": \"pub\",\n \"cert\": \"cert\",\n \"subject\": \"subject\"\n },\n \"sso\": true,\n \"sso_disabled\": true,\n \"cross_origin_authentication\": true,\n \"cross_origin_loc\": \"cross_origin_loc\",\n \"custom_login_page_on\": true,\n \"custom_login_page\": \"custom_login_page\",\n \"custom_login_page_preview\": \"custom_login_page_preview\",\n \"form_template\": \"form_template\",\n \"addons\": {\n \"aws\": {\n \"principal\": \"principal\",\n \"role\": \"role\",\n \"lifetime_in_seconds\": 1\n },\n \"azure_blob\": {\n \"accountName\": \"accountName\",\n \"storageAccessKey\": \"storageAccessKey\",\n \"containerName\": \"containerName\",\n \"blobName\": \"blobName\",\n \"expiration\": 1,\n \"signedIdentifier\": \"signedIdentifier\",\n \"blob_read\": true,\n \"blob_write\": true,\n \"blob_delete\": true,\n \"container_read\": true,\n \"container_write\": true,\n \"container_delete\": true,\n \"container_list\": true\n },\n \"azure_sb\": {\n \"namespace\": \"namespace\",\n \"sasKeyName\": \"sasKeyName\",\n \"sasKey\": \"sasKey\",\n \"entityPath\": \"entityPath\",\n \"expiration\": 1\n },\n \"rms\": {\n \"url\": \"url\"\n },\n \"mscrm\": {\n \"url\": \"url\"\n },\n \"slack\": {\n \"team\": \"team\"\n },\n \"sentry\": {\n \"org_slug\": \"org_slug\",\n \"base_url\": \"base_url\"\n },\n \"box\": {\n \"key\": \"value\"\n },\n \"cloudbees\": {\n \"key\": \"value\"\n },\n \"concur\": {\n \"key\": \"value\"\n },\n \"dropbox\": {\n \"key\": \"value\"\n },\n \"echosign\": {\n \"domain\": \"domain\"\n },\n \"egnyte\": {\n \"domain\": \"domain\"\n },\n \"firebase\": {\n \"secret\": \"secret\",\n \"private_key_id\": \"private_key_id\",\n \"private_key\": \"private_key\",\n \"client_email\": \"client_email\",\n \"lifetime_in_seconds\": 1\n },\n \"newrelic\": {\n \"account\": \"account\"\n },\n \"office365\": {\n \"domain\": \"domain\",\n \"connection\": \"connection\"\n },\n \"salesforce\": {\n \"entity_id\": \"entity_id\"\n },\n \"salesforce_api\": {\n \"clientid\": \"clientid\",\n \"principal\": \"principal\",\n \"communityName\": \"communityName\",\n \"community_url_section\": \"community_url_section\"\n },\n \"salesforce_sandbox_api\": {\n \"clientid\": \"clientid\",\n \"principal\": \"principal\",\n \"communityName\": \"communityName\",\n \"community_url_section\": \"community_url_section\"\n },\n \"samlp\": {\n \"mappings\": {\n \"key\": \"value\"\n },\n \"audience\": \"audience\",\n \"recipient\": \"recipient\",\n \"createUpnClaim\": true,\n \"mapUnknownClaimsAsIs\": true,\n \"passthroughClaimsWithNoMapping\": true,\n \"mapIdentities\": true,\n \"signatureAlgorithm\": \"signatureAlgorithm\",\n \"digestAlgorithm\": \"digestAlgorithm\",\n \"issuer\": \"issuer\",\n \"destination\": \"destination\",\n \"lifetimeInSeconds\": 1,\n \"signResponse\": true,\n \"nameIdentifierFormat\": \"nameIdentifierFormat\",\n \"nameIdentifierProbes\": [\n \"nameIdentifierProbes\"\n ],\n \"authnContextClassRef\": \"authnContextClassRef\"\n },\n \"layer\": {\n \"providerId\": \"providerId\",\n \"keyId\": \"keyId\",\n \"privateKey\": \"privateKey\",\n \"principal\": \"principal\",\n \"expiration\": 1\n },\n \"sap_api\": {\n \"clientid\": \"clientid\",\n \"usernameAttribute\": \"usernameAttribute\",\n \"tokenEndpointUrl\": \"tokenEndpointUrl\",\n \"scope\": \"scope\",\n \"servicePassword\": \"servicePassword\",\n \"nameIdentifierFormat\": \"nameIdentifierFormat\"\n },\n \"sharepoint\": {\n \"url\": \"url\",\n \"external_url\": [\n \"external_url\"\n ]\n },\n \"springcm\": {\n \"acsurl\": \"acsurl\"\n },\n \"wams\": {\n \"masterkey\": \"masterkey\"\n },\n \"wsfed\": {\n \"key\": \"value\"\n },\n \"zendesk\": {\n \"accountName\": \"accountName\"\n },\n \"zoom\": {\n \"account\": \"account\"\n },\n \"sso_integration\": {\n \"name\": \"name\",\n \"version\": \"version\"\n }\n },\n \"token_endpoint_auth_method\": \"none\",\n \"is_token_endpoint_ip_header_trusted\": true,\n \"client_metadata\": {\n \"key\": \"value\"\n },\n \"mobile\": {\n \"android\": {\n \"app_package_name\": \"app_package_name\",\n \"sha256_cert_fingerprints\": [\n \"sha256_cert_fingerprints\"\n ]\n },\n \"ios\": {\n \"team_id\": \"team_id\",\n \"app_bundle_identifier\": \"app_bundle_identifier\"\n }\n },\n \"initiate_login_uri\": \"initiate_login_uri\",\n \"native_social_login\": {\n \"apple\": {\n \"enabled\": true\n },\n \"facebook\": {\n \"enabled\": true\n },\n \"google\": {\n \"enabled\": true\n }\n },\n \"fedcm_login\": {\n \"google\": {\n \"is_enabled\": true\n }\n },\n \"refresh_token\": {\n \"rotation_type\": \"rotating\",\n \"expiration_type\": \"expiring\",\n \"leeway\": 1,\n \"token_lifetime\": 1,\n \"infinite_token_lifetime\": true,\n \"idle_token_lifetime\": 1,\n \"infinite_idle_token_lifetime\": true,\n \"policies\": [\n {\n \"audience\": \"audience\",\n \"scope\": [\n \"scope\"\n ]\n }\n ]\n },\n \"default_organization\": {\n \"organization_id\": \"organization_id\",\n \"flows\": [\n \"client_credentials\"\n ]\n },\n \"organization_usage\": \"deny\",\n \"organization_require_behavior\": \"no_prompt\",\n \"organization_discovery_methods\": [\n \"email\"\n ],\n \"client_authentication_methods\": {\n \"private_key_jwt\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"tls_client_auth\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"self_signed_tls_client_auth\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n }\n },\n \"require_pushed_authorization_requests\": true,\n \"require_proof_of_possession\": true,\n \"signed_request_object\": {\n \"required\": true,\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"token_vault_privileged_access\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ],\n \"ip_allowlist\": [\n \"ip_allowlist\"\n ],\n \"grants\": [\n {\n \"connection\": \"connection\",\n \"scopes\": [\n \"scopes\"\n ]\n }\n ]\n },\n \"compliance_level\": \"none\",\n \"skip_non_verifiable_callback_uri_confirmation_prompt\": true,\n \"token_exchange\": {\n \"allow_any_profile_of_type\": [\n \"custom_authentication\"\n ]\n },\n \"par_request_expiry\": 1,\n \"token_quota\": {\n \"client_credentials\": {\n \"enforce\": true,\n \"per_day\": 1,\n \"per_hour\": 1\n }\n },\n \"express_configuration\": {\n \"initiate_login_uri_template\": \"initiate_login_uri_template\",\n \"user_attribute_profile_id\": \"user_attribute_profile_id\",\n \"connection_profile_id\": \"connection_profile_id\",\n \"enable_client\": true,\n \"enable_organization\": true,\n \"linked_clients\": [\n {\n \"client_id\": \"client_id\"\n }\n ],\n \"okta_oin_client_id\": \"okta_oin_client_id\",\n \"admin_login_domain\": \"admin_login_domain\",\n \"oin_submission_id\": \"oin_submission_id\"\n },\n \"b2b_integration_configuration\": {\n \"sso_profiles\": [\n \"sso_profiles\"\n ],\n \"integration_type\": \"custom_auth_server\"\n },\n \"my_organization_configuration\": {\n \"connection_profile_id\": \"connection_profile_id\",\n \"user_attribute_profile_id\": \"user_attribute_profile_id\",\n \"allowed_strategies\": [\n \"pingfederate\"\n ],\n \"third_party_client_access\": {\n \"default_value\": \"block\",\n \"allowed_values\": [\n \"allow\"\n ]\n },\n \"connection_deletion_behavior\": \"allow\",\n \"invitation_landing_client_id\": \"invitation_landing_client_id\",\n \"enforce_permission_ceiling\": true,\n \"enforce_self_assignment_restriction\": true\n },\n \"identity_assertion_authorization_grant\": {\n \"active\": true\n },\n \"anonymous_sessions\": {\n \"active\": true\n },\n \"enforce_anon_session_transfer_network_binding\": \"ip\",\n \"third_party_security_mode\": \"strict\",\n \"redirection_policy\": \"allow_always\",\n \"resource_server_identifier\": \"resource_server_identifier\",\n \"async_approval_notification_channels\": [\n \"guardian-push\"\n ],\n \"external_metadata_type\": \"cimd\",\n \"external_metadata_created_by\": \"admin\",\n \"external_metadata_status\": \"available\",\n \"external_client_id\": \"external_client_id\",\n \"jwks_uri\": \"jwks_uri\"\n}", "headers": { "Content-Type": "application/json" } @@ -963,7 +1252,7 @@ }, "response": { "status": 200, - "body": "{\n \"client_id\": \"client_id\",\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\",\n \"tenant\": \"tenant\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"global\": true,\n \"client_secret\": \"client_secret\",\n \"app_type\": \"native\",\n \"logo_uri\": \"logo_uri\",\n \"is_first_party\": true,\n \"oidc_conformant\": true,\n \"callbacks\": [\n \"callbacks\"\n ],\n \"allowed_origins\": [\n \"allowed_origins\"\n ],\n \"web_origins\": [\n \"web_origins\"\n ],\n \"client_aliases\": [\n \"client_aliases\"\n ],\n \"allowed_clients\": [\n \"allowed_clients\"\n ],\n \"allowed_logout_urls\": [\n \"allowed_logout_urls\"\n ],\n \"session_transfer\": {\n \"can_create_session_transfer_token\": true,\n \"enforce_cascade_revocation\": true,\n \"allowed_authentication_methods\": [\n \"cookie\"\n ],\n \"enforce_device_binding\": \"ip\",\n \"allow_refresh_token\": true,\n \"enforce_online_refresh_tokens\": true,\n \"delegation\": {\n \"allow_delegated_access\": true,\n \"enforce_device_binding\": \"ip\"\n }\n },\n \"oidc_logout\": {\n \"backchannel_logout_urls\": [\n \"backchannel_logout_urls\"\n ],\n \"backchannel_logout_initiators\": {\n \"mode\": \"custom\",\n \"selected_initiators\": [\n \"rp-logout\"\n ]\n },\n \"backchannel_logout_session_metadata\": {\n \"include\": true\n }\n },\n \"grant_types\": [\n \"grant_types\"\n ],\n \"jwt_configuration\": {\n \"lifetime_in_seconds\": 1,\n \"secret_encoded\": true,\n \"scopes\": {\n \"key\": \"value\"\n },\n \"alg\": \"HS256\"\n },\n \"signing_keys\": [\n {\n \"pkcs7\": \"pkcs7\",\n \"cert\": \"cert\",\n \"subject\": \"subject\"\n }\n ],\n \"encryption_key\": {\n \"pub\": \"pub\",\n \"cert\": \"cert\",\n \"subject\": \"subject\"\n },\n \"sso\": true,\n \"sso_disabled\": true,\n \"cross_origin_authentication\": true,\n \"cross_origin_loc\": \"cross_origin_loc\",\n \"custom_login_page_on\": true,\n \"custom_login_page\": \"custom_login_page\",\n \"custom_login_page_preview\": \"custom_login_page_preview\",\n \"form_template\": \"form_template\",\n \"addons\": {\n \"aws\": {\n \"principal\": \"principal\",\n \"role\": \"role\",\n \"lifetime_in_seconds\": 1\n },\n \"azure_blob\": {\n \"accountName\": \"accountName\",\n \"storageAccessKey\": \"storageAccessKey\",\n \"containerName\": \"containerName\",\n \"blobName\": \"blobName\",\n \"expiration\": 1,\n \"signedIdentifier\": \"signedIdentifier\",\n \"blob_read\": true,\n \"blob_write\": true,\n \"blob_delete\": true,\n \"container_read\": true,\n \"container_write\": true,\n \"container_delete\": true,\n \"container_list\": true\n },\n \"azure_sb\": {\n \"namespace\": \"namespace\",\n \"sasKeyName\": \"sasKeyName\",\n \"sasKey\": \"sasKey\",\n \"entityPath\": \"entityPath\",\n \"expiration\": 1\n },\n \"rms\": {\n \"url\": \"url\"\n },\n \"mscrm\": {\n \"url\": \"url\"\n },\n \"slack\": {\n \"team\": \"team\"\n },\n \"sentry\": {\n \"org_slug\": \"org_slug\",\n \"base_url\": \"base_url\"\n },\n \"box\": {\n \"key\": \"value\"\n },\n \"cloudbees\": {\n \"key\": \"value\"\n },\n \"concur\": {\n \"key\": \"value\"\n },\n \"dropbox\": {\n \"key\": \"value\"\n },\n \"echosign\": {\n \"domain\": \"domain\"\n },\n \"egnyte\": {\n \"domain\": \"domain\"\n },\n \"firebase\": {\n \"secret\": \"secret\",\n \"private_key_id\": \"private_key_id\",\n \"private_key\": \"private_key\",\n \"client_email\": \"client_email\",\n \"lifetime_in_seconds\": 1\n },\n \"newrelic\": {\n \"account\": \"account\"\n },\n \"office365\": {\n \"domain\": \"domain\",\n \"connection\": \"connection\"\n },\n \"salesforce\": {\n \"entity_id\": \"entity_id\"\n },\n \"salesforce_api\": {\n \"clientid\": \"clientid\",\n \"principal\": \"principal\",\n \"communityName\": \"communityName\",\n \"community_url_section\": \"community_url_section\"\n },\n \"salesforce_sandbox_api\": {\n \"clientid\": \"clientid\",\n \"principal\": \"principal\",\n \"communityName\": \"communityName\",\n \"community_url_section\": \"community_url_section\"\n },\n \"samlp\": {\n \"mappings\": {\n \"key\": \"value\"\n },\n \"audience\": \"audience\",\n \"recipient\": \"recipient\",\n \"createUpnClaim\": true,\n \"mapUnknownClaimsAsIs\": true,\n \"passthroughClaimsWithNoMapping\": true,\n \"mapIdentities\": true,\n \"signatureAlgorithm\": \"signatureAlgorithm\",\n \"digestAlgorithm\": \"digestAlgorithm\",\n \"issuer\": \"issuer\",\n \"destination\": \"destination\",\n \"lifetimeInSeconds\": 1,\n \"signResponse\": true,\n \"nameIdentifierFormat\": \"nameIdentifierFormat\",\n \"nameIdentifierProbes\": [\n \"nameIdentifierProbes\"\n ],\n \"authnContextClassRef\": \"authnContextClassRef\"\n },\n \"layer\": {\n \"providerId\": \"providerId\",\n \"keyId\": \"keyId\",\n \"privateKey\": \"privateKey\",\n \"principal\": \"principal\",\n \"expiration\": 1\n },\n \"sap_api\": {\n \"clientid\": \"clientid\",\n \"usernameAttribute\": \"usernameAttribute\",\n \"tokenEndpointUrl\": \"tokenEndpointUrl\",\n \"scope\": \"scope\",\n \"servicePassword\": \"servicePassword\",\n \"nameIdentifierFormat\": \"nameIdentifierFormat\"\n },\n \"sharepoint\": {\n \"url\": \"url\",\n \"external_url\": [\n \"external_url\"\n ]\n },\n \"springcm\": {\n \"acsurl\": \"acsurl\"\n },\n \"wams\": {\n \"masterkey\": \"masterkey\"\n },\n \"wsfed\": {\n \"key\": \"value\"\n },\n \"zendesk\": {\n \"accountName\": \"accountName\"\n },\n \"zoom\": {\n \"account\": \"account\"\n },\n \"sso_integration\": {\n \"name\": \"name\",\n \"version\": \"version\"\n }\n },\n \"token_endpoint_auth_method\": \"none\",\n \"is_token_endpoint_ip_header_trusted\": true,\n \"client_metadata\": {\n \"key\": \"value\"\n },\n \"mobile\": {\n \"android\": {\n \"app_package_name\": \"app_package_name\",\n \"sha256_cert_fingerprints\": [\n \"sha256_cert_fingerprints\"\n ]\n },\n \"ios\": {\n \"team_id\": \"team_id\",\n \"app_bundle_identifier\": \"app_bundle_identifier\"\n }\n },\n \"initiate_login_uri\": \"initiate_login_uri\",\n \"native_social_login\": {\n \"apple\": {\n \"enabled\": true\n },\n \"facebook\": {\n \"enabled\": true\n },\n \"google\": {\n \"enabled\": true\n }\n },\n \"fedcm_login\": {\n \"google\": {\n \"is_enabled\": true\n }\n },\n \"refresh_token\": {\n \"rotation_type\": \"rotating\",\n \"expiration_type\": \"expiring\",\n \"leeway\": 1,\n \"token_lifetime\": 1,\n \"infinite_token_lifetime\": true,\n \"idle_token_lifetime\": 1,\n \"infinite_idle_token_lifetime\": true,\n \"policies\": [\n {\n \"audience\": \"audience\",\n \"scope\": [\n \"scope\"\n ]\n }\n ]\n },\n \"default_organization\": {\n \"organization_id\": \"organization_id\",\n \"flows\": [\n \"client_credentials\"\n ]\n },\n \"organization_usage\": \"deny\",\n \"organization_require_behavior\": \"no_prompt\",\n \"organization_discovery_methods\": [\n \"email\"\n ],\n \"client_authentication_methods\": {\n \"private_key_jwt\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"tls_client_auth\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"self_signed_tls_client_auth\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n }\n },\n \"require_pushed_authorization_requests\": true,\n \"require_proof_of_possession\": true,\n \"signed_request_object\": {\n \"required\": true,\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"token_vault_privileged_access\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ],\n \"ip_allowlist\": [\n \"ip_allowlist\"\n ],\n \"grants\": [\n {\n \"connection\": \"connection\",\n \"scopes\": [\n \"scopes\"\n ]\n }\n ]\n },\n \"compliance_level\": \"none\",\n \"skip_non_verifiable_callback_uri_confirmation_prompt\": true,\n \"token_exchange\": {\n \"allow_any_profile_of_type\": [\n \"custom_authentication\"\n ]\n },\n \"par_request_expiry\": 1,\n \"token_quota\": {\n \"client_credentials\": {\n \"enforce\": true,\n \"per_day\": 1,\n \"per_hour\": 1\n }\n },\n \"express_configuration\": {\n \"initiate_login_uri_template\": \"initiate_login_uri_template\",\n \"user_attribute_profile_id\": \"user_attribute_profile_id\",\n \"connection_profile_id\": \"connection_profile_id\",\n \"enable_client\": true,\n \"enable_organization\": true,\n \"linked_clients\": [\n {\n \"client_id\": \"client_id\"\n }\n ],\n \"okta_oin_client_id\": \"okta_oin_client_id\",\n \"admin_login_domain\": \"admin_login_domain\",\n \"oin_submission_id\": \"oin_submission_id\"\n },\n \"b2b_integration_configuration\": {\n \"sso_profiles\": [\n \"sso_profiles\"\n ],\n \"integration_type\": \"custom_auth_server\"\n },\n \"my_organization_configuration\": {\n \"connection_profile_id\": \"connection_profile_id\",\n \"user_attribute_profile_id\": \"user_attribute_profile_id\",\n \"allowed_strategies\": [\n \"pingfederate\"\n ],\n \"third_party_client_access\": {\n \"default_value\": \"block\",\n \"allowed_values\": [\n \"allow\"\n ]\n },\n \"connection_deletion_behavior\": \"allow\",\n \"invitation_landing_client_id\": \"invitation_landing_client_id\",\n \"enforce_permission_ceiling\": true,\n \"enforce_self_assignment_restriction\": true\n },\n \"identity_assertion_authorization_grant\": {\n \"active\": true\n },\n \"anonymous_sessions\": {\n \"active\": true\n },\n \"third_party_security_mode\": \"strict\",\n \"redirection_policy\": \"allow_always\",\n \"resource_server_identifier\": \"resource_server_identifier\",\n \"async_approval_notification_channels\": [\n \"guardian-push\"\n ],\n \"external_metadata_type\": \"cimd\",\n \"external_metadata_created_by\": \"admin\",\n \"external_client_id\": \"external_client_id\",\n \"jwks_uri\": \"jwks_uri\"\n}", + "body": "{\n \"client_id\": \"client_id\",\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\",\n \"tenant\": \"tenant\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"global\": true,\n \"client_secret\": \"client_secret\",\n \"app_type\": \"native\",\n \"logo_uri\": \"logo_uri\",\n \"is_first_party\": true,\n \"oidc_conformant\": true,\n \"callbacks\": [\n \"callbacks\"\n ],\n \"allowed_origins\": [\n \"allowed_origins\"\n ],\n \"web_origins\": [\n \"web_origins\"\n ],\n \"client_aliases\": [\n \"client_aliases\"\n ],\n \"allowed_clients\": [\n \"allowed_clients\"\n ],\n \"allowed_logout_urls\": [\n \"allowed_logout_urls\"\n ],\n \"session_transfer\": {\n \"can_create_session_transfer_token\": true,\n \"enforce_cascade_revocation\": true,\n \"allowed_authentication_methods\": [\n \"cookie\"\n ],\n \"enforce_device_binding\": \"ip\",\n \"allow_refresh_token\": true,\n \"enforce_online_refresh_tokens\": true,\n \"delegation\": {\n \"allow_delegated_access\": true,\n \"enforce_device_binding\": \"ip\"\n }\n },\n \"oidc_logout\": {\n \"backchannel_logout_urls\": [\n \"backchannel_logout_urls\"\n ],\n \"backchannel_logout_initiators\": {\n \"mode\": \"custom\",\n \"selected_initiators\": [\n \"rp-logout\"\n ]\n },\n \"backchannel_logout_session_metadata\": {\n \"include\": true\n }\n },\n \"grant_types\": [\n \"grant_types\"\n ],\n \"jwt_configuration\": {\n \"lifetime_in_seconds\": 1,\n \"secret_encoded\": true,\n \"scopes\": {\n \"key\": \"value\"\n },\n \"alg\": \"HS256\"\n },\n \"signing_keys\": [\n {\n \"pkcs7\": \"pkcs7\",\n \"cert\": \"cert\",\n \"subject\": \"subject\"\n }\n ],\n \"encryption_key\": {\n \"pub\": \"pub\",\n \"cert\": \"cert\",\n \"subject\": \"subject\"\n },\n \"sso\": true,\n \"sso_disabled\": true,\n \"cross_origin_authentication\": true,\n \"cross_origin_loc\": \"cross_origin_loc\",\n \"custom_login_page_on\": true,\n \"custom_login_page\": \"custom_login_page\",\n \"custom_login_page_preview\": \"custom_login_page_preview\",\n \"form_template\": \"form_template\",\n \"addons\": {\n \"aws\": {\n \"principal\": \"principal\",\n \"role\": \"role\",\n \"lifetime_in_seconds\": 1\n },\n \"azure_blob\": {\n \"accountName\": \"accountName\",\n \"storageAccessKey\": \"storageAccessKey\",\n \"containerName\": \"containerName\",\n \"blobName\": \"blobName\",\n \"expiration\": 1,\n \"signedIdentifier\": \"signedIdentifier\",\n \"blob_read\": true,\n \"blob_write\": true,\n \"blob_delete\": true,\n \"container_read\": true,\n \"container_write\": true,\n \"container_delete\": true,\n \"container_list\": true\n },\n \"azure_sb\": {\n \"namespace\": \"namespace\",\n \"sasKeyName\": \"sasKeyName\",\n \"sasKey\": \"sasKey\",\n \"entityPath\": \"entityPath\",\n \"expiration\": 1\n },\n \"rms\": {\n \"url\": \"url\"\n },\n \"mscrm\": {\n \"url\": \"url\"\n },\n \"slack\": {\n \"team\": \"team\"\n },\n \"sentry\": {\n \"org_slug\": \"org_slug\",\n \"base_url\": \"base_url\"\n },\n \"box\": {\n \"key\": \"value\"\n },\n \"cloudbees\": {\n \"key\": \"value\"\n },\n \"concur\": {\n \"key\": \"value\"\n },\n \"dropbox\": {\n \"key\": \"value\"\n },\n \"echosign\": {\n \"domain\": \"domain\"\n },\n \"egnyte\": {\n \"domain\": \"domain\"\n },\n \"firebase\": {\n \"secret\": \"secret\",\n \"private_key_id\": \"private_key_id\",\n \"private_key\": \"private_key\",\n \"client_email\": \"client_email\",\n \"lifetime_in_seconds\": 1\n },\n \"newrelic\": {\n \"account\": \"account\"\n },\n \"office365\": {\n \"domain\": \"domain\",\n \"connection\": \"connection\"\n },\n \"salesforce\": {\n \"entity_id\": \"entity_id\"\n },\n \"salesforce_api\": {\n \"clientid\": \"clientid\",\n \"principal\": \"principal\",\n \"communityName\": \"communityName\",\n \"community_url_section\": \"community_url_section\"\n },\n \"salesforce_sandbox_api\": {\n \"clientid\": \"clientid\",\n \"principal\": \"principal\",\n \"communityName\": \"communityName\",\n \"community_url_section\": \"community_url_section\"\n },\n \"samlp\": {\n \"mappings\": {\n \"key\": \"value\"\n },\n \"audience\": \"audience\",\n \"recipient\": \"recipient\",\n \"createUpnClaim\": true,\n \"mapUnknownClaimsAsIs\": true,\n \"passthroughClaimsWithNoMapping\": true,\n \"mapIdentities\": true,\n \"signatureAlgorithm\": \"signatureAlgorithm\",\n \"digestAlgorithm\": \"digestAlgorithm\",\n \"issuer\": \"issuer\",\n \"destination\": \"destination\",\n \"lifetimeInSeconds\": 1,\n \"signResponse\": true,\n \"nameIdentifierFormat\": \"nameIdentifierFormat\",\n \"nameIdentifierProbes\": [\n \"nameIdentifierProbes\"\n ],\n \"authnContextClassRef\": \"authnContextClassRef\"\n },\n \"layer\": {\n \"providerId\": \"providerId\",\n \"keyId\": \"keyId\",\n \"privateKey\": \"privateKey\",\n \"principal\": \"principal\",\n \"expiration\": 1\n },\n \"sap_api\": {\n \"clientid\": \"clientid\",\n \"usernameAttribute\": \"usernameAttribute\",\n \"tokenEndpointUrl\": \"tokenEndpointUrl\",\n \"scope\": \"scope\",\n \"servicePassword\": \"servicePassword\",\n \"nameIdentifierFormat\": \"nameIdentifierFormat\"\n },\n \"sharepoint\": {\n \"url\": \"url\",\n \"external_url\": [\n \"external_url\"\n ]\n },\n \"springcm\": {\n \"acsurl\": \"acsurl\"\n },\n \"wams\": {\n \"masterkey\": \"masterkey\"\n },\n \"wsfed\": {\n \"key\": \"value\"\n },\n \"zendesk\": {\n \"accountName\": \"accountName\"\n },\n \"zoom\": {\n \"account\": \"account\"\n },\n \"sso_integration\": {\n \"name\": \"name\",\n \"version\": \"version\"\n }\n },\n \"token_endpoint_auth_method\": \"none\",\n \"is_token_endpoint_ip_header_trusted\": true,\n \"client_metadata\": {\n \"key\": \"value\"\n },\n \"mobile\": {\n \"android\": {\n \"app_package_name\": \"app_package_name\",\n \"sha256_cert_fingerprints\": [\n \"sha256_cert_fingerprints\"\n ]\n },\n \"ios\": {\n \"team_id\": \"team_id\",\n \"app_bundle_identifier\": \"app_bundle_identifier\"\n }\n },\n \"initiate_login_uri\": \"initiate_login_uri\",\n \"native_social_login\": {\n \"apple\": {\n \"enabled\": true\n },\n \"facebook\": {\n \"enabled\": true\n },\n \"google\": {\n \"enabled\": true\n }\n },\n \"fedcm_login\": {\n \"google\": {\n \"is_enabled\": true\n }\n },\n \"refresh_token\": {\n \"rotation_type\": \"rotating\",\n \"expiration_type\": \"expiring\",\n \"leeway\": 1,\n \"token_lifetime\": 1,\n \"infinite_token_lifetime\": true,\n \"idle_token_lifetime\": 1,\n \"infinite_idle_token_lifetime\": true,\n \"policies\": [\n {\n \"audience\": \"audience\",\n \"scope\": [\n \"scope\"\n ]\n }\n ]\n },\n \"default_organization\": {\n \"organization_id\": \"organization_id\",\n \"flows\": [\n \"client_credentials\"\n ]\n },\n \"organization_usage\": \"deny\",\n \"organization_require_behavior\": \"no_prompt\",\n \"organization_discovery_methods\": [\n \"email\"\n ],\n \"client_authentication_methods\": {\n \"private_key_jwt\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"tls_client_auth\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"self_signed_tls_client_auth\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n }\n },\n \"require_pushed_authorization_requests\": true,\n \"require_proof_of_possession\": true,\n \"signed_request_object\": {\n \"required\": true,\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"token_vault_privileged_access\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ],\n \"ip_allowlist\": [\n \"ip_allowlist\"\n ],\n \"grants\": [\n {\n \"connection\": \"connection\",\n \"scopes\": [\n \"scopes\"\n ]\n }\n ]\n },\n \"compliance_level\": \"none\",\n \"skip_non_verifiable_callback_uri_confirmation_prompt\": true,\n \"token_exchange\": {\n \"allow_any_profile_of_type\": [\n \"custom_authentication\"\n ]\n },\n \"par_request_expiry\": 1,\n \"token_quota\": {\n \"client_credentials\": {\n \"enforce\": true,\n \"per_day\": 1,\n \"per_hour\": 1\n }\n },\n \"express_configuration\": {\n \"initiate_login_uri_template\": \"initiate_login_uri_template\",\n \"user_attribute_profile_id\": \"user_attribute_profile_id\",\n \"connection_profile_id\": \"connection_profile_id\",\n \"enable_client\": true,\n \"enable_organization\": true,\n \"linked_clients\": [\n {\n \"client_id\": \"client_id\"\n }\n ],\n \"okta_oin_client_id\": \"okta_oin_client_id\",\n \"admin_login_domain\": \"admin_login_domain\",\n \"oin_submission_id\": \"oin_submission_id\"\n },\n \"b2b_integration_configuration\": {\n \"sso_profiles\": [\n \"sso_profiles\"\n ],\n \"integration_type\": \"custom_auth_server\"\n },\n \"my_organization_configuration\": {\n \"connection_profile_id\": \"connection_profile_id\",\n \"user_attribute_profile_id\": \"user_attribute_profile_id\",\n \"allowed_strategies\": [\n \"pingfederate\"\n ],\n \"third_party_client_access\": {\n \"default_value\": \"block\",\n \"allowed_values\": [\n \"allow\"\n ]\n },\n \"connection_deletion_behavior\": \"allow\",\n \"invitation_landing_client_id\": \"invitation_landing_client_id\",\n \"enforce_permission_ceiling\": true,\n \"enforce_self_assignment_restriction\": true\n },\n \"identity_assertion_authorization_grant\": {\n \"active\": true\n },\n \"anonymous_sessions\": {\n \"active\": true\n },\n \"enforce_anon_session_transfer_network_binding\": \"ip\",\n \"third_party_security_mode\": \"strict\",\n \"redirection_policy\": \"allow_always\",\n \"resource_server_identifier\": \"resource_server_identifier\",\n \"async_approval_notification_channels\": [\n \"guardian-push\"\n ],\n \"external_metadata_type\": \"cimd\",\n \"external_metadata_created_by\": \"admin\",\n \"external_metadata_status\": \"available\",\n \"external_client_id\": \"external_client_id\",\n \"jwks_uri\": \"jwks_uri\"\n}", "headers": { "Content-Type": "application/json" } @@ -999,7 +1288,7 @@ }, "response": { "status": 200, - "body": "{\n \"client_id\": \"client_id\",\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\",\n \"tenant\": \"tenant\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"global\": true,\n \"client_secret\": \"client_secret\",\n \"app_type\": \"native\",\n \"logo_uri\": \"logo_uri\",\n \"is_first_party\": true,\n \"oidc_conformant\": true,\n \"callbacks\": [\n \"callbacks\"\n ],\n \"allowed_origins\": [\n \"allowed_origins\"\n ],\n \"web_origins\": [\n \"web_origins\"\n ],\n \"client_aliases\": [\n \"client_aliases\"\n ],\n \"allowed_clients\": [\n \"allowed_clients\"\n ],\n \"allowed_logout_urls\": [\n \"allowed_logout_urls\"\n ],\n \"session_transfer\": {\n \"can_create_session_transfer_token\": true,\n \"enforce_cascade_revocation\": true,\n \"allowed_authentication_methods\": [\n \"cookie\"\n ],\n \"enforce_device_binding\": \"ip\",\n \"allow_refresh_token\": true,\n \"enforce_online_refresh_tokens\": true,\n \"delegation\": {\n \"allow_delegated_access\": true,\n \"enforce_device_binding\": \"ip\"\n }\n },\n \"oidc_logout\": {\n \"backchannel_logout_urls\": [\n \"backchannel_logout_urls\"\n ],\n \"backchannel_logout_initiators\": {\n \"mode\": \"custom\",\n \"selected_initiators\": [\n \"rp-logout\"\n ]\n },\n \"backchannel_logout_session_metadata\": {\n \"include\": true\n }\n },\n \"grant_types\": [\n \"grant_types\"\n ],\n \"jwt_configuration\": {\n \"lifetime_in_seconds\": 1,\n \"secret_encoded\": true,\n \"scopes\": {\n \"key\": \"value\"\n },\n \"alg\": \"HS256\"\n },\n \"signing_keys\": [\n {\n \"pkcs7\": \"pkcs7\",\n \"cert\": \"cert\",\n \"subject\": \"subject\"\n }\n ],\n \"encryption_key\": {\n \"pub\": \"pub\",\n \"cert\": \"cert\",\n \"subject\": \"subject\"\n },\n \"sso\": true,\n \"sso_disabled\": true,\n \"cross_origin_authentication\": true,\n \"cross_origin_loc\": \"cross_origin_loc\",\n \"custom_login_page_on\": true,\n \"custom_login_page\": \"custom_login_page\",\n \"custom_login_page_preview\": \"custom_login_page_preview\",\n \"form_template\": \"form_template\",\n \"addons\": {\n \"aws\": {\n \"principal\": \"principal\",\n \"role\": \"role\",\n \"lifetime_in_seconds\": 1\n },\n \"azure_blob\": {\n \"accountName\": \"accountName\",\n \"storageAccessKey\": \"storageAccessKey\",\n \"containerName\": \"containerName\",\n \"blobName\": \"blobName\",\n \"expiration\": 1,\n \"signedIdentifier\": \"signedIdentifier\",\n \"blob_read\": true,\n \"blob_write\": true,\n \"blob_delete\": true,\n \"container_read\": true,\n \"container_write\": true,\n \"container_delete\": true,\n \"container_list\": true\n },\n \"azure_sb\": {\n \"namespace\": \"namespace\",\n \"sasKeyName\": \"sasKeyName\",\n \"sasKey\": \"sasKey\",\n \"entityPath\": \"entityPath\",\n \"expiration\": 1\n },\n \"rms\": {\n \"url\": \"url\"\n },\n \"mscrm\": {\n \"url\": \"url\"\n },\n \"slack\": {\n \"team\": \"team\"\n },\n \"sentry\": {\n \"org_slug\": \"org_slug\",\n \"base_url\": \"base_url\"\n },\n \"box\": {\n \"key\": \"value\"\n },\n \"cloudbees\": {\n \"key\": \"value\"\n },\n \"concur\": {\n \"key\": \"value\"\n },\n \"dropbox\": {\n \"key\": \"value\"\n },\n \"echosign\": {\n \"domain\": \"domain\"\n },\n \"egnyte\": {\n \"domain\": \"domain\"\n },\n \"firebase\": {\n \"secret\": \"secret\",\n \"private_key_id\": \"private_key_id\",\n \"private_key\": \"private_key\",\n \"client_email\": \"client_email\",\n \"lifetime_in_seconds\": 1\n },\n \"newrelic\": {\n \"account\": \"account\"\n },\n \"office365\": {\n \"domain\": \"domain\",\n \"connection\": \"connection\"\n },\n \"salesforce\": {\n \"entity_id\": \"entity_id\"\n },\n \"salesforce_api\": {\n \"clientid\": \"clientid\",\n \"principal\": \"principal\",\n \"communityName\": \"communityName\",\n \"community_url_section\": \"community_url_section\"\n },\n \"salesforce_sandbox_api\": {\n \"clientid\": \"clientid\",\n \"principal\": \"principal\",\n \"communityName\": \"communityName\",\n \"community_url_section\": \"community_url_section\"\n },\n \"samlp\": {\n \"mappings\": {\n \"key\": \"value\"\n },\n \"audience\": \"audience\",\n \"recipient\": \"recipient\",\n \"createUpnClaim\": true,\n \"mapUnknownClaimsAsIs\": true,\n \"passthroughClaimsWithNoMapping\": true,\n \"mapIdentities\": true,\n \"signatureAlgorithm\": \"signatureAlgorithm\",\n \"digestAlgorithm\": \"digestAlgorithm\",\n \"issuer\": \"issuer\",\n \"destination\": \"destination\",\n \"lifetimeInSeconds\": 1,\n \"signResponse\": true,\n \"nameIdentifierFormat\": \"nameIdentifierFormat\",\n \"nameIdentifierProbes\": [\n \"nameIdentifierProbes\"\n ],\n \"authnContextClassRef\": \"authnContextClassRef\"\n },\n \"layer\": {\n \"providerId\": \"providerId\",\n \"keyId\": \"keyId\",\n \"privateKey\": \"privateKey\",\n \"principal\": \"principal\",\n \"expiration\": 1\n },\n \"sap_api\": {\n \"clientid\": \"clientid\",\n \"usernameAttribute\": \"usernameAttribute\",\n \"tokenEndpointUrl\": \"tokenEndpointUrl\",\n \"scope\": \"scope\",\n \"servicePassword\": \"servicePassword\",\n \"nameIdentifierFormat\": \"nameIdentifierFormat\"\n },\n \"sharepoint\": {\n \"url\": \"url\",\n \"external_url\": [\n \"external_url\"\n ]\n },\n \"springcm\": {\n \"acsurl\": \"acsurl\"\n },\n \"wams\": {\n \"masterkey\": \"masterkey\"\n },\n \"wsfed\": {\n \"key\": \"value\"\n },\n \"zendesk\": {\n \"accountName\": \"accountName\"\n },\n \"zoom\": {\n \"account\": \"account\"\n },\n \"sso_integration\": {\n \"name\": \"name\",\n \"version\": \"version\"\n }\n },\n \"token_endpoint_auth_method\": \"none\",\n \"is_token_endpoint_ip_header_trusted\": true,\n \"client_metadata\": {\n \"key\": \"value\"\n },\n \"mobile\": {\n \"android\": {\n \"app_package_name\": \"app_package_name\",\n \"sha256_cert_fingerprints\": [\n \"sha256_cert_fingerprints\"\n ]\n },\n \"ios\": {\n \"team_id\": \"team_id\",\n \"app_bundle_identifier\": \"app_bundle_identifier\"\n }\n },\n \"initiate_login_uri\": \"initiate_login_uri\",\n \"native_social_login\": {\n \"apple\": {\n \"enabled\": true\n },\n \"facebook\": {\n \"enabled\": true\n },\n \"google\": {\n \"enabled\": true\n }\n },\n \"fedcm_login\": {\n \"google\": {\n \"is_enabled\": true\n }\n },\n \"refresh_token\": {\n \"rotation_type\": \"rotating\",\n \"expiration_type\": \"expiring\",\n \"leeway\": 1,\n \"token_lifetime\": 1,\n \"infinite_token_lifetime\": true,\n \"idle_token_lifetime\": 1,\n \"infinite_idle_token_lifetime\": true,\n \"policies\": [\n {\n \"audience\": \"audience\",\n \"scope\": [\n \"scope\"\n ]\n }\n ]\n },\n \"default_organization\": {\n \"organization_id\": \"organization_id\",\n \"flows\": [\n \"client_credentials\"\n ]\n },\n \"organization_usage\": \"deny\",\n \"organization_require_behavior\": \"no_prompt\",\n \"organization_discovery_methods\": [\n \"email\"\n ],\n \"client_authentication_methods\": {\n \"private_key_jwt\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"tls_client_auth\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"self_signed_tls_client_auth\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n }\n },\n \"require_pushed_authorization_requests\": true,\n \"require_proof_of_possession\": true,\n \"signed_request_object\": {\n \"required\": true,\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"token_vault_privileged_access\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ],\n \"ip_allowlist\": [\n \"ip_allowlist\"\n ],\n \"grants\": [\n {\n \"connection\": \"connection\",\n \"scopes\": [\n \"scopes\"\n ]\n }\n ]\n },\n \"compliance_level\": \"none\",\n \"skip_non_verifiable_callback_uri_confirmation_prompt\": true,\n \"token_exchange\": {\n \"allow_any_profile_of_type\": [\n \"custom_authentication\"\n ]\n },\n \"par_request_expiry\": 1,\n \"token_quota\": {\n \"client_credentials\": {\n \"enforce\": true,\n \"per_day\": 1,\n \"per_hour\": 1\n }\n },\n \"express_configuration\": {\n \"initiate_login_uri_template\": \"initiate_login_uri_template\",\n \"user_attribute_profile_id\": \"user_attribute_profile_id\",\n \"connection_profile_id\": \"connection_profile_id\",\n \"enable_client\": true,\n \"enable_organization\": true,\n \"linked_clients\": [\n {\n \"client_id\": \"client_id\"\n }\n ],\n \"okta_oin_client_id\": \"okta_oin_client_id\",\n \"admin_login_domain\": \"admin_login_domain\",\n \"oin_submission_id\": \"oin_submission_id\"\n },\n \"b2b_integration_configuration\": {\n \"sso_profiles\": [\n \"sso_profiles\"\n ],\n \"integration_type\": \"custom_auth_server\"\n },\n \"my_organization_configuration\": {\n \"connection_profile_id\": \"connection_profile_id\",\n \"user_attribute_profile_id\": \"user_attribute_profile_id\",\n \"allowed_strategies\": [\n \"pingfederate\"\n ],\n \"third_party_client_access\": {\n \"default_value\": \"block\",\n \"allowed_values\": [\n \"allow\"\n ]\n },\n \"connection_deletion_behavior\": \"allow\",\n \"invitation_landing_client_id\": \"invitation_landing_client_id\",\n \"enforce_permission_ceiling\": true,\n \"enforce_self_assignment_restriction\": true\n },\n \"identity_assertion_authorization_grant\": {\n \"active\": true\n },\n \"anonymous_sessions\": {\n \"active\": true\n },\n \"third_party_security_mode\": \"strict\",\n \"redirection_policy\": \"allow_always\",\n \"resource_server_identifier\": \"resource_server_identifier\",\n \"async_approval_notification_channels\": [\n \"guardian-push\"\n ],\n \"external_metadata_type\": \"cimd\",\n \"external_metadata_created_by\": \"admin\",\n \"external_client_id\": \"external_client_id\",\n \"jwks_uri\": \"jwks_uri\"\n}", + "body": "{\n \"client_id\": \"client_id\",\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\",\n \"tenant\": \"tenant\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"global\": true,\n \"client_secret\": \"client_secret\",\n \"app_type\": \"native\",\n \"logo_uri\": \"logo_uri\",\n \"is_first_party\": true,\n \"oidc_conformant\": true,\n \"callbacks\": [\n \"callbacks\"\n ],\n \"allowed_origins\": [\n \"allowed_origins\"\n ],\n \"web_origins\": [\n \"web_origins\"\n ],\n \"client_aliases\": [\n \"client_aliases\"\n ],\n \"allowed_clients\": [\n \"allowed_clients\"\n ],\n \"allowed_logout_urls\": [\n \"allowed_logout_urls\"\n ],\n \"session_transfer\": {\n \"can_create_session_transfer_token\": true,\n \"enforce_cascade_revocation\": true,\n \"allowed_authentication_methods\": [\n \"cookie\"\n ],\n \"enforce_device_binding\": \"ip\",\n \"allow_refresh_token\": true,\n \"enforce_online_refresh_tokens\": true,\n \"delegation\": {\n \"allow_delegated_access\": true,\n \"enforce_device_binding\": \"ip\"\n }\n },\n \"oidc_logout\": {\n \"backchannel_logout_urls\": [\n \"backchannel_logout_urls\"\n ],\n \"backchannel_logout_initiators\": {\n \"mode\": \"custom\",\n \"selected_initiators\": [\n \"rp-logout\"\n ]\n },\n \"backchannel_logout_session_metadata\": {\n \"include\": true\n }\n },\n \"grant_types\": [\n \"grant_types\"\n ],\n \"jwt_configuration\": {\n \"lifetime_in_seconds\": 1,\n \"secret_encoded\": true,\n \"scopes\": {\n \"key\": \"value\"\n },\n \"alg\": \"HS256\"\n },\n \"signing_keys\": [\n {\n \"pkcs7\": \"pkcs7\",\n \"cert\": \"cert\",\n \"subject\": \"subject\"\n }\n ],\n \"encryption_key\": {\n \"pub\": \"pub\",\n \"cert\": \"cert\",\n \"subject\": \"subject\"\n },\n \"sso\": true,\n \"sso_disabled\": true,\n \"cross_origin_authentication\": true,\n \"cross_origin_loc\": \"cross_origin_loc\",\n \"custom_login_page_on\": true,\n \"custom_login_page\": \"custom_login_page\",\n \"custom_login_page_preview\": \"custom_login_page_preview\",\n \"form_template\": \"form_template\",\n \"addons\": {\n \"aws\": {\n \"principal\": \"principal\",\n \"role\": \"role\",\n \"lifetime_in_seconds\": 1\n },\n \"azure_blob\": {\n \"accountName\": \"accountName\",\n \"storageAccessKey\": \"storageAccessKey\",\n \"containerName\": \"containerName\",\n \"blobName\": \"blobName\",\n \"expiration\": 1,\n \"signedIdentifier\": \"signedIdentifier\",\n \"blob_read\": true,\n \"blob_write\": true,\n \"blob_delete\": true,\n \"container_read\": true,\n \"container_write\": true,\n \"container_delete\": true,\n \"container_list\": true\n },\n \"azure_sb\": {\n \"namespace\": \"namespace\",\n \"sasKeyName\": \"sasKeyName\",\n \"sasKey\": \"sasKey\",\n \"entityPath\": \"entityPath\",\n \"expiration\": 1\n },\n \"rms\": {\n \"url\": \"url\"\n },\n \"mscrm\": {\n \"url\": \"url\"\n },\n \"slack\": {\n \"team\": \"team\"\n },\n \"sentry\": {\n \"org_slug\": \"org_slug\",\n \"base_url\": \"base_url\"\n },\n \"box\": {\n \"key\": \"value\"\n },\n \"cloudbees\": {\n \"key\": \"value\"\n },\n \"concur\": {\n \"key\": \"value\"\n },\n \"dropbox\": {\n \"key\": \"value\"\n },\n \"echosign\": {\n \"domain\": \"domain\"\n },\n \"egnyte\": {\n \"domain\": \"domain\"\n },\n \"firebase\": {\n \"secret\": \"secret\",\n \"private_key_id\": \"private_key_id\",\n \"private_key\": \"private_key\",\n \"client_email\": \"client_email\",\n \"lifetime_in_seconds\": 1\n },\n \"newrelic\": {\n \"account\": \"account\"\n },\n \"office365\": {\n \"domain\": \"domain\",\n \"connection\": \"connection\"\n },\n \"salesforce\": {\n \"entity_id\": \"entity_id\"\n },\n \"salesforce_api\": {\n \"clientid\": \"clientid\",\n \"principal\": \"principal\",\n \"communityName\": \"communityName\",\n \"community_url_section\": \"community_url_section\"\n },\n \"salesforce_sandbox_api\": {\n \"clientid\": \"clientid\",\n \"principal\": \"principal\",\n \"communityName\": \"communityName\",\n \"community_url_section\": \"community_url_section\"\n },\n \"samlp\": {\n \"mappings\": {\n \"key\": \"value\"\n },\n \"audience\": \"audience\",\n \"recipient\": \"recipient\",\n \"createUpnClaim\": true,\n \"mapUnknownClaimsAsIs\": true,\n \"passthroughClaimsWithNoMapping\": true,\n \"mapIdentities\": true,\n \"signatureAlgorithm\": \"signatureAlgorithm\",\n \"digestAlgorithm\": \"digestAlgorithm\",\n \"issuer\": \"issuer\",\n \"destination\": \"destination\",\n \"lifetimeInSeconds\": 1,\n \"signResponse\": true,\n \"nameIdentifierFormat\": \"nameIdentifierFormat\",\n \"nameIdentifierProbes\": [\n \"nameIdentifierProbes\"\n ],\n \"authnContextClassRef\": \"authnContextClassRef\"\n },\n \"layer\": {\n \"providerId\": \"providerId\",\n \"keyId\": \"keyId\",\n \"privateKey\": \"privateKey\",\n \"principal\": \"principal\",\n \"expiration\": 1\n },\n \"sap_api\": {\n \"clientid\": \"clientid\",\n \"usernameAttribute\": \"usernameAttribute\",\n \"tokenEndpointUrl\": \"tokenEndpointUrl\",\n \"scope\": \"scope\",\n \"servicePassword\": \"servicePassword\",\n \"nameIdentifierFormat\": \"nameIdentifierFormat\"\n },\n \"sharepoint\": {\n \"url\": \"url\",\n \"external_url\": [\n \"external_url\"\n ]\n },\n \"springcm\": {\n \"acsurl\": \"acsurl\"\n },\n \"wams\": {\n \"masterkey\": \"masterkey\"\n },\n \"wsfed\": {\n \"key\": \"value\"\n },\n \"zendesk\": {\n \"accountName\": \"accountName\"\n },\n \"zoom\": {\n \"account\": \"account\"\n },\n \"sso_integration\": {\n \"name\": \"name\",\n \"version\": \"version\"\n }\n },\n \"token_endpoint_auth_method\": \"none\",\n \"is_token_endpoint_ip_header_trusted\": true,\n \"client_metadata\": {\n \"key\": \"value\"\n },\n \"mobile\": {\n \"android\": {\n \"app_package_name\": \"app_package_name\",\n \"sha256_cert_fingerprints\": [\n \"sha256_cert_fingerprints\"\n ]\n },\n \"ios\": {\n \"team_id\": \"team_id\",\n \"app_bundle_identifier\": \"app_bundle_identifier\"\n }\n },\n \"initiate_login_uri\": \"initiate_login_uri\",\n \"native_social_login\": {\n \"apple\": {\n \"enabled\": true\n },\n \"facebook\": {\n \"enabled\": true\n },\n \"google\": {\n \"enabled\": true\n }\n },\n \"fedcm_login\": {\n \"google\": {\n \"is_enabled\": true\n }\n },\n \"refresh_token\": {\n \"rotation_type\": \"rotating\",\n \"expiration_type\": \"expiring\",\n \"leeway\": 1,\n \"token_lifetime\": 1,\n \"infinite_token_lifetime\": true,\n \"idle_token_lifetime\": 1,\n \"infinite_idle_token_lifetime\": true,\n \"policies\": [\n {\n \"audience\": \"audience\",\n \"scope\": [\n \"scope\"\n ]\n }\n ]\n },\n \"default_organization\": {\n \"organization_id\": \"organization_id\",\n \"flows\": [\n \"client_credentials\"\n ]\n },\n \"organization_usage\": \"deny\",\n \"organization_require_behavior\": \"no_prompt\",\n \"organization_discovery_methods\": [\n \"email\"\n ],\n \"client_authentication_methods\": {\n \"private_key_jwt\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"tls_client_auth\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"self_signed_tls_client_auth\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n }\n },\n \"require_pushed_authorization_requests\": true,\n \"require_proof_of_possession\": true,\n \"signed_request_object\": {\n \"required\": true,\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ]\n },\n \"token_vault_privileged_access\": {\n \"credentials\": [\n {\n \"id\": \"id\"\n }\n ],\n \"ip_allowlist\": [\n \"ip_allowlist\"\n ],\n \"grants\": [\n {\n \"connection\": \"connection\",\n \"scopes\": [\n \"scopes\"\n ]\n }\n ]\n },\n \"compliance_level\": \"none\",\n \"skip_non_verifiable_callback_uri_confirmation_prompt\": true,\n \"token_exchange\": {\n \"allow_any_profile_of_type\": [\n \"custom_authentication\"\n ]\n },\n \"par_request_expiry\": 1,\n \"token_quota\": {\n \"client_credentials\": {\n \"enforce\": true,\n \"per_day\": 1,\n \"per_hour\": 1\n }\n },\n \"express_configuration\": {\n \"initiate_login_uri_template\": \"initiate_login_uri_template\",\n \"user_attribute_profile_id\": \"user_attribute_profile_id\",\n \"connection_profile_id\": \"connection_profile_id\",\n \"enable_client\": true,\n \"enable_organization\": true,\n \"linked_clients\": [\n {\n \"client_id\": \"client_id\"\n }\n ],\n \"okta_oin_client_id\": \"okta_oin_client_id\",\n \"admin_login_domain\": \"admin_login_domain\",\n \"oin_submission_id\": \"oin_submission_id\"\n },\n \"b2b_integration_configuration\": {\n \"sso_profiles\": [\n \"sso_profiles\"\n ],\n \"integration_type\": \"custom_auth_server\"\n },\n \"my_organization_configuration\": {\n \"connection_profile_id\": \"connection_profile_id\",\n \"user_attribute_profile_id\": \"user_attribute_profile_id\",\n \"allowed_strategies\": [\n \"pingfederate\"\n ],\n \"third_party_client_access\": {\n \"default_value\": \"block\",\n \"allowed_values\": [\n \"allow\"\n ]\n },\n \"connection_deletion_behavior\": \"allow\",\n \"invitation_landing_client_id\": \"invitation_landing_client_id\",\n \"enforce_permission_ceiling\": true,\n \"enforce_self_assignment_restriction\": true\n },\n \"identity_assertion_authorization_grant\": {\n \"active\": true\n },\n \"anonymous_sessions\": {\n \"active\": true\n },\n \"enforce_anon_session_transfer_network_binding\": \"ip\",\n \"third_party_security_mode\": \"strict\",\n \"redirection_policy\": \"allow_always\",\n \"resource_server_identifier\": \"resource_server_identifier\",\n \"async_approval_notification_channels\": [\n \"guardian-push\"\n ],\n \"external_metadata_type\": \"cimd\",\n \"external_metadata_created_by\": \"admin\",\n \"external_metadata_status\": \"available\",\n \"external_client_id\": \"external_client_id\",\n \"jwks_uri\": \"jwks_uri\"\n}", "headers": { "Content-Type": "application/json" } @@ -1070,7 +1359,7 @@ }, "response": { "status": 201, - "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"organization\": {\n \"show_as_button\": \"none\",\n \"assign_membership_on_login\": \"none\"\n },\n \"connection_name_prefix_template\": \"connection_name_prefix_template\",\n \"enabled_features\": [\n \"scim\"\n ],\n \"strategy_overrides\": {\n \"pingfederate\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"ad\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"adfs\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"waad\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"google-apps\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"okta\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"oidc\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"samlp\": {\n \"enabled_features\": [\n \"scim\"\n ]\n }\n },\n \"provisioning\": {\n \"scim\": {\n \"tokens\": {\n \"scopes\": [\n \"get:users\"\n ]\n }\n }\n },\n \"cross_app_access_resource_app\": {\n \"status\": {\n \"default_value\": \"enabled\",\n \"allowed_values\": [\n \"enabled\"\n ]\n }\n }\n}", + "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"organization\": {\n \"show_as_button\": \"none\",\n \"assign_membership_on_login\": \"none\"\n },\n \"connection_name_prefix_template\": \"connection_name_prefix_template\",\n \"enabled_features\": [\n \"scim\"\n ],\n \"strategy_overrides\": {\n \"pingfederate\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"ad\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"adfs\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"waad\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"google-apps\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"okta\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"oidc\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"samlp\": {\n \"enabled_features\": [\n \"scim\"\n ]\n }\n },\n \"provisioning\": {\n \"scim\": {\n \"tokens\": {\n \"scopes\": [\n \"get:users\"\n ]\n }\n },\n \"google_workspace\": {\n \"sync_users\": true\n }\n },\n \"cross_app_access_resource_app\": {\n \"status\": {\n \"default_value\": \"enabled\",\n \"allowed_values\": [\n \"enabled\"\n ]\n }\n }\n}", "headers": { "Content-Type": "application/json" } @@ -1138,7 +1427,7 @@ }, "response": { "status": 200, - "body": "{\n \"id\": \"id\",\n \"display_name\": \"display_name\",\n \"template\": {\n \"name\": \"name\",\n \"organization\": {\n \"show_as_button\": \"none\",\n \"assign_membership_on_login\": \"none\"\n },\n \"connection_name_prefix_template\": \"connection_name_prefix_template\",\n \"enabled_features\": [\n \"scim\"\n ],\n \"provisioning\": {\n \"scim\": {\n \"tokens\": {\n \"scopes\": [\n \"get:users\"\n ]\n }\n }\n }\n }\n}", + "body": "{\n \"id\": \"id\",\n \"display_name\": \"display_name\",\n \"template\": {\n \"name\": \"name\",\n \"organization\": {\n \"show_as_button\": \"none\",\n \"assign_membership_on_login\": \"none\"\n },\n \"connection_name_prefix_template\": \"connection_name_prefix_template\",\n \"enabled_features\": [\n \"scim\"\n ],\n \"provisioning\": {\n \"scim\": {\n \"tokens\": {\n \"scopes\": [\n \"get:users\"\n ]\n }\n },\n \"google_workspace\": {\n \"sync_users\": true\n }\n }\n }\n}", "headers": { "Content-Type": "application/json" } @@ -1174,7 +1463,7 @@ }, "response": { "status": 200, - "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"organization\": {\n \"show_as_button\": \"none\",\n \"assign_membership_on_login\": \"none\"\n },\n \"connection_name_prefix_template\": \"connection_name_prefix_template\",\n \"enabled_features\": [\n \"scim\"\n ],\n \"strategy_overrides\": {\n \"pingfederate\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"ad\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"adfs\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"waad\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"google-apps\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"okta\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"oidc\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"samlp\": {\n \"enabled_features\": [\n \"scim\"\n ]\n }\n },\n \"provisioning\": {\n \"scim\": {\n \"tokens\": {\n \"scopes\": [\n \"get:users\"\n ]\n }\n }\n },\n \"cross_app_access_resource_app\": {\n \"status\": {\n \"default_value\": \"enabled\",\n \"allowed_values\": [\n \"enabled\"\n ]\n }\n }\n}", + "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"organization\": {\n \"show_as_button\": \"none\",\n \"assign_membership_on_login\": \"none\"\n },\n \"connection_name_prefix_template\": \"connection_name_prefix_template\",\n \"enabled_features\": [\n \"scim\"\n ],\n \"strategy_overrides\": {\n \"pingfederate\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"ad\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"adfs\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"waad\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"google-apps\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"okta\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"oidc\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"samlp\": {\n \"enabled_features\": [\n \"scim\"\n ]\n }\n },\n \"provisioning\": {\n \"scim\": {\n \"tokens\": {\n \"scopes\": [\n \"get:users\"\n ]\n }\n },\n \"google_workspace\": {\n \"sync_users\": true\n }\n },\n \"cross_app_access_resource_app\": {\n \"status\": {\n \"default_value\": \"enabled\",\n \"allowed_values\": [\n \"enabled\"\n ]\n }\n }\n}", "headers": { "Content-Type": "application/json" } @@ -1246,7 +1535,7 @@ }, "response": { "status": 200, - "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"organization\": {\n \"show_as_button\": \"none\",\n \"assign_membership_on_login\": \"none\"\n },\n \"connection_name_prefix_template\": \"connection_name_prefix_template\",\n \"enabled_features\": [\n \"scim\"\n ],\n \"strategy_overrides\": {\n \"pingfederate\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"ad\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"adfs\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"waad\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"google-apps\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"okta\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"oidc\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"samlp\": {\n \"enabled_features\": [\n \"scim\"\n ]\n }\n },\n \"provisioning\": {\n \"scim\": {\n \"tokens\": {\n \"scopes\": [\n \"get:users\"\n ]\n }\n }\n },\n \"cross_app_access_resource_app\": {\n \"status\": {\n \"default_value\": \"enabled\",\n \"allowed_values\": [\n \"enabled\"\n ]\n }\n }\n}", + "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"organization\": {\n \"show_as_button\": \"none\",\n \"assign_membership_on_login\": \"none\"\n },\n \"connection_name_prefix_template\": \"connection_name_prefix_template\",\n \"enabled_features\": [\n \"scim\"\n ],\n \"strategy_overrides\": {\n \"pingfederate\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"ad\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"adfs\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"waad\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"google-apps\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"okta\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"oidc\": {\n \"enabled_features\": [\n \"scim\"\n ]\n },\n \"samlp\": {\n \"enabled_features\": [\n \"scim\"\n ]\n }\n },\n \"provisioning\": {\n \"scim\": {\n \"tokens\": {\n \"scopes\": [\n \"get:users\"\n ]\n }\n },\n \"google_workspace\": {\n \"sync_users\": true\n }\n },\n \"cross_app_access_resource_app\": {\n \"status\": {\n \"default_value\": \"enabled\",\n \"allowed_values\": [\n \"enabled\"\n ]\n }\n }\n}", "headers": { "Content-Type": "application/json" } @@ -7531,7 +7820,7 @@ }, "response": { "status": 200, - "body": "{\n \"enabled\": true,\n \"shields\": [\n \"block\"\n ],\n \"allowlist\": [\n \"allowlist\"\n ],\n \"mode\": \"count_per_identifier_and_ip\",\n \"max_attempts\": 1\n}", + "body": "{\n \"enabled\": true,\n \"shields\": [\n \"block\"\n ],\n \"allowlist\": [\n \"allowlist\"\n ],\n \"mode\": \"count_per_identifier_and_ip\",\n \"max_attempts\": 1,\n \"form_submission_mode\": \"auto\"\n}", "headers": { "Content-Type": "application/json" } @@ -7563,7 +7852,7 @@ }, "response": { "status": 200, - "body": "{\n \"enabled\": true,\n \"shields\": [\n \"block\"\n ],\n \"allowlist\": [\n \"allowlist\"\n ],\n \"mode\": \"count_per_identifier_and_ip\",\n \"max_attempts\": 1\n}", + "body": "{\n \"enabled\": true,\n \"shields\": [\n \"block\"\n ],\n \"allowlist\": [\n \"allowlist\"\n ],\n \"mode\": \"count_per_identifier_and_ip\",\n \"max_attempts\": 1,\n \"form_submission_mode\": \"auto\"\n}", "headers": { "Content-Type": "application/json" } @@ -7643,6 +7932,177 @@ } } }, + { + "id": "68c499db-dbcf-4500-b535-2d1b5b0816ac", + "name": "Get CAPTCHA attack protection policies - default", + "request": { + "urlPathTemplate": "/attack-protection/captcha/policies", + "method": "GET", + "headers": { + "Authorization": { + "matches": "Bearer .+" + } + } + }, + "response": { + "status": 200, + "body": "[\n {\n \"id\": \"id\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"priority\": 1,\n \"match\": {\n \"auth0_managed\": [\n \"auth0_managed\"\n ],\n \"geo_country_codes\": [\n \"geo_country_codes\"\n ]\n },\n \"action\": {\n \"active_provider_id\": \"simple_captcha\"\n },\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\"\n }\n]", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "68c499db-dbcf-4500-b535-2d1b5b0816ac", + "persistent": true, + "priority": 3, + "metadata": { + "mocklab": { + "created": { + "at": "2020-01-01T00:00:00.000Z", + "via": "SYSTEM" + } + } + }, + "postServeActions": [] + }, + { + "id": "d9b60e3e-ceaa-434a-9131-9ae1433967b9", + "name": "Create a CAPTCHA attack protection policy - default", + "request": { + "urlPathTemplate": "/attack-protection/captcha/policies", + "method": "POST", + "headers": { + "Authorization": { + "matches": "Bearer .+" + } + } + }, + "response": { + "status": 201, + "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"priority\": 1,\n \"match\": {\n \"auth0_managed\": [\n \"auth0_managed\"\n ],\n \"geo_country_codes\": [\n \"geo_country_codes\"\n ]\n },\n \"action\": {\n \"active_provider_id\": \"simple_captcha\",\n \"auth_challenge\": {\n \"fail_open\": true\n },\n \"recaptcha_v2\": {\n \"site_key\": \"site_key\"\n },\n \"recaptcha_enterprise\": {\n \"site_key\": \"site_key\",\n \"project_id\": \"project_id\"\n },\n \"hcaptcha\": {\n \"site_key\": \"site_key\"\n },\n \"friendly_captcha\": {\n \"site_key\": \"site_key\"\n },\n \"arkose\": {\n \"site_key\": \"site_key\",\n \"client_subdomain\": \"client_subdomain\",\n \"verify_subdomain\": \"verify_subdomain\",\n \"fail_open\": true\n }\n },\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "d9b60e3e-ceaa-434a-9131-9ae1433967b9", + "persistent": true, + "priority": 3, + "metadata": { + "mocklab": { + "created": { + "at": "2020-01-01T00:00:00.000Z", + "via": "SYSTEM" + } + } + } + }, + { + "id": "cbf37477-ad4e-4fc9-8028-8e2abc8789f3", + "name": "Get a CAPTCHA attack protection policy - default", + "request": { + "urlPathTemplate": "/attack-protection/captcha/policies/{id}", + "method": "GET", + "headers": { + "Authorization": { + "matches": "Bearer .+" + } + }, + "pathParameters": { + "id": { + "equalTo": "id" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"priority\": 1,\n \"match\": {\n \"auth0_managed\": [\n \"auth0_managed\"\n ],\n \"geo_country_codes\": [\n \"geo_country_codes\"\n ]\n },\n \"action\": {\n \"active_provider_id\": \"simple_captcha\",\n \"auth_challenge\": {\n \"fail_open\": true\n },\n \"recaptcha_v2\": {\n \"site_key\": \"site_key\"\n },\n \"recaptcha_enterprise\": {\n \"site_key\": \"site_key\",\n \"project_id\": \"project_id\"\n },\n \"hcaptcha\": {\n \"site_key\": \"site_key\"\n },\n \"friendly_captcha\": {\n \"site_key\": \"site_key\"\n },\n \"arkose\": {\n \"site_key\": \"site_key\",\n \"client_subdomain\": \"client_subdomain\",\n \"verify_subdomain\": \"verify_subdomain\",\n \"fail_open\": true\n }\n },\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "cbf37477-ad4e-4fc9-8028-8e2abc8789f3", + "persistent": true, + "priority": 3, + "metadata": { + "mocklab": { + "created": { + "at": "2020-01-01T00:00:00.000Z", + "via": "SYSTEM" + } + } + } + }, + { + "id": "4a72a5d1-89f5-4cde-bda5-da15dc79e6fe", + "name": "Delete a CAPTCHA attack protection policy - default", + "request": { + "urlPathTemplate": "/attack-protection/captcha/policies/{id}", + "method": "DELETE", + "headers": { + "Authorization": { + "matches": "Bearer .+" + } + }, + "pathParameters": { + "id": { + "equalTo": "id" + } + } + }, + "response": { + "status": 200, + "body": "\"\"", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4a72a5d1-89f5-4cde-bda5-da15dc79e6fe", + "persistent": true, + "priority": 3, + "metadata": { + "mocklab": { + "created": { + "at": "2020-01-01T00:00:00.000Z", + "via": "SYSTEM" + } + } + } + }, + { + "id": "4083f648-c7aa-4924-ba4c-8b89886a123d", + "name": "Update a CAPTCHA attack protection policy - default", + "request": { + "urlPathTemplate": "/attack-protection/captcha/policies/{id}", + "method": "PATCH", + "headers": { + "Authorization": { + "matches": "Bearer .+" + } + }, + "pathParameters": { + "id": { + "equalTo": "id" + } + } + }, + "response": { + "status": 200, + "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"priority\": 1,\n \"match\": {\n \"auth0_managed\": [\n \"auth0_managed\"\n ],\n \"geo_country_codes\": [\n \"geo_country_codes\"\n ]\n },\n \"action\": {\n \"active_provider_id\": \"simple_captcha\",\n \"auth_challenge\": {\n \"fail_open\": true\n },\n \"recaptcha_v2\": {\n \"site_key\": \"site_key\"\n },\n \"recaptcha_enterprise\": {\n \"site_key\": \"site_key\",\n \"project_id\": \"project_id\"\n },\n \"hcaptcha\": {\n \"site_key\": \"site_key\"\n },\n \"friendly_captcha\": {\n \"site_key\": \"site_key\"\n },\n \"arkose\": {\n \"site_key\": \"site_key\",\n \"client_subdomain\": \"client_subdomain\",\n \"verify_subdomain\": \"verify_subdomain\",\n \"fail_open\": true\n }\n },\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\"\n}", + "headers": { + "Content-Type": "application/json" + } + }, + "uuid": "4083f648-c7aa-4924-ba4c-8b89886a123d", + "persistent": true, + "priority": 3, + "metadata": { + "mocklab": { + "created": { + "at": "2020-01-01T00:00:00.000Z", + "via": "SYSTEM" + } + } + } + }, { "id": "e3a2dc7e-fb58-4806-a3f1-3d94a401a38f", "name": "Get Phone Provider Protection settings - default", @@ -10285,42 +10745,6 @@ } } }, - { - "id": "bad7af9d-5e89-4f47-b2d5-36b3d3560d91", - "name": "Transition an experiment to a new status. - default", - "request": { - "urlPathTemplate": "/experimentation/experiments/{id}/status", - "method": "POST", - "headers": { - "Authorization": { - "matches": "Bearer .+" - } - }, - "pathParameters": { - "id": { - "equalTo": "id" - } - } - }, - "response": { - "status": 200, - "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"feature_flag_id\": \"feature_flag_id\",\n \"feature_flag_name\": \"feature_flag_name\",\n \"authentication_flow\": \"authentication_flow\",\n \"allocation_strategy\": \"percentage\",\n \"status\": \"draft\",\n \"is_valid\": true,\n \"default_config\": \"tenant\",\n \"feature_flag_snapshot\": {\n \"key\": \"value\"\n },\n \"allocations\": [\n {\n \"variation_id\": \"variation_id\",\n \"variation_name\": \"variation_name\",\n \"segment_id\": \"segment_id\",\n \"segment_name\": \"segment_name\",\n \"weight\": 1,\n \"priority\": 1,\n \"is_control\": true,\n \"is_fallback\": true,\n \"variation_snapshot\": {\n \"key\": \"value\"\n },\n \"segment_snapshot\": {\n \"key\": \"value\"\n }\n }\n ],\n \"editable_fields\": [\n \"editable_fields\"\n ],\n \"levels\": [\n 1\n ],\n \"current_level\": 1,\n \"started_at\": \"2024-01-15T09:30:00Z\",\n \"ended_at\": \"2024-01-15T09:30:00Z\",\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\"\n}", - "headers": { - "Content-Type": "application/json" - } - }, - "uuid": "bad7af9d-5e89-4f47-b2d5-36b3d3560d91", - "persistent": true, - "priority": 3, - "metadata": { - "mocklab": { - "created": { - "at": "2020-01-01T00:00:00.000Z", - "via": "SYSTEM" - } - } - } - }, { "id": "20ae6e00-fdf5-43c3-a259-bcdbc0129c9d", "name": "Validate an experiment. - default", @@ -10542,42 +10966,6 @@ } } }, - { - "id": "e8918863-9064-44c0-a1b7-db3c423377a1", - "name": "Transition a feature flag to a new status. - default", - "request": { - "urlPathTemplate": "/experimentation/feature-flags/{id}/status", - "method": "POST", - "headers": { - "Authorization": { - "matches": "Bearer .+" - } - }, - "pathParameters": { - "id": { - "equalTo": "id" - } - } - }, - "response": { - "status": 200, - "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"type\": \"auth0\",\n \"status\": \"draft\",\n \"parameters\": {\n \"key\": {\n \"type\": \"string\",\n \"value\": {\n \"key\": \"value\"\n },\n \"description\": \"description\"\n }\n },\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\"\n}", - "headers": { - "Content-Type": "application/json" - } - }, - "uuid": "e8918863-9064-44c0-a1b7-db3c423377a1", - "persistent": true, - "priority": 3, - "metadata": { - "mocklab": { - "created": { - "at": "2020-01-01T00:00:00.000Z", - "via": "SYSTEM" - } - } - } - }, { "id": "f3d101fb-cdd6-4ae1-9613-a72ab8cb6207", "name": "List segments for the tenant. - default", @@ -10603,7 +10991,7 @@ }, "response": { "status": 200, - "body": "{\n \"segments\": [\n {\n \"id\": \"id\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"type\": \"self\",\n \"rules\": [\n {}\n ],\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\"\n }\n ],\n \"next\": \"next\"\n}", + "body": "{\n \"segments\": [\n {\n \"id\": \"id\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"type\": \"self\",\n \"status\": \"active\",\n \"rules\": [\n {}\n ],\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\"\n }\n ],\n \"next\": \"next\"\n}", "headers": { "Content-Type": "application/json" } @@ -10635,7 +11023,7 @@ }, "response": { "status": 201, - "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"type\": \"self\",\n \"rules\": [\n {}\n ],\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\"\n}", + "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"type\": \"self\",\n \"status\": \"active\",\n \"rules\": [\n {}\n ],\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\"\n}", "headers": { "Content-Type": "application/json" } @@ -10671,7 +11059,7 @@ }, "response": { "status": 200, - "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"type\": \"self\",\n \"rules\": [\n {}\n ],\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\"\n}", + "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"type\": \"self\",\n \"status\": \"active\",\n \"rules\": [\n {}\n ],\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\"\n}", "headers": { "Content-Type": "application/json" } @@ -10743,7 +11131,7 @@ }, "response": { "status": 200, - "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"type\": \"self\",\n \"rules\": [\n {}\n ],\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\"\n}", + "body": "{\n \"id\": \"id\",\n \"name\": \"name\",\n \"description\": \"description\",\n \"type\": \"self\",\n \"status\": \"active\",\n \"rules\": [\n {}\n ],\n \"created_at\": \"2024-01-15T09:30:00Z\",\n \"updated_at\": \"2024-01-15T09:30:00Z\"\n}", "headers": { "Content-Type": "application/json" } @@ -16294,7 +16682,7 @@ }, "response": { "status": 200, - "body": "{\n \"change_password\": {\n \"enabled\": true,\n \"html\": \"html\"\n },\n \"guardian_mfa_page\": {\n \"enabled\": true,\n \"html\": \"html\"\n },\n \"default_audience\": \"default_audience\",\n \"default_directory\": \"default_directory\",\n \"error_page\": {\n \"html\": \"html\",\n \"show_log_link\": true,\n \"url\": \"url\"\n },\n \"device_flow\": {\n \"charset\": \"base20\",\n \"mask\": \"mask\"\n },\n \"default_token_quota\": {\n \"clients\": {\n \"client_credentials\": {}\n },\n \"organizations\": {\n \"client_credentials\": {}\n }\n },\n \"flags\": {\n \"change_pwd_flow_v1\": true,\n \"enable_apis_section\": true,\n \"disable_impersonation\": true,\n \"enable_client_connections\": true,\n \"enable_pipeline2\": true,\n \"allow_legacy_delegation_grant_types\": true,\n \"allow_legacy_ro_grant_types\": true,\n \"allow_legacy_tokeninfo_endpoint\": true,\n \"enable_legacy_profile\": true,\n \"enable_idtoken_api2\": true,\n \"enable_public_signup_user_exists_error\": true,\n \"enable_sso\": true,\n \"allow_changing_enable_sso\": true,\n \"disable_clickjack_protection_headers\": true,\n \"no_disclose_enterprise_connections\": true,\n \"enforce_client_authentication_on_passwordless_start\": true,\n \"enable_adfs_waad_email_verification\": true,\n \"revoke_refresh_token_grant\": true,\n \"dashboard_log_streams_next\": true,\n \"dashboard_insights_view\": true,\n \"disable_fields_map_fix\": true,\n \"mfa_show_factor_list_on_enrollment\": true,\n \"remove_alg_from_jwks\": true,\n \"improved_signup_bot_detection_in_classic\": true,\n \"genai_trial\": true,\n \"local_resource_discovery\": true,\n \"enable_dynamic_client_registration\": true,\n \"disable_management_api_sms_obfuscation\": true,\n \"trust_azure_adfs_email_verified_connection_property\": true,\n \"custom_domains_provisioning\": true\n },\n \"friendly_name\": \"friendly_name\",\n \"picture_url\": \"picture_url\",\n \"support_email\": \"support_email\",\n \"support_url\": \"support_url\",\n \"allowed_logout_urls\": [\n \"allowed_logout_urls\"\n ],\n \"session_lifetime\": 1.1,\n \"idle_session_lifetime\": 1.1,\n \"ephemeral_session_lifetime\": 1.1,\n \"idle_ephemeral_session_lifetime\": 1.1,\n \"sandbox_version\": \"sandbox_version\",\n \"legacy_sandbox_version\": \"legacy_sandbox_version\",\n \"sandbox_versions_available\": [\n \"sandbox_versions_available\"\n ],\n \"default_redirection_uri\": \"default_redirection_uri\",\n \"enabled_locales\": [\n \"am\"\n ],\n \"access_token\": {\n \"claims_mapping\": {\n \"custom_claims\": [\n {\n \"name\": \"name\",\n \"expression\": \"expression\"\n }\n ]\n }\n },\n \"security_headers\": {\n \"content_security_policy\": {\n \"enabled\": true,\n \"policies\": [\n {}\n ]\n },\n \"x_xss_protection\": {\n \"enabled\": true,\n \"mode\": \"block\",\n \"report_uri\": \"report_uri\"\n }\n },\n \"session_cookie\": {\n \"mode\": \"persistent\"\n },\n \"sessions\": {\n \"oidc_logout_prompt_enabled\": true,\n \"anonymous\": {\n \"lifetime_in_minutes\": 1,\n \"activate_cookie\": true\n }\n },\n \"oidc_logout\": {\n \"rp_logout_end_session_endpoint_discovery\": true\n },\n \"allow_organization_name_in_authentication_api\": true,\n \"customize_mfa_in_postlogin_action\": true,\n \"acr_values_supported\": [\n \"acr_values_supported\"\n ],\n \"mtls\": {\n \"enable_endpoint_aliases\": true\n },\n \"pushed_authorization_requests_supported\": true,\n \"authorization_response_iss_parameter_supported\": true,\n \"skip_non_verifiable_callback_uri_confirmation_prompt\": true,\n \"resource_parameter_profile\": \"audience\",\n \"client_id_metadata_document_supported\": true,\n \"phone_consolidated_experience\": true,\n \"enable_ai_guide\": true,\n \"include_session_metadata_in_tenant_logs\": true,\n \"dynamic_client_registration_security_mode\": \"strict\",\n \"country_codes\": {\n \"list\": [\n \"list\"\n ],\n \"mode\": \"allow\"\n }\n}", + "body": "{\n \"change_password\": {\n \"enabled\": true,\n \"html\": \"html\"\n },\n \"guardian_mfa_page\": {\n \"enabled\": true,\n \"html\": \"html\"\n },\n \"default_audience\": \"default_audience\",\n \"default_directory\": \"default_directory\",\n \"error_page\": {\n \"html\": \"html\",\n \"show_log_link\": true,\n \"url\": \"url\"\n },\n \"device_flow\": {\n \"charset\": \"base20\",\n \"mask\": \"mask\"\n },\n \"default_token_quota\": {\n \"clients\": {\n \"client_credentials\": {}\n },\n \"organizations\": {\n \"client_credentials\": {}\n }\n },\n \"flags\": {\n \"change_pwd_flow_v1\": true,\n \"enable_apis_section\": true,\n \"disable_impersonation\": true,\n \"enable_client_connections\": true,\n \"enable_pipeline2\": true,\n \"allow_legacy_delegation_grant_types\": true,\n \"allow_legacy_ro_grant_types\": true,\n \"allow_legacy_tokeninfo_endpoint\": true,\n \"enable_legacy_profile\": true,\n \"enable_idtoken_api2\": true,\n \"enable_public_signup_user_exists_error\": true,\n \"enable_sso\": true,\n \"allow_changing_enable_sso\": true,\n \"disable_clickjack_protection_headers\": true,\n \"no_disclose_enterprise_connections\": true,\n \"enforce_client_authentication_on_passwordless_start\": true,\n \"enable_adfs_waad_email_verification\": true,\n \"revoke_refresh_token_grant\": true,\n \"dashboard_log_streams_next\": true,\n \"dashboard_insights_view\": true,\n \"disable_fields_map_fix\": true,\n \"mfa_show_factor_list_on_enrollment\": true,\n \"remove_alg_from_jwks\": true,\n \"improved_signup_bot_detection_in_classic\": true,\n \"genai_trial\": true,\n \"local_resource_discovery\": true,\n \"enable_dynamic_client_registration\": true,\n \"disable_management_api_sms_obfuscation\": true,\n \"trust_azure_adfs_email_verified_connection_property\": true,\n \"custom_domains_provisioning\": true\n },\n \"friendly_name\": \"friendly_name\",\n \"picture_url\": \"picture_url\",\n \"support_email\": \"support_email\",\n \"support_url\": \"support_url\",\n \"allowed_logout_urls\": [\n \"allowed_logout_urls\"\n ],\n \"session_lifetime\": 1.1,\n \"idle_session_lifetime\": 1.1,\n \"ephemeral_session_lifetime\": 1.1,\n \"idle_ephemeral_session_lifetime\": 1.1,\n \"sandbox_version\": \"sandbox_version\",\n \"legacy_sandbox_version\": \"legacy_sandbox_version\",\n \"sandbox_versions_available\": [\n \"sandbox_versions_available\"\n ],\n \"default_redirection_uri\": \"default_redirection_uri\",\n \"enabled_locales\": [\n \"am\"\n ],\n \"access_token\": {\n \"claims_mapping\": {\n \"custom_claims\": [\n {\n \"name\": \"name\",\n \"expression\": \"expression\"\n }\n ]\n }\n },\n \"security_headers\": {\n \"content_security_policy\": {\n \"enabled\": true,\n \"policies\": [\n {}\n ]\n },\n \"x_xss_protection\": {\n \"enabled\": true,\n \"mode\": \"block\",\n \"report_uri\": \"report_uri\"\n }\n },\n \"session_cookie\": {\n \"mode\": \"persistent\"\n },\n \"sessions\": {\n \"oidc_logout_prompt_enabled\": true,\n \"anonymous\": {\n \"lifetime_in_minutes\": 1,\n \"activate_cookie\": true\n }\n },\n \"oidc_logout\": {\n \"rp_logout_end_session_endpoint_discovery\": true\n },\n \"allow_organization_name_in_authentication_api\": true,\n \"customize_mfa_in_postlogin_action\": true,\n \"acr_values_supported\": [\n \"acr_values_supported\"\n ],\n \"mtls\": {\n \"enable_endpoint_aliases\": true\n },\n \"pushed_authorization_requests_supported\": true,\n \"authorization_response_iss_parameter_supported\": true,\n \"dpop_strict_refresh_token_binding\": true,\n \"skip_non_verifiable_callback_uri_confirmation_prompt\": true,\n \"resource_parameter_profile\": \"audience\",\n \"client_id_metadata_document_supported\": true,\n \"client_id_metadata_document_dynamic_registration_supported\": true,\n \"phone_consolidated_experience\": true,\n \"enable_ai_guide\": true,\n \"include_session_metadata_in_tenant_logs\": true,\n \"dynamic_client_registration_security_mode\": \"strict\",\n \"country_codes\": {\n \"list\": [\n \"list\"\n ],\n \"mode\": \"allow\"\n }\n}", "headers": { "Content-Type": "application/json" } @@ -16326,7 +16714,7 @@ }, "response": { "status": 200, - "body": "{\n \"change_password\": {\n \"enabled\": true,\n \"html\": \"html\"\n },\n \"guardian_mfa_page\": {\n \"enabled\": true,\n \"html\": \"html\"\n },\n \"default_audience\": \"default_audience\",\n \"default_directory\": \"default_directory\",\n \"error_page\": {\n \"html\": \"html\",\n \"show_log_link\": true,\n \"url\": \"url\"\n },\n \"device_flow\": {\n \"charset\": \"base20\",\n \"mask\": \"mask\"\n },\n \"default_token_quota\": {\n \"clients\": {\n \"client_credentials\": {}\n },\n \"organizations\": {\n \"client_credentials\": {}\n }\n },\n \"flags\": {\n \"change_pwd_flow_v1\": true,\n \"enable_apis_section\": true,\n \"disable_impersonation\": true,\n \"enable_client_connections\": true,\n \"enable_pipeline2\": true,\n \"allow_legacy_delegation_grant_types\": true,\n \"allow_legacy_ro_grant_types\": true,\n \"allow_legacy_tokeninfo_endpoint\": true,\n \"enable_legacy_profile\": true,\n \"enable_idtoken_api2\": true,\n \"enable_public_signup_user_exists_error\": true,\n \"enable_sso\": true,\n \"allow_changing_enable_sso\": true,\n \"disable_clickjack_protection_headers\": true,\n \"no_disclose_enterprise_connections\": true,\n \"enforce_client_authentication_on_passwordless_start\": true,\n \"enable_adfs_waad_email_verification\": true,\n \"revoke_refresh_token_grant\": true,\n \"dashboard_log_streams_next\": true,\n \"dashboard_insights_view\": true,\n \"disable_fields_map_fix\": true,\n \"mfa_show_factor_list_on_enrollment\": true,\n \"remove_alg_from_jwks\": true,\n \"improved_signup_bot_detection_in_classic\": true,\n \"genai_trial\": true,\n \"local_resource_discovery\": true,\n \"enable_dynamic_client_registration\": true,\n \"disable_management_api_sms_obfuscation\": true,\n \"trust_azure_adfs_email_verified_connection_property\": true,\n \"custom_domains_provisioning\": true\n },\n \"friendly_name\": \"friendly_name\",\n \"picture_url\": \"picture_url\",\n \"support_email\": \"support_email\",\n \"support_url\": \"support_url\",\n \"allowed_logout_urls\": [\n \"allowed_logout_urls\"\n ],\n \"session_lifetime\": 1.1,\n \"idle_session_lifetime\": 1.1,\n \"ephemeral_session_lifetime\": 1.1,\n \"idle_ephemeral_session_lifetime\": 1.1,\n \"sandbox_version\": \"sandbox_version\",\n \"legacy_sandbox_version\": \"legacy_sandbox_version\",\n \"sandbox_versions_available\": [\n \"sandbox_versions_available\"\n ],\n \"default_redirection_uri\": \"default_redirection_uri\",\n \"enabled_locales\": [\n \"am\"\n ],\n \"access_token\": {\n \"claims_mapping\": {\n \"custom_claims\": [\n {\n \"name\": \"name\",\n \"expression\": \"expression\"\n }\n ]\n }\n },\n \"security_headers\": {\n \"content_security_policy\": {\n \"enabled\": true,\n \"policies\": [\n {}\n ]\n },\n \"x_xss_protection\": {\n \"enabled\": true,\n \"mode\": \"block\",\n \"report_uri\": \"report_uri\"\n }\n },\n \"session_cookie\": {\n \"mode\": \"persistent\"\n },\n \"sessions\": {\n \"oidc_logout_prompt_enabled\": true,\n \"anonymous\": {\n \"lifetime_in_minutes\": 1,\n \"activate_cookie\": true\n }\n },\n \"oidc_logout\": {\n \"rp_logout_end_session_endpoint_discovery\": true\n },\n \"allow_organization_name_in_authentication_api\": true,\n \"customize_mfa_in_postlogin_action\": true,\n \"acr_values_supported\": [\n \"acr_values_supported\"\n ],\n \"mtls\": {\n \"enable_endpoint_aliases\": true\n },\n \"pushed_authorization_requests_supported\": true,\n \"authorization_response_iss_parameter_supported\": true,\n \"skip_non_verifiable_callback_uri_confirmation_prompt\": true,\n \"resource_parameter_profile\": \"audience\",\n \"client_id_metadata_document_supported\": true,\n \"phone_consolidated_experience\": true,\n \"enable_ai_guide\": true,\n \"include_session_metadata_in_tenant_logs\": true,\n \"dynamic_client_registration_security_mode\": \"strict\",\n \"country_codes\": {\n \"list\": [\n \"list\"\n ],\n \"mode\": \"allow\"\n }\n}", + "body": "{\n \"change_password\": {\n \"enabled\": true,\n \"html\": \"html\"\n },\n \"guardian_mfa_page\": {\n \"enabled\": true,\n \"html\": \"html\"\n },\n \"default_audience\": \"default_audience\",\n \"default_directory\": \"default_directory\",\n \"error_page\": {\n \"html\": \"html\",\n \"show_log_link\": true,\n \"url\": \"url\"\n },\n \"device_flow\": {\n \"charset\": \"base20\",\n \"mask\": \"mask\"\n },\n \"default_token_quota\": {\n \"clients\": {\n \"client_credentials\": {}\n },\n \"organizations\": {\n \"client_credentials\": {}\n }\n },\n \"flags\": {\n \"change_pwd_flow_v1\": true,\n \"enable_apis_section\": true,\n \"disable_impersonation\": true,\n \"enable_client_connections\": true,\n \"enable_pipeline2\": true,\n \"allow_legacy_delegation_grant_types\": true,\n \"allow_legacy_ro_grant_types\": true,\n \"allow_legacy_tokeninfo_endpoint\": true,\n \"enable_legacy_profile\": true,\n \"enable_idtoken_api2\": true,\n \"enable_public_signup_user_exists_error\": true,\n \"enable_sso\": true,\n \"allow_changing_enable_sso\": true,\n \"disable_clickjack_protection_headers\": true,\n \"no_disclose_enterprise_connections\": true,\n \"enforce_client_authentication_on_passwordless_start\": true,\n \"enable_adfs_waad_email_verification\": true,\n \"revoke_refresh_token_grant\": true,\n \"dashboard_log_streams_next\": true,\n \"dashboard_insights_view\": true,\n \"disable_fields_map_fix\": true,\n \"mfa_show_factor_list_on_enrollment\": true,\n \"remove_alg_from_jwks\": true,\n \"improved_signup_bot_detection_in_classic\": true,\n \"genai_trial\": true,\n \"local_resource_discovery\": true,\n \"enable_dynamic_client_registration\": true,\n \"disable_management_api_sms_obfuscation\": true,\n \"trust_azure_adfs_email_verified_connection_property\": true,\n \"custom_domains_provisioning\": true\n },\n \"friendly_name\": \"friendly_name\",\n \"picture_url\": \"picture_url\",\n \"support_email\": \"support_email\",\n \"support_url\": \"support_url\",\n \"allowed_logout_urls\": [\n \"allowed_logout_urls\"\n ],\n \"session_lifetime\": 1.1,\n \"idle_session_lifetime\": 1.1,\n \"ephemeral_session_lifetime\": 1.1,\n \"idle_ephemeral_session_lifetime\": 1.1,\n \"sandbox_version\": \"sandbox_version\",\n \"legacy_sandbox_version\": \"legacy_sandbox_version\",\n \"sandbox_versions_available\": [\n \"sandbox_versions_available\"\n ],\n \"default_redirection_uri\": \"default_redirection_uri\",\n \"enabled_locales\": [\n \"am\"\n ],\n \"access_token\": {\n \"claims_mapping\": {\n \"custom_claims\": [\n {\n \"name\": \"name\",\n \"expression\": \"expression\"\n }\n ]\n }\n },\n \"security_headers\": {\n \"content_security_policy\": {\n \"enabled\": true,\n \"policies\": [\n {}\n ]\n },\n \"x_xss_protection\": {\n \"enabled\": true,\n \"mode\": \"block\",\n \"report_uri\": \"report_uri\"\n }\n },\n \"session_cookie\": {\n \"mode\": \"persistent\"\n },\n \"sessions\": {\n \"oidc_logout_prompt_enabled\": true,\n \"anonymous\": {\n \"lifetime_in_minutes\": 1,\n \"activate_cookie\": true\n }\n },\n \"oidc_logout\": {\n \"rp_logout_end_session_endpoint_discovery\": true\n },\n \"allow_organization_name_in_authentication_api\": true,\n \"customize_mfa_in_postlogin_action\": true,\n \"acr_values_supported\": [\n \"acr_values_supported\"\n ],\n \"mtls\": {\n \"enable_endpoint_aliases\": true\n },\n \"pushed_authorization_requests_supported\": true,\n \"authorization_response_iss_parameter_supported\": true,\n \"dpop_strict_refresh_token_binding\": true,\n \"skip_non_verifiable_callback_uri_confirmation_prompt\": true,\n \"resource_parameter_profile\": \"audience\",\n \"client_id_metadata_document_supported\": true,\n \"client_id_metadata_document_dynamic_registration_supported\": true,\n \"phone_consolidated_experience\": true,\n \"enable_ai_guide\": true,\n \"include_session_metadata_in_tenant_logs\": true,\n \"dynamic_client_registration_security_mode\": \"strict\",\n \"country_codes\": {\n \"list\": [\n \"list\"\n ],\n \"mode\": \"allow\"\n }\n}", "headers": { "Content-Type": "application/json" } @@ -17843,6 +18231,6 @@ } ], "meta": { - "total": 477 + "total": 487 } } \ No newline at end of file