From 29af6d0879105c15f671028ebd86f7b2be843ccc Mon Sep 17 00:00:00 2001
From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com>
Date: Tue, 27 Oct 2026 05:56:56 +0000
Subject: [PATCH 1/5] [fern-generated] Update SDK
Generated by Fern
CLI Version: unknown
Generators:
- fernapi/fern-java-sdk: 4.11.1
---
reference.md | 1039 +++++++-
.../client/mgmt/AsyncClientGrantsClient.java | 35 +
.../mgmt/AsyncClientProfilesClient.java | 132 +
.../auth0/client/mgmt/AsyncClientsClient.java | 91 +
.../auth0/client/mgmt/AsyncManagementApi.java | 7 +
.../mgmt/AsyncRawClientGrantsClient.java | 178 ++
.../mgmt/AsyncRawClientProfilesClient.java | 621 +++++
.../client/mgmt/AsyncRawClientsClient.java | 240 ++
.../client/mgmt/AsyncRawRolesClient.java | 8 +-
.../client/mgmt/AsyncRawUsersClient.java | 304 +++
.../auth0/client/mgmt/AsyncRolesClient.java | 8 +-
.../auth0/client/mgmt/AsyncUsersClient.java | 44 +
.../auth0/client/mgmt/ClientGrantsClient.java | 34 +
.../client/mgmt/ClientProfilesClient.java | 129 +
.../com/auth0/client/mgmt/ClientsClient.java | 91 +
.../com/auth0/client/mgmt/ManagementApi.java | 7 +
.../client/mgmt/RawClientGrantsClient.java | 143 ++
.../client/mgmt/RawClientProfilesClient.java | 486 ++++
.../auth0/client/mgmt/RawClientsClient.java | 202 ++
.../com/auth0/client/mgmt/RawRolesClient.java | 8 +-
.../com/auth0/client/mgmt/RawUsersClient.java | 235 ++
.../com/auth0/client/mgmt/RolesClient.java | 8 +-
.../com/auth0/client/mgmt/UsersClient.java | 43 +
...pdateBruteForceSettingsRequestContent.java | 30 +-
.../AsyncExperimentsClient.java | 18 -
.../AsyncFeatureFlagsClient.java | 18 -
.../AsyncRawExperimentsClient.java | 127 -
.../AsyncRawFeatureFlagsClient.java | 117 -
.../AsyncRawSegmentsClient.java | 4 +
.../experimentation/ExperimentsClient.java | 17 -
.../experimentation/FeatureFlagsClient.java | 18 -
.../experimentation/RawExperimentsClient.java | 98 -
.../RawFeatureFlagsClient.java | 92 -
.../experimentation/RawSegmentsClient.java | 4 +
.../AsyncRawVariationsClient.java | 5 -
.../featureflags/RawVariationsClient.java | 3 -
.../types/UpdateVariationRequestContent.java | 42 +-
.../types/CreateExperimentRequestContent.java | 62 +-
.../types/ListSegmentsRequestParameters.java | 69 +-
.../UpdateExperimentRequestParameters.java | 39 +-
.../UpdateFeatureFlagRequestContent.java | 39 +-
...UpdateFeatureFlagStatusRequestContent.java | 131 -
.../types/UpdateSegmentRequestContent.java | 39 +-
.../UpdateTenantSettingsRequestContent.java | 103 +
...ForceProtectionFormSubmissionModeEnum.java | 86 +
.../CimdExternalMetadataCreatedByEnum.java | 86 +
.../com/auth0/client/mgmt/types/Client.java | 82 +
...mousSessionTransferNetworkBindingEnum.java | 97 +
.../ClientExternalMetadataStatusEnum.java | 86 +
.../mgmt/types/ClientGrantSortFieldEnum.java | 85 +
.../client/mgmt/types/ClientOidcSupport.java | 156 ++
.../mgmt/types/ClientOidcSupportPatch.java | 182 ++
.../client/mgmt/types/ClientProfile.java | 367 +++
.../mgmt/types/ClientProfileApplyPolicy.java | 151 ++
...lyPolicyExternalMetadataCreatedByEnum.java | 75 +
...leApplyPolicyExternalMetadataTypeEnum.java | 75 +
.../ClientProfileClientConfiguration.java | 224 ++
...rationOrganizationDiscoveryMethodEnum.java | 88 +
...igurationOrganizationDiscoveryMethods.java | 112 +
...figurationOrganizationRequireBehavior.java | 110 +
...rationOrganizationRequireBehaviorEnum.java | 100 +
...eClientConfigurationOrganizationUsage.java | 108 +
...entConfigurationOrganizationUsageEnum.java | 97 +
...rofileClientConfigurationRefreshToken.java | 157 ++
...ConfigurationRequireProofOfPossession.java | 107 +
...tProfileRefreshTokenIdleTokenLifetime.java | 107 +
.../ClientProfileRefreshTokenLeeway.java | 105 +
...lientProfileRefreshTokenTokenLifetime.java | 107 +
.../mgmt/types/ClientSearchResponse.java | 2251 +++++++++++++++++
.../mgmt/types/ClientSortFieldEnum.java | 83 +
.../mgmt/types/ConnectionOptionsAuth0.java | 26 +
.../mgmt/types/ConnectionOptionsSaml.java | 52 +
.../types/ConnectionOtpChannelSettings.java | 140 +
.../mgmt/types/ConnectionOtpSettings.java | 130 +
.../types/ConnectionProfileProvisioning.java | 32 +-
...onProfileProvisioningGoogleWorkspace.java} | 59 +-
...nProfileStrategyOverridesProvisioning.java | 32 +-
.../types/ConnectionPropertiesOptions.java | 26 +
.../mgmt/types/ConnectionResponseCommon.java | 72 +-
.../types/ConnectionResponseContentAd.java | 71 +-
.../types/ConnectionResponseContentAdfs.java | 71 +-
.../ConnectionResponseContentAmazon.java | 71 +-
.../types/ConnectionResponseContentApple.java | 71 +-
.../types/ConnectionResponseContentAuth0.java | 71 +-
.../ConnectionResponseContentAuth0Oidc.java | 71 +-
.../ConnectionResponseContentAzureAd.java | 71 +-
.../types/ConnectionResponseContentBaidu.java | 71 +-
.../ConnectionResponseContentBitbucket.java | 71 +-
.../types/ConnectionResponseContentBitly.java | 71 +-
.../types/ConnectionResponseContentBox.java | 71 +-
.../ConnectionResponseContentCustom.java | 71 +-
.../ConnectionResponseContentDaccount.java | 71 +-
.../ConnectionResponseContentDropbox.java | 71 +-
.../ConnectionResponseContentDwolla.java | 71 +-
.../types/ConnectionResponseContentEmail.java | 71 +-
.../ConnectionResponseContentEvernote.java | 71 +-
...nectionResponseContentEvernoteSandbox.java | 71 +-
.../types/ConnectionResponseContentExact.java | 71 +-
.../ConnectionResponseContentFacebook.java | 71 +-
.../ConnectionResponseContentFitbit.java | 71 +-
.../ConnectionResponseContentGitHub.java | 71 +-
.../ConnectionResponseContentGoogleApps.java | 71 +-
...ConnectionResponseContentGoogleOAuth2.java | 71 +-
.../ConnectionResponseContentInstagram.java | 71 +-
.../types/ConnectionResponseContentIp.java | 71 +-
.../types/ConnectionResponseContentLine.java | 71 +-
.../ConnectionResponseContentLinkedin.java | 71 +-
.../ConnectionResponseContentOAuth1.java | 71 +-
.../ConnectionResponseContentOAuth2.java | 71 +-
.../ConnectionResponseContentOffice365.java | 71 +-
.../types/ConnectionResponseContentOidc.java | 72 +-
.../types/ConnectionResponseContentOkta.java | 71 +-
.../ConnectionResponseContentPaypal.java | 71 +-
...onnectionResponseContentPaypalSandbox.java | 71 +-
...ConnectionResponseContentPingFederate.java | 71 +-
...nnectionResponseContentPlanningCenter.java | 71 +-
.../ConnectionResponseContentSalesforce.java | 71 +-
...ionResponseContentSalesforceCommunity.java | 70 +-
...ctionResponseContentSalesforceSandbox.java | 70 +-
.../types/ConnectionResponseContentSaml.java | 104 +-
.../ConnectionResponseContentSharepoint.java | 71 +-
.../types/ConnectionResponseContentShop.java | 71 +-
.../ConnectionResponseContentShopify.java | 71 +-
.../types/ConnectionResponseContentSms.java | 71 +-
.../ConnectionResponseContentSoundcloud.java | 71 +-
...tionResponseContentThirtySevenSignals.java | 70 +-
.../ConnectionResponseContentTwitter.java | 71 +-
.../ConnectionResponseContentUntappd.java | 71 +-
.../ConnectionResponseContentVkontakte.java | 71 +-
.../types/ConnectionResponseContentWeibo.java | 71 +-
.../ConnectionResponseContentWindowsLive.java | 71 +-
.../ConnectionResponseContentWordpress.java | 71 +-
.../types/ConnectionResponseContentYahoo.java | 71 +-
.../ConnectionResponseContentYandex.java | 71 +-
.../client/mgmt/types/ConsentSigningKey.java | 234 ++
.../CreateClientProfileRequestContent.java | 241 ++
.../types/CreateClientRequestContent.java | 38 +
.../types/CreateClientResponseContent.java | 82 +
.../CreateConnectionRequestContentSaml.java | 33 +
.../CreateExperimentResponseContent.java | 10 +
.../CreateResourceServerRequestContent.java | 72 +-
.../CreateResourceServerResponseContent.java | 60 +-
.../mgmt/types/CreateRoleResponseContent.java | 6 -
.../types/CreateSegmentResponseContent.java | 41 +-
.../mgmt/types/EnabledFeaturesEnum.java | 11 +
...CloudEventConnectionCreatedCloudEvent.java | 68 +-
...CloudEventConnectionDeletedCloudEvent.java | 68 +-
...CloudEventConnectionUpdatedCloudEvent.java | 68 +-
.../types/EventStreamCloudEventContext.java | 37 +-
...entStreamCloudEventContextTransaction.java | 618 +++++
...udEventContextTransactionProtocolEnum.java | 223 ++
...entContextTransactionResponseModeEnum.java | 109 +
...ontextTransactionResponseTypeItemEnum.java | 98 +
...treamCloudEventGroupCreatedCloudEvent.java | 68 +-
...treamCloudEventGroupDeletedCloudEvent.java | 68 +-
...mCloudEventGroupMemberAddedCloudEvent.java | 68 +-
...loudEventGroupMemberDeletedCloudEvent.java | 68 +-
...CloudEventGroupRoleAssignedCloudEvent.java | 68 +-
...mCloudEventGroupRoleDeletedCloudEvent.java | 68 +-
...treamCloudEventGroupUpdatedCloudEvent.java | 68 +-
...loudEventOrgConnectionAddedCloudEvent.java | 68 +-
...eamCloudEventOrgConnectionAddedObject.java | 48 +-
...edObjectOrganizationMemberAccessLevel.java | 134 +
...ectOrganizationMemberAccessLevel0Enum.java | 80 +
...ectOrganizationMemberAccessLevel1Enum.java | 81 +
...ectOrganizationMemberAccessLevel2Enum.java | 81 +
...ectOrganizationMemberAccessLevel3Enum.java | 80 +
...EventOrgConnectionAddedPreviousObject.java | 48 +-
...usObjectOrganizationMemberAccessLevel.java | 144 ++
...ectOrganizationMemberAccessLevel0Enum.java | 84 +
...ectOrganizationMemberAccessLevel1Enum.java | 84 +
...ectOrganizationMemberAccessLevel2Enum.java | 84 +
...ectOrganizationMemberAccessLevel3Enum.java | 84 +
...udEventOrgConnectionRemovedCloudEvent.java | 68 +-
...udEventOrgConnectionUpdatedCloudEvent.java | 68 +-
...mCloudEventOrgConnectionUpdatedObject.java | 48 +-
...edObjectOrganizationMemberAccessLevel.java | 139 +
...ectOrganizationMemberAccessLevel0Enum.java | 80 +
...ectOrganizationMemberAccessLevel1Enum.java | 81 +
...ectOrganizationMemberAccessLevel2Enum.java | 81 +
...ectOrganizationMemberAccessLevel3Enum.java | 80 +
...entOrgConnectionUpdatedPreviousObject.java | 48 +-
...usObjectOrganizationMemberAccessLevel.java | 151 ++
...ectOrganizationMemberAccessLevel0Enum.java | 84 +
...ectOrganizationMemberAccessLevel1Enum.java | 84 +
...ectOrganizationMemberAccessLevel2Enum.java | 84 +
...ectOrganizationMemberAccessLevel3Enum.java | 84 +
...tStreamCloudEventOrgCreatedCloudEvent.java | 68 +-
...tStreamCloudEventOrgDeletedCloudEvent.java | 68 +-
...udEventOrgGroupRoleAssignedCloudEvent.java | 68 +-
...oudEventOrgGroupRoleDeletedCloudEvent.java | 68 +-
...eamCloudEventOrgMemberAddedCloudEvent.java | 68 +-
...mCloudEventOrgMemberDeletedCloudEvent.java | 68 +-
...dEventOrgMemberRoleAssignedCloudEvent.java | 68 +-
...udEventOrgMemberRoleDeletedCloudEvent.java | 68 +-
...tStreamCloudEventOrgUpdatedCloudEvent.java | 68 +-
...StreamCloudEventUserCreatedCloudEvent.java | 68 +-
...StreamCloudEventUserDeletedCloudEvent.java | 68 +-
...StreamCloudEventUserUpdatedCloudEvent.java | 68 +-
.../client/mgmt/types/ExperimentListItem.java | 10 +
.../GetBruteForceSettingsResponseContent.java | 29 +-
.../mgmt/types/GetClientResponseContent.java | 82 +
.../types/GetExperimentResponseContent.java | 10 +
.../GetResourceServerResponseContent.java | 60 +-
.../mgmt/types/GetRoleResponseContent.java | 6 -
.../mgmt/types/GetSegmentResponseContent.java | 41 +-
.../GetTenantSettingsResponseContent.java | 103 +
.../mgmt/types/GuardianFactorNameEnum.java | 10 +
.../mgmt/types/IConnectionResponseCommon.java | 14 +-
...lientProfilesPaginatedResponseContent.java | 147 ++
.../ListClientProfilesRequestParameters.java | 204 ++
.../types/ListGroupsRequestParameters.java | 4 +-
.../types/ListRolesRequestParameters.java | 4 +-
.../auth0/client/mgmt/types/OauthScope.java | 44 +
.../PreviewCimdMetadataResponseContent.java | 30 +-
.../client/mgmt/types/ResourceServer.java | 60 +-
.../types/ResourceServerSearchResponse.java | 60 +-
.../mgmt/types/ResourceServerTypeEnum.java | 75 +
.../com/auth0/client/mgmt/types/Role.java | 6 -
.../RotateClientSecretResponseContent.java | 82 +
.../SearchClientGrantsRequestParameters.java | 508 ++++
.../SearchClientGrantsResponseContent.java | 154 ++
.../types/SearchClientsRequestParameters.java | 507 ++++
.../types/SearchClientsResponseContent.java | 152 ++
.../client/mgmt/types/SearchOrganization.java | 27 -
...OrganizationsPaginatedResponseContent.java | 6 +
.../com/auth0/client/mgmt/types/Segment.java | 41 +-
.../client/mgmt/types/SegmentStatusEnum.java | 83 +
.../client/mgmt/types/SystemRoleOwnerId.java | 73 +
.../mgmt/types/TenantSettingsFlags.java | 4 +-
...dateBruteForceSettingsResponseContent.java | 29 +-
.../UpdateClientProfileRequestContent.java | 213 ++
.../types/UpdateClientRequestContent.java | 90 +-
.../types/UpdateClientResponseContent.java | 82 +
.../mgmt/types/UpdateConnectionOptions.java | 26 +
.../UpdateConnectionRequestContentSaml.java | 26 +
.../UpdateExperimentResponseContent.java | 10 +
...UpdateExperimentStatusResponseContent.java | 820 ------
...pdateFeatureFlagStatusResponseContent.java | 314 ---
.../UpdateResourceServerRequestContent.java | 60 +-
.../UpdateResourceServerResponseContent.java | 60 +-
.../mgmt/types/UpdateRoleResponseContent.java | 6 -
.../types/UpdateSegmentResponseContent.java | 41 +-
.../UpdateTenantSettingsResponseContent.java | 103 +
...vePermissionRoleSourceResponseContent.java | 6 -
...rotectionBruteForceProtectionWireTest.java | 6 +-
.../client/mgmt/ClientGrantsWireTest.java | 30 +
.../client/mgmt/ClientProfilesWireTest.java | 403 +++
.../auth0/client/mgmt/ClientsWireTest.java | 32 +-
.../mgmt/ConnectionProfilesWireTest.java | 5 +-
.../client/mgmt/EmailTemplatesWireTest.java | 31 +-
.../ExperimentationExperimentsWireTest.java | 134 +-
.../ExperimentationFeatureFlagsWireTest.java | 102 -
.../mgmt/ExperimentationSegmentsWireTest.java | 13 +-
.../client/mgmt/ResourceServersWireTest.java | 4 +-
.../com/auth0/client/mgmt/UsersWireTest.java | 118 +
.../ClientsWireTest_testCreate_response.json | 9 +
.../ClientsWireTest_testGet_response.json | 9 +
.../ClientsWireTest_testList_response.json | 2 +
...ntsWireTest_testRotateSecret_response.json | 9 +
.../ClientsWireTest_testSearch_response.json | 116 +
.../ClientsWireTest_testUpdate_response.json | 9 +
...nProfilesWireTest_testCreate_response.json | 3 +
...tionProfilesWireTest_testGet_response.json | 3 +
...nProfilesWireTest_testUpdate_response.json | 3 +
...ceServersWireTest_testCreate_response.json | 3 +-
...ourceServersWireTest_testGet_response.json | 3 +-
...ceServersWireTest_testUpdate_response.json | 3 +-
...antsSettingsWireTest_testGet_response.json | 2 +
...sSettingsWireTest_testUpdate_response.json | 2 +
270 files changed, 21005 insertions(+), 5217 deletions(-)
create mode 100644 src/main/java/com/auth0/client/mgmt/AsyncClientProfilesClient.java
create mode 100644 src/main/java/com/auth0/client/mgmt/AsyncRawClientProfilesClient.java
create mode 100644 src/main/java/com/auth0/client/mgmt/ClientProfilesClient.java
create mode 100644 src/main/java/com/auth0/client/mgmt/RawClientProfilesClient.java
delete mode 100644 src/main/java/com/auth0/client/mgmt/experimentation/types/UpdateFeatureFlagStatusRequestContent.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/BruteForceProtectionFormSubmissionModeEnum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/CimdExternalMetadataCreatedByEnum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ClientAnonymousSessionTransferNetworkBindingEnum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ClientExternalMetadataStatusEnum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ClientGrantSortFieldEnum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ClientOidcSupport.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ClientOidcSupportPatch.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ClientProfile.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ClientProfileApplyPolicy.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ClientProfileApplyPolicyExternalMetadataCreatedByEnum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ClientProfileApplyPolicyExternalMetadataTypeEnum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ClientProfileClientConfiguration.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ClientProfileClientConfigurationOrganizationDiscoveryMethodEnum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ClientProfileClientConfigurationOrganizationDiscoveryMethods.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ClientProfileClientConfigurationOrganizationRequireBehavior.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ClientProfileClientConfigurationOrganizationRequireBehaviorEnum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ClientProfileClientConfigurationOrganizationUsage.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ClientProfileClientConfigurationOrganizationUsageEnum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ClientProfileClientConfigurationRefreshToken.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ClientProfileClientConfigurationRequireProofOfPossession.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ClientProfileRefreshTokenIdleTokenLifetime.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ClientProfileRefreshTokenLeeway.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ClientProfileRefreshTokenTokenLifetime.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ClientSearchResponse.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ClientSortFieldEnum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ConnectionOtpChannelSettings.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ConnectionOtpSettings.java
rename src/main/java/com/auth0/client/mgmt/{experimentation/types/UpdateExperimentStatusRequestContent.java => types/ConnectionProfileProvisioningGoogleWorkspace.java} (54%)
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ConsentSigningKey.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/CreateClientProfileRequestContent.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/EventStreamCloudEventContextTransaction.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/EventStreamCloudEventContextTransactionProtocolEnum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/EventStreamCloudEventContextTransactionResponseModeEnum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/EventStreamCloudEventContextTransactionResponseTypeItemEnum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel0Enum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel1Enum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel2Enum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/EventStreamCloudEventOrgConnectionAddedObjectOrganizationMemberAccessLevel3Enum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel0Enum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel1Enum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel2Enum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/EventStreamCloudEventOrgConnectionAddedPreviousObjectOrganizationMemberAccessLevel3Enum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel0Enum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel1Enum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel2Enum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/EventStreamCloudEventOrgConnectionUpdatedObjectOrganizationMemberAccessLevel3Enum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel0Enum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel1Enum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel2Enum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/EventStreamCloudEventOrgConnectionUpdatedPreviousObjectOrganizationMemberAccessLevel3Enum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ListClientProfilesPaginatedResponseContent.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ListClientProfilesRequestParameters.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/ResourceServerTypeEnum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/SearchClientGrantsRequestParameters.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/SearchClientGrantsResponseContent.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/SearchClientsRequestParameters.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/SearchClientsResponseContent.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/SegmentStatusEnum.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/SystemRoleOwnerId.java
create mode 100644 src/main/java/com/auth0/client/mgmt/types/UpdateClientProfileRequestContent.java
delete mode 100644 src/main/java/com/auth0/client/mgmt/types/UpdateExperimentStatusResponseContent.java
delete mode 100644 src/main/java/com/auth0/client/mgmt/types/UpdateFeatureFlagStatusResponseContent.java
create mode 100644 src/test/java/com/auth0/client/mgmt/ClientProfilesWireTest.java
create mode 100644 src/test/resources/wire-tests/ClientsWireTest_testSearch_response.json
diff --git a/reference.md b/reference.md
index bcdc3a8d0..45cb7d556 100644
--- a/reference.md
+++ b/reference.md
@@ -1289,6 +1289,120 @@ client.clientGrants().create(
+
+
+
+
+client.clientGrants.search() -> SyncPagingIterable<ClientGrantResponseContent>
+
+-
+
+#### 📝 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
+
+
+-
+
+
+-
+
+```java
+client.clientGrants().search(
+ SearchClientGrantsRequestParameters
+ .builder()
+ .q("q")
+ .parser(SearchParserEnum.SCIM)
+ .fields("fields")
+ .includeFields(true)
+ .take(1)
+ .from("from")
+ .sort(ClientGrantSortFieldEnum.AUDIENCE)
+ .build()
+);
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**q:** `Optional` — 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:** `Optional` — Query parser to use for the filter expression. Use "scim" for SCIM filter syntax or "lucene" for Lucene query syntax (default).
+
+
+
+
+
+-
+
+**fields:** `Optional` — Comma-separated list of fields to include or exclude in the response. Works with the include_fields parameter to control projection mode.
+
+
+
+
+
+-
+
+**includeFields:** `Optional` — 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:** `Optional` — Maximum number of results to return per page (1-100). Defaults to 50.
+
+
+
+
+
+-
+
+**from:** `Optional` — Cursor for the next page of results. Use the value from the next field in the previous response.
+
+
+
+
+
+-
+
+**sort:** `Optional` — Field name to sort results by in ascending order. Defaults to insertion order (oldest first) if not provided.
+
+
+
+
+
+
+
@@ -1497,6 +1611,369 @@ client.clientGrants().update(
+
+
+
+
+## ClientProfiles
+client.clientProfiles.list() -> SyncPagingIterable<ClientProfile>
+
+-
+
+#### 📝 Description
+
+
+-
+
+
+-
+
+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.
+
+
+
+
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```java
+client.clientProfiles().list(
+ ListClientProfilesRequestParameters
+ .builder()
+ .from("from")
+ .take(1)
+ .build()
+);
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**from:** `Optional` — Optional Id from which to start selection.
+
+
+
+
+
+-
+
+**take:** `Optional` — Number of results per page. Defaults to 50.
+
+
+
+
+
+
+
+
+
+
+
+client.clientProfiles.create(request) -> ClientProfile
+
+-
+
+#### 📝 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
+
+
+-
+
+
+-
+
+```java
+client.clientProfiles().create(
+ CreateClientProfileRequestContent
+ .builder()
+ .name("name")
+ .clientConfiguration(
+ ClientProfileClientConfiguration
+ .builder()
+ .build()
+ )
+ .applyPolicy(
+ ClientProfileApplyPolicy
+ .builder()
+ .externalMetadataType(ClientProfileApplyPolicyExternalMetadataTypeEnum.CIMD)
+ .externalMetadataCreatedBy(ClientProfileApplyPolicyExternalMetadataCreatedByEnum.CLIENT)
+ .build()
+ )
+ .build()
+);
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**name:** `String`
+
+
+
+
+
+-
+
+**description:** `Optional`
+
+
+
+
+
+-
+
+**clientConfiguration:** `ClientProfileClientConfiguration`
+
+
+
+
+
+-
+
+**applyPolicy:** `ClientProfileApplyPolicy`
+
+
+
+
+
+
+
+
+
+
+
+client.clientProfiles.get(id) -> ClientProfile
+
+-
+
+#### 📝 Description
+
+
+-
+
+
+-
+
+Retrieve a single client profile by its identifier. Returns
404 if no profile with the given ID exists for the tenant.
+
+
+
+
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```java
+client.clientProfiles().get("id");
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `String` — ID of the client profile.
+
+
+
+
+
+
+
+
+
+
+
+client.clientProfiles.delete(id)
+
+-
+
+#### 📝 Description
+
+
+-
+
+
+-
+
+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.
+
+
+
+
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```java
+client.clientProfiles().delete("id");
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `String` — ID of the client profile.
+
+
+
+
+
+
+
+
+
+
+
+client.clientProfiles.update(id, request) -> ClientProfile
+
+-
+
+#### 📝 Description
+
+
+-
+
+
+-
+
+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.
+
+
+
+
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```java
+client.clientProfiles().update(
+ "id",
+ UpdateClientProfileRequestContent
+ .builder()
+ .build()
+);
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `String` — ID of the client profile.
+
+
+
+
+
+-
+
+**name:** `Optional`
+
+
+
+
+
+-
+
+**description:** `Optional`
+
+
+
+
+
+-
+
+**clientConfiguration:** `Optional`
+
+
+
+
+
+-
+
+**applyPolicy:** `Optional`
+
+
+
+
+
+
+
@@ -2146,6 +2623,14 @@ See https://auth0.com/docs/secure/security-guidance/measures-against-app-imperso
-
+**enforceAnonSessionTransferNetworkBinding:** `Optional`
+
+
+
+
+
+-
+
**thirdPartySecurityMode:** `Optional`
@@ -2334,6 +2819,130 @@ client.clients().registerCimdClient(
+
+
+
+
+client.clients.search() -> SyncPagingIterable<ClientSearchResponse>
+
+-
+
+#### 📝 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
+
+
+-
+
+
+-
+
+```java
+client.clients().search(
+ SearchClientsRequestParameters
+ .builder()
+ .q("q")
+ .parser(SearchParserEnum.SCIM)
+ .fields("fields")
+ .includeFields(true)
+ .take(1)
+ .from("from")
+ .sort(ClientSortFieldEnum.NAME)
+ .build()
+);
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**q:** `Optional` — 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:** `Optional` — Query parser to use for the filter expression. Use "scim" for SCIM filter syntax or "lucene" for Lucene query syntax (default).
+
+
+
+
+
+-
+
+**fields:** `Optional` — 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.
+
+
+
+
+
+-
+
+**includeFields:** `Optional` — 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:** `Optional` — Maximum number of results to return per page (1-100). Defaults to 50.
+
+
+
+
+
+-
+
+**from:** `Optional` — Cursor for the next page of results. Use the value from the next field in the previous response.
+
+
+
+
+
+-
+
+**sort:** `Optional` — Field name to sort results by in ascending order. Defaults to insertion order (oldest first) if not provided.
+
+
+
+
+
+
+
@@ -2803,6 +3412,14 @@ client.clients().update(
-
+**enforceAnonSessionTransferNetworkBinding:** `Optional`
+
+
+
+
+
+-
+
**formTemplate:** `Optional` — Form template for WS-Federation protocol
@@ -3017,6 +3634,14 @@ See https://auth0.com/docs/secure/security-guidance/measures-against-app-imperso
**redirectionPolicy:** `Optional`
+
+
+
+
+-
+
+**oidcSupport:** `Optional`
+
@@ -5174,6 +5799,21 @@ client.emailTemplates().create(
CreateEmailTemplateRequestContent
.builder()
.template(EmailTemplateNameEnum.VERIFY_EMAIL)
+ .body(
+ Nullable.ofNull()
+ )
+ .from(
+ Nullable.ofNull()
+ )
+ .subject(
+ Nullable.ofNull()
+ )
+ .syntax(
+ Nullable.ofNull()
+ )
+ .enabled(
+ Nullable.ofNull()
+ )
.build()
);
```
@@ -5352,6 +5992,21 @@ client.emailTemplates().set(
SetEmailTemplateRequestContent
.builder()
.template(EmailTemplateNameEnum.VERIFY_EMAIL)
+ .body(
+ Nullable.ofNull()
+ )
+ .from(
+ Nullable.ofNull()
+ )
+ .subject(
+ Nullable.ofNull()
+ )
+ .syntax(
+ Nullable.ofNull()
+ )
+ .enabled(
+ Nullable.ofNull()
+ )
.build()
);
```
@@ -7001,7 +7656,7 @@ client.groups().list(
-
-**includeTotals:** `Optional` — Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
+**includeTotals:** `Optional` — 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.
@@ -10914,6 +11569,14 @@ client.resourceServers().create(
**authorizationPolicy:** `Optional`
+
+
+
+
+-
+
+**type:** `Optional`
+
@@ -11371,6 +12034,14 @@ client.resourceServers().update(
**authorizationPolicy:** `Optional`
+
+
+
+
+-
+
+**type:** `Optional`
+
@@ -11394,7 +12065,7 @@ client.resourceServers().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.
@@ -11476,7 +12147,7 @@ client.roles().list(
-
-**ownerId:** `Optional` — Filter organization-level roles by owner ID. Required when type is "organization".
+**ownerId:** `Optional` — 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".
@@ -15306,6 +15977,184 @@ client.users().update(
+
+
+
+
+client.users.listConsentSigningKeys(id) -> List<ConsentSigningKey>
+
+-
+
+#### 📝 Description
+
+
+-
+
+
+-
+
+Retrieve all consent signing keys registered for a user. Returns an empty array when the user has no keys registered.
+
+
+
+
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```java
+client.users().listConsentSigningKeys("id");
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `String` — The ID of the user.
+
+
+
+
+
+
+
+
+
+
+
+client.users.getConsentSigningKey(id, kid) -> ConsentSigningKey
+
+-
+
+#### 📝 Description
+
+
+-
+
+
+-
+
+Retrieve a single consent signing key for a user by its key identifier (kid). Returns 404 if the key does not exist.
+
+
+
+
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```java
+client.users().getConsentSigningKey("id", "kid");
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `String` — The ID of the user.
+
+
+
+
+
+-
+
+**kid:** `String` — The key identifier of the consent signing key.
+
+
+
+
+
+
+
+
+
+
+
+client.users.deleteConsentSigningKey(id, kid)
+
+-
+
+#### 📝 Description
+
+
+-
+
+
+-
+
+Remove a single consent signing key for a user by its key identifier (kid). The operation is idempotent and returns 204 whether or not the key existed.
+
+
+
+
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```java
+client.users().deleteConsentSigningKey("id", "kid");
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `String` — The ID of the user.
+
+
+
+
+
+-
+
+**kid:** `String` — The key identifier of the consent signing key.
+
+
+
+
+
+
+
@@ -17100,6 +17949,14 @@ Action to take when a brute force protection threshold is violated.
-
+**formSubmissionMode:** `Optional`
+
+
+
+
+
+-
+
**maxAttempts:** `Optional` — Maximum number of unsuccessful attempts.
@@ -22051,6 +22908,7 @@ client.experimentation().experiments().create(
.name("name")
.featureFlagId("feature_flag_id")
.authenticationFlow(AuthenticationFlowEnum.AUTHENTICATION)
+ .allocationStrategy(AllocationStrategyEnum.PERCENTAGE)
.build()
);
```
@@ -22107,7 +22965,7 @@ client.experimentation().experiments().create(
-
-**allocationStrategy:** `Optional` — The traffic allocation strategy for this experiment
+**allocationStrategy:** `AllocationStrategyEnum` — The traffic allocation strategy for this experiment
@@ -22342,71 +23200,11 @@ client.experimentation().experiments().update(
-
-
-
-
-
-
-
-client.experimentation.experiments.advanceRamp(id, request) -> AdvanceRampResponseContent
-
-#### 📝 Description
-
-
--
-
-
--
-
-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.
-
-
-
-
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```java
-client.experimentation().experiments().advanceRamp(
- "id",
- AdvanceRampRequestContent
- .builder()
- .targetLevel(1)
- .build()
-);
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**id:** `String` — The ID of the experiment to advance.
-
-
-
-
-
--
-
-**targetLevel:** `Integer` — The target percentage level from the experiment schedule. Must be the immediate next level.
+**status:** `Optional`
@@ -22418,7 +23216,7 @@ client.experimentation().experiments().advanceRamp(
-client.experimentation.experiments.updateStatus(id, request) -> UpdateExperimentStatusResponseContent
+client.experimentation.experiments.advanceRamp(id, request) -> AdvanceRampResponseContent
-
@@ -22430,7 +23228,7 @@ client.experimentation().experiments().advanceRamp(
-
-Transitions an experiment through its lifecycle: draft → active, active → paused, paused → active, active/paused → completed. Activation runs full readiness validation.
+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.
@@ -22445,11 +23243,11 @@ Transitions an experiment through its lifecycle: draft → active, active → pa
-
```java
-client.experimentation().experiments().updateStatus(
+client.experimentation().experiments().advanceRamp(
"id",
- UpdateExperimentStatusRequestContent
+ AdvanceRampRequestContent
.builder()
- .status(ExperimentTransitionStatusEnum.ACTIVE)
+ .targetLevel(1)
.build()
);
```
@@ -22466,7 +23264,7 @@ client.experimentation().experiments().updateStatus(
-
-**id:** `String` — The ID of the experiment to transition.
+**id:** `String` — The ID of the experiment to advance.
@@ -22474,7 +23272,7 @@ client.experimentation().experiments().updateStatus(
-
-**status:** `ExperimentTransitionStatusEnum`
+**targetLevel:** `Integer` — The target percentage level from the experiment schedule. Must be the immediate next level.
@@ -22886,73 +23684,13 @@ client.experimentation().featureFlags().update(
**parameters:** `Optional
-
-
-
-
-
-
-
-
-
-client.experimentation.featureFlags.updateStatus(id, request) -> UpdateFeatureFlagStatusResponseContent
-
--
-
-#### 📝 Description
-
-
--
-
-
--
-
-Transitions a feature flag through its lifecycle states: draft → active, draft → archived, active → archived.
-
-
-
-
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```java
-client.experimentation().featureFlags().updateStatus(
- "id",
- UpdateFeatureFlagStatusRequestContent
- .builder()
- .status(FeatureFlagStatusEnum.DRAFT)
- .build()
-);
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**id:** `String` — The ID of the feature flag to transition.
-
-
-**status:** `FeatureFlagStatusEnum` — The target status to transition the feature flag to.
+**status:** `Optional` — 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.
@@ -22998,6 +23736,7 @@ client.experimentation().segments().list(
.from("from")
.take(1)
.type(SegmentTypeFilterEnum.AUTH0)
+ .status(SegmentStatusEnum.ACTIVE)
.build()
);
```
@@ -23032,6 +23771,14 @@ client.experimentation().segments().list(
**type:** `Optional` — Filter by type. Exact match.
+
+
+
+
+-
+
+**status:** `Optional` — Filter by status. Exact match.
+
@@ -23305,6 +24052,14 @@ client.experimentation().segments().update(
**rules:** `Optional>` — Replaces the entire rules array. Each rule is limited to 4KB and the whole segment to 10KB (serialized).
+
+
+
+
+-
+
+**status:** `Optional` — 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.
+
@@ -24734,7 +25489,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`.
@@ -33846,6 +34601,14 @@ client.tenants().settings().update(
-
+**dpopStrictRefreshTokenBinding:** `Optional` — 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.
+
+
+
+
+
+-
+
**skipNonVerifiableCallbackUriConfirmationPrompt:** `Optional`
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`).
@@ -33874,6 +34637,14 @@ See https://auth0.com/docs/secure/security-guidance/measures-against-app-imperso
-
+**clientIdMetadataDocumentDynamicRegistrationSupported:** `Optional` — Whether the authorization server supports registering clients dynamically from a client_id URL. Requires client_id_metadata_document_supported to be enabled.
+
+
+
+
+
+-
+
**enableAiGuide:** `Optional` — Whether Auth0 Guide (AI-powered assistance) is enabled for this tenant.
diff --git a/src/main/java/com/auth0/client/mgmt/AsyncClientGrantsClient.java b/src/main/java/com/auth0/client/mgmt/AsyncClientGrantsClient.java
index 62813ccd9..16524a987 100644
--- a/src/main/java/com/auth0/client/mgmt/AsyncClientGrantsClient.java
+++ b/src/main/java/com/auth0/client/mgmt/AsyncClientGrantsClient.java
@@ -13,6 +13,7 @@
import com.auth0.client.mgmt.types.CreateClientGrantResponseContent;
import com.auth0.client.mgmt.types.GetClientGrantResponseContent;
import com.auth0.client.mgmt.types.ListClientGrantsRequestParameters;
+import com.auth0.client.mgmt.types.SearchClientGrantsRequestParameters;
import com.auth0.client.mgmt.types.UpdateClientGrantRequestContent;
import com.auth0.client.mgmt.types.UpdateClientGrantResponseContent;
import java.util.concurrent.CompletableFuture;
@@ -83,6 +84,40 @@ public CompletableFuture create(
return this.rawClient.create(request, requestOptions).thenApply(response -> response.body());
}
+ /**
+ * 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.
+ */
+ public CompletableFuture> search() {
+ return this.rawClient.search().thenApply(response -> response.body());
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture> search(RequestOptions requestOptions) {
+ return this.rawClient.search(requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture> search(
+ SearchClientGrantsRequestParameters request) {
+ return this.rawClient.search(request).thenApply(response -> response.body());
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture> search(
+ SearchClientGrantsRequestParameters request, RequestOptions requestOptions) {
+ return this.rawClient.search(request, requestOptions).thenApply(response -> response.body());
+ }
+
/**
* Retrieve a single client grant, including the
* scopes associated with the application/API pair.
diff --git a/src/main/java/com/auth0/client/mgmt/AsyncClientProfilesClient.java b/src/main/java/com/auth0/client/mgmt/AsyncClientProfilesClient.java
new file mode 100644
index 000000000..321678982
--- /dev/null
+++ b/src/main/java/com/auth0/client/mgmt/AsyncClientProfilesClient.java
@@ -0,0 +1,132 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.auth0.client.mgmt;
+
+import com.auth0.client.mgmt.core.ClientOptions;
+import com.auth0.client.mgmt.core.RequestOptions;
+import com.auth0.client.mgmt.core.SyncPagingIterable;
+import com.auth0.client.mgmt.types.ClientProfile;
+import com.auth0.client.mgmt.types.CreateClientProfileRequestContent;
+import com.auth0.client.mgmt.types.ListClientProfilesRequestParameters;
+import com.auth0.client.mgmt.types.UpdateClientProfileRequestContent;
+import java.util.concurrent.CompletableFuture;
+
+public class AsyncClientProfilesClient {
+ protected final ClientOptions clientOptions;
+
+ private final AsyncRawClientProfilesClient rawClient;
+
+ public AsyncClientProfilesClient(ClientOptions clientOptions) {
+ this.clientOptions = clientOptions;
+ this.rawClient = new AsyncRawClientProfilesClient(clientOptions);
+ }
+
+ /**
+ * Get responses with HTTP metadata like headers
+ */
+ public AsyncRawClientProfilesClient withRawResponse() {
+ return this.rawClient;
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture> list() {
+ return this.rawClient.list().thenApply(response -> response.body());
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture> list(RequestOptions requestOptions) {
+ return this.rawClient.list(requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture> list(ListClientProfilesRequestParameters request) {
+ return this.rawClient.list(request).thenApply(response -> response.body());
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture> list(
+ ListClientProfilesRequestParameters request, RequestOptions requestOptions) {
+ return this.rawClient.list(request, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture create(CreateClientProfileRequestContent request) {
+ return this.rawClient.create(request).thenApply(response -> response.body());
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture create(
+ CreateClientProfileRequestContent request, RequestOptions requestOptions) {
+ return this.rawClient.create(request, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve a single client profile by its identifier. Returns 404 if no profile with the given ID exists for the tenant.
+ */
+ public CompletableFuture get(String id) {
+ return this.rawClient.get(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve a single client profile by its identifier. Returns 404 if no profile with the given ID exists for the tenant.
+ */
+ public CompletableFuture get(String id, RequestOptions requestOptions) {
+ return this.rawClient.get(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture delete(String id) {
+ return this.rawClient.delete(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture delete(String id, RequestOptions requestOptions) {
+ return this.rawClient.delete(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture update(String id) {
+ return this.rawClient.update(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture update(String id, RequestOptions requestOptions) {
+ return this.rawClient.update(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture update(String id, UpdateClientProfileRequestContent request) {
+ return this.rawClient.update(id, request).thenApply(response -> response.body());
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture update(
+ String id, UpdateClientProfileRequestContent request, RequestOptions requestOptions) {
+ return this.rawClient.update(id, request, requestOptions).thenApply(response -> response.body());
+ }
+}
diff --git a/src/main/java/com/auth0/client/mgmt/AsyncClientsClient.java b/src/main/java/com/auth0/client/mgmt/AsyncClientsClient.java
index 5b19233b4..36be47845 100644
--- a/src/main/java/com/auth0/client/mgmt/AsyncClientsClient.java
+++ b/src/main/java/com/auth0/client/mgmt/AsyncClientsClient.java
@@ -10,6 +10,7 @@
import com.auth0.client.mgmt.core.Suppliers;
import com.auth0.client.mgmt.core.SyncPagingIterable;
import com.auth0.client.mgmt.types.Client;
+import com.auth0.client.mgmt.types.ClientSearchResponse;
import com.auth0.client.mgmt.types.CreateClientRequestContent;
import com.auth0.client.mgmt.types.CreateClientResponseContent;
import com.auth0.client.mgmt.types.GetClientRequestParameters;
@@ -20,6 +21,7 @@
import com.auth0.client.mgmt.types.RegisterCimdClientRequestContent;
import com.auth0.client.mgmt.types.RegisterCimdClientResponseContent;
import com.auth0.client.mgmt.types.RotateClientSecretResponseContent;
+import com.auth0.client.mgmt.types.SearchClientsRequestParameters;
import com.auth0.client.mgmt.types.UpdateClientRequestContent;
import com.auth0.client.mgmt.types.UpdateClientResponseContent;
import java.util.concurrent.CompletableFuture;
@@ -274,6 +276,95 @@ public CompletableFuture registerCimdClient(
return this.rawClient.registerCimdClient(request, requestOptions).thenApply(response -> response.body());
}
+ /**
+ * 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
+ *
+ *
+ *
+ */
+ public CompletableFuture> search() {
+ return this.rawClient.search().thenApply(response -> response.body());
+ }
+
+ /**
+ * 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
+ *
+ *
+ *
+ */
+ public CompletableFuture> search(RequestOptions requestOptions) {
+ return this.rawClient.search(requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * 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
+ *
+ *
+ *
+ */
+ public CompletableFuture> search(SearchClientsRequestParameters request) {
+ return this.rawClient.search(request).thenApply(response -> response.body());
+ }
+
+ /**
+ * 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
+ *
+ *
+ *
+ */
+ public CompletableFuture> search(
+ SearchClientsRequestParameters request, RequestOptions requestOptions) {
+ return this.rawClient.search(request, requestOptions).thenApply(response -> response.body());
+ }
+
/**
* Retrieve client details by ID. Clients are SSO connections or Applications linked with your Auth0 tenant. A list of fields to include or exclude may also be specified.
* For more information, read Applications in Auth0 and Single Sign-On.
diff --git a/src/main/java/com/auth0/client/mgmt/AsyncManagementApi.java b/src/main/java/com/auth0/client/mgmt/AsyncManagementApi.java
index 4ab69501b..3fbac5cb3 100644
--- a/src/main/java/com/auth0/client/mgmt/AsyncManagementApi.java
+++ b/src/main/java/com/auth0/client/mgmt/AsyncManagementApi.java
@@ -26,6 +26,8 @@ public class AsyncManagementApi {
protected final Supplier clientGrantsClient;
+ protected final Supplier clientProfilesClient;
+
protected final Supplier clientsClient;
protected final Supplier connectionProfilesClient;
@@ -118,6 +120,7 @@ public AsyncManagementApi(ClientOptions clientOptions) {
this.agentsClient = Suppliers.memoize(() -> new AsyncAgentsClient(clientOptions));
this.brandingClient = Suppliers.memoize(() -> new AsyncBrandingClient(clientOptions));
this.clientGrantsClient = Suppliers.memoize(() -> new AsyncClientGrantsClient(clientOptions));
+ this.clientProfilesClient = Suppliers.memoize(() -> new AsyncClientProfilesClient(clientOptions));
this.clientsClient = Suppliers.memoize(() -> new AsyncClientsClient(clientOptions));
this.connectionProfilesClient = Suppliers.memoize(() -> new AsyncConnectionProfilesClient(clientOptions));
this.connectionsClient = Suppliers.memoize(() -> new AsyncConnectionsClient(clientOptions));
@@ -179,6 +182,10 @@ public AsyncClientGrantsClient clientGrants() {
return this.clientGrantsClient.get();
}
+ public AsyncClientProfilesClient clientProfiles() {
+ return this.clientProfilesClient.get();
+ }
+
public AsyncClientsClient clients() {
return this.clientsClient.get();
}
diff --git a/src/main/java/com/auth0/client/mgmt/AsyncRawClientGrantsClient.java b/src/main/java/com/auth0/client/mgmt/AsyncRawClientGrantsClient.java
index 81a82aff1..1a640ce69 100644
--- a/src/main/java/com/auth0/client/mgmt/AsyncRawClientGrantsClient.java
+++ b/src/main/java/com/auth0/client/mgmt/AsyncRawClientGrantsClient.java
@@ -16,6 +16,8 @@
import com.auth0.client.mgmt.errors.BadRequestError;
import com.auth0.client.mgmt.errors.ConflictError;
import com.auth0.client.mgmt.errors.ForbiddenError;
+import com.auth0.client.mgmt.errors.GatewayTimeoutError;
+import com.auth0.client.mgmt.errors.InternalServerError;
import com.auth0.client.mgmt.errors.NotFoundError;
import com.auth0.client.mgmt.errors.TooManyRequestsError;
import com.auth0.client.mgmt.errors.UnauthorizedError;
@@ -25,6 +27,8 @@
import com.auth0.client.mgmt.types.GetClientGrantResponseContent;
import com.auth0.client.mgmt.types.ListClientGrantPaginatedResponseContent;
import com.auth0.client.mgmt.types.ListClientGrantsRequestParameters;
+import com.auth0.client.mgmt.types.SearchClientGrantsRequestParameters;
+import com.auth0.client.mgmt.types.SearchClientGrantsResponseContent;
import com.auth0.client.mgmt.types.UpdateClientGrantRequestContent;
import com.auth0.client.mgmt.types.UpdateClientGrantResponseContent;
import com.fasterxml.jackson.core.JsonProcessingException;
@@ -327,6 +331,180 @@ public void onFailure(@NotNull Call call, @NotNull IOException e) {
return future;
}
+ /**
+ * 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.
+ */
+ public CompletableFuture>> search() {
+ return search(SearchClientGrantsRequestParameters.builder().build());
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture>> search(
+ RequestOptions requestOptions) {
+ return search(SearchClientGrantsRequestParameters.builder().build(), requestOptions);
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture>> search(
+ SearchClientGrantsRequestParameters request) {
+ return search(request, null);
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture>> search(
+ SearchClientGrantsRequestParameters request, RequestOptions requestOptions) {
+ HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
+ .newBuilder()
+ .addPathSegments("client-grants/search");
+ if (!request.getQ().isAbsent()) {
+ QueryStringMapper.addQueryParameter(httpUrl, "q", request.getQ().orElse(null), false);
+ }
+ if (!request.getParser().isAbsent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "parser", request.getParser().orElse(null), false);
+ }
+ if (!request.getFields().isAbsent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "fields", request.getFields().orElse(null), false);
+ }
+ if (!request.getIncludeFields().isAbsent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "include_fields", request.getIncludeFields().orElse(null), false);
+ }
+ QueryStringMapper.addQueryParameter(httpUrl, "take", request.getTake().orElse(50), false);
+ if (!request.getFrom().isAbsent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "from", request.getFrom().orElse(null), false);
+ }
+ if (!request.getSort().isAbsent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "sort", request.getSort().orElse(null), false);
+ }
+ if (requestOptions != null) {
+ requestOptions.getQueryParameters().forEach((_key, _value) -> {
+ httpUrl.addQueryParameter(_key, _value);
+ });
+ }
+ Request.Builder _requestBuilder = new Request.Builder()
+ .url(httpUrl.build())
+ .method("GET", null)
+ .headers(Headers.of(clientOptions.headers(requestOptions)))
+ .addHeader("Accept", "application/json");
+ Request okhttpRequest = _requestBuilder.build();
+ OkHttpClient client = clientOptions.httpClient();
+ if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
+ client = clientOptions.httpClientWithTimeout(requestOptions);
+ }
+ if (requestOptions != null && requestOptions.getMaxRetries().isPresent()) {
+ okhttpRequest = okhttpRequest
+ .newBuilder()
+ .tag(
+ RetryInterceptor.MaxRetriesOverride.class,
+ new RetryInterceptor.MaxRetriesOverride(
+ requestOptions.getMaxRetries().get()))
+ .build();
+ }
+ CompletableFuture>> future =
+ new CompletableFuture<>();
+ client.newCall(okhttpRequest).enqueue(new Callback() {
+ @Override
+ public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
+ try (ResponseBody responseBody = response.body()) {
+ String responseBodyString = responseBody != null ? responseBody.string() : "{}";
+ if (response.isSuccessful()) {
+ SearchClientGrantsResponseContent parsedResponse = ObjectMappers.JSON_MAPPER.readValue(
+ responseBodyString, SearchClientGrantsResponseContent.class);
+ Optional startingAfter = parsedResponse.getNext();
+ SearchClientGrantsRequestParameters nextRequest = SearchClientGrantsRequestParameters.builder()
+ .from(request)
+ .from(startingAfter)
+ .build();
+ List result = parsedResponse.getClientGrants();
+ future.complete(new ManagementApiHttpResponse<>(
+ new SyncPagingIterable(
+ startingAfter.isPresent(), result, parsedResponse, () -> {
+ try {
+ return search(nextRequest, requestOptions)
+ .get()
+ .body();
+ } catch (InterruptedException | ExecutionException e) {
+ throw new RuntimeException(e);
+ }
+ }),
+ response));
+ return;
+ }
+ try {
+ switch (response.code()) {
+ case 400:
+ future.completeExceptionally(new BadRequestError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 401:
+ future.completeExceptionally(new UnauthorizedError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 403:
+ future.completeExceptionally(new ForbiddenError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 404:
+ future.completeExceptionally(new NotFoundError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 429:
+ future.completeExceptionally(new TooManyRequestsError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 500:
+ future.completeExceptionally(new InternalServerError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 504:
+ future.completeExceptionally(new GatewayTimeoutError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ }
+ } catch (JsonProcessingException ignored) {
+ // unable to map error response, throwing generic error
+ }
+ Object errorBody = ObjectMappers.parseErrorBody(responseBodyString);
+ future.completeExceptionally(new ManagementApiException(
+ "Error with status code " + response.code(), response.code(), errorBody, response));
+ return;
+ } catch (JsonProcessingException e) {
+ future.completeExceptionally(
+ new ManagementException("Failed to deserialize response: " + e.getMessage(), e));
+ } catch (IOException e) {
+ future.completeExceptionally(new ManagementException("Network error executing HTTP request", e));
+ }
+ }
+
+ @Override
+ public void onFailure(@NotNull Call call, @NotNull IOException e) {
+ future.completeExceptionally(new ManagementException("Network error executing HTTP request", e));
+ }
+ });
+ return future;
+ }
+
/**
* Retrieve a single client grant, including the
* scopes associated with the application/API pair.
diff --git a/src/main/java/com/auth0/client/mgmt/AsyncRawClientProfilesClient.java b/src/main/java/com/auth0/client/mgmt/AsyncRawClientProfilesClient.java
new file mode 100644
index 000000000..c4e2fdbc8
--- /dev/null
+++ b/src/main/java/com/auth0/client/mgmt/AsyncRawClientProfilesClient.java
@@ -0,0 +1,621 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.auth0.client.mgmt;
+
+import com.auth0.client.mgmt.core.ClientOptions;
+import com.auth0.client.mgmt.core.ManagementApiException;
+import com.auth0.client.mgmt.core.ManagementApiHttpResponse;
+import com.auth0.client.mgmt.core.ManagementException;
+import com.auth0.client.mgmt.core.MediaTypes;
+import com.auth0.client.mgmt.core.ObjectMappers;
+import com.auth0.client.mgmt.core.QueryStringMapper;
+import com.auth0.client.mgmt.core.RequestOptions;
+import com.auth0.client.mgmt.core.RetryInterceptor;
+import com.auth0.client.mgmt.core.SyncPagingIterable;
+import com.auth0.client.mgmt.errors.BadRequestError;
+import com.auth0.client.mgmt.errors.ConflictError;
+import com.auth0.client.mgmt.errors.ForbiddenError;
+import com.auth0.client.mgmt.errors.NotFoundError;
+import com.auth0.client.mgmt.errors.TooManyRequestsError;
+import com.auth0.client.mgmt.errors.UnauthorizedError;
+import com.auth0.client.mgmt.types.ClientProfile;
+import com.auth0.client.mgmt.types.CreateClientProfileRequestContent;
+import com.auth0.client.mgmt.types.ListClientProfilesPaginatedResponseContent;
+import com.auth0.client.mgmt.types.ListClientProfilesRequestParameters;
+import com.auth0.client.mgmt.types.UpdateClientProfileRequestContent;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import java.io.IOException;
+import java.util.List;
+import java.util.Optional;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+import okhttp3.Call;
+import okhttp3.Callback;
+import okhttp3.Headers;
+import okhttp3.HttpUrl;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.RequestBody;
+import okhttp3.Response;
+import okhttp3.ResponseBody;
+import org.jetbrains.annotations.NotNull;
+
+public class AsyncRawClientProfilesClient {
+ protected final ClientOptions clientOptions;
+
+ public AsyncRawClientProfilesClient(ClientOptions clientOptions) {
+ this.clientOptions = clientOptions;
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture>> list() {
+ return list(ListClientProfilesRequestParameters.builder().build());
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture>> list(
+ RequestOptions requestOptions) {
+ return list(ListClientProfilesRequestParameters.builder().build(), requestOptions);
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture>> list(
+ ListClientProfilesRequestParameters request) {
+ return list(request, null);
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture>> list(
+ ListClientProfilesRequestParameters request, RequestOptions requestOptions) {
+ HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
+ .newBuilder()
+ .addPathSegments("client-profiles");
+ if (!request.getFrom().isAbsent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "from", request.getFrom().orElse(null), false);
+ }
+ QueryStringMapper.addQueryParameter(httpUrl, "take", request.getTake().orElse(50), false);
+ if (requestOptions != null) {
+ requestOptions.getQueryParameters().forEach((_key, _value) -> {
+ httpUrl.addQueryParameter(_key, _value);
+ });
+ }
+ Request.Builder _requestBuilder = new Request.Builder()
+ .url(httpUrl.build())
+ .method("GET", null)
+ .headers(Headers.of(clientOptions.headers(requestOptions)))
+ .addHeader("Accept", "application/json");
+ Request okhttpRequest = _requestBuilder.build();
+ OkHttpClient client = clientOptions.httpClient();
+ if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
+ client = clientOptions.httpClientWithTimeout(requestOptions);
+ }
+ if (requestOptions != null && requestOptions.getMaxRetries().isPresent()) {
+ okhttpRequest = okhttpRequest
+ .newBuilder()
+ .tag(
+ RetryInterceptor.MaxRetriesOverride.class,
+ new RetryInterceptor.MaxRetriesOverride(
+ requestOptions.getMaxRetries().get()))
+ .build();
+ }
+ CompletableFuture>> future =
+ new CompletableFuture<>();
+ client.newCall(okhttpRequest).enqueue(new Callback() {
+ @Override
+ public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
+ try (ResponseBody responseBody = response.body()) {
+ String responseBodyString = responseBody != null ? responseBody.string() : "{}";
+ if (response.isSuccessful()) {
+ ListClientProfilesPaginatedResponseContent parsedResponse = ObjectMappers.JSON_MAPPER.readValue(
+ responseBodyString, ListClientProfilesPaginatedResponseContent.class);
+ Optional startingAfter = parsedResponse.getNext();
+ ListClientProfilesRequestParameters nextRequest = ListClientProfilesRequestParameters.builder()
+ .from(request)
+ .from(startingAfter)
+ .build();
+ List result = parsedResponse.getClientProfiles();
+ future.complete(new ManagementApiHttpResponse<>(
+ new SyncPagingIterable(
+ startingAfter.isPresent(), result, parsedResponse, () -> {
+ try {
+ return list(nextRequest, requestOptions)
+ .get()
+ .body();
+ } catch (InterruptedException | ExecutionException e) {
+ throw new RuntimeException(e);
+ }
+ }),
+ response));
+ return;
+ }
+ try {
+ switch (response.code()) {
+ case 400:
+ future.completeExceptionally(new BadRequestError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 401:
+ future.completeExceptionally(new UnauthorizedError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 403:
+ future.completeExceptionally(new ForbiddenError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 429:
+ future.completeExceptionally(new TooManyRequestsError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ }
+ } catch (JsonProcessingException ignored) {
+ // unable to map error response, throwing generic error
+ }
+ Object errorBody = ObjectMappers.parseErrorBody(responseBodyString);
+ future.completeExceptionally(new ManagementApiException(
+ "Error with status code " + response.code(), response.code(), errorBody, response));
+ return;
+ } catch (JsonProcessingException e) {
+ future.completeExceptionally(
+ new ManagementException("Failed to deserialize response: " + e.getMessage(), e));
+ } catch (IOException e) {
+ future.completeExceptionally(new ManagementException("Network error executing HTTP request", e));
+ }
+ }
+
+ @Override
+ public void onFailure(@NotNull Call call, @NotNull IOException e) {
+ future.completeExceptionally(new ManagementException("Network error executing HTTP request", e));
+ }
+ });
+ return future;
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture> create(
+ CreateClientProfileRequestContent request) {
+ return create(request, null);
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture> create(
+ CreateClientProfileRequestContent request, RequestOptions requestOptions) {
+ HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
+ .newBuilder()
+ .addPathSegments("client-profiles");
+ if (requestOptions != null) {
+ requestOptions.getQueryParameters().forEach((_key, _value) -> {
+ httpUrl.addQueryParameter(_key, _value);
+ });
+ }
+ RequestBody body;
+ try {
+ body = RequestBody.create(
+ ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON);
+ } catch (JsonProcessingException e) {
+ throw new ManagementException("Failed to serialize request", e);
+ }
+ Request okhttpRequest = new Request.Builder()
+ .url(httpUrl.build())
+ .method("POST", body)
+ .headers(Headers.of(clientOptions.headers(requestOptions)))
+ .addHeader("Content-Type", "application/json")
+ .addHeader("Accept", "application/json")
+ .build();
+ OkHttpClient client = clientOptions.httpClient();
+ if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
+ client = clientOptions.httpClientWithTimeout(requestOptions);
+ }
+ if (requestOptions != null && requestOptions.getMaxRetries().isPresent()) {
+ okhttpRequest = okhttpRequest
+ .newBuilder()
+ .tag(
+ RetryInterceptor.MaxRetriesOverride.class,
+ new RetryInterceptor.MaxRetriesOverride(
+ requestOptions.getMaxRetries().get()))
+ .build();
+ }
+ CompletableFuture> future = new CompletableFuture<>();
+ client.newCall(okhttpRequest).enqueue(new Callback() {
+ @Override
+ public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
+ try (ResponseBody responseBody = response.body()) {
+ String responseBodyString = responseBody != null ? responseBody.string() : "{}";
+ if (response.isSuccessful()) {
+ future.complete(new ManagementApiHttpResponse<>(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ClientProfile.class),
+ response));
+ return;
+ }
+ try {
+ switch (response.code()) {
+ case 400:
+ future.completeExceptionally(new BadRequestError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 401:
+ future.completeExceptionally(new UnauthorizedError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 403:
+ future.completeExceptionally(new ForbiddenError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 409:
+ future.completeExceptionally(new ConflictError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 429:
+ future.completeExceptionally(new TooManyRequestsError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ }
+ } catch (JsonProcessingException ignored) {
+ // unable to map error response, throwing generic error
+ }
+ Object errorBody = ObjectMappers.parseErrorBody(responseBodyString);
+ future.completeExceptionally(new ManagementApiException(
+ "Error with status code " + response.code(), response.code(), errorBody, response));
+ return;
+ } catch (JsonProcessingException e) {
+ future.completeExceptionally(
+ new ManagementException("Failed to deserialize response: " + e.getMessage(), e));
+ } catch (IOException e) {
+ future.completeExceptionally(new ManagementException("Network error executing HTTP request", e));
+ }
+ }
+
+ @Override
+ public void onFailure(@NotNull Call call, @NotNull IOException e) {
+ future.completeExceptionally(new ManagementException("Network error executing HTTP request", e));
+ }
+ });
+ return future;
+ }
+
+ /**
+ * Retrieve a single client profile by its identifier. Returns 404 if no profile with the given ID exists for the tenant.
+ */
+ public CompletableFuture> get(String id) {
+ return get(id, null);
+ }
+
+ /**
+ * Retrieve a single client profile by its identifier. Returns 404 if no profile with the given ID exists for the tenant.
+ */
+ public CompletableFuture> get(String id, RequestOptions requestOptions) {
+ HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
+ .newBuilder()
+ .addPathSegments("client-profiles")
+ .addPathSegment(id);
+ if (requestOptions != null) {
+ requestOptions.getQueryParameters().forEach((_key, _value) -> {
+ httpUrl.addQueryParameter(_key, _value);
+ });
+ }
+ Request okhttpRequest = new Request.Builder()
+ .url(httpUrl.build())
+ .method("GET", null)
+ .headers(Headers.of(clientOptions.headers(requestOptions)))
+ .addHeader("Accept", "application/json")
+ .build();
+ OkHttpClient client = clientOptions.httpClient();
+ if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
+ client = clientOptions.httpClientWithTimeout(requestOptions);
+ }
+ if (requestOptions != null && requestOptions.getMaxRetries().isPresent()) {
+ okhttpRequest = okhttpRequest
+ .newBuilder()
+ .tag(
+ RetryInterceptor.MaxRetriesOverride.class,
+ new RetryInterceptor.MaxRetriesOverride(
+ requestOptions.getMaxRetries().get()))
+ .build();
+ }
+ CompletableFuture> future = new CompletableFuture<>();
+ client.newCall(okhttpRequest).enqueue(new Callback() {
+ @Override
+ public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
+ try (ResponseBody responseBody = response.body()) {
+ String responseBodyString = responseBody != null ? responseBody.string() : "{}";
+ if (response.isSuccessful()) {
+ future.complete(new ManagementApiHttpResponse<>(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ClientProfile.class),
+ response));
+ return;
+ }
+ try {
+ switch (response.code()) {
+ case 400:
+ future.completeExceptionally(new BadRequestError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 401:
+ future.completeExceptionally(new UnauthorizedError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 403:
+ future.completeExceptionally(new ForbiddenError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 404:
+ future.completeExceptionally(new NotFoundError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 429:
+ future.completeExceptionally(new TooManyRequestsError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ }
+ } catch (JsonProcessingException ignored) {
+ // unable to map error response, throwing generic error
+ }
+ Object errorBody = ObjectMappers.parseErrorBody(responseBodyString);
+ future.completeExceptionally(new ManagementApiException(
+ "Error with status code " + response.code(), response.code(), errorBody, response));
+ return;
+ } catch (JsonProcessingException e) {
+ future.completeExceptionally(
+ new ManagementException("Failed to deserialize response: " + e.getMessage(), e));
+ } catch (IOException e) {
+ future.completeExceptionally(new ManagementException("Network error executing HTTP request", e));
+ }
+ }
+
+ @Override
+ public void onFailure(@NotNull Call call, @NotNull IOException e) {
+ future.completeExceptionally(new ManagementException("Network error executing HTTP request", e));
+ }
+ });
+ return future;
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture> delete(String id) {
+ return delete(id, null);
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture> delete(String id, RequestOptions requestOptions) {
+ HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
+ .newBuilder()
+ .addPathSegments("client-profiles")
+ .addPathSegment(id);
+ if (requestOptions != null) {
+ requestOptions.getQueryParameters().forEach((_key, _value) -> {
+ httpUrl.addQueryParameter(_key, _value);
+ });
+ }
+ Request okhttpRequest = new Request.Builder()
+ .url(httpUrl.build())
+ .method("DELETE", null)
+ .headers(Headers.of(clientOptions.headers(requestOptions)))
+ .addHeader("Accept", "application/json")
+ .build();
+ OkHttpClient client = clientOptions.httpClient();
+ if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
+ client = clientOptions.httpClientWithTimeout(requestOptions);
+ }
+ if (requestOptions != null && requestOptions.getMaxRetries().isPresent()) {
+ okhttpRequest = okhttpRequest
+ .newBuilder()
+ .tag(
+ RetryInterceptor.MaxRetriesOverride.class,
+ new RetryInterceptor.MaxRetriesOverride(
+ requestOptions.getMaxRetries().get()))
+ .build();
+ }
+ CompletableFuture> future = new CompletableFuture<>();
+ client.newCall(okhttpRequest).enqueue(new Callback() {
+ @Override
+ public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
+ try (ResponseBody responseBody = response.body()) {
+ if (response.isSuccessful()) {
+ future.complete(new ManagementApiHttpResponse<>(null, response));
+ return;
+ }
+ String responseBodyString = responseBody != null ? responseBody.string() : "{}";
+ try {
+ switch (response.code()) {
+ case 400:
+ future.completeExceptionally(new BadRequestError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 401:
+ future.completeExceptionally(new UnauthorizedError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 403:
+ future.completeExceptionally(new ForbiddenError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 429:
+ future.completeExceptionally(new TooManyRequestsError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ }
+ } catch (JsonProcessingException ignored) {
+ // unable to map error response, throwing generic error
+ }
+ Object errorBody = ObjectMappers.parseErrorBody(responseBodyString);
+ future.completeExceptionally(new ManagementApiException(
+ "Error with status code " + response.code(), response.code(), errorBody, response));
+ return;
+ } catch (JsonProcessingException e) {
+ future.completeExceptionally(
+ new ManagementException("Failed to deserialize response: " + e.getMessage(), e));
+ } catch (IOException e) {
+ future.completeExceptionally(new ManagementException("Network error executing HTTP request", e));
+ }
+ }
+
+ @Override
+ public void onFailure(@NotNull Call call, @NotNull IOException e) {
+ future.completeExceptionally(new ManagementException("Network error executing HTTP request", e));
+ }
+ });
+ return future;
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture> update(String id) {
+ return update(id, UpdateClientProfileRequestContent.builder().build());
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture> update(
+ String id, RequestOptions requestOptions) {
+ return update(id, UpdateClientProfileRequestContent.builder().build(), requestOptions);
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture> update(
+ String id, UpdateClientProfileRequestContent request) {
+ return update(id, request, null);
+ }
+
+ /**
+ * 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.
+ */
+ public CompletableFuture> update(
+ String id, UpdateClientProfileRequestContent request, RequestOptions requestOptions) {
+ HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
+ .newBuilder()
+ .addPathSegments("client-profiles")
+ .addPathSegment(id);
+ if (requestOptions != null) {
+ requestOptions.getQueryParameters().forEach((_key, _value) -> {
+ httpUrl.addQueryParameter(_key, _value);
+ });
+ }
+ RequestBody body;
+ try {
+ body = RequestBody.create(
+ ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON);
+ } catch (JsonProcessingException e) {
+ throw new ManagementException("Failed to serialize request", e);
+ }
+ Request okhttpRequest = new Request.Builder()
+ .url(httpUrl.build())
+ .method("PATCH", body)
+ .headers(Headers.of(clientOptions.headers(requestOptions)))
+ .addHeader("Content-Type", "application/json")
+ .addHeader("Accept", "application/json")
+ .build();
+ OkHttpClient client = clientOptions.httpClient();
+ if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
+ client = clientOptions.httpClientWithTimeout(requestOptions);
+ }
+ if (requestOptions != null && requestOptions.getMaxRetries().isPresent()) {
+ okhttpRequest = okhttpRequest
+ .newBuilder()
+ .tag(
+ RetryInterceptor.MaxRetriesOverride.class,
+ new RetryInterceptor.MaxRetriesOverride(
+ requestOptions.getMaxRetries().get()))
+ .build();
+ }
+ CompletableFuture> future = new CompletableFuture<>();
+ client.newCall(okhttpRequest).enqueue(new Callback() {
+ @Override
+ public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
+ try (ResponseBody responseBody = response.body()) {
+ String responseBodyString = responseBody != null ? responseBody.string() : "{}";
+ if (response.isSuccessful()) {
+ future.complete(new ManagementApiHttpResponse<>(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ClientProfile.class),
+ response));
+ return;
+ }
+ try {
+ switch (response.code()) {
+ case 400:
+ future.completeExceptionally(new BadRequestError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 401:
+ future.completeExceptionally(new UnauthorizedError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 403:
+ future.completeExceptionally(new ForbiddenError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 404:
+ future.completeExceptionally(new NotFoundError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 429:
+ future.completeExceptionally(new TooManyRequestsError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ }
+ } catch (JsonProcessingException ignored) {
+ // unable to map error response, throwing generic error
+ }
+ Object errorBody = ObjectMappers.parseErrorBody(responseBodyString);
+ future.completeExceptionally(new ManagementApiException(
+ "Error with status code " + response.code(), response.code(), errorBody, response));
+ return;
+ } catch (JsonProcessingException e) {
+ future.completeExceptionally(
+ new ManagementException("Failed to deserialize response: " + e.getMessage(), e));
+ } catch (IOException e) {
+ future.completeExceptionally(new ManagementException("Network error executing HTTP request", e));
+ }
+ }
+
+ @Override
+ public void onFailure(@NotNull Call call, @NotNull IOException e) {
+ future.completeExceptionally(new ManagementException("Network error executing HTTP request", e));
+ }
+ });
+ return future;
+ }
+}
diff --git a/src/main/java/com/auth0/client/mgmt/AsyncRawClientsClient.java b/src/main/java/com/auth0/client/mgmt/AsyncRawClientsClient.java
index cfabfe83f..ab10045d9 100644
--- a/src/main/java/com/auth0/client/mgmt/AsyncRawClientsClient.java
+++ b/src/main/java/com/auth0/client/mgmt/AsyncRawClientsClient.java
@@ -16,11 +16,13 @@
import com.auth0.client.mgmt.errors.BadRequestError;
import com.auth0.client.mgmt.errors.ConflictError;
import com.auth0.client.mgmt.errors.ForbiddenError;
+import com.auth0.client.mgmt.errors.GatewayTimeoutError;
import com.auth0.client.mgmt.errors.InternalServerError;
import com.auth0.client.mgmt.errors.NotFoundError;
import com.auth0.client.mgmt.errors.TooManyRequestsError;
import com.auth0.client.mgmt.errors.UnauthorizedError;
import com.auth0.client.mgmt.types.Client;
+import com.auth0.client.mgmt.types.ClientSearchResponse;
import com.auth0.client.mgmt.types.CreateClientRequestContent;
import com.auth0.client.mgmt.types.CreateClientResponseContent;
import com.auth0.client.mgmt.types.GetClientRequestParameters;
@@ -32,12 +34,15 @@
import com.auth0.client.mgmt.types.RegisterCimdClientRequestContent;
import com.auth0.client.mgmt.types.RegisterCimdClientResponseContent;
import com.auth0.client.mgmt.types.RotateClientSecretResponseContent;
+import com.auth0.client.mgmt.types.SearchClientsRequestParameters;
+import com.auth0.client.mgmt.types.SearchClientsResponseContent;
import com.auth0.client.mgmt.types.UpdateClientRequestContent;
import com.auth0.client.mgmt.types.UpdateClientResponseContent;
import com.fasterxml.jackson.core.JsonProcessingException;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
+import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import okhttp3.Call;
@@ -680,6 +685,11 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO
ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
response));
return;
+ case 409:
+ future.completeExceptionally(new ConflictError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
case 429:
future.completeExceptionally(new TooManyRequestsError(
ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
@@ -714,6 +724,236 @@ public void onFailure(@NotNull Call call, @NotNull IOException e) {
return future;
}
+ /**
+ * 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
+ *
+ *
+ *
+ */
+ public CompletableFuture>> search() {
+ return search(SearchClientsRequestParameters.builder().build());
+ }
+
+ /**
+ * 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
+ *
+ *
+ *
+ */
+ public CompletableFuture>> search(
+ RequestOptions requestOptions) {
+ return search(SearchClientsRequestParameters.builder().build(), requestOptions);
+ }
+
+ /**
+ * 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
+ *
+ *
+ *
+ */
+ public CompletableFuture>> search(
+ SearchClientsRequestParameters request) {
+ return search(request, null);
+ }
+
+ /**
+ * 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
+ *
+ *
+ *
+ */
+ public CompletableFuture>> search(
+ SearchClientsRequestParameters request, RequestOptions requestOptions) {
+ HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
+ .newBuilder()
+ .addPathSegments("clients/search");
+ if (!request.getQ().isAbsent()) {
+ QueryStringMapper.addQueryParameter(httpUrl, "q", request.getQ().orElse(null), false);
+ }
+ if (!request.getParser().isAbsent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "parser", request.getParser().orElse(null), false);
+ }
+ if (!request.getFields().isAbsent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "fields", request.getFields().orElse(null), false);
+ }
+ if (!request.getIncludeFields().isAbsent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "include_fields", request.getIncludeFields().orElse(null), false);
+ }
+ QueryStringMapper.addQueryParameter(httpUrl, "take", request.getTake().orElse(50), false);
+ if (!request.getFrom().isAbsent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "from", request.getFrom().orElse(null), false);
+ }
+ if (!request.getSort().isAbsent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "sort", request.getSort().orElse(null), false);
+ }
+ if (requestOptions != null) {
+ requestOptions.getQueryParameters().forEach((_key, _value) -> {
+ httpUrl.addQueryParameter(_key, _value);
+ });
+ }
+ Request.Builder _requestBuilder = new Request.Builder()
+ .url(httpUrl.build())
+ .method("GET", null)
+ .headers(Headers.of(clientOptions.headers(requestOptions)))
+ .addHeader("Accept", "application/json");
+ Request okhttpRequest = _requestBuilder.build();
+ OkHttpClient client = clientOptions.httpClient();
+ if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
+ client = clientOptions.httpClientWithTimeout(requestOptions);
+ }
+ if (requestOptions != null && requestOptions.getMaxRetries().isPresent()) {
+ okhttpRequest = okhttpRequest
+ .newBuilder()
+ .tag(
+ RetryInterceptor.MaxRetriesOverride.class,
+ new RetryInterceptor.MaxRetriesOverride(
+ requestOptions.getMaxRetries().get()))
+ .build();
+ }
+ CompletableFuture>> future =
+ new CompletableFuture<>();
+ client.newCall(okhttpRequest).enqueue(new Callback() {
+ @Override
+ public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
+ try (ResponseBody responseBody = response.body()) {
+ String responseBodyString = responseBody != null ? responseBody.string() : "{}";
+ if (response.isSuccessful()) {
+ SearchClientsResponseContent parsedResponse = ObjectMappers.JSON_MAPPER.readValue(
+ responseBodyString, SearchClientsResponseContent.class);
+ Optional startingAfter = parsedResponse.getNext();
+ SearchClientsRequestParameters nextRequest = SearchClientsRequestParameters.builder()
+ .from(request)
+ .from(startingAfter)
+ .build();
+ List result = parsedResponse.getClients();
+ future.complete(new ManagementApiHttpResponse<>(
+ new SyncPagingIterable(
+ startingAfter.isPresent(), result, parsedResponse, () -> {
+ try {
+ return search(nextRequest, requestOptions)
+ .get()
+ .body();
+ } catch (InterruptedException | ExecutionException e) {
+ throw new RuntimeException(e);
+ }
+ }),
+ response));
+ return;
+ }
+ try {
+ switch (response.code()) {
+ case 400:
+ future.completeExceptionally(new BadRequestError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 401:
+ future.completeExceptionally(new UnauthorizedError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 403:
+ future.completeExceptionally(new ForbiddenError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 404:
+ future.completeExceptionally(new NotFoundError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 429:
+ future.completeExceptionally(new TooManyRequestsError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 500:
+ future.completeExceptionally(new InternalServerError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 504:
+ future.completeExceptionally(new GatewayTimeoutError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ }
+ } catch (JsonProcessingException ignored) {
+ // unable to map error response, throwing generic error
+ }
+ Object errorBody = ObjectMappers.parseErrorBody(responseBodyString);
+ future.completeExceptionally(new ManagementApiException(
+ "Error with status code " + response.code(), response.code(), errorBody, response));
+ return;
+ } catch (JsonProcessingException e) {
+ future.completeExceptionally(
+ new ManagementException("Failed to deserialize response: " + e.getMessage(), e));
+ } catch (IOException e) {
+ future.completeExceptionally(new ManagementException("Network error executing HTTP request", e));
+ }
+ }
+
+ @Override
+ public void onFailure(@NotNull Call call, @NotNull IOException e) {
+ future.completeExceptionally(new ManagementException("Network error executing HTTP request", e));
+ }
+ });
+ return future;
+ }
+
/**
* Retrieve client details by ID. Clients are SSO connections or Applications linked with your Auth0 tenant. A list of fields to include or exclude may also be specified.
* For more information, read Applications in Auth0 and Single Sign-On.
diff --git a/src/main/java/com/auth0/client/mgmt/AsyncRawRolesClient.java b/src/main/java/com/auth0/client/mgmt/AsyncRawRolesClient.java
index 3dcebd157..67cdf4c6e 100644
--- a/src/main/java/com/auth0/client/mgmt/AsyncRawRolesClient.java
+++ b/src/main/java/com/auth0/client/mgmt/AsyncRawRolesClient.java
@@ -52,7 +52,7 @@ public AsyncRawRolesClient(ClientOptions clientOptions) {
}
/**
- * 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.
*/
public CompletableFuture>> list() {
@@ -60,7 +60,7 @@ public CompletableFuture>> li
}
/**
- * 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.
*/
public CompletableFuture>> list(RequestOptions requestOptions) {
@@ -68,7 +68,7 @@ public CompletableFuture>> li
}
/**
- * 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.
*/
public CompletableFuture>> list(
@@ -77,7 +77,7 @@ public CompletableFuture>> li
}
/**
- * 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.
*/
public CompletableFuture>> list(
diff --git a/src/main/java/com/auth0/client/mgmt/AsyncRawUsersClient.java b/src/main/java/com/auth0/client/mgmt/AsyncRawUsersClient.java
index ab57cf6f9..e1857434e 100644
--- a/src/main/java/com/auth0/client/mgmt/AsyncRawUsersClient.java
+++ b/src/main/java/com/auth0/client/mgmt/AsyncRawUsersClient.java
@@ -20,6 +20,7 @@
import com.auth0.client.mgmt.errors.ServiceUnavailableError;
import com.auth0.client.mgmt.errors.TooManyRequestsError;
import com.auth0.client.mgmt.errors.UnauthorizedError;
+import com.auth0.client.mgmt.types.ConsentSigningKey;
import com.auth0.client.mgmt.types.CreateUserRequestContent;
import com.auth0.client.mgmt.types.CreateUserResponseContent;
import com.auth0.client.mgmt.types.GetUserRequestParameters;
@@ -1135,6 +1136,309 @@ public void onFailure(@NotNull Call call, @NotNull IOException e) {
return future;
}
+ /**
+ * Retrieve all consent signing keys registered for a user. Returns an empty array when the user has no keys registered.
+ */
+ public CompletableFuture>> listConsentSigningKeys(String id) {
+ return listConsentSigningKeys(id, null);
+ }
+
+ /**
+ * Retrieve all consent signing keys registered for a user. Returns an empty array when the user has no keys registered.
+ */
+ public CompletableFuture>> listConsentSigningKeys(
+ String id, RequestOptions requestOptions) {
+ HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
+ .newBuilder()
+ .addPathSegments("users")
+ .addPathSegment(id)
+ .addPathSegments("consent-signing-keys");
+ if (requestOptions != null) {
+ requestOptions.getQueryParameters().forEach((_key, _value) -> {
+ httpUrl.addQueryParameter(_key, _value);
+ });
+ }
+ Request okhttpRequest = new Request.Builder()
+ .url(httpUrl.build())
+ .method("GET", null)
+ .headers(Headers.of(clientOptions.headers(requestOptions)))
+ .addHeader("Accept", "application/json")
+ .build();
+ OkHttpClient client = clientOptions.httpClient();
+ if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
+ client = clientOptions.httpClientWithTimeout(requestOptions);
+ }
+ if (requestOptions != null && requestOptions.getMaxRetries().isPresent()) {
+ okhttpRequest = okhttpRequest
+ .newBuilder()
+ .tag(
+ RetryInterceptor.MaxRetriesOverride.class,
+ new RetryInterceptor.MaxRetriesOverride(
+ requestOptions.getMaxRetries().get()))
+ .build();
+ }
+ CompletableFuture>> future = new CompletableFuture<>();
+ client.newCall(okhttpRequest).enqueue(new Callback() {
+ @Override
+ public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
+ try (ResponseBody responseBody = response.body()) {
+ String responseBodyString = responseBody != null ? responseBody.string() : "{}";
+ if (response.isSuccessful()) {
+ future.complete(new ManagementApiHttpResponse<>(
+ ObjectMappers.JSON_MAPPER.readValue(
+ responseBodyString, new TypeReference>() {}),
+ response));
+ return;
+ }
+ try {
+ switch (response.code()) {
+ case 400:
+ future.completeExceptionally(new BadRequestError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 401:
+ future.completeExceptionally(new UnauthorizedError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 403:
+ future.completeExceptionally(new ForbiddenError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 429:
+ future.completeExceptionally(new TooManyRequestsError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ }
+ } catch (JsonProcessingException ignored) {
+ // unable to map error response, throwing generic error
+ }
+ Object errorBody = ObjectMappers.parseErrorBody(responseBodyString);
+ future.completeExceptionally(new ManagementApiException(
+ "Error with status code " + response.code(), response.code(), errorBody, response));
+ return;
+ } catch (JsonProcessingException e) {
+ future.completeExceptionally(
+ new ManagementException("Failed to deserialize response: " + e.getMessage(), e));
+ } catch (IOException e) {
+ future.completeExceptionally(new ManagementException("Network error executing HTTP request", e));
+ }
+ }
+
+ @Override
+ public void onFailure(@NotNull Call call, @NotNull IOException e) {
+ future.completeExceptionally(new ManagementException("Network error executing HTTP request", e));
+ }
+ });
+ return future;
+ }
+
+ /**
+ * Retrieve a single consent signing key for a user by its key identifier (kid). Returns 404 if the key does not exist.
+ */
+ public CompletableFuture> getConsentSigningKey(String id, String kid) {
+ return getConsentSigningKey(id, kid, null);
+ }
+
+ /**
+ * Retrieve a single consent signing key for a user by its key identifier (kid). Returns 404 if the key does not exist.
+ */
+ public CompletableFuture> getConsentSigningKey(
+ String id, String kid, RequestOptions requestOptions) {
+ HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
+ .newBuilder()
+ .addPathSegments("users")
+ .addPathSegment(id)
+ .addPathSegments("consent-signing-keys")
+ .addPathSegment(kid);
+ if (requestOptions != null) {
+ requestOptions.getQueryParameters().forEach((_key, _value) -> {
+ httpUrl.addQueryParameter(_key, _value);
+ });
+ }
+ Request okhttpRequest = new Request.Builder()
+ .url(httpUrl.build())
+ .method("GET", null)
+ .headers(Headers.of(clientOptions.headers(requestOptions)))
+ .addHeader("Accept", "application/json")
+ .build();
+ OkHttpClient client = clientOptions.httpClient();
+ if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
+ client = clientOptions.httpClientWithTimeout(requestOptions);
+ }
+ if (requestOptions != null && requestOptions.getMaxRetries().isPresent()) {
+ okhttpRequest = okhttpRequest
+ .newBuilder()
+ .tag(
+ RetryInterceptor.MaxRetriesOverride.class,
+ new RetryInterceptor.MaxRetriesOverride(
+ requestOptions.getMaxRetries().get()))
+ .build();
+ }
+ CompletableFuture> future = new CompletableFuture<>();
+ client.newCall(okhttpRequest).enqueue(new Callback() {
+ @Override
+ public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
+ try (ResponseBody responseBody = response.body()) {
+ String responseBodyString = responseBody != null ? responseBody.string() : "{}";
+ if (response.isSuccessful()) {
+ future.complete(new ManagementApiHttpResponse<>(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ConsentSigningKey.class),
+ response));
+ return;
+ }
+ try {
+ switch (response.code()) {
+ case 400:
+ future.completeExceptionally(new BadRequestError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 401:
+ future.completeExceptionally(new UnauthorizedError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 403:
+ future.completeExceptionally(new ForbiddenError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 404:
+ future.completeExceptionally(new NotFoundError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 429:
+ future.completeExceptionally(new TooManyRequestsError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ }
+ } catch (JsonProcessingException ignored) {
+ // unable to map error response, throwing generic error
+ }
+ Object errorBody = ObjectMappers.parseErrorBody(responseBodyString);
+ future.completeExceptionally(new ManagementApiException(
+ "Error with status code " + response.code(), response.code(), errorBody, response));
+ return;
+ } catch (JsonProcessingException e) {
+ future.completeExceptionally(
+ new ManagementException("Failed to deserialize response: " + e.getMessage(), e));
+ } catch (IOException e) {
+ future.completeExceptionally(new ManagementException("Network error executing HTTP request", e));
+ }
+ }
+
+ @Override
+ public void onFailure(@NotNull Call call, @NotNull IOException e) {
+ future.completeExceptionally(new ManagementException("Network error executing HTTP request", e));
+ }
+ });
+ return future;
+ }
+
+ /**
+ * Remove a single consent signing key for a user by its key identifier (kid). The operation is idempotent and returns 204 whether or not the key existed.
+ */
+ public CompletableFuture> deleteConsentSigningKey(String id, String kid) {
+ return deleteConsentSigningKey(id, kid, null);
+ }
+
+ /**
+ * Remove a single consent signing key for a user by its key identifier (kid). The operation is idempotent and returns 204 whether or not the key existed.
+ */
+ public CompletableFuture> deleteConsentSigningKey(
+ String id, String kid, RequestOptions requestOptions) {
+ HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
+ .newBuilder()
+ .addPathSegments("users")
+ .addPathSegment(id)
+ .addPathSegments("consent-signing-keys")
+ .addPathSegment(kid);
+ if (requestOptions != null) {
+ requestOptions.getQueryParameters().forEach((_key, _value) -> {
+ httpUrl.addQueryParameter(_key, _value);
+ });
+ }
+ Request okhttpRequest = new Request.Builder()
+ .url(httpUrl.build())
+ .method("DELETE", null)
+ .headers(Headers.of(clientOptions.headers(requestOptions)))
+ .addHeader("Accept", "application/json")
+ .build();
+ OkHttpClient client = clientOptions.httpClient();
+ if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
+ client = clientOptions.httpClientWithTimeout(requestOptions);
+ }
+ if (requestOptions != null && requestOptions.getMaxRetries().isPresent()) {
+ okhttpRequest = okhttpRequest
+ .newBuilder()
+ .tag(
+ RetryInterceptor.MaxRetriesOverride.class,
+ new RetryInterceptor.MaxRetriesOverride(
+ requestOptions.getMaxRetries().get()))
+ .build();
+ }
+ CompletableFuture> future = new CompletableFuture<>();
+ client.newCall(okhttpRequest).enqueue(new Callback() {
+ @Override
+ public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
+ try (ResponseBody responseBody = response.body()) {
+ if (response.isSuccessful()) {
+ future.complete(new ManagementApiHttpResponse<>(null, response));
+ return;
+ }
+ String responseBodyString = responseBody != null ? responseBody.string() : "{}";
+ try {
+ switch (response.code()) {
+ case 400:
+ future.completeExceptionally(new BadRequestError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 401:
+ future.completeExceptionally(new UnauthorizedError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 403:
+ future.completeExceptionally(new ForbiddenError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ case 429:
+ future.completeExceptionally(new TooManyRequestsError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
+ response));
+ return;
+ }
+ } catch (JsonProcessingException ignored) {
+ // unable to map error response, throwing generic error
+ }
+ Object errorBody = ObjectMappers.parseErrorBody(responseBodyString);
+ future.completeExceptionally(new ManagementApiException(
+ "Error with status code " + response.code(), response.code(), errorBody, response));
+ return;
+ } catch (JsonProcessingException e) {
+ future.completeExceptionally(
+ new ManagementException("Failed to deserialize response: " + e.getMessage(), e));
+ } catch (IOException e) {
+ future.completeExceptionally(new ManagementException("Network error executing HTTP request", e));
+ }
+ }
+
+ @Override
+ public void onFailure(@NotNull Call call, @NotNull IOException e) {
+ future.completeExceptionally(new ManagementException("Network error executing HTTP request", e));
+ }
+ });
+ return future;
+ }
+
/**
* Remove an existing multi-factor authentication (MFA) recovery code 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.
*/
diff --git a/src/main/java/com/auth0/client/mgmt/AsyncRolesClient.java b/src/main/java/com/auth0/client/mgmt/AsyncRolesClient.java
index 945463dcf..c929570cd 100644
--- a/src/main/java/com/auth0/client/mgmt/AsyncRolesClient.java
+++ b/src/main/java/com/auth0/client/mgmt/AsyncRolesClient.java
@@ -47,7 +47,7 @@ public AsyncRawRolesClient withRawResponse() {
}
/**
- * 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.
*/
public CompletableFuture> list() {
@@ -55,7 +55,7 @@ public CompletableFuture> list() {
}
/**
- * 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.
*/
public CompletableFuture> list(RequestOptions requestOptions) {
@@ -63,7 +63,7 @@ public CompletableFuture> list(RequestOptions requestOp
}
/**
- * 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.
*/
public CompletableFuture> list(ListRolesRequestParameters request) {
@@ -71,7 +71,7 @@ public CompletableFuture> list(ListRolesRequestParamete
}
/**
- * 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.
*/
public CompletableFuture> list(
diff --git a/src/main/java/com/auth0/client/mgmt/AsyncUsersClient.java b/src/main/java/com/auth0/client/mgmt/AsyncUsersClient.java
index e95b12bd9..7499fbbc1 100644
--- a/src/main/java/com/auth0/client/mgmt/AsyncUsersClient.java
+++ b/src/main/java/com/auth0/client/mgmt/AsyncUsersClient.java
@@ -7,6 +7,7 @@
import com.auth0.client.mgmt.core.RequestOptions;
import com.auth0.client.mgmt.core.Suppliers;
import com.auth0.client.mgmt.core.SyncPagingIterable;
+import com.auth0.client.mgmt.types.ConsentSigningKey;
import com.auth0.client.mgmt.types.CreateUserRequestContent;
import com.auth0.client.mgmt.types.CreateUserResponseContent;
import com.auth0.client.mgmt.types.GetUserRequestParameters;
@@ -572,6 +573,49 @@ public CompletableFuture update(
return this.rawClient.update(id, request, requestOptions).thenApply(response -> response.body());
}
+ /**
+ * Retrieve all consent signing keys registered for a user. Returns an empty array when the user has no keys registered.
+ */
+ public CompletableFuture> listConsentSigningKeys(String id) {
+ return this.rawClient.listConsentSigningKeys(id).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve all consent signing keys registered for a user. Returns an empty array when the user has no keys registered.
+ */
+ public CompletableFuture> listConsentSigningKeys(String id, RequestOptions requestOptions) {
+ return this.rawClient.listConsentSigningKeys(id, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve a single consent signing key for a user by its key identifier (kid). Returns 404 if the key does not exist.
+ */
+ public CompletableFuture getConsentSigningKey(String id, String kid) {
+ return this.rawClient.getConsentSigningKey(id, kid).thenApply(response -> response.body());
+ }
+
+ /**
+ * Retrieve a single consent signing key for a user by its key identifier (kid). Returns 404 if the key does not exist.
+ */
+ public CompletableFuture getConsentSigningKey(
+ String id, String kid, RequestOptions requestOptions) {
+ return this.rawClient.getConsentSigningKey(id, kid, requestOptions).thenApply(response -> response.body());
+ }
+
+ /**
+ * Remove a single consent signing key for a user by its key identifier (kid). The operation is idempotent and returns 204 whether or not the key existed.
+ */
+ public CompletableFuture deleteConsentSigningKey(String id, String kid) {
+ return this.rawClient.deleteConsentSigningKey(id, kid).thenApply(response -> response.body());
+ }
+
+ /**
+ * Remove a single consent signing key for a user by its key identifier (kid). The operation is idempotent and returns 204 whether or not the key existed.
+ */
+ public CompletableFuture deleteConsentSigningKey(String id, String kid, RequestOptions requestOptions) {
+ return this.rawClient.deleteConsentSigningKey(id, kid, requestOptions).thenApply(response -> response.body());
+ }
+
/**
* Remove an existing multi-factor authentication (MFA) recovery code 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.
*/
diff --git a/src/main/java/com/auth0/client/mgmt/ClientGrantsClient.java b/src/main/java/com/auth0/client/mgmt/ClientGrantsClient.java
index 093806a12..c0927ae1b 100644
--- a/src/main/java/com/auth0/client/mgmt/ClientGrantsClient.java
+++ b/src/main/java/com/auth0/client/mgmt/ClientGrantsClient.java
@@ -13,6 +13,7 @@
import com.auth0.client.mgmt.types.CreateClientGrantResponseContent;
import com.auth0.client.mgmt.types.GetClientGrantResponseContent;
import com.auth0.client.mgmt.types.ListClientGrantsRequestParameters;
+import com.auth0.client.mgmt.types.SearchClientGrantsRequestParameters;
import com.auth0.client.mgmt.types.UpdateClientGrantRequestContent;
import com.auth0.client.mgmt.types.UpdateClientGrantResponseContent;
import java.util.function.Supplier;
@@ -81,6 +82,39 @@ public CreateClientGrantResponseContent create(
return this.rawClient.create(request, requestOptions).body();
}
+ /**
+ * 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.
+ */
+ public SyncPagingIterable search() {
+ return this.rawClient.search().body();
+ }
+
+ /**
+ * 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.
+ */
+ public SyncPagingIterable search(RequestOptions requestOptions) {
+ return this.rawClient.search(requestOptions).body();
+ }
+
+ /**
+ * 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.
+ */
+ public SyncPagingIterable search(SearchClientGrantsRequestParameters request) {
+ return this.rawClient.search(request).body();
+ }
+
+ /**
+ * 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.
+ */
+ public SyncPagingIterable search(
+ SearchClientGrantsRequestParameters request, RequestOptions requestOptions) {
+ return this.rawClient.search(request, requestOptions).body();
+ }
+
/**
* Retrieve a single client grant, including the
* scopes associated with the application/API pair.
diff --git a/src/main/java/com/auth0/client/mgmt/ClientProfilesClient.java b/src/main/java/com/auth0/client/mgmt/ClientProfilesClient.java
new file mode 100644
index 000000000..739039dc9
--- /dev/null
+++ b/src/main/java/com/auth0/client/mgmt/ClientProfilesClient.java
@@ -0,0 +1,129 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.auth0.client.mgmt;
+
+import com.auth0.client.mgmt.core.ClientOptions;
+import com.auth0.client.mgmt.core.RequestOptions;
+import com.auth0.client.mgmt.core.SyncPagingIterable;
+import com.auth0.client.mgmt.types.ClientProfile;
+import com.auth0.client.mgmt.types.CreateClientProfileRequestContent;
+import com.auth0.client.mgmt.types.ListClientProfilesRequestParameters;
+import com.auth0.client.mgmt.types.UpdateClientProfileRequestContent;
+
+public class ClientProfilesClient {
+ protected final ClientOptions clientOptions;
+
+ private final RawClientProfilesClient rawClient;
+
+ public ClientProfilesClient(ClientOptions clientOptions) {
+ this.clientOptions = clientOptions;
+ this.rawClient = new RawClientProfilesClient(clientOptions);
+ }
+
+ /**
+ * Get responses with HTTP metadata like headers
+ */
+ public RawClientProfilesClient withRawResponse() {
+ return this.rawClient;
+ }
+
+ /**
+ * 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.
+ */
+ public SyncPagingIterable list() {
+ return this.rawClient.list().body();
+ }
+
+ /**
+ * 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.
+ */
+ public SyncPagingIterable list(RequestOptions requestOptions) {
+ return this.rawClient.list(requestOptions).body();
+ }
+
+ /**
+ * 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.
+ */
+ public SyncPagingIterable list(ListClientProfilesRequestParameters request) {
+ return this.rawClient.list(request).body();
+ }
+
+ /**
+ * 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.
+ */
+ public SyncPagingIterable list(
+ ListClientProfilesRequestParameters request, RequestOptions requestOptions) {
+ return this.rawClient.list(request, requestOptions).body();
+ }
+
+ /**
+ * 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.
+ */
+ public ClientProfile create(CreateClientProfileRequestContent request) {
+ return this.rawClient.create(request).body();
+ }
+
+ /**
+ * 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.
+ */
+ public ClientProfile create(CreateClientProfileRequestContent request, RequestOptions requestOptions) {
+ return this.rawClient.create(request, requestOptions).body();
+ }
+
+ /**
+ * Retrieve a single client profile by its identifier. Returns 404 if no profile with the given ID exists for the tenant.
+ */
+ public ClientProfile get(String id) {
+ return this.rawClient.get(id).body();
+ }
+
+ /**
+ * Retrieve a single client profile by its identifier. Returns 404 if no profile with the given ID exists for the tenant.
+ */
+ public ClientProfile get(String id, RequestOptions requestOptions) {
+ return this.rawClient.get(id, requestOptions).body();
+ }
+
+ /**
+ * 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.
+ */
+ public void delete(String id) {
+ this.rawClient.delete(id).body();
+ }
+
+ /**
+ * 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.
+ */
+ public void delete(String id, RequestOptions requestOptions) {
+ this.rawClient.delete(id, requestOptions).body();
+ }
+
+ /**
+ * 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.
+ */
+ public ClientProfile update(String id) {
+ return this.rawClient.update(id).body();
+ }
+
+ /**
+ * 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.
+ */
+ public ClientProfile update(String id, RequestOptions requestOptions) {
+ return this.rawClient.update(id, requestOptions).body();
+ }
+
+ /**
+ * 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.
+ */
+ public ClientProfile update(String id, UpdateClientProfileRequestContent request) {
+ return this.rawClient.update(id, request).body();
+ }
+
+ /**
+ * 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.
+ */
+ public ClientProfile update(String id, UpdateClientProfileRequestContent request, RequestOptions requestOptions) {
+ return this.rawClient.update(id, request, requestOptions).body();
+ }
+}
diff --git a/src/main/java/com/auth0/client/mgmt/ClientsClient.java b/src/main/java/com/auth0/client/mgmt/ClientsClient.java
index 897251242..4b1f280b6 100644
--- a/src/main/java/com/auth0/client/mgmt/ClientsClient.java
+++ b/src/main/java/com/auth0/client/mgmt/ClientsClient.java
@@ -10,6 +10,7 @@
import com.auth0.client.mgmt.core.Suppliers;
import com.auth0.client.mgmt.core.SyncPagingIterable;
import com.auth0.client.mgmt.types.Client;
+import com.auth0.client.mgmt.types.ClientSearchResponse;
import com.auth0.client.mgmt.types.CreateClientRequestContent;
import com.auth0.client.mgmt.types.CreateClientResponseContent;
import com.auth0.client.mgmt.types.GetClientRequestParameters;
@@ -20,6 +21,7 @@
import com.auth0.client.mgmt.types.RegisterCimdClientRequestContent;
import com.auth0.client.mgmt.types.RegisterCimdClientResponseContent;
import com.auth0.client.mgmt.types.RotateClientSecretResponseContent;
+import com.auth0.client.mgmt.types.SearchClientsRequestParameters;
import com.auth0.client.mgmt.types.UpdateClientRequestContent;
import com.auth0.client.mgmt.types.UpdateClientResponseContent;
import java.util.function.Supplier;
@@ -269,6 +271,95 @@ public RegisterCimdClientResponseContent registerCimdClient(
return this.rawClient.registerCimdClient(request, requestOptions).body();
}
+ /**
+ * 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
+ *
+ *
+ *
+ */
+ public SyncPagingIterable search() {
+ return this.rawClient.search().body();
+ }
+
+ /**
+ * 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
+ *
+ *
+ *
+ */
+ public SyncPagingIterable search(RequestOptions requestOptions) {
+ return this.rawClient.search(requestOptions).body();
+ }
+
+ /**
+ * 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
+ *
+ *
+ *
+ */
+ public SyncPagingIterable search(SearchClientsRequestParameters request) {
+ return this.rawClient.search(request).body();
+ }
+
+ /**
+ * 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
+ *
+ *
+ *
+ */
+ public SyncPagingIterable search(
+ SearchClientsRequestParameters request, RequestOptions requestOptions) {
+ return this.rawClient.search(request, requestOptions).body();
+ }
+
/**
* Retrieve client details by ID. Clients are SSO connections or Applications linked with your Auth0 tenant. A list of fields to include or exclude may also be specified.
* For more information, read Applications in Auth0 and Single Sign-On.
diff --git a/src/main/java/com/auth0/client/mgmt/ManagementApi.java b/src/main/java/com/auth0/client/mgmt/ManagementApi.java
index ff2ff251b..bc2fb1c5f 100644
--- a/src/main/java/com/auth0/client/mgmt/ManagementApi.java
+++ b/src/main/java/com/auth0/client/mgmt/ManagementApi.java
@@ -26,6 +26,8 @@ public class ManagementApi {
protected final Supplier clientGrantsClient;
+ protected final Supplier clientProfilesClient;
+
protected final Supplier clientsClient;
protected final Supplier connectionProfilesClient;
@@ -118,6 +120,7 @@ public ManagementApi(ClientOptions clientOptions) {
this.agentsClient = Suppliers.memoize(() -> new AgentsClient(clientOptions));
this.brandingClient = Suppliers.memoize(() -> new BrandingClient(clientOptions));
this.clientGrantsClient = Suppliers.memoize(() -> new ClientGrantsClient(clientOptions));
+ this.clientProfilesClient = Suppliers.memoize(() -> new ClientProfilesClient(clientOptions));
this.clientsClient = Suppliers.memoize(() -> new ClientsClient(clientOptions));
this.connectionProfilesClient = Suppliers.memoize(() -> new ConnectionProfilesClient(clientOptions));
this.connectionsClient = Suppliers.memoize(() -> new ConnectionsClient(clientOptions));
@@ -179,6 +182,10 @@ public ClientGrantsClient clientGrants() {
return this.clientGrantsClient.get();
}
+ public ClientProfilesClient clientProfiles() {
+ return this.clientProfilesClient.get();
+ }
+
public ClientsClient clients() {
return this.clientsClient.get();
}
diff --git a/src/main/java/com/auth0/client/mgmt/RawClientGrantsClient.java b/src/main/java/com/auth0/client/mgmt/RawClientGrantsClient.java
index 2be177c55..644bc85d1 100644
--- a/src/main/java/com/auth0/client/mgmt/RawClientGrantsClient.java
+++ b/src/main/java/com/auth0/client/mgmt/RawClientGrantsClient.java
@@ -16,6 +16,8 @@
import com.auth0.client.mgmt.errors.BadRequestError;
import com.auth0.client.mgmt.errors.ConflictError;
import com.auth0.client.mgmt.errors.ForbiddenError;
+import com.auth0.client.mgmt.errors.GatewayTimeoutError;
+import com.auth0.client.mgmt.errors.InternalServerError;
import com.auth0.client.mgmt.errors.NotFoundError;
import com.auth0.client.mgmt.errors.TooManyRequestsError;
import com.auth0.client.mgmt.errors.UnauthorizedError;
@@ -25,6 +27,8 @@
import com.auth0.client.mgmt.types.GetClientGrantResponseContent;
import com.auth0.client.mgmt.types.ListClientGrantPaginatedResponseContent;
import com.auth0.client.mgmt.types.ListClientGrantsRequestParameters;
+import com.auth0.client.mgmt.types.SearchClientGrantsRequestParameters;
+import com.auth0.client.mgmt.types.SearchClientGrantsResponseContent;
import com.auth0.client.mgmt.types.UpdateClientGrantRequestContent;
import com.auth0.client.mgmt.types.UpdateClientGrantResponseContent;
import com.fasterxml.jackson.core.JsonProcessingException;
@@ -266,6 +270,145 @@ public ManagementApiHttpResponse create(
}
}
+ /**
+ * 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.
+ */
+ public ManagementApiHttpResponse> search() {
+ return search(SearchClientGrantsRequestParameters.builder().build());
+ }
+
+ /**
+ * 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.
+ */
+ public ManagementApiHttpResponse> search(
+ RequestOptions requestOptions) {
+ return search(SearchClientGrantsRequestParameters.builder().build(), requestOptions);
+ }
+
+ /**
+ * 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.
+ */
+ public ManagementApiHttpResponse> search(
+ SearchClientGrantsRequestParameters request) {
+ return search(request, null);
+ }
+
+ /**
+ * 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.
+ */
+ public ManagementApiHttpResponse> search(
+ SearchClientGrantsRequestParameters request, RequestOptions requestOptions) {
+ HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
+ .newBuilder()
+ .addPathSegments("client-grants/search");
+ if (!request.getQ().isAbsent()) {
+ QueryStringMapper.addQueryParameter(httpUrl, "q", request.getQ().orElse(null), false);
+ }
+ if (!request.getParser().isAbsent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "parser", request.getParser().orElse(null), false);
+ }
+ if (!request.getFields().isAbsent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "fields", request.getFields().orElse(null), false);
+ }
+ if (!request.getIncludeFields().isAbsent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "include_fields", request.getIncludeFields().orElse(null), false);
+ }
+ QueryStringMapper.addQueryParameter(httpUrl, "take", request.getTake().orElse(50), false);
+ if (!request.getFrom().isAbsent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "from", request.getFrom().orElse(null), false);
+ }
+ if (!request.getSort().isAbsent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "sort", request.getSort().orElse(null), false);
+ }
+ if (requestOptions != null) {
+ requestOptions.getQueryParameters().forEach((_key, _value) -> {
+ httpUrl.addQueryParameter(_key, _value);
+ });
+ }
+ Request.Builder _requestBuilder = new Request.Builder()
+ .url(httpUrl.build())
+ .method("GET", null)
+ .headers(Headers.of(clientOptions.headers(requestOptions)))
+ .addHeader("Accept", "application/json");
+ Request okhttpRequest = _requestBuilder.build();
+ OkHttpClient client = clientOptions.httpClient();
+ if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
+ client = clientOptions.httpClientWithTimeout(requestOptions);
+ }
+ if (requestOptions != null && requestOptions.getMaxRetries().isPresent()) {
+ okhttpRequest = okhttpRequest
+ .newBuilder()
+ .tag(
+ RetryInterceptor.MaxRetriesOverride.class,
+ new RetryInterceptor.MaxRetriesOverride(
+ requestOptions.getMaxRetries().get()))
+ .build();
+ }
+ try (Response response = client.newCall(okhttpRequest).execute()) {
+ ResponseBody responseBody = response.body();
+ String responseBodyString = responseBody != null ? responseBody.string() : "{}";
+ if (response.isSuccessful()) {
+ SearchClientGrantsResponseContent parsedResponse = ObjectMappers.JSON_MAPPER.readValue(
+ responseBodyString, SearchClientGrantsResponseContent.class);
+ Optional startingAfter = parsedResponse.getNext();
+ SearchClientGrantsRequestParameters nextRequest = SearchClientGrantsRequestParameters.builder()
+ .from(request)
+ .from(startingAfter)
+ .build();
+ List result = parsedResponse.getClientGrants();
+ return new ManagementApiHttpResponse<>(
+ new SyncPagingIterable(
+ startingAfter.isPresent(), result, parsedResponse, () -> search(
+ nextRequest, requestOptions)
+ .body()),
+ response);
+ }
+ try {
+ switch (response.code()) {
+ case 400:
+ throw new BadRequestError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 401:
+ throw new UnauthorizedError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 403:
+ throw new ForbiddenError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 404:
+ throw new NotFoundError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 429:
+ throw new TooManyRequestsError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 500:
+ throw new InternalServerError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 504:
+ throw new GatewayTimeoutError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ }
+ } catch (JsonProcessingException ignored) {
+ // unable to map error response, throwing generic error
+ }
+ Object errorBody = ObjectMappers.parseErrorBody(responseBodyString);
+ throw new ManagementApiException(
+ "Error with status code " + response.code(), response.code(), errorBody, response);
+ } catch (JsonProcessingException e) {
+ throw new ManagementException("Failed to deserialize response: " + e.getMessage(), e);
+ } catch (IOException e) {
+ throw new ManagementException("Network error executing HTTP request", e);
+ }
+ }
+
/**
* Retrieve a single client grant, including the
* scopes associated with the application/API pair.
diff --git a/src/main/java/com/auth0/client/mgmt/RawClientProfilesClient.java b/src/main/java/com/auth0/client/mgmt/RawClientProfilesClient.java
new file mode 100644
index 000000000..fca37e571
--- /dev/null
+++ b/src/main/java/com/auth0/client/mgmt/RawClientProfilesClient.java
@@ -0,0 +1,486 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.auth0.client.mgmt;
+
+import com.auth0.client.mgmt.core.ClientOptions;
+import com.auth0.client.mgmt.core.ManagementApiException;
+import com.auth0.client.mgmt.core.ManagementApiHttpResponse;
+import com.auth0.client.mgmt.core.ManagementException;
+import com.auth0.client.mgmt.core.MediaTypes;
+import com.auth0.client.mgmt.core.ObjectMappers;
+import com.auth0.client.mgmt.core.QueryStringMapper;
+import com.auth0.client.mgmt.core.RequestOptions;
+import com.auth0.client.mgmt.core.RetryInterceptor;
+import com.auth0.client.mgmt.core.SyncPagingIterable;
+import com.auth0.client.mgmt.errors.BadRequestError;
+import com.auth0.client.mgmt.errors.ConflictError;
+import com.auth0.client.mgmt.errors.ForbiddenError;
+import com.auth0.client.mgmt.errors.NotFoundError;
+import com.auth0.client.mgmt.errors.TooManyRequestsError;
+import com.auth0.client.mgmt.errors.UnauthorizedError;
+import com.auth0.client.mgmt.types.ClientProfile;
+import com.auth0.client.mgmt.types.CreateClientProfileRequestContent;
+import com.auth0.client.mgmt.types.ListClientProfilesPaginatedResponseContent;
+import com.auth0.client.mgmt.types.ListClientProfilesRequestParameters;
+import com.auth0.client.mgmt.types.UpdateClientProfileRequestContent;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import java.io.IOException;
+import java.util.List;
+import java.util.Optional;
+import okhttp3.Headers;
+import okhttp3.HttpUrl;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.RequestBody;
+import okhttp3.Response;
+import okhttp3.ResponseBody;
+
+public class RawClientProfilesClient {
+ protected final ClientOptions clientOptions;
+
+ public RawClientProfilesClient(ClientOptions clientOptions) {
+ this.clientOptions = clientOptions;
+ }
+
+ /**
+ * 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.
+ */
+ public ManagementApiHttpResponse> list() {
+ return list(ListClientProfilesRequestParameters.builder().build());
+ }
+
+ /**
+ * 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.
+ */
+ public ManagementApiHttpResponse> list(RequestOptions requestOptions) {
+ return list(ListClientProfilesRequestParameters.builder().build(), requestOptions);
+ }
+
+ /**
+ * 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.
+ */
+ public ManagementApiHttpResponse> list(
+ ListClientProfilesRequestParameters request) {
+ return list(request, null);
+ }
+
+ /**
+ * 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.
+ */
+ public ManagementApiHttpResponse> list(
+ ListClientProfilesRequestParameters request, RequestOptions requestOptions) {
+ HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
+ .newBuilder()
+ .addPathSegments("client-profiles");
+ if (!request.getFrom().isAbsent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "from", request.getFrom().orElse(null), false);
+ }
+ QueryStringMapper.addQueryParameter(httpUrl, "take", request.getTake().orElse(50), false);
+ if (requestOptions != null) {
+ requestOptions.getQueryParameters().forEach((_key, _value) -> {
+ httpUrl.addQueryParameter(_key, _value);
+ });
+ }
+ Request.Builder _requestBuilder = new Request.Builder()
+ .url(httpUrl.build())
+ .method("GET", null)
+ .headers(Headers.of(clientOptions.headers(requestOptions)))
+ .addHeader("Accept", "application/json");
+ Request okhttpRequest = _requestBuilder.build();
+ OkHttpClient client = clientOptions.httpClient();
+ if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
+ client = clientOptions.httpClientWithTimeout(requestOptions);
+ }
+ if (requestOptions != null && requestOptions.getMaxRetries().isPresent()) {
+ okhttpRequest = okhttpRequest
+ .newBuilder()
+ .tag(
+ RetryInterceptor.MaxRetriesOverride.class,
+ new RetryInterceptor.MaxRetriesOverride(
+ requestOptions.getMaxRetries().get()))
+ .build();
+ }
+ try (Response response = client.newCall(okhttpRequest).execute()) {
+ ResponseBody responseBody = response.body();
+ String responseBodyString = responseBody != null ? responseBody.string() : "{}";
+ if (response.isSuccessful()) {
+ ListClientProfilesPaginatedResponseContent parsedResponse = ObjectMappers.JSON_MAPPER.readValue(
+ responseBodyString, ListClientProfilesPaginatedResponseContent.class);
+ Optional startingAfter = parsedResponse.getNext();
+ ListClientProfilesRequestParameters nextRequest = ListClientProfilesRequestParameters.builder()
+ .from(request)
+ .from(startingAfter)
+ .build();
+ List result = parsedResponse.getClientProfiles();
+ return new ManagementApiHttpResponse<>(
+ new SyncPagingIterable(
+ startingAfter.isPresent(), result, parsedResponse, () -> list(
+ nextRequest, requestOptions)
+ .body()),
+ response);
+ }
+ try {
+ switch (response.code()) {
+ case 400:
+ throw new BadRequestError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 401:
+ throw new UnauthorizedError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 403:
+ throw new ForbiddenError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 429:
+ throw new TooManyRequestsError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ }
+ } catch (JsonProcessingException ignored) {
+ // unable to map error response, throwing generic error
+ }
+ Object errorBody = ObjectMappers.parseErrorBody(responseBodyString);
+ throw new ManagementApiException(
+ "Error with status code " + response.code(), response.code(), errorBody, response);
+ } catch (JsonProcessingException e) {
+ throw new ManagementException("Failed to deserialize response: " + e.getMessage(), e);
+ } catch (IOException e) {
+ throw new ManagementException("Network error executing HTTP request", e);
+ }
+ }
+
+ /**
+ * 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.
+ */
+ public ManagementApiHttpResponse create(CreateClientProfileRequestContent request) {
+ return create(request, null);
+ }
+
+ /**
+ * 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.
+ */
+ public ManagementApiHttpResponse create(
+ CreateClientProfileRequestContent request, RequestOptions requestOptions) {
+ HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
+ .newBuilder()
+ .addPathSegments("client-profiles");
+ if (requestOptions != null) {
+ requestOptions.getQueryParameters().forEach((_key, _value) -> {
+ httpUrl.addQueryParameter(_key, _value);
+ });
+ }
+ RequestBody body;
+ try {
+ body = RequestBody.create(
+ ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON);
+ } catch (JsonProcessingException e) {
+ throw new ManagementException("Failed to serialize request", e);
+ }
+ Request okhttpRequest = new Request.Builder()
+ .url(httpUrl.build())
+ .method("POST", body)
+ .headers(Headers.of(clientOptions.headers(requestOptions)))
+ .addHeader("Content-Type", "application/json")
+ .addHeader("Accept", "application/json")
+ .build();
+ OkHttpClient client = clientOptions.httpClient();
+ if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
+ client = clientOptions.httpClientWithTimeout(requestOptions);
+ }
+ if (requestOptions != null && requestOptions.getMaxRetries().isPresent()) {
+ okhttpRequest = okhttpRequest
+ .newBuilder()
+ .tag(
+ RetryInterceptor.MaxRetriesOverride.class,
+ new RetryInterceptor.MaxRetriesOverride(
+ requestOptions.getMaxRetries().get()))
+ .build();
+ }
+ try (Response response = client.newCall(okhttpRequest).execute()) {
+ ResponseBody responseBody = response.body();
+ String responseBodyString = responseBody != null ? responseBody.string() : "{}";
+ if (response.isSuccessful()) {
+ return new ManagementApiHttpResponse<>(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ClientProfile.class), response);
+ }
+ try {
+ switch (response.code()) {
+ case 400:
+ throw new BadRequestError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 401:
+ throw new UnauthorizedError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 403:
+ throw new ForbiddenError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 409:
+ throw new ConflictError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 429:
+ throw new TooManyRequestsError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ }
+ } catch (JsonProcessingException ignored) {
+ // unable to map error response, throwing generic error
+ }
+ Object errorBody = ObjectMappers.parseErrorBody(responseBodyString);
+ throw new ManagementApiException(
+ "Error with status code " + response.code(), response.code(), errorBody, response);
+ } catch (JsonProcessingException e) {
+ throw new ManagementException("Failed to deserialize response: " + e.getMessage(), e);
+ } catch (IOException e) {
+ throw new ManagementException("Network error executing HTTP request", e);
+ }
+ }
+
+ /**
+ * Retrieve a single client profile by its identifier. Returns 404 if no profile with the given ID exists for the tenant.
+ */
+ public ManagementApiHttpResponse get(String id) {
+ return get(id, null);
+ }
+
+ /**
+ * Retrieve a single client profile by its identifier. Returns 404 if no profile with the given ID exists for the tenant.
+ */
+ public ManagementApiHttpResponse get(String id, RequestOptions requestOptions) {
+ HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
+ .newBuilder()
+ .addPathSegments("client-profiles")
+ .addPathSegment(id);
+ if (requestOptions != null) {
+ requestOptions.getQueryParameters().forEach((_key, _value) -> {
+ httpUrl.addQueryParameter(_key, _value);
+ });
+ }
+ Request okhttpRequest = new Request.Builder()
+ .url(httpUrl.build())
+ .method("GET", null)
+ .headers(Headers.of(clientOptions.headers(requestOptions)))
+ .addHeader("Accept", "application/json")
+ .build();
+ OkHttpClient client = clientOptions.httpClient();
+ if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
+ client = clientOptions.httpClientWithTimeout(requestOptions);
+ }
+ if (requestOptions != null && requestOptions.getMaxRetries().isPresent()) {
+ okhttpRequest = okhttpRequest
+ .newBuilder()
+ .tag(
+ RetryInterceptor.MaxRetriesOverride.class,
+ new RetryInterceptor.MaxRetriesOverride(
+ requestOptions.getMaxRetries().get()))
+ .build();
+ }
+ try (Response response = client.newCall(okhttpRequest).execute()) {
+ ResponseBody responseBody = response.body();
+ String responseBodyString = responseBody != null ? responseBody.string() : "{}";
+ if (response.isSuccessful()) {
+ return new ManagementApiHttpResponse<>(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ClientProfile.class), response);
+ }
+ try {
+ switch (response.code()) {
+ case 400:
+ throw new BadRequestError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 401:
+ throw new UnauthorizedError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 403:
+ throw new ForbiddenError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 404:
+ throw new NotFoundError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 429:
+ throw new TooManyRequestsError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ }
+ } catch (JsonProcessingException ignored) {
+ // unable to map error response, throwing generic error
+ }
+ Object errorBody = ObjectMappers.parseErrorBody(responseBodyString);
+ throw new ManagementApiException(
+ "Error with status code " + response.code(), response.code(), errorBody, response);
+ } catch (JsonProcessingException e) {
+ throw new ManagementException("Failed to deserialize response: " + e.getMessage(), e);
+ } catch (IOException e) {
+ throw new ManagementException("Network error executing HTTP request", e);
+ }
+ }
+
+ /**
+ * 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.
+ */
+ public ManagementApiHttpResponse delete(String id) {
+ return delete(id, null);
+ }
+
+ /**
+ * 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.
+ */
+ public ManagementApiHttpResponse delete(String id, RequestOptions requestOptions) {
+ HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
+ .newBuilder()
+ .addPathSegments("client-profiles")
+ .addPathSegment(id);
+ if (requestOptions != null) {
+ requestOptions.getQueryParameters().forEach((_key, _value) -> {
+ httpUrl.addQueryParameter(_key, _value);
+ });
+ }
+ Request okhttpRequest = new Request.Builder()
+ .url(httpUrl.build())
+ .method("DELETE", null)
+ .headers(Headers.of(clientOptions.headers(requestOptions)))
+ .addHeader("Accept", "application/json")
+ .build();
+ OkHttpClient client = clientOptions.httpClient();
+ if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
+ client = clientOptions.httpClientWithTimeout(requestOptions);
+ }
+ if (requestOptions != null && requestOptions.getMaxRetries().isPresent()) {
+ okhttpRequest = okhttpRequest
+ .newBuilder()
+ .tag(
+ RetryInterceptor.MaxRetriesOverride.class,
+ new RetryInterceptor.MaxRetriesOverride(
+ requestOptions.getMaxRetries().get()))
+ .build();
+ }
+ try (Response response = client.newCall(okhttpRequest).execute()) {
+ ResponseBody responseBody = response.body();
+ if (response.isSuccessful()) {
+ return new ManagementApiHttpResponse<>(null, response);
+ }
+ String responseBodyString = responseBody != null ? responseBody.string() : "{}";
+ try {
+ switch (response.code()) {
+ case 400:
+ throw new BadRequestError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 401:
+ throw new UnauthorizedError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 403:
+ throw new ForbiddenError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 429:
+ throw new TooManyRequestsError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ }
+ } catch (JsonProcessingException ignored) {
+ // unable to map error response, throwing generic error
+ }
+ Object errorBody = ObjectMappers.parseErrorBody(responseBodyString);
+ throw new ManagementApiException(
+ "Error with status code " + response.code(), response.code(), errorBody, response);
+ } catch (JsonProcessingException e) {
+ throw new ManagementException("Failed to deserialize response: " + e.getMessage(), e);
+ } catch (IOException e) {
+ throw new ManagementException("Network error executing HTTP request", e);
+ }
+ }
+
+ /**
+ * 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.
+ */
+ public ManagementApiHttpResponse update(String id) {
+ return update(id, UpdateClientProfileRequestContent.builder().build());
+ }
+
+ /**
+ * 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.
+ */
+ public ManagementApiHttpResponse update(String id, RequestOptions requestOptions) {
+ return update(id, UpdateClientProfileRequestContent.builder().build(), requestOptions);
+ }
+
+ /**
+ * 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.
+ */
+ public ManagementApiHttpResponse update(String id, UpdateClientProfileRequestContent request) {
+ return update(id, request, null);
+ }
+
+ /**
+ * 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.
+ */
+ public ManagementApiHttpResponse update(
+ String id, UpdateClientProfileRequestContent request, RequestOptions requestOptions) {
+ HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
+ .newBuilder()
+ .addPathSegments("client-profiles")
+ .addPathSegment(id);
+ if (requestOptions != null) {
+ requestOptions.getQueryParameters().forEach((_key, _value) -> {
+ httpUrl.addQueryParameter(_key, _value);
+ });
+ }
+ RequestBody body;
+ try {
+ body = RequestBody.create(
+ ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON);
+ } catch (JsonProcessingException e) {
+ throw new ManagementException("Failed to serialize request", e);
+ }
+ Request okhttpRequest = new Request.Builder()
+ .url(httpUrl.build())
+ .method("PATCH", body)
+ .headers(Headers.of(clientOptions.headers(requestOptions)))
+ .addHeader("Content-Type", "application/json")
+ .addHeader("Accept", "application/json")
+ .build();
+ OkHttpClient client = clientOptions.httpClient();
+ if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
+ client = clientOptions.httpClientWithTimeout(requestOptions);
+ }
+ if (requestOptions != null && requestOptions.getMaxRetries().isPresent()) {
+ okhttpRequest = okhttpRequest
+ .newBuilder()
+ .tag(
+ RetryInterceptor.MaxRetriesOverride.class,
+ new RetryInterceptor.MaxRetriesOverride(
+ requestOptions.getMaxRetries().get()))
+ .build();
+ }
+ try (Response response = client.newCall(okhttpRequest).execute()) {
+ ResponseBody responseBody = response.body();
+ String responseBodyString = responseBody != null ? responseBody.string() : "{}";
+ if (response.isSuccessful()) {
+ return new ManagementApiHttpResponse<>(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ClientProfile.class), response);
+ }
+ try {
+ switch (response.code()) {
+ case 400:
+ throw new BadRequestError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 401:
+ throw new UnauthorizedError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 403:
+ throw new ForbiddenError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 404:
+ throw new NotFoundError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 429:
+ throw new TooManyRequestsError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ }
+ } catch (JsonProcessingException ignored) {
+ // unable to map error response, throwing generic error
+ }
+ Object errorBody = ObjectMappers.parseErrorBody(responseBodyString);
+ throw new ManagementApiException(
+ "Error with status code " + response.code(), response.code(), errorBody, response);
+ } catch (JsonProcessingException e) {
+ throw new ManagementException("Failed to deserialize response: " + e.getMessage(), e);
+ } catch (IOException e) {
+ throw new ManagementException("Network error executing HTTP request", e);
+ }
+ }
+}
diff --git a/src/main/java/com/auth0/client/mgmt/RawClientsClient.java b/src/main/java/com/auth0/client/mgmt/RawClientsClient.java
index 956bf4552..df0d96acb 100644
--- a/src/main/java/com/auth0/client/mgmt/RawClientsClient.java
+++ b/src/main/java/com/auth0/client/mgmt/RawClientsClient.java
@@ -16,11 +16,13 @@
import com.auth0.client.mgmt.errors.BadRequestError;
import com.auth0.client.mgmt.errors.ConflictError;
import com.auth0.client.mgmt.errors.ForbiddenError;
+import com.auth0.client.mgmt.errors.GatewayTimeoutError;
import com.auth0.client.mgmt.errors.InternalServerError;
import com.auth0.client.mgmt.errors.NotFoundError;
import com.auth0.client.mgmt.errors.TooManyRequestsError;
import com.auth0.client.mgmt.errors.UnauthorizedError;
import com.auth0.client.mgmt.types.Client;
+import com.auth0.client.mgmt.types.ClientSearchResponse;
import com.auth0.client.mgmt.types.CreateClientRequestContent;
import com.auth0.client.mgmt.types.CreateClientResponseContent;
import com.auth0.client.mgmt.types.GetClientRequestParameters;
@@ -32,12 +34,15 @@
import com.auth0.client.mgmt.types.RegisterCimdClientRequestContent;
import com.auth0.client.mgmt.types.RegisterCimdClientResponseContent;
import com.auth0.client.mgmt.types.RotateClientSecretResponseContent;
+import com.auth0.client.mgmt.types.SearchClientsRequestParameters;
+import com.auth0.client.mgmt.types.SearchClientsResponseContent;
import com.auth0.client.mgmt.types.UpdateClientRequestContent;
import com.auth0.client.mgmt.types.UpdateClientResponseContent;
import com.fasterxml.jackson.core.JsonProcessingException;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
+import java.util.Optional;
import okhttp3.Headers;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
@@ -580,6 +585,9 @@ public ManagementApiHttpResponse registerCimd
case 403:
throw new ForbiddenError(
ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 409:
+ throw new ConflictError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
case 429:
throw new TooManyRequestsError(
ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
@@ -600,6 +608,200 @@ public ManagementApiHttpResponse registerCimd
}
}
+ /**
+ * 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
+ *
+ *
+ *
+ */
+ public ManagementApiHttpResponse> search() {
+ return search(SearchClientsRequestParameters.builder().build());
+ }
+
+ /**
+ * 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
+ *
+ *
+ *
+ */
+ public ManagementApiHttpResponse> search(RequestOptions requestOptions) {
+ return search(SearchClientsRequestParameters.builder().build(), requestOptions);
+ }
+
+ /**
+ * 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
+ *
+ *
+ *
+ */
+ public ManagementApiHttpResponse> search(
+ SearchClientsRequestParameters request) {
+ return search(request, null);
+ }
+
+ /**
+ * 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
+ *
+ *
+ *
+ */
+ public ManagementApiHttpResponse> search(
+ SearchClientsRequestParameters request, RequestOptions requestOptions) {
+ HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
+ .newBuilder()
+ .addPathSegments("clients/search");
+ if (!request.getQ().isAbsent()) {
+ QueryStringMapper.addQueryParameter(httpUrl, "q", request.getQ().orElse(null), false);
+ }
+ if (!request.getParser().isAbsent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "parser", request.getParser().orElse(null), false);
+ }
+ if (!request.getFields().isAbsent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "fields", request.getFields().orElse(null), false);
+ }
+ if (!request.getIncludeFields().isAbsent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "include_fields", request.getIncludeFields().orElse(null), false);
+ }
+ QueryStringMapper.addQueryParameter(httpUrl, "take", request.getTake().orElse(50), false);
+ if (!request.getFrom().isAbsent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "from", request.getFrom().orElse(null), false);
+ }
+ if (!request.getSort().isAbsent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "sort", request.getSort().orElse(null), false);
+ }
+ if (requestOptions != null) {
+ requestOptions.getQueryParameters().forEach((_key, _value) -> {
+ httpUrl.addQueryParameter(_key, _value);
+ });
+ }
+ Request.Builder _requestBuilder = new Request.Builder()
+ .url(httpUrl.build())
+ .method("GET", null)
+ .headers(Headers.of(clientOptions.headers(requestOptions)))
+ .addHeader("Accept", "application/json");
+ Request okhttpRequest = _requestBuilder.build();
+ OkHttpClient client = clientOptions.httpClient();
+ if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
+ client = clientOptions.httpClientWithTimeout(requestOptions);
+ }
+ if (requestOptions != null && requestOptions.getMaxRetries().isPresent()) {
+ okhttpRequest = okhttpRequest
+ .newBuilder()
+ .tag(
+ RetryInterceptor.MaxRetriesOverride.class,
+ new RetryInterceptor.MaxRetriesOverride(
+ requestOptions.getMaxRetries().get()))
+ .build();
+ }
+ try (Response response = client.newCall(okhttpRequest).execute()) {
+ ResponseBody responseBody = response.body();
+ String responseBodyString = responseBody != null ? responseBody.string() : "{}";
+ if (response.isSuccessful()) {
+ SearchClientsResponseContent parsedResponse =
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, SearchClientsResponseContent.class);
+ Optional startingAfter = parsedResponse.getNext();
+ SearchClientsRequestParameters nextRequest = SearchClientsRequestParameters.builder()
+ .from(request)
+ .from(startingAfter)
+ .build();
+ List result = parsedResponse.getClients();
+ return new ManagementApiHttpResponse<>(
+ new SyncPagingIterable(
+ startingAfter.isPresent(), result, parsedResponse, () -> search(
+ nextRequest, requestOptions)
+ .body()),
+ response);
+ }
+ try {
+ switch (response.code()) {
+ case 400:
+ throw new BadRequestError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 401:
+ throw new UnauthorizedError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 403:
+ throw new ForbiddenError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 404:
+ throw new NotFoundError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 429:
+ throw new TooManyRequestsError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 500:
+ throw new InternalServerError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 504:
+ throw new GatewayTimeoutError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ }
+ } catch (JsonProcessingException ignored) {
+ // unable to map error response, throwing generic error
+ }
+ Object errorBody = ObjectMappers.parseErrorBody(responseBodyString);
+ throw new ManagementApiException(
+ "Error with status code " + response.code(), response.code(), errorBody, response);
+ } catch (JsonProcessingException e) {
+ throw new ManagementException("Failed to deserialize response: " + e.getMessage(), e);
+ } catch (IOException e) {
+ throw new ManagementException("Network error executing HTTP request", e);
+ }
+ }
+
/**
* Retrieve client details by ID. Clients are SSO connections or Applications linked with your Auth0 tenant. A list of fields to include or exclude may also be specified.
* For more information, read Applications in Auth0 and Single Sign-On.
diff --git a/src/main/java/com/auth0/client/mgmt/RawRolesClient.java b/src/main/java/com/auth0/client/mgmt/RawRolesClient.java
index ea7eb9ece..29c1990e0 100644
--- a/src/main/java/com/auth0/client/mgmt/RawRolesClient.java
+++ b/src/main/java/com/auth0/client/mgmt/RawRolesClient.java
@@ -47,7 +47,7 @@ public RawRolesClient(ClientOptions clientOptions) {
}
/**
- * 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.
*/
public ManagementApiHttpResponse> list() {
@@ -55,7 +55,7 @@ public ManagementApiHttpResponse> list() {
}
/**
- * 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.
*/
public ManagementApiHttpResponse> list(RequestOptions requestOptions) {
@@ -63,7 +63,7 @@ public ManagementApiHttpResponse> list(RequestOptions r
}
/**
- * 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.
*/
public ManagementApiHttpResponse> list(ListRolesRequestParameters request) {
@@ -71,7 +71,7 @@ public ManagementApiHttpResponse> list(ListRolesRequest
}
/**
- * 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.
*/
public ManagementApiHttpResponse> list(
diff --git a/src/main/java/com/auth0/client/mgmt/RawUsersClient.java b/src/main/java/com/auth0/client/mgmt/RawUsersClient.java
index 39f25b5ef..8c89a86d7 100644
--- a/src/main/java/com/auth0/client/mgmt/RawUsersClient.java
+++ b/src/main/java/com/auth0/client/mgmt/RawUsersClient.java
@@ -20,6 +20,7 @@
import com.auth0.client.mgmt.errors.ServiceUnavailableError;
import com.auth0.client.mgmt.errors.TooManyRequestsError;
import com.auth0.client.mgmt.errors.UnauthorizedError;
+import com.auth0.client.mgmt.types.ConsentSigningKey;
import com.auth0.client.mgmt.types.CreateUserRequestContent;
import com.auth0.client.mgmt.types.CreateUserResponseContent;
import com.auth0.client.mgmt.types.GetUserRequestParameters;
@@ -972,6 +973,240 @@ public ManagementApiHttpResponse update(
}
}
+ /**
+ * Retrieve all consent signing keys registered for a user. Returns an empty array when the user has no keys registered.
+ */
+ public ManagementApiHttpResponse> listConsentSigningKeys(String id) {
+ return listConsentSigningKeys(id, null);
+ }
+
+ /**
+ * Retrieve all consent signing keys registered for a user. Returns an empty array when the user has no keys registered.
+ */
+ public ManagementApiHttpResponse> listConsentSigningKeys(
+ String id, RequestOptions requestOptions) {
+ HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
+ .newBuilder()
+ .addPathSegments("users")
+ .addPathSegment(id)
+ .addPathSegments("consent-signing-keys");
+ if (requestOptions != null) {
+ requestOptions.getQueryParameters().forEach((_key, _value) -> {
+ httpUrl.addQueryParameter(_key, _value);
+ });
+ }
+ Request okhttpRequest = new Request.Builder()
+ .url(httpUrl.build())
+ .method("GET", null)
+ .headers(Headers.of(clientOptions.headers(requestOptions)))
+ .addHeader("Accept", "application/json")
+ .build();
+ OkHttpClient client = clientOptions.httpClient();
+ if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
+ client = clientOptions.httpClientWithTimeout(requestOptions);
+ }
+ if (requestOptions != null && requestOptions.getMaxRetries().isPresent()) {
+ okhttpRequest = okhttpRequest
+ .newBuilder()
+ .tag(
+ RetryInterceptor.MaxRetriesOverride.class,
+ new RetryInterceptor.MaxRetriesOverride(
+ requestOptions.getMaxRetries().get()))
+ .build();
+ }
+ try (Response response = client.newCall(okhttpRequest).execute()) {
+ ResponseBody responseBody = response.body();
+ String responseBodyString = responseBody != null ? responseBody.string() : "{}";
+ if (response.isSuccessful()) {
+ return new ManagementApiHttpResponse<>(
+ ObjectMappers.JSON_MAPPER.readValue(
+ responseBodyString, new TypeReference>() {}),
+ response);
+ }
+ try {
+ switch (response.code()) {
+ case 400:
+ throw new BadRequestError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 401:
+ throw new UnauthorizedError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 403:
+ throw new ForbiddenError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 429:
+ throw new TooManyRequestsError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ }
+ } catch (JsonProcessingException ignored) {
+ // unable to map error response, throwing generic error
+ }
+ Object errorBody = ObjectMappers.parseErrorBody(responseBodyString);
+ throw new ManagementApiException(
+ "Error with status code " + response.code(), response.code(), errorBody, response);
+ } catch (JsonProcessingException e) {
+ throw new ManagementException("Failed to deserialize response: " + e.getMessage(), e);
+ } catch (IOException e) {
+ throw new ManagementException("Network error executing HTTP request", e);
+ }
+ }
+
+ /**
+ * Retrieve a single consent signing key for a user by its key identifier (kid). Returns 404 if the key does not exist.
+ */
+ public ManagementApiHttpResponse getConsentSigningKey(String id, String kid) {
+ return getConsentSigningKey(id, kid, null);
+ }
+
+ /**
+ * Retrieve a single consent signing key for a user by its key identifier (kid). Returns 404 if the key does not exist.
+ */
+ public ManagementApiHttpResponse getConsentSigningKey(
+ String id, String kid, RequestOptions requestOptions) {
+ HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
+ .newBuilder()
+ .addPathSegments("users")
+ .addPathSegment(id)
+ .addPathSegments("consent-signing-keys")
+ .addPathSegment(kid);
+ if (requestOptions != null) {
+ requestOptions.getQueryParameters().forEach((_key, _value) -> {
+ httpUrl.addQueryParameter(_key, _value);
+ });
+ }
+ Request okhttpRequest = new Request.Builder()
+ .url(httpUrl.build())
+ .method("GET", null)
+ .headers(Headers.of(clientOptions.headers(requestOptions)))
+ .addHeader("Accept", "application/json")
+ .build();
+ OkHttpClient client = clientOptions.httpClient();
+ if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
+ client = clientOptions.httpClientWithTimeout(requestOptions);
+ }
+ if (requestOptions != null && requestOptions.getMaxRetries().isPresent()) {
+ okhttpRequest = okhttpRequest
+ .newBuilder()
+ .tag(
+ RetryInterceptor.MaxRetriesOverride.class,
+ new RetryInterceptor.MaxRetriesOverride(
+ requestOptions.getMaxRetries().get()))
+ .build();
+ }
+ try (Response response = client.newCall(okhttpRequest).execute()) {
+ ResponseBody responseBody = response.body();
+ String responseBodyString = responseBody != null ? responseBody.string() : "{}";
+ if (response.isSuccessful()) {
+ return new ManagementApiHttpResponse<>(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ConsentSigningKey.class), response);
+ }
+ try {
+ switch (response.code()) {
+ case 400:
+ throw new BadRequestError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 401:
+ throw new UnauthorizedError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 403:
+ throw new ForbiddenError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 404:
+ throw new NotFoundError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 429:
+ throw new TooManyRequestsError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ }
+ } catch (JsonProcessingException ignored) {
+ // unable to map error response, throwing generic error
+ }
+ Object errorBody = ObjectMappers.parseErrorBody(responseBodyString);
+ throw new ManagementApiException(
+ "Error with status code " + response.code(), response.code(), errorBody, response);
+ } catch (JsonProcessingException e) {
+ throw new ManagementException("Failed to deserialize response: " + e.getMessage(), e);
+ } catch (IOException e) {
+ throw new ManagementException("Network error executing HTTP request", e);
+ }
+ }
+
+ /**
+ * Remove a single consent signing key for a user by its key identifier (kid). The operation is idempotent and returns 204 whether or not the key existed.
+ */
+ public ManagementApiHttpResponse deleteConsentSigningKey(String id, String kid) {
+ return deleteConsentSigningKey(id, kid, null);
+ }
+
+ /**
+ * Remove a single consent signing key for a user by its key identifier (kid). The operation is idempotent and returns 204 whether or not the key existed.
+ */
+ public ManagementApiHttpResponse deleteConsentSigningKey(
+ String id, String kid, RequestOptions requestOptions) {
+ HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
+ .newBuilder()
+ .addPathSegments("users")
+ .addPathSegment(id)
+ .addPathSegments("consent-signing-keys")
+ .addPathSegment(kid);
+ if (requestOptions != null) {
+ requestOptions.getQueryParameters().forEach((_key, _value) -> {
+ httpUrl.addQueryParameter(_key, _value);
+ });
+ }
+ Request okhttpRequest = new Request.Builder()
+ .url(httpUrl.build())
+ .method("DELETE", null)
+ .headers(Headers.of(clientOptions.headers(requestOptions)))
+ .addHeader("Accept", "application/json")
+ .build();
+ OkHttpClient client = clientOptions.httpClient();
+ if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
+ client = clientOptions.httpClientWithTimeout(requestOptions);
+ }
+ if (requestOptions != null && requestOptions.getMaxRetries().isPresent()) {
+ okhttpRequest = okhttpRequest
+ .newBuilder()
+ .tag(
+ RetryInterceptor.MaxRetriesOverride.class,
+ new RetryInterceptor.MaxRetriesOverride(
+ requestOptions.getMaxRetries().get()))
+ .build();
+ }
+ try (Response response = client.newCall(okhttpRequest).execute()) {
+ ResponseBody responseBody = response.body();
+ if (response.isSuccessful()) {
+ return new ManagementApiHttpResponse<>(null, response);
+ }
+ String responseBodyString = responseBody != null ? responseBody.string() : "{}";
+ try {
+ switch (response.code()) {
+ case 400:
+ throw new BadRequestError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 401:
+ throw new UnauthorizedError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 403:
+ throw new ForbiddenError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ case 429:
+ throw new TooManyRequestsError(
+ ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
+ }
+ } catch (JsonProcessingException ignored) {
+ // unable to map error response, throwing generic error
+ }
+ Object errorBody = ObjectMappers.parseErrorBody(responseBodyString);
+ throw new ManagementApiException(
+ "Error with status code " + response.code(), response.code(), errorBody, response);
+ } catch (JsonProcessingException e) {
+ throw new ManagementException("Failed to deserialize response: " + e.getMessage(), e);
+ } catch (IOException e) {
+ throw new ManagementException("Network error executing HTTP request", e);
+ }
+ }
+
/**
* Remove an existing multi-factor authentication (MFA) recovery code 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.
*/
diff --git a/src/main/java/com/auth0/client/mgmt/RolesClient.java b/src/main/java/com/auth0/client/mgmt/RolesClient.java
index 706258292..ba9557f13 100644
--- a/src/main/java/com/auth0/client/mgmt/RolesClient.java
+++ b/src/main/java/com/auth0/client/mgmt/RolesClient.java
@@ -46,7 +46,7 @@ public RawRolesClient withRawResponse() {
}
/**
- * 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.
*/
public SyncPagingIterable list() {
@@ -54,7 +54,7 @@ public SyncPagingIterable list() {
}
/**
- * 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.
*/
public SyncPagingIterable list(RequestOptions requestOptions) {
@@ -62,7 +62,7 @@ public SyncPagingIterable list(RequestOptions requestOptions) {
}
/**
- * 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.
*/
public SyncPagingIterable list(ListRolesRequestParameters request) {
@@ -70,7 +70,7 @@ public SyncPagingIterable list(ListRolesRequestParameters request) {
}
/**
- * 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.
*/
public SyncPagingIterable list(ListRolesRequestParameters request, RequestOptions requestOptions) {
diff --git a/src/main/java/com/auth0/client/mgmt/UsersClient.java b/src/main/java/com/auth0/client/mgmt/UsersClient.java
index 509be2e14..f96466fa5 100644
--- a/src/main/java/com/auth0/client/mgmt/UsersClient.java
+++ b/src/main/java/com/auth0/client/mgmt/UsersClient.java
@@ -7,6 +7,7 @@
import com.auth0.client.mgmt.core.RequestOptions;
import com.auth0.client.mgmt.core.Suppliers;
import com.auth0.client.mgmt.core.SyncPagingIterable;
+import com.auth0.client.mgmt.types.ConsentSigningKey;
import com.auth0.client.mgmt.types.CreateUserRequestContent;
import com.auth0.client.mgmt.types.CreateUserResponseContent;
import com.auth0.client.mgmt.types.GetUserRequestParameters;
@@ -569,6 +570,48 @@ public UpdateUserResponseContent update(
return this.rawClient.update(id, request, requestOptions).body();
}
+ /**
+ * Retrieve all consent signing keys registered for a user. Returns an empty array when the user has no keys registered.
+ */
+ public List listConsentSigningKeys(String id) {
+ return this.rawClient.listConsentSigningKeys(id).body();
+ }
+
+ /**
+ * Retrieve all consent signing keys registered for a user. Returns an empty array when the user has no keys registered.
+ */
+ public List listConsentSigningKeys(String id, RequestOptions requestOptions) {
+ return this.rawClient.listConsentSigningKeys(id, requestOptions).body();
+ }
+
+ /**
+ * Retrieve a single consent signing key for a user by its key identifier (kid). Returns 404 if the key does not exist.
+ */
+ public ConsentSigningKey getConsentSigningKey(String id, String kid) {
+ return this.rawClient.getConsentSigningKey(id, kid).body();
+ }
+
+ /**
+ * Retrieve a single consent signing key for a user by its key identifier (kid). Returns 404 if the key does not exist.
+ */
+ public ConsentSigningKey getConsentSigningKey(String id, String kid, RequestOptions requestOptions) {
+ return this.rawClient.getConsentSigningKey(id, kid, requestOptions).body();
+ }
+
+ /**
+ * Remove a single consent signing key for a user by its key identifier (kid). The operation is idempotent and returns 204 whether or not the key existed.
+ */
+ public void deleteConsentSigningKey(String id, String kid) {
+ this.rawClient.deleteConsentSigningKey(id, kid).body();
+ }
+
+ /**
+ * Remove a single consent signing key for a user by its key identifier (kid). The operation is idempotent and returns 204 whether or not the key existed.
+ */
+ public void deleteConsentSigningKey(String id, String kid, RequestOptions requestOptions) {
+ this.rawClient.deleteConsentSigningKey(id, kid, requestOptions).body();
+ }
+
/**
* Remove an existing multi-factor authentication (MFA) recovery code 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.
*/
diff --git a/src/main/java/com/auth0/client/mgmt/attackprotection/types/UpdateBruteForceSettingsRequestContent.java b/src/main/java/com/auth0/client/mgmt/attackprotection/types/UpdateBruteForceSettingsRequestContent.java
index 9668b7de6..0498b67e5 100644
--- a/src/main/java/com/auth0/client/mgmt/attackprotection/types/UpdateBruteForceSettingsRequestContent.java
+++ b/src/main/java/com/auth0/client/mgmt/attackprotection/types/UpdateBruteForceSettingsRequestContent.java
@@ -4,6 +4,7 @@
package com.auth0.client.mgmt.attackprotection.types;
import com.auth0.client.mgmt.core.ObjectMappers;
+import com.auth0.client.mgmt.types.BruteForceProtectionFormSubmissionModeEnum;
import com.auth0.client.mgmt.types.BruteForceProtectionModeEnum;
import com.auth0.client.mgmt.types.BruteForceProtectionShieldsEnum;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
@@ -31,6 +32,8 @@ public final class UpdateBruteForceSettingsRequestContent {
private final Optional mode;
+ private final Optional formSubmissionMode;
+
private final Optional maxAttempts;
private final Map additionalProperties;
@@ -40,12 +43,14 @@ private UpdateBruteForceSettingsRequestContent(
Optional> shields,
Optional> allowlist,
Optional mode,
+ Optional formSubmissionMode,
Optional maxAttempts,
Map additionalProperties) {
this.enabled = enabled;
this.shields = shields;
this.allowlist = allowlist;
this.mode = mode;
+ this.formSubmissionMode = formSubmissionMode;
this.maxAttempts = maxAttempts;
this.additionalProperties = additionalProperties;
}
@@ -80,6 +85,11 @@ public Optional getMode() {
return mode;
}
+ @JsonProperty("form_submission_mode")
+ public Optional getFormSubmissionMode() {
+ return formSubmissionMode;
+ }
+
/**
* @return Maximum number of unsuccessful attempts.
*/
@@ -105,12 +115,14 @@ private boolean equalTo(UpdateBruteForceSettingsRequestContent other) {
&& shields.equals(other.shields)
&& allowlist.equals(other.allowlist)
&& mode.equals(other.mode)
+ && formSubmissionMode.equals(other.formSubmissionMode)
&& maxAttempts.equals(other.maxAttempts);
}
@java.lang.Override
public int hashCode() {
- return Objects.hash(this.enabled, this.shields, this.allowlist, this.mode, this.maxAttempts);
+ return Objects.hash(
+ this.enabled, this.shields, this.allowlist, this.mode, this.formSubmissionMode, this.maxAttempts);
}
@java.lang.Override
@@ -132,6 +144,8 @@ public static final class Builder {
private Optional mode = Optional.empty();
+ private Optional formSubmissionMode = Optional.empty();
+
private Optional maxAttempts = Optional.empty();
@JsonAnySetter
@@ -144,6 +158,7 @@ public Builder from(UpdateBruteForceSettingsRequestContent other) {
shields(other.getShields());
allowlist(other.getAllowlist());
mode(other.getMode());
+ formSubmissionMode(other.getFormSubmissionMode());
maxAttempts(other.getMaxAttempts());
return this;
}
@@ -202,6 +217,17 @@ public Builder mode(BruteForceProtectionModeEnum mode) {
return this;
}
+ @JsonSetter(value = "form_submission_mode", nulls = Nulls.SKIP)
+ public Builder formSubmissionMode(Optional formSubmissionMode) {
+ this.formSubmissionMode = formSubmissionMode;
+ return this;
+ }
+
+ public Builder formSubmissionMode(BruteForceProtectionFormSubmissionModeEnum formSubmissionMode) {
+ this.formSubmissionMode = Optional.ofNullable(formSubmissionMode);
+ return this;
+ }
+
/**
* Maximum number of unsuccessful attempts.
*/
@@ -218,7 +244,7 @@ public Builder maxAttempts(Integer maxAttempts) {
public UpdateBruteForceSettingsRequestContent build() {
return new UpdateBruteForceSettingsRequestContent(
- enabled, shields, allowlist, mode, maxAttempts, additionalProperties);
+ enabled, shields, allowlist, mode, formSubmissionMode, maxAttempts, additionalProperties);
}
public Builder additionalProperty(String key, Object value) {
diff --git a/src/main/java/com/auth0/client/mgmt/experimentation/AsyncExperimentsClient.java b/src/main/java/com/auth0/client/mgmt/experimentation/AsyncExperimentsClient.java
index 7ede182e8..bcd4fc348 100644
--- a/src/main/java/com/auth0/client/mgmt/experimentation/AsyncExperimentsClient.java
+++ b/src/main/java/com/auth0/client/mgmt/experimentation/AsyncExperimentsClient.java
@@ -10,13 +10,11 @@
import com.auth0.client.mgmt.experimentation.types.CreateExperimentRequestContent;
import com.auth0.client.mgmt.experimentation.types.ListExperimentsRequestParameters;
import com.auth0.client.mgmt.experimentation.types.UpdateExperimentRequestParameters;
-import com.auth0.client.mgmt.experimentation.types.UpdateExperimentStatusRequestContent;
import com.auth0.client.mgmt.types.AdvanceRampResponseContent;
import com.auth0.client.mgmt.types.CreateExperimentResponseContent;
import com.auth0.client.mgmt.types.ExperimentListItem;
import com.auth0.client.mgmt.types.GetExperimentResponseContent;
import com.auth0.client.mgmt.types.UpdateExperimentResponseContent;
-import com.auth0.client.mgmt.types.UpdateExperimentStatusResponseContent;
import com.auth0.client.mgmt.types.ValidateExperimentResponseContent;
import java.util.concurrent.CompletableFuture;
@@ -154,22 +152,6 @@ public CompletableFuture advanceRamp(
return this.rawClient.advanceRamp(id, request, requestOptions).thenApply(response -> response.body());
}
- /**
- * Transitions an experiment through its lifecycle: draft → active, active → paused, paused → active, active/paused → completed. Activation runs full readiness validation.
- */
- public CompletableFuture updateStatus(
- String id, UpdateExperimentStatusRequestContent request) {
- return this.rawClient.updateStatus(id, request).thenApply(response -> response.body());
- }
-
- /**
- * Transitions an experiment through its lifecycle: draft → active, active → paused, paused → active, active/paused → completed. Activation runs full readiness validation.
- */
- public CompletableFuture updateStatus(
- String id, UpdateExperimentStatusRequestContent request, RequestOptions requestOptions) {
- return this.rawClient.updateStatus(id, request, requestOptions).thenApply(response -> response.body());
- }
-
/**
* 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.
*/
diff --git a/src/main/java/com/auth0/client/mgmt/experimentation/AsyncFeatureFlagsClient.java b/src/main/java/com/auth0/client/mgmt/experimentation/AsyncFeatureFlagsClient.java
index 06a18b037..c5a2c3241 100644
--- a/src/main/java/com/auth0/client/mgmt/experimentation/AsyncFeatureFlagsClient.java
+++ b/src/main/java/com/auth0/client/mgmt/experimentation/AsyncFeatureFlagsClient.java
@@ -11,12 +11,10 @@
import com.auth0.client.mgmt.experimentation.types.CreateFeatureFlagRequestContent;
import com.auth0.client.mgmt.experimentation.types.ListFeatureFlagsRequestParameters;
import com.auth0.client.mgmt.experimentation.types.UpdateFeatureFlagRequestContent;
-import com.auth0.client.mgmt.experimentation.types.UpdateFeatureFlagStatusRequestContent;
import com.auth0.client.mgmt.types.CreateFeatureFlagResponseContent;
import com.auth0.client.mgmt.types.FeatureFlag;
import com.auth0.client.mgmt.types.GetFeatureFlagResponseContent;
import com.auth0.client.mgmt.types.UpdateFeatureFlagResponseContent;
-import com.auth0.client.mgmt.types.UpdateFeatureFlagStatusResponseContent;
import java.util.concurrent.CompletableFuture;
import java.util.function.Supplier;
@@ -142,22 +140,6 @@ public CompletableFuture update(
return this.rawClient.update(id, request, requestOptions).thenApply(response -> response.body());
}
- /**
- * Transitions a feature flag through its lifecycle states: draft → active, draft → archived, active → archived.
- */
- public CompletableFuture updateStatus(
- String id, UpdateFeatureFlagStatusRequestContent request) {
- return this.rawClient.updateStatus(id, request).thenApply(response -> response.body());
- }
-
- /**
- * Transitions a feature flag through its lifecycle states: draft → active, draft → archived, active → archived.
- */
- public CompletableFuture updateStatus(
- String id, UpdateFeatureFlagStatusRequestContent request, RequestOptions requestOptions) {
- return this.rawClient.updateStatus(id, request, requestOptions).thenApply(response -> response.body());
- }
-
public AsyncVariationsClient variations() {
return this.variationsClient.get();
}
diff --git a/src/main/java/com/auth0/client/mgmt/experimentation/AsyncRawExperimentsClient.java b/src/main/java/com/auth0/client/mgmt/experimentation/AsyncRawExperimentsClient.java
index 8b88e3b91..6a29349af 100644
--- a/src/main/java/com/auth0/client/mgmt/experimentation/AsyncRawExperimentsClient.java
+++ b/src/main/java/com/auth0/client/mgmt/experimentation/AsyncRawExperimentsClient.java
@@ -24,14 +24,12 @@
import com.auth0.client.mgmt.experimentation.types.CreateExperimentRequestContent;
import com.auth0.client.mgmt.experimentation.types.ListExperimentsRequestParameters;
import com.auth0.client.mgmt.experimentation.types.UpdateExperimentRequestParameters;
-import com.auth0.client.mgmt.experimentation.types.UpdateExperimentStatusRequestContent;
import com.auth0.client.mgmt.types.AdvanceRampResponseContent;
import com.auth0.client.mgmt.types.CreateExperimentResponseContent;
import com.auth0.client.mgmt.types.ExperimentListItem;
import com.auth0.client.mgmt.types.GetExperimentResponseContent;
import com.auth0.client.mgmt.types.ListExperimentsResponseContent;
import com.auth0.client.mgmt.types.UpdateExperimentResponseContent;
-import com.auth0.client.mgmt.types.UpdateExperimentStatusResponseContent;
import com.auth0.client.mgmt.types.ValidateExperimentResponseContent;
import com.fasterxml.jackson.core.JsonProcessingException;
import java.io.IOException;
@@ -778,131 +776,6 @@ public void onFailure(@NotNull Call call, @NotNull IOException e) {
return future;
}
- /**
- * Transitions an experiment through its lifecycle: draft → active, active → paused, paused → active, active/paused → completed. Activation runs full readiness validation.
- */
- public CompletableFuture> updateStatus(
- String id, UpdateExperimentStatusRequestContent request) {
- return updateStatus(id, request, null);
- }
-
- /**
- * Transitions an experiment through its lifecycle: draft → active, active → paused, paused → active, active/paused → completed. Activation runs full readiness validation.
- */
- public CompletableFuture> updateStatus(
- String id, UpdateExperimentStatusRequestContent request, RequestOptions requestOptions) {
- HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
- .newBuilder()
- .addPathSegments("experimentation/experiments")
- .addPathSegment(id)
- .addPathSegments("status");
- if (requestOptions != null) {
- requestOptions.getQueryParameters().forEach((_key, _value) -> {
- httpUrl.addQueryParameter(_key, _value);
- });
- }
- RequestBody body;
- try {
- body = RequestBody.create(
- ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON);
- } catch (JsonProcessingException e) {
- throw new ManagementException("Failed to serialize request", e);
- }
- Request okhttpRequest = new Request.Builder()
- .url(httpUrl.build())
- .method("POST", body)
- .headers(Headers.of(clientOptions.headers(requestOptions)))
- .addHeader("Content-Type", "application/json")
- .addHeader("Accept", "application/json")
- .build();
- OkHttpClient client = clientOptions.httpClient();
- if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
- client = clientOptions.httpClientWithTimeout(requestOptions);
- }
- if (requestOptions != null && requestOptions.getMaxRetries().isPresent()) {
- okhttpRequest = okhttpRequest
- .newBuilder()
- .tag(
- RetryInterceptor.MaxRetriesOverride.class,
- new RetryInterceptor.MaxRetriesOverride(
- requestOptions.getMaxRetries().get()))
- .build();
- }
- CompletableFuture> future =
- new CompletableFuture<>();
- client.newCall(okhttpRequest).enqueue(new Callback() {
- @Override
- public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
- try (ResponseBody responseBody = response.body()) {
- String responseBodyString = responseBody != null ? responseBody.string() : "{}";
- if (response.isSuccessful()) {
- future.complete(new ManagementApiHttpResponse<>(
- ObjectMappers.JSON_MAPPER.readValue(
- responseBodyString, UpdateExperimentStatusResponseContent.class),
- response));
- return;
- }
- try {
- switch (response.code()) {
- case 400:
- future.completeExceptionally(new BadRequestError(
- ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
- response));
- return;
- case 401:
- future.completeExceptionally(new UnauthorizedError(
- ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
- response));
- return;
- case 403:
- future.completeExceptionally(new ForbiddenError(
- ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
- response));
- return;
- case 404:
- future.completeExceptionally(new NotFoundError(
- ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
- response));
- return;
- case 409:
- future.completeExceptionally(new ConflictError(
- ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
- response));
- return;
- case 422:
- future.completeExceptionally(new UnprocessableEntityError(
- ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
- response));
- return;
- case 429:
- future.completeExceptionally(new TooManyRequestsError(
- ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
- response));
- return;
- }
- } catch (JsonProcessingException ignored) {
- // unable to map error response, throwing generic error
- }
- Object errorBody = ObjectMappers.parseErrorBody(responseBodyString);
- future.completeExceptionally(new ManagementApiException(
- "Error with status code " + response.code(), response.code(), errorBody, response));
- return;
- } catch (JsonProcessingException e) {
- future.completeExceptionally(
- new ManagementException("Failed to deserialize response: " + e.getMessage(), e));
- } catch (IOException e) {
- future.completeExceptionally(new ManagementException("Network error executing HTTP request", e));
- }
- }
-
- @Override
- public void onFailure(@NotNull Call call, @NotNull IOException e) {
- future.completeExceptionally(new ManagementException("Network error executing HTTP request", e));
- }
- });
- return future;
- }
-
/**
* 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.
*/
diff --git a/src/main/java/com/auth0/client/mgmt/experimentation/AsyncRawFeatureFlagsClient.java b/src/main/java/com/auth0/client/mgmt/experimentation/AsyncRawFeatureFlagsClient.java
index c373d401e..b81e3fc57 100644
--- a/src/main/java/com/auth0/client/mgmt/experimentation/AsyncRawFeatureFlagsClient.java
+++ b/src/main/java/com/auth0/client/mgmt/experimentation/AsyncRawFeatureFlagsClient.java
@@ -22,13 +22,11 @@
import com.auth0.client.mgmt.experimentation.types.CreateFeatureFlagRequestContent;
import com.auth0.client.mgmt.experimentation.types.ListFeatureFlagsRequestParameters;
import com.auth0.client.mgmt.experimentation.types.UpdateFeatureFlagRequestContent;
-import com.auth0.client.mgmt.experimentation.types.UpdateFeatureFlagStatusRequestContent;
import com.auth0.client.mgmt.types.CreateFeatureFlagResponseContent;
import com.auth0.client.mgmt.types.FeatureFlag;
import com.auth0.client.mgmt.types.GetFeatureFlagResponseContent;
import com.auth0.client.mgmt.types.ListFeatureFlagsResponseContent;
import com.auth0.client.mgmt.types.UpdateFeatureFlagResponseContent;
-import com.auth0.client.mgmt.types.UpdateFeatureFlagStatusResponseContent;
import com.fasterxml.jackson.core.JsonProcessingException;
import java.io.IOException;
import java.util.List;
@@ -632,119 +630,4 @@ public void onFailure(@NotNull Call call, @NotNull IOException e) {
});
return future;
}
-
- /**
- * Transitions a feature flag through its lifecycle states: draft → active, draft → archived, active → archived.
- */
- public CompletableFuture> updateStatus(
- String id, UpdateFeatureFlagStatusRequestContent request) {
- return updateStatus(id, request, null);
- }
-
- /**
- * Transitions a feature flag through its lifecycle states: draft → active, draft → archived, active → archived.
- */
- public CompletableFuture> updateStatus(
- String id, UpdateFeatureFlagStatusRequestContent request, RequestOptions requestOptions) {
- HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
- .newBuilder()
- .addPathSegments("experimentation/feature-flags")
- .addPathSegment(id)
- .addPathSegments("status");
- if (requestOptions != null) {
- requestOptions.getQueryParameters().forEach((_key, _value) -> {
- httpUrl.addQueryParameter(_key, _value);
- });
- }
- RequestBody body;
- try {
- body = RequestBody.create(
- ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON);
- } catch (JsonProcessingException e) {
- throw new ManagementException("Failed to serialize request", e);
- }
- Request okhttpRequest = new Request.Builder()
- .url(httpUrl.build())
- .method("POST", body)
- .headers(Headers.of(clientOptions.headers(requestOptions)))
- .addHeader("Content-Type", "application/json")
- .addHeader("Accept", "application/json")
- .build();
- OkHttpClient client = clientOptions.httpClient();
- if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
- client = clientOptions.httpClientWithTimeout(requestOptions);
- }
- if (requestOptions != null && requestOptions.getMaxRetries().isPresent()) {
- okhttpRequest = okhttpRequest
- .newBuilder()
- .tag(
- RetryInterceptor.MaxRetriesOverride.class,
- new RetryInterceptor.MaxRetriesOverride(
- requestOptions.getMaxRetries().get()))
- .build();
- }
- CompletableFuture> future =
- new CompletableFuture<>();
- client.newCall(okhttpRequest).enqueue(new Callback() {
- @Override
- public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
- try (ResponseBody responseBody = response.body()) {
- String responseBodyString = responseBody != null ? responseBody.string() : "{}";
- if (response.isSuccessful()) {
- future.complete(new ManagementApiHttpResponse<>(
- ObjectMappers.JSON_MAPPER.readValue(
- responseBodyString, UpdateFeatureFlagStatusResponseContent.class),
- response));
- return;
- }
- try {
- switch (response.code()) {
- case 400:
- future.completeExceptionally(new BadRequestError(
- ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
- response));
- return;
- case 401:
- future.completeExceptionally(new UnauthorizedError(
- ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
- response));
- return;
- case 403:
- future.completeExceptionally(new ForbiddenError(
- ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
- response));
- return;
- case 404:
- future.completeExceptionally(new NotFoundError(
- ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
- response));
- return;
- case 429:
- future.completeExceptionally(new TooManyRequestsError(
- ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
- response));
- return;
- }
- } catch (JsonProcessingException ignored) {
- // unable to map error response, throwing generic error
- }
- Object errorBody = ObjectMappers.parseErrorBody(responseBodyString);
- future.completeExceptionally(new ManagementApiException(
- "Error with status code " + response.code(), response.code(), errorBody, response));
- return;
- } catch (JsonProcessingException e) {
- future.completeExceptionally(
- new ManagementException("Failed to deserialize response: " + e.getMessage(), e));
- } catch (IOException e) {
- future.completeExceptionally(new ManagementException("Network error executing HTTP request", e));
- }
- }
-
- @Override
- public void onFailure(@NotNull Call call, @NotNull IOException e) {
- future.completeExceptionally(new ManagementException("Network error executing HTTP request", e));
- }
- });
- return future;
- }
}
diff --git a/src/main/java/com/auth0/client/mgmt/experimentation/AsyncRawSegmentsClient.java b/src/main/java/com/auth0/client/mgmt/experimentation/AsyncRawSegmentsClient.java
index 40964f139..8eadc0c5f 100644
--- a/src/main/java/com/auth0/client/mgmt/experimentation/AsyncRawSegmentsClient.java
+++ b/src/main/java/com/auth0/client/mgmt/experimentation/AsyncRawSegmentsClient.java
@@ -92,6 +92,10 @@ public CompletableFuture>>
QueryStringMapper.addQueryParameter(
httpUrl, "type", request.getType().orElse(null), false);
}
+ if (!request.getStatus().isAbsent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "status", request.getStatus().orElse(null), false);
+ }
if (requestOptions != null) {
requestOptions.getQueryParameters().forEach((_key, _value) -> {
httpUrl.addQueryParameter(_key, _value);
diff --git a/src/main/java/com/auth0/client/mgmt/experimentation/ExperimentsClient.java b/src/main/java/com/auth0/client/mgmt/experimentation/ExperimentsClient.java
index d974bf92b..7fd9b0282 100644
--- a/src/main/java/com/auth0/client/mgmt/experimentation/ExperimentsClient.java
+++ b/src/main/java/com/auth0/client/mgmt/experimentation/ExperimentsClient.java
@@ -10,13 +10,11 @@
import com.auth0.client.mgmt.experimentation.types.CreateExperimentRequestContent;
import com.auth0.client.mgmt.experimentation.types.ListExperimentsRequestParameters;
import com.auth0.client.mgmt.experimentation.types.UpdateExperimentRequestParameters;
-import com.auth0.client.mgmt.experimentation.types.UpdateExperimentStatusRequestContent;
import com.auth0.client.mgmt.types.AdvanceRampResponseContent;
import com.auth0.client.mgmt.types.CreateExperimentResponseContent;
import com.auth0.client.mgmt.types.ExperimentListItem;
import com.auth0.client.mgmt.types.GetExperimentResponseContent;
import com.auth0.client.mgmt.types.UpdateExperimentResponseContent;
-import com.auth0.client.mgmt.types.UpdateExperimentStatusResponseContent;
import com.auth0.client.mgmt.types.ValidateExperimentResponseContent;
public class ExperimentsClient {
@@ -152,21 +150,6 @@ public AdvanceRampResponseContent advanceRamp(
return this.rawClient.advanceRamp(id, request, requestOptions).body();
}
- /**
- * Transitions an experiment through its lifecycle: draft → active, active → paused, paused → active, active/paused → completed. Activation runs full readiness validation.
- */
- public UpdateExperimentStatusResponseContent updateStatus(String id, UpdateExperimentStatusRequestContent request) {
- return this.rawClient.updateStatus(id, request).body();
- }
-
- /**
- * Transitions an experiment through its lifecycle: draft → active, active → paused, paused → active, active/paused → completed. Activation runs full readiness validation.
- */
- public UpdateExperimentStatusResponseContent updateStatus(
- String id, UpdateExperimentStatusRequestContent request, RequestOptions requestOptions) {
- return this.rawClient.updateStatus(id, request, requestOptions).body();
- }
-
/**
* 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.
*/
diff --git a/src/main/java/com/auth0/client/mgmt/experimentation/FeatureFlagsClient.java b/src/main/java/com/auth0/client/mgmt/experimentation/FeatureFlagsClient.java
index 166b6110c..02f447d41 100644
--- a/src/main/java/com/auth0/client/mgmt/experimentation/FeatureFlagsClient.java
+++ b/src/main/java/com/auth0/client/mgmt/experimentation/FeatureFlagsClient.java
@@ -11,12 +11,10 @@
import com.auth0.client.mgmt.experimentation.types.CreateFeatureFlagRequestContent;
import com.auth0.client.mgmt.experimentation.types.ListFeatureFlagsRequestParameters;
import com.auth0.client.mgmt.experimentation.types.UpdateFeatureFlagRequestContent;
-import com.auth0.client.mgmt.experimentation.types.UpdateFeatureFlagStatusRequestContent;
import com.auth0.client.mgmt.types.CreateFeatureFlagResponseContent;
import com.auth0.client.mgmt.types.FeatureFlag;
import com.auth0.client.mgmt.types.GetFeatureFlagResponseContent;
import com.auth0.client.mgmt.types.UpdateFeatureFlagResponseContent;
-import com.auth0.client.mgmt.types.UpdateFeatureFlagStatusResponseContent;
import java.util.function.Supplier;
public class FeatureFlagsClient {
@@ -140,22 +138,6 @@ public UpdateFeatureFlagResponseContent update(
return this.rawClient.update(id, request, requestOptions).body();
}
- /**
- * Transitions a feature flag through its lifecycle states: draft → active, draft → archived, active → archived.
- */
- public UpdateFeatureFlagStatusResponseContent updateStatus(
- String id, UpdateFeatureFlagStatusRequestContent request) {
- return this.rawClient.updateStatus(id, request).body();
- }
-
- /**
- * Transitions a feature flag through its lifecycle states: draft → active, draft → archived, active → archived.
- */
- public UpdateFeatureFlagStatusResponseContent updateStatus(
- String id, UpdateFeatureFlagStatusRequestContent request, RequestOptions requestOptions) {
- return this.rawClient.updateStatus(id, request, requestOptions).body();
- }
-
public VariationsClient variations() {
return this.variationsClient.get();
}
diff --git a/src/main/java/com/auth0/client/mgmt/experimentation/RawExperimentsClient.java b/src/main/java/com/auth0/client/mgmt/experimentation/RawExperimentsClient.java
index 2fcd0b3a7..386d3d67c 100644
--- a/src/main/java/com/auth0/client/mgmt/experimentation/RawExperimentsClient.java
+++ b/src/main/java/com/auth0/client/mgmt/experimentation/RawExperimentsClient.java
@@ -24,14 +24,12 @@
import com.auth0.client.mgmt.experimentation.types.CreateExperimentRequestContent;
import com.auth0.client.mgmt.experimentation.types.ListExperimentsRequestParameters;
import com.auth0.client.mgmt.experimentation.types.UpdateExperimentRequestParameters;
-import com.auth0.client.mgmt.experimentation.types.UpdateExperimentStatusRequestContent;
import com.auth0.client.mgmt.types.AdvanceRampResponseContent;
import com.auth0.client.mgmt.types.CreateExperimentResponseContent;
import com.auth0.client.mgmt.types.ExperimentListItem;
import com.auth0.client.mgmt.types.GetExperimentResponseContent;
import com.auth0.client.mgmt.types.ListExperimentsResponseContent;
import com.auth0.client.mgmt.types.UpdateExperimentResponseContent;
-import com.auth0.client.mgmt.types.UpdateExperimentStatusResponseContent;
import com.auth0.client.mgmt.types.ValidateExperimentResponseContent;
import com.fasterxml.jackson.core.JsonProcessingException;
import java.io.IOException;
@@ -610,102 +608,6 @@ public ManagementApiHttpResponse advanceRamp(
}
}
- /**
- * Transitions an experiment through its lifecycle: draft → active, active → paused, paused → active, active/paused → completed. Activation runs full readiness validation.
- */
- public ManagementApiHttpResponse updateStatus(
- String id, UpdateExperimentStatusRequestContent request) {
- return updateStatus(id, request, null);
- }
-
- /**
- * Transitions an experiment through its lifecycle: draft → active, active → paused, paused → active, active/paused → completed. Activation runs full readiness validation.
- */
- public ManagementApiHttpResponse updateStatus(
- String id, UpdateExperimentStatusRequestContent request, RequestOptions requestOptions) {
- HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
- .newBuilder()
- .addPathSegments("experimentation/experiments")
- .addPathSegment(id)
- .addPathSegments("status");
- if (requestOptions != null) {
- requestOptions.getQueryParameters().forEach((_key, _value) -> {
- httpUrl.addQueryParameter(_key, _value);
- });
- }
- RequestBody body;
- try {
- body = RequestBody.create(
- ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON);
- } catch (JsonProcessingException e) {
- throw new ManagementException("Failed to serialize request", e);
- }
- Request okhttpRequest = new Request.Builder()
- .url(httpUrl.build())
- .method("POST", body)
- .headers(Headers.of(clientOptions.headers(requestOptions)))
- .addHeader("Content-Type", "application/json")
- .addHeader("Accept", "application/json")
- .build();
- OkHttpClient client = clientOptions.httpClient();
- if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
- client = clientOptions.httpClientWithTimeout(requestOptions);
- }
- if (requestOptions != null && requestOptions.getMaxRetries().isPresent()) {
- okhttpRequest = okhttpRequest
- .newBuilder()
- .tag(
- RetryInterceptor.MaxRetriesOverride.class,
- new RetryInterceptor.MaxRetriesOverride(
- requestOptions.getMaxRetries().get()))
- .build();
- }
- try (Response response = client.newCall(okhttpRequest).execute()) {
- ResponseBody responseBody = response.body();
- String responseBodyString = responseBody != null ? responseBody.string() : "{}";
- if (response.isSuccessful()) {
- return new ManagementApiHttpResponse<>(
- ObjectMappers.JSON_MAPPER.readValue(
- responseBodyString, UpdateExperimentStatusResponseContent.class),
- response);
- }
- try {
- switch (response.code()) {
- case 400:
- throw new BadRequestError(
- ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
- case 401:
- throw new UnauthorizedError(
- ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
- case 403:
- throw new ForbiddenError(
- ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
- case 404:
- throw new NotFoundError(
- ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
- case 409:
- throw new ConflictError(
- ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
- case 422:
- throw new UnprocessableEntityError(
- ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
- case 429:
- throw new TooManyRequestsError(
- ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
- }
- } catch (JsonProcessingException ignored) {
- // unable to map error response, throwing generic error
- }
- Object errorBody = ObjectMappers.parseErrorBody(responseBodyString);
- throw new ManagementApiException(
- "Error with status code " + response.code(), response.code(), errorBody, response);
- } catch (JsonProcessingException e) {
- throw new ManagementException("Failed to deserialize response: " + e.getMessage(), e);
- } catch (IOException e) {
- throw new ManagementException("Network error executing HTTP request", e);
- }
- }
-
/**
* 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.
*/
diff --git a/src/main/java/com/auth0/client/mgmt/experimentation/RawFeatureFlagsClient.java b/src/main/java/com/auth0/client/mgmt/experimentation/RawFeatureFlagsClient.java
index eefcd7ba6..0aae0b606 100644
--- a/src/main/java/com/auth0/client/mgmt/experimentation/RawFeatureFlagsClient.java
+++ b/src/main/java/com/auth0/client/mgmt/experimentation/RawFeatureFlagsClient.java
@@ -22,13 +22,11 @@
import com.auth0.client.mgmt.experimentation.types.CreateFeatureFlagRequestContent;
import com.auth0.client.mgmt.experimentation.types.ListFeatureFlagsRequestParameters;
import com.auth0.client.mgmt.experimentation.types.UpdateFeatureFlagRequestContent;
-import com.auth0.client.mgmt.experimentation.types.UpdateFeatureFlagStatusRequestContent;
import com.auth0.client.mgmt.types.CreateFeatureFlagResponseContent;
import com.auth0.client.mgmt.types.FeatureFlag;
import com.auth0.client.mgmt.types.GetFeatureFlagResponseContent;
import com.auth0.client.mgmt.types.ListFeatureFlagsResponseContent;
import com.auth0.client.mgmt.types.UpdateFeatureFlagResponseContent;
-import com.auth0.client.mgmt.types.UpdateFeatureFlagStatusResponseContent;
import com.fasterxml.jackson.core.JsonProcessingException;
import java.io.IOException;
import java.util.List;
@@ -497,94 +495,4 @@ public ManagementApiHttpResponse update(
throw new ManagementException("Network error executing HTTP request", e);
}
}
-
- /**
- * Transitions a feature flag through its lifecycle states: draft → active, draft → archived, active → archived.
- */
- public ManagementApiHttpResponse updateStatus(
- String id, UpdateFeatureFlagStatusRequestContent request) {
- return updateStatus(id, request, null);
- }
-
- /**
- * Transitions a feature flag through its lifecycle states: draft → active, draft → archived, active → archived.
- */
- public ManagementApiHttpResponse updateStatus(
- String id, UpdateFeatureFlagStatusRequestContent request, RequestOptions requestOptions) {
- HttpUrl.Builder httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl())
- .newBuilder()
- .addPathSegments("experimentation/feature-flags")
- .addPathSegment(id)
- .addPathSegments("status");
- if (requestOptions != null) {
- requestOptions.getQueryParameters().forEach((_key, _value) -> {
- httpUrl.addQueryParameter(_key, _value);
- });
- }
- RequestBody body;
- try {
- body = RequestBody.create(
- ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON);
- } catch (JsonProcessingException e) {
- throw new ManagementException("Failed to serialize request", e);
- }
- Request okhttpRequest = new Request.Builder()
- .url(httpUrl.build())
- .method("POST", body)
- .headers(Headers.of(clientOptions.headers(requestOptions)))
- .addHeader("Content-Type", "application/json")
- .addHeader("Accept", "application/json")
- .build();
- OkHttpClient client = clientOptions.httpClient();
- if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
- client = clientOptions.httpClientWithTimeout(requestOptions);
- }
- if (requestOptions != null && requestOptions.getMaxRetries().isPresent()) {
- okhttpRequest = okhttpRequest
- .newBuilder()
- .tag(
- RetryInterceptor.MaxRetriesOverride.class,
- new RetryInterceptor.MaxRetriesOverride(
- requestOptions.getMaxRetries().get()))
- .build();
- }
- try (Response response = client.newCall(okhttpRequest).execute()) {
- ResponseBody responseBody = response.body();
- String responseBodyString = responseBody != null ? responseBody.string() : "{}";
- if (response.isSuccessful()) {
- return new ManagementApiHttpResponse<>(
- ObjectMappers.JSON_MAPPER.readValue(
- responseBodyString, UpdateFeatureFlagStatusResponseContent.class),
- response);
- }
- try {
- switch (response.code()) {
- case 400:
- throw new BadRequestError(
- ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
- case 401:
- throw new UnauthorizedError(
- ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
- case 403:
- throw new ForbiddenError(
- ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
- case 404:
- throw new NotFoundError(
- ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
- case 429:
- throw new TooManyRequestsError(
- ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
- }
- } catch (JsonProcessingException ignored) {
- // unable to map error response, throwing generic error
- }
- Object errorBody = ObjectMappers.parseErrorBody(responseBodyString);
- throw new ManagementApiException(
- "Error with status code " + response.code(), response.code(), errorBody, response);
- } catch (JsonProcessingException e) {
- throw new ManagementException("Failed to deserialize response: " + e.getMessage(), e);
- } catch (IOException e) {
- throw new ManagementException("Network error executing HTTP request", e);
- }
- }
}
diff --git a/src/main/java/com/auth0/client/mgmt/experimentation/RawSegmentsClient.java b/src/main/java/com/auth0/client/mgmt/experimentation/RawSegmentsClient.java
index b32925aae..5fbf826da 100644
--- a/src/main/java/com/auth0/client/mgmt/experimentation/RawSegmentsClient.java
+++ b/src/main/java/com/auth0/client/mgmt/experimentation/RawSegmentsClient.java
@@ -85,6 +85,10 @@ public ManagementApiHttpResponse> list(
QueryStringMapper.addQueryParameter(
httpUrl, "type", request.getType().orElse(null), false);
}
+ if (!request.getStatus().isAbsent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "status", request.getStatus().orElse(null), false);
+ }
if (requestOptions != null) {
requestOptions.getQueryParameters().forEach((_key, _value) -> {
httpUrl.addQueryParameter(_key, _value);
diff --git a/src/main/java/com/auth0/client/mgmt/experimentation/featureflags/AsyncRawVariationsClient.java b/src/main/java/com/auth0/client/mgmt/experimentation/featureflags/AsyncRawVariationsClient.java
index 88e21b43d..95c38e1a0 100644
--- a/src/main/java/com/auth0/client/mgmt/experimentation/featureflags/AsyncRawVariationsClient.java
+++ b/src/main/java/com/auth0/client/mgmt/experimentation/featureflags/AsyncRawVariationsClient.java
@@ -423,11 +423,6 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO
String responseBodyString = responseBody != null ? responseBody.string() : "{}";
try {
switch (response.code()) {
- case 400:
- future.completeExceptionally(new BadRequestError(
- ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
- response));
- return;
case 403:
future.completeExceptionally(new ForbiddenError(
ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class),
diff --git a/src/main/java/com/auth0/client/mgmt/experimentation/featureflags/RawVariationsClient.java b/src/main/java/com/auth0/client/mgmt/experimentation/featureflags/RawVariationsClient.java
index 1500d7572..2379eba15 100644
--- a/src/main/java/com/auth0/client/mgmt/experimentation/featureflags/RawVariationsClient.java
+++ b/src/main/java/com/auth0/client/mgmt/experimentation/featureflags/RawVariationsClient.java
@@ -338,9 +338,6 @@ public ManagementApiHttpResponse delete(String id, String vid, RequestOpti
String responseBodyString = responseBody != null ? responseBody.string() : "{}";
try {
switch (response.code()) {
- case 400:
- throw new BadRequestError(
- ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
case 403:
throw new ForbiddenError(
ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class), response);
diff --git a/src/main/java/com/auth0/client/mgmt/experimentation/featureflags/types/UpdateVariationRequestContent.java b/src/main/java/com/auth0/client/mgmt/experimentation/featureflags/types/UpdateVariationRequestContent.java
index f4cbb3333..c7b48a5bd 100644
--- a/src/main/java/com/auth0/client/mgmt/experimentation/featureflags/types/UpdateVariationRequestContent.java
+++ b/src/main/java/com/auth0/client/mgmt/experimentation/featureflags/types/UpdateVariationRequestContent.java
@@ -27,14 +27,14 @@ public final class UpdateVariationRequestContent {
private final OptionalNullable description;
- private final Optional