Repository navigation
feat: add attack protection CAPTCHA policies, client grants search, anonymous session network binding, DPoP strict refresh token binding; move experiment & feature flag status transitions to PATCH - #1426
Merged
Conversation
Generated by Fern CLI Version: unknown Generators: - fernapi/fern-typescript-sdk: 3.72.5
Patches applied (6): - patch-066ff9e0: docs: add v6 migration guide for breaking changes in v6.0.0 (#1368) - patch-d8faf7a2: docs: update v6 migration guide with federatedConnectionsTokensets and federated_connections_access_tokens breaking changes (#1370) - patch-0f7baa6f: fix: auto-stamp SDK_VERSION from package.json during build (#1382) - patch-b942f5d6: docs: add Authentication API migration guide (auth0-auth-js / auth0-server-js) (#1395) - patch-842d2f51: docs: add v7 migration guide (v6 → v7) (#1396) - patch-d90bbd5e: fix(ci): stop beta release from deleting package.json; start betas at .0 (#1417) Patches with unresolved conflicts (10): - patch-490e5634: feat(management): add sub-package exports and management auth helper (#1373) - patch-74170bb0: Release v6.1.0 (#1381) - patch-4fcb39a4: Release v6.2.0 (#1389) - patch-f9d64134: Release v6.3.0 (#1393) - patch-4d450aa4: Release v6.4.0 (#1401) - patch-d4614ec0: Release v7.0.0 (#1402) - patch-e1e90b89: Release v7.1.0 (#1405) - patch-567042f4: Release v7.2.0 (#1409) - patch-0133186f: Release v7.4.0-beta.1 - patch-38e7f36e: Release v7.4.0-beta.2 Run `fern-replay resolve` to apply these customizations.
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## beta #1426 +/- ##
==========================================
- Coverage 89.40% 89.39% -0.02%
==========================================
Files 444 446 +2
Lines 21884 22022 +138
Branches 10441 10531 +90
==========================================
+ Hits 19565 19686 +121
- Misses 2319 2336 +17
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
harshithRai
approved these changes
Oct 14, 2026
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🔧 Changes
Adds management support for attack protection CAPTCHA policies, client grants search, anonymous session transfer network binding, DPoP strict refresh token binding, Google Workspace provisioning on connection profiles, and organization member access levels on organization connection events. Experiment and feature flag status transitions now go through the standard
update(PATCH) methods instead of separateupdateStatusendpoints.client.attackProtection.captchaPolicieswithlist,create,get,update, anddelete(/attack-protection/captcha/policies). A policy has aname, an optionaldescription, apriority(lower number = higher precedence), amatch(exactly one ofauth0_managedorgeo_country_codes), and anactionthat overrides the CAPTCHA provider configuration.create()andupdate()throwConflictErroron 409.AttackProtectionCaptchaPolicy,AttackProtectionCaptchaPolicyMatch,AttackProtectionCaptchaPolicyAction,AttackProtectionCaptchaPolicyActionInput,ListAttackProtectionCaptchaPoliciesResponseContent,CaptchaActiveProviderEnum(simple_captcha|auth_challenge|recaptcha_v2|recaptcha_enterprise|hcaptcha|friendly_captcha|arkose), and per-provider action typesCaptchaPolicyActionSimpleCaptcha,CaptchaPolicyActionAuthChallenge,CaptchaPolicyActionRecaptchaV2/Input,CaptchaPolicyActionRecaptchaEnterprise/Input,CaptchaPolicyActionHcaptcha/Input,CaptchaPolicyActionFriendlyCaptcha/Input,CaptchaPolicyActionArkose/Input. The*Inputvariants accept secrets (secret,api_key), which are not returned in responses.CreateAttackProtectionCaptchaPolicyRequestContentandUpdateAttackProtectionCaptchaPolicyRequestContent.auth0/attackProtection/captchaPolicies.BruteForceProtectionFormSubmissionModeEnumdescription updated (no value changes).client.clientGrants.search()(GET /client-grants/search). It searches client grants with SCIM or Lucene filter syntax (parser), returns eventually consistent results, and is paginated withtake/from. Supportsq,parser,fields,include_fields,take,from, andsort. In addition to the standard errors, it maps 500 toInternalServerErrorand 504 toGatewayTimeoutError.SearchClientGrantsRequestParameters,SearchClientGrantsResponseContent, andClientGrantSortFieldEnum(audience|updated_at).enforce_anon_session_transfer_network_binding(ip|asn|none, defaultip) controls whether an anonymous session transfer token must be consumed from the same IP or ASN that issued it. Added toCreateClientRequestContent,UpdateClientRequestContent,Client,ClientSearchResponse,CreateClientResponseContent,GetClientResponseContent,UpdateClientResponseContent, andRotateClientSecretResponseContent. New enumClientAnonymousSessionTransferNetworkBindingEnum.clients.registerCimdClient()now throwsConflictErroron 409.dpop_strict_refresh_token_bindingenables strict DPoP refresh token binding per RFC 9449. Added toUpdateTenantSettingsRequestContent,GetTenantSettingsResponseContent, andUpdateTenantSettingsResponseContent.experiments.updateStatus()(POST /experimentation/experiments/{id}/status). Useexperiments.update()(PATCH /experimentation/experiments/{id}) withstatus(active|paused|completed|archived) instead.statuswas added toUpdateExperimentRequestParameters.featureFlags.updateStatus()(POST /experimentation/feature-flags/{id}/status). UsefeatureFlags.update()(PATCH /experimentation/feature-flags/{id}) withstatus(draft|active|archived) instead.statuswas added toUpdateFeatureFlagRequestContent.UpdateExperimentStatusRequestContent,UpdateExperimentStatusResponseContent,UpdateFeatureFlagStatusRequestContent, andUpdateFeatureFlagStatusResponseContent.status(active|archived) added toSegment,CreateSegmentResponseContent,GetSegmentResponseContent, andUpdateSegmentResponseContent. It is also settable throughUpdateSegmentRequestContent; archiving cannot be undone. New enumSegmentStatusEnum.variations.delete()no longer maps 400 toBadRequestError.owner_idis now typed asRoleOwnerIdonRole,CreateRoleResponseContent,GetRoleResponseContent,UpdateRoleResponseContent, andUserEffectivePermissionRoleSourceResponseContent. Theowner_idfilter onListRolesRequestParametersis typed asRoleOwnerIdFilter. Passingowner_id: "auth0"toroles.list()returns Auth0-managed System Roles. New types:RoleOwnerId,RoleOwnerIdFilter, andSystemRoleOwnerId.provisioning.google_workspace.sync_usersadded toConnectionProfileProvisioningandConnectionProfileStrategyOverridesProvisioning. New types:ConnectionProfileProvisioningGoogleWorkspaceandConnectionProfileProvisioningGoogleWorkspaceSyncUsers.organization_member_access_level(none|readonly|limited|full) added to theobjectandprevious_objectpayloads of the organization connection added/updated events, with the matchingEventStreamCloudEventOrgConnection{Added,Updated}{Object,PreviousObject}OrganizationMemberAccessLevel*types.a0streamis now optional on all CloudEvent types.ConnectionResponseCommonno longer extendsCreateConnectionCommon. It declares its fields directly, anddisplay_nameis now required in connection responses.metadataremoved fromSearchOrganization.directory_syncadded toEnabledFeaturesEnum.Management.FlowActionTwilio.SendSms), and those variants declare the discriminator value. Before, each union was a plain union of variant interfaces, and each interface declared its own discriminator. No variants were added or removed.strategyis no longer declared on the connectionobject/previous_objectvariants (EventStreamCloudEventConnection{Created,Updated,Deleted}{Object,PreviousObject}{0..7}),typeon the group variants (EventStreamCloudEvent{Group*,OrgGroupRole*}…Group{0..2}andEventStreamCloudEventGroup{Created,Updated,Deleted}{Object,PreviousObject}{0..2}), andmember_typeon the group member variants (EventStreamCloudEventGroupMember{Added,Deleted}{Object,PreviousObject}Member{0,1}); they now come from the corresponding unions.actionis no longer declared on the individualFlowAction*interfaces, and their per-variantActionconstants (e.g.Management.FlowActionTwilioSendSms.Action) were removed.typeis unchanged.typeis no longer declared onLogStream*ResponseSchema/CreateLogStream*RequestBody; it now comes from theLogStreamResponseSchema/CreateLogStreamRequestContentunions.methodis no longer declared onEventStreamWebhookBasicAuth,EventStreamWebhookBearerAuth(now an empty interface), orEventStreamWebhookCustomHeaderAuth; it now comes from theEventStreamWebhookAuthorizationResponseunion.typeis no longer declared on the individual block/field/widget/node interfaces or onFormFieldPaymentConfigChargeOneOff. The inline subscription charge is now the namedFormFieldPaymentConfigCharge.Subscriptionvariant.reference.mdregenerated, andyarn.lockrefreshed (@typescript-eslint/*8.71.0 → 8.71.2 plus minor transitive bumps).experiments.updateStatus()andfeatureFlags.updateStatus(), along withUpdateExperimentStatusRequestContent,UpdateExperimentStatusResponseContent,UpdateFeatureFlagStatusRequestContent, andUpdateFeatureFlagStatusResponseContent. Useexperiments.update(id, { status })/featureFlags.update(id, { status })instead.Actionconstants on Flow action types (e.g.Management.FlowActionTwilioSendSms.Action).actiononFlowAction*;typeonLogStream*ResponseSchema,CreateLogStream*RequestBody, Form block/field/widget/node types,FormFieldPaymentConfigChargeOneOff, and Event Stream CloudEvent group variants;methodonEventStreamWebhook{Basic,Bearer,CustomHeader}Auth;strategyon Event Stream CloudEvent connection variants;member_typeon Event Stream CloudEvent group member variants) are no longer declared on the individual variant interfaces. Use the union types (e.g.LogStreamResponseSchema,FlowActionTwilio,EventStreamWebhookAuthorizationResponse) or the new namespace variants (e.g.Management.FlowActionTwilio.SendSms) when you need the discriminator.a0streamis now optional on all Event Stream CloudEvent types.featureFlags.variations.delete()no longer throwsBadRequestErroron 400; it throws the genericManagementError.SearchOrganization.metadatais no longer typed (nowanyvia the index signature).display_nameis now required onConnectionResponseCommon(affects code that constructs connection response objects, e.g. test mocks).statusis now required onSegment,CreateSegmentResponseContent,GetSegmentResponseContent, andUpdateSegmentResponseContent(affects code that constructs segment response objects, e.g. test mocks).🔬 Testing
attackProtection/captchaPolicies.test.ts– new wire tests forlist(6),create(7),get(6),update(7), anddelete(6), including error casesclientGrants.test.ts– new wire tests forsearch(8 cases)clients.test.ts–enforce_anon_session_transfer_network_bindingadded to 6 fixtures; new 409ConflictErrorcase forregisterCimdClienttenants/settings.test.ts–dpop_strict_refresh_token_bindingadded to 2 fixturesexperimentation/experiments.test.tsandexperimentation/featureFlags.test.ts–updateStatustests removed (8 + 6 cases)experimentation/featureFlags/variations.test.ts– 400BadRequestErrorcase fordeleteremovedexperimentation/segments.test.ts–statusadded to 4 fixturesconnectionProfiles.test.ts–provisioning.google_workspace.sync_usersadded to 4 fixturesattackProtection/bruteForceProtection.test.ts–form_submission_modefixture value changed frommanualtoautoflows.test.ts,forms.test.ts,logStreams.test.ts,events.test.ts– discriminator fields (action,type,strategy) reordered in fixtures to match the new union shape📝 Checklist