Skip to content

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
ankita10119 merged 2 commits into
betafrom
fern-bot/2026-10-13_06-11-47_067
Oct 14, 2026

Conversation

@fern-api

@fern-api fern-api Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

🔧 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 separate updateStatus endpoints.

  • Attack Protection – CAPTCHA Policies (new resource): client.attackProtection.captchaPolicies with list, create, get, update, and delete (/attack-protection/captcha/policies). A policy has a name, an optional description, a priority (lower number = higher precedence), a match (exactly one of auth0_managed or geo_country_codes), and an action that overrides the CAPTCHA provider configuration. create() and update() throw ConflictError on 409.
    • New types: AttackProtectionCaptchaPolicy, AttackProtectionCaptchaPolicyMatch, AttackProtectionCaptchaPolicyAction, AttackProtectionCaptchaPolicyActionInput, ListAttackProtectionCaptchaPoliciesResponseContent, CaptchaActiveProviderEnum (simple_captcha | auth_challenge | recaptcha_v2 | recaptcha_enterprise | hcaptcha | friendly_captcha | arkose), and per-provider action types CaptchaPolicyActionSimpleCaptcha, CaptchaPolicyActionAuthChallenge, CaptchaPolicyActionRecaptchaV2/Input, CaptchaPolicyActionRecaptchaEnterprise/Input, CaptchaPolicyActionHcaptcha/Input, CaptchaPolicyActionFriendlyCaptcha/Input, CaptchaPolicyActionArkose/Input. The *Input variants accept secrets (secret, api_key), which are not returned in responses.
    • New request types: CreateAttackProtectionCaptchaPolicyRequestContent and UpdateAttackProtectionCaptchaPolicyRequestContent.
    • New sub-package export: auth0/attackProtection/captchaPolicies.
  • Attack Protection – Brute Force Protection: BruteForceProtectionFormSubmissionModeEnum description updated (no value changes).
  • Client Grants: new 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 with take/from. Supports q, parser, fields, include_fields, take, from, and sort. In addition to the standard errors, it maps 500 to InternalServerError and 504 to GatewayTimeoutError.
    • New types: SearchClientGrantsRequestParameters, SearchClientGrantsResponseContent, and ClientGrantSortFieldEnum (audience | updated_at).
  • Clients: enforce_anon_session_transfer_network_binding (ip | asn | none, default ip) controls whether an anonymous session transfer token must be consumed from the same IP or ASN that issued it. Added to CreateClientRequestContent, UpdateClientRequestContent, Client, ClientSearchResponse, CreateClientResponseContent, GetClientResponseContent, UpdateClientResponseContent, and RotateClientSecretResponseContent. New enum ClientAnonymousSessionTransferNetworkBindingEnum.
    • clients.registerCimdClient() now throws ConflictError on 409.
  • Tenant Settings: dpop_strict_refresh_token_binding enables strict DPoP refresh token binding per RFC 9449. Added to UpdateTenantSettingsRequestContent, GetTenantSettingsResponseContent, and UpdateTenantSettingsResponseContent.
  • Experimentation:
    • Experiments: removed experiments.updateStatus() (POST /experimentation/experiments/{id}/status). Use experiments.update() (PATCH /experimentation/experiments/{id}) with status (active | paused | completed | archived) instead. status was added to UpdateExperimentRequestParameters.
    • Feature Flags: removed featureFlags.updateStatus() (POST /experimentation/feature-flags/{id}/status). Use featureFlags.update() (PATCH /experimentation/feature-flags/{id}) with status (draft | active | archived) instead. status was added to UpdateFeatureFlagRequestContent.
    • Removed types: UpdateExperimentStatusRequestContent, UpdateExperimentStatusResponseContent, UpdateFeatureFlagStatusRequestContent, and UpdateFeatureFlagStatusResponseContent.
    • Segments: status (active | archived) added to Segment, CreateSegmentResponseContent, GetSegmentResponseContent, and UpdateSegmentResponseContent. It is also settable through UpdateSegmentRequestContent; archiving cannot be undone. New enum SegmentStatusEnum.
    • Feature Flag Variations: variations.delete() no longer maps 400 to BadRequestError.
  • Roles: owner_id is now typed as RoleOwnerId on Role, CreateRoleResponseContent, GetRoleResponseContent, UpdateRoleResponseContent, and UserEffectivePermissionRoleSourceResponseContent. The owner_id filter on ListRolesRequestParameters is typed as RoleOwnerIdFilter. Passing owner_id: "auth0" to roles.list() returns Auth0-managed System Roles. New types: RoleOwnerId, RoleOwnerIdFilter, and SystemRoleOwnerId.
  • Connection Profiles: provisioning.google_workspace.sync_users added to ConnectionProfileProvisioning and ConnectionProfileStrategyOverridesProvisioning. New types: ConnectionProfileProvisioningGoogleWorkspace and ConnectionProfileProvisioningGoogleWorkspaceSyncUsers.
  • Event Streams:
    • organization_member_access_level (none | readonly | limited | full) added to the object and previous_object payloads of the organization connection added/updated events, with the matching EventStreamCloudEventOrgConnection{Added,Updated}{Object,PreviousObject}OrganizationMemberAccessLevel* types.
    • a0stream is now optional on all CloudEvent types.
  • Connections: ConnectionResponseCommon no longer extends CreateConnectionCommon. It declares its fields directly, and display_name is now required in connection responses.
  • Organizations: metadata removed from SearchOrganization.
  • Enabled Features: directory_sync added to EnabledFeaturesEnum.
  • Discriminated unions (generator change): union types for Flow actions, Forms (blocks, fields, widgets, nodes, payment charge), Log Streams, Event Stream destinations, webhook authorization, and CloudEvent connection/group/member objects now reference named namespace variants (e.g. 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.
      • Event Stream CloudEvents: strategy is no longer declared on the connection object/previous_object variants (EventStreamCloudEventConnection{Created,Updated,Deleted}{Object,PreviousObject}{0..7}), type on the group variants (EventStreamCloudEvent{Group*,OrgGroupRole*}…Group{0..2} and EventStreamCloudEventGroup{Created,Updated,Deleted}{Object,PreviousObject}{0..2}), and member_type on the group member variants (EventStreamCloudEventGroupMember{Added,Deleted}{Object,PreviousObject}Member{0,1}); they now come from the corresponding unions.
    • Flow actions: action is no longer declared on the individual FlowAction* interfaces, and their per-variant Action constants (e.g. Management.FlowActionTwilioSendSms.Action) were removed. type is unchanged.
    • Log streams: type is no longer declared on LogStream*ResponseSchema / CreateLogStream*RequestBody; it now comes from the LogStreamResponseSchema / CreateLogStreamRequestContent unions.
    • Webhook authorization: method is no longer declared on EventStreamWebhookBasicAuth, EventStreamWebhookBearerAuth (now an empty interface), or EventStreamWebhookCustomHeaderAuth; it now comes from the EventStreamWebhookAuthorizationResponse union.
    • Forms: type is no longer declared on the individual block/field/widget/node interfaces or on FormFieldPaymentConfigChargeOneOff. The inline subscription charge is now the named FormFieldPaymentConfigCharge.Subscription variant.
  • Docs and dependencies: reference.md regenerated, and yarn.lock refreshed (@typescript-eslint/* 8.71.0 → 8.71.2 plus minor transitive bumps).
// Attack protection CAPTCHA policy
await client.attackProtection.captchaPolicies.create({
    name: "Block high-risk regions",
    priority: 1,
    match: { geo_country_codes: ["XX"] },
    action: { active_provider_id: "recaptcha_v2", recaptcha_v2: { site_key: "...", secret: "..." } },
});
// Client grants search
const page = await client.clientGrants.search({ q: 'audience:"https://api.example.com"', parser: "lucene", take: 50 });
// Anonymous session transfer network binding
await client.clients.update("client_id", { enforce_anon_session_transfer_network_binding: "asn" });

// DPoP strict refresh token binding
await client.tenants.settings.update({ dpop_strict_refresh_token_binding: true });
// Experiment / feature flag status transitions (replaces updateStatus)
await client.experimentation.experiments.update("exp_id", { status: "paused" });
await client.experimentation.featureFlags.update("ff_id", { status: "active" });

⚠️ Breaking changes

  • Removed experiments.updateStatus() and featureFlags.updateStatus(), along with UpdateExperimentStatusRequestContent, UpdateExperimentStatusResponseContent, UpdateFeatureFlagStatusRequestContent, and UpdateFeatureFlagStatusResponseContent. Use experiments.update(id, { status }) / featureFlags.update(id, { status }) instead.
  • Removed the per-variant Action constants on Flow action types (e.g. Management.FlowActionTwilioSendSms.Action).
  • Discriminator properties (action on FlowAction*; type on LogStream*ResponseSchema, CreateLogStream*RequestBody, Form block/field/widget/node types, FormFieldPaymentConfigChargeOneOff, and Event Stream CloudEvent group variants; method on EventStreamWebhook{Basic,Bearer,CustomHeader}Auth; strategy on Event Stream CloudEvent connection variants; member_type on 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.
  • a0stream is now optional on all Event Stream CloudEvent types.
  • featureFlags.variations.delete() no longer throws BadRequestError on 400; it throws the generic ManagementError.
  • SearchOrganization.metadata is no longer typed (now any via the index signature).
  • display_name is now required on ConnectionResponseCommon (affects code that constructs connection response objects, e.g. test mocks).
  • status is now required on Segment, CreateSegmentResponseContent, GetSegmentResponseContent, and UpdateSegmentResponseContent (affects code that constructs segment response objects, e.g. test mocks).

🔬 Testing

  • attackProtection/captchaPolicies.test.ts – new wire tests for list (6), create (7), get (6), update (7), and delete (6), including error cases
  • clientGrants.test.ts – new wire tests for search (8 cases)
  • clients.test.ts – enforce_anon_session_transfer_network_binding added to 6 fixtures; new 409 ConflictError case for registerCimdClient
  • tenants/settings.test.ts – dpop_strict_refresh_token_binding added to 2 fixtures
  • experimentation/experiments.test.ts and experimentation/featureFlags.test.ts – updateStatus tests removed (8 + 6 cases)
  • experimentation/featureFlags/variations.test.ts – 400 BadRequestError case for delete removed
  • experimentation/segments.test.ts – status added to 4 fixtures
  • connectionProfiles.test.ts – provisioning.google_workspace.sync_users added to 4 fixtures
  • attackProtection/bruteForceProtection.test.ts – form_submission_mode fixture value changed from manual to auto
  • flows.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

  • All new/changed/fixed functionality is covered by tests (or N/A)
  • I have added documentation for all new/changed functionality (or N/A )

fern-api Bot added 2 commits October 13, 2026 06:11
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.
@fern-api
fern-api Bot requested a review from a team as a code owner October 13, 2026 06:11
@codecov

codecov Bot commented Oct 13, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 89.53975% with 25 lines in your changes missing coverage. Please review.
✅ Project coverage is 89.39%. Comparing base (d90bbd5) to head (973445d).
⚠️ Report is 1 commits behind head on beta.

Files with missing lines Patch % Lines
...tection/resources/captchaPolicies/client/Client.ts 88.52% 21 Missing ⚠️
...gement/api/resources/clientGrants/client/Client.ts 91.83% 4 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@            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     
Flag Coverage Δ
alltests 89.39% <89.53%> (-0.02%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...nt/api/resources/attackProtection/client/Client.ts 100.00% <100.00%> (ø)
...ttackProtection/resources/captchaPolicies/index.ts 100.00% <100.00%> (ø)
.../api/resources/attackProtection/resources/index.ts 100.00% <100.00%> (ø)
.../management/api/resources/clients/client/Client.ts 89.32% <100.00%> (+0.06%) ⬆️
...rimentation/resources/experiments/client/Client.ts 88.71% <ø> (-0.06%) ⬇️
...imentation/resources/featureFlags/client/Client.ts 88.82% <ø> (+0.14%) ⬆️
...featureFlags/resources/variations/client/Client.ts 88.26% <ø> (-0.13%) ⬇️
...rc/management/api/resources/roles/client/Client.ts 89.60% <ø> (ø)
src/management/api/types/types.ts 100.00% <ø> (ø)
...gement/api/resources/clientGrants/client/Client.ts 89.53% <91.83%> (+0.59%) ⬆️
... and 1 more
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@ankita10119 ankita10119 changed the title SDK regeneration 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 Oct 14, 2026

@ankita10119 ankita10119 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM !

@ankita10119
ankita10119 merged commit 6753ff5 into beta Oct 14, 2026
11 checks passed
@ankita10119
ankita10119 deleted the fern-bot/2026-10-13_06-11-47_067 branch October 14, 2026 10:03

This branch was successfully deployed

1 active deployment
release — 973445df Deployed Oct 14, 2026 by ankita10119 via beta / beta-release #360
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants