Release 7.12.0 - #4374
Merged
Merged
Release 7.12.0#4374
Conversation
chore: add changelog for v7.11.0 and port old changelogs from github See merge request cloudflare/sdks/cloudflare-go!12
Stainless-Generated-From: 85e7406f6fd58aa1302effd4fbc6d87df3d2c37d
Stainless-Generated-From: 40605509c63fcb127e733b3b069379de79b9c725
Stainless-Generated-From: 6067b85e9e32023628b02196c5bce09ad4b08993
Stainless-Generated-From: 62631b8023735f6a493d61d5e7fc4b5bcaecd1c9
Stainless-Generated-From: 9281970f01dc59837353e065e1134896ea8b8410
Stainless-Generated-From: 351e52834f33e42a04b7a991605fb6d63bf53a8f
Stainless-Generated-From: 718d5251b312ca1a42c88828739d604719af1bbd
chore: run codegen and reseal See merge request cloudflare/sdks/api-schemas!588 Stainless-Generated-From: 587f347f7ac13a20d2c3649677f45c4b4b68285f
Stainless-Generated-From: 5760fa448f65c1e0d4b7379b0f844b5aa5bc1b35
Stainless-Generated-From: e027f514f05279bd06e29266edc904d1a898f1df
Stainless-Generated-From: 21c1e55428c1f1930d09e0f1a6908a240cd38fec
Resolve CHANGELOG.md with --ours: GitLab main is the authoritative author for release notes. The 7.11.0 sections on both sides were byte-identical (cd3698d on GitLab, ede2864 on the release branch), so nothing was dropped; GitLab's copy additionally carries the ported pre-v7 history. No version headers existed only on github/main. All other paths auto-resolved and were verified: - .gitlab-ci.yml deleted (not carried on GitHub) - version.go / .release-please-manifest.json / README revert to 7.11.0; these get bumped to 7.12.0 on GitLab before the branch is refreshed - docs/migration-guides/v7.{6,8,9}.0 added (GitHub-only docs) - SECURITY.md and email_routing/rule_test.go take GitHub's newer edits
The O(n^2) -> O(n) array encoder fix from ffbaacb was reverted on GitLab main by fa57d6b ("chore(go): build sdk after custom code conflict"), which regenerated internal/apijson/encoder.go from the Stainless template and dropped the hand-written change. The merge base already contained the fix, so merging github/main into this release branch produced no conflict and silently propagated the revert. Restores the bytes.Buffer implementation and the accompanying array_bench_test.go (which also asserts parity with encoding/json). Both imports remain in use: bytes at encoder.go:367 (bytes.Compare), sjson at :287 and :383.
Adds the v7.12.0 changelog entry and migration guide, bumps the version across the three places it is tracked, and restores a custom-code fix that a previous reseal reverted. CHANGELOG / migration guide 21 breaking changes across 13 packages, with a 20-section migration guide giving before/after examples for each. The widest-reaching is the permission group Meta reshape (11 types across shared, iam, and memberships). Also normalises 11 malformed "## Features" / "## Bug Fixes" / "## Breaking Changes" headers in older entries to "###", so they nest under their release heading instead of appearing as top-level sections. Version bump (7.7.0 -> 7.12.0) internal/version.go and .release-please-manifest.json were still on 7.7.0 and the README install pin on 7.9.0; GitHub main had already shipped 7.11.0. These are bumped manually since release-please is no longer driving this repo. apijson encoder Restores the O(n) bytes.Buffer array encoder from ffbaacb, which fa57d6b ("chore(go): build sdk after custom code conflict") reverted to the O(n^2) sjson.SetRawBytes loop, along with its benchmark. This must be registered as custom code in Stainless, otherwise the next reseal reverts it again.
musa-cf
approved these changes
Oct 1, 2026
The guide listed IndexDimensionConfigurationMetric as a removed type and told users to replace its constants with CreateIndexConfigMetric. The type is retained (vectorize/index.go:392) and still backs the Metric field of IndexDimensionConfigurationParam, so that advice would have had readers change working request-construction code to something that does not compile. CHANGELOG.md already described this correctly. Only IndexDimensionConfiguration is removed, and only the response read path (index.Config) changes. Narrows the Impact text and Action 2 to that path, drops the Metric type from Removed Types, and adds an explicit "not affected" example for request construction. Both enums carry the same three values, so the read-path change is a type name only.
Restores MarshalRootWithJSON and converts the five affected endpoints back to it. These send settings/metadata as a single application/json part; file uploads stay binary parts under a repeated field name. Originally fixed by @1000hz in GH#4187 (shipped in v7.7.0) and removed by the v7.8.0 regeneration. Broken in v7.8.0 through v7.12.0. Reported as GH#4360; this is the patch from GH#4364 by @Shubham-Padkonde, applied to GitLab main so it survives into the next release rather than being reverted by the next reseal. Affected endpoints: snippets/snippet.go workers/scriptcontent.go workers/scriptscriptandversionsetting.go workers_for_platforms/dispatchnamespacescriptcontent.go workers_for_platforms/dispatchnamespacescriptsetting.go Two deliberate differences from the v7.7.0 implementation: 1. The encoder cache key now includes fieldsAsJSON/objectsAsJSON. v7.7.0 keyed on type alone, so warming the ordinary encoder for a type could serve a cached encoder in the wrong mode. 2. newArrayTypeEncoder assigns an index to root-level arrays. v7.7.0 skipped the index when the key was empty, emitting an empty field name for every element. Wire-visible, but only for a root-level slice in non-JSON mode. The five generated call sites are hand-patched here. Codegen must be taught to emit MarshalRootWithJSON for these endpoints, and the apiform encoder registered as custom code, or the next reseal reverts this the same way it reverted GH#4187.
fix(apiform): restore JSON multipart encoding clobbered by regeneration See merge request cloudflare/sdks/cloudflare-go!15
chore: prepare v7.12.0 release See merge request cloudflare/sdks/cloudflare-go!14
Stainless-Generated-From: daf9227a761371bc52dae3f8f8ce1e792d230894
Stainless-Generated-From: 8da9dc0446dc439503f79a6f5ced09fbbece9efc
Brings the resealed GitLab main into the release branch: the v7.12.0
changelog and migration guide, the version bump, and the two restored
custom-code fixes.
internal/apijson/encoder.go O(n) bytes.Buffer array encoder
internal/apiform/encoder.go MarshalRootWithJSON + 5 call sites
Both survived the reseal, confirming the custom-code registration holds.
Conflicts, all the same shape and all resolved in favour of origin/main:
internal/version.go, .release-please-manifest.json, and the README
install pin were still on 7.11.0 on this branch and 7.12.0 upstream.
Deliberately not taken from origin/main:
.gitlab-ci.yml deleted on the GitHub side after the merge base, so
the deletion wins and GitLab CI config stays out of
the public repo
SECURITY.md the GitHub repo's customised version is retained
The three GitHub-only migration guides (v7.6.0, v7.8.0, v7.9.0) are
preserved; they postdate the merge base and exist only on this side.
This was referenced Oct 1, 2026
Member
Author
|
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.


v 7.12.0
Breaking Changes
AddressMaps.Zones.Update()andAddressMaps.Zones.Delete()removed. TheZonessub-resource is still wired onAddressMapsbut now exposes no methods. 16 exported types are removed, includingAddressMapZoneUpdateResponse,AddressMapZoneDeleteResponse,AddressMapZoneUpdateParams,AddressMapZoneDeleteParams, and their nestedError,ErrorsSource,Message,MessagesSource,ResultInfo, andSuccesstypes.Devtools.Browser.Connect()andDevtools.Browser.Launch()removed, along withDevtoolBrowserConnectParamsandDevtoolBrowserLaunchParams.Devtools.Browser.Page.Get()is also removed along withDevtoolBrowserPageGetParams; thePagesub-resource now exposes no methods.Devtools.BrowserretainsNew(),Delete(),Protocol(), andVersion().RuleUpdateParams.Rulesis now required. Requests that previously omittedrulesare rejected.SettingAccountViewListParams.PageandSettingAccountViewListParams.PerPagechanged fromparam.Field[float64]toparam.Field[int64].Settings.Zonenameservers changed from a struct to a union.SettingZoneEditResponse.NameserversandSettingZoneGetResponse.Nameserversare now...NameserversUnioninterfaces, and theSettingZoneEditParams.Nameserversfield type changed fromparam.Field[SettingZoneEditParamsNameservers]toparam.Field[SettingZoneEditParamsNameserversUnion]. Callers constructing or reading nameservers must switch on theCloudflare,CustomExisting, andCustomSetvariants.Phishguard.Reports.List()return type changed from*pagination.SinglePage[PhishguardReportListResponse]to*pagination.V4PagePaginationArray[PhishguardReportListResponse].InvestigatePreviewNewParams.PostfixIDrenamed toID, and its JSON key changed frompostfix_idtoid.InvestigateReleaseBulkParams.Body []stringreplaced byIDs param.Field[[]string]. The request body is now a JSON object{"ids": [...]}instead of a bare array, so this is both a compile-time and a wire-format change.InvestigateMoveBulkParams.IDsis now required.SKIPPEDstatus value is removed fromInvestigateBulkNewResponseStatus,InvestigateBulkGetResponseStatus,InvestigateBulkListResponseStatus,InvestigateBulkListParamsStatus, andInvestigateBulkCancelNewResponseStatus.DISCOVERINGstatus value is removed fromInvestigateBulkMessageListParamsStatusandInvestigateBulkMessageListResponseStatus.AppFlagListParams.LimitandAppFlagChangelogListParams.Limitchanged fromparam.Field[string]toparam.Field[int64].Integrationfield on everyConfigsresponse integration struct is renamed toProvider, and its JSON key changed fromintegrationtoprovider. The accompanying enum types are renamedConfigNewResponseIntegrationIntegration->ConfigNewResponseIntegrationProvider(and theUpdate,List,Edit,Get, andRestartequivalents), plusConfigNewParamsBodyHyperdriveHyperdriveConfigCreateWithIntegrationIntegrationIntegration->...IntegrationProvider. This is both a compile-time and a wire-format change.MqNotificationConsumervariant is removed from theConsumersrequest and response unions.Consumers.New()andConsumers.Update()now accept only theMqWorkerConsumerRequestandMqHTTPConsumerRequestbody variants. Removed types includeConsumerMqNotificationConsumerResponse(and itsSettings,SettingsObject,SettingsObjectEmail,SettingsObjectPagerduty,SettingsObjectWebhook,Typemembers andParamequivalents),ConsumerNewParamsBodyMqNotificationConsumerRequest, andConsumerUpdateParamsBodyMqNotificationConsumerRequest— 31 exported types in total.ResourceTypeenums are narrowed to the single resource type each union variant describes.AccountTagUpdateParamsBodyResourceTaggingSetTagsRequestAccountLevelWorkerVersionResourceTypedrops from 30 values toworker_versiononly, andZoneTagUpdateParamsBodyResourceTaggingSetTagsRequestZoneLevelAccessApplicationPolicyResourceTypedrops from 11 values toaccess_application_policyonly — 39 exported constants removed.Metastruct changed from{Key, Value string}to a descriptive shape withCategory,Deprecated,Description,Editable,EolAt time.Time,Label,Scopes, andVisibility. This affects 11 types across four packages:shared.MemberPoliciesPermissionGroupsMeta,shared.TokenPolicyPermissionGroupsMetaandshared.TokenPolicyPermissionGroupsMetaParam,iam.PermissionGroupListResponseMeta,iam.PermissionGroupGetResponseMeta, the fouriam.UserGroup{New,Update,List,Get}ResponsePoliciesPermissionGroupsMetatypes, andmemberships.Membership{Update,Get}ResponsePoliciesPermissionGroupsMeta.IndexDimensionConfigurationtype is removed;CreateIndex.Configis nowCreateIndexConfig.IndexDimensionConfigurationMetricandIndexDimensionConfigurationParamare retained.DispatchNamespaceScriptTagDeleteResponsechanged from aninterface{}alias to a struct backed byDispatchNamespaceScriptTagDeleteResponseUnion. Callers type-asserting the oldinterface{}return ofDispatch.Namespaces.Scripts.Tags.Delete()must switch on theWorkersTagsKVResponseandWorkersAPIResponseNullResultvariants. The two variants correspond to the newapi-versionheader: onapi-versiondates on or after2026-10-01,tagidentifies a key and the call returns the complete updated tag map; earlier versions keep the legacy string-tag behaviour and return a null result. The sixDispatchNamespaceScriptTagDeleteResponseEnvelope*types are removed.Gateway.Lists.Items.List()return type changed from*pagination.SinglePage[GatewayItem]to*pagination.V4PagePaginationArray[GatewayItem].Gateway.Pacfiles.List()return type changed from*pagination.SinglePage[GatewayPacfileListResponse]to*pagination.V4PagePaginationArray[GatewayPacfileListResponse].DevicePolicyCustomEditParamsProfileTypetype removed.Features
containers-- Containers application, image, and registry managementApplications.New(),List(),Delete(),Edit(),Get()Applications.Instances.List(),Get(),ListV1()Applications.Rollouts.New()Applications.Versions.List()Images.Prepare()Registries.New(),List(),Delete()Registries.Credentials.Generate()basin_catalog-- Basin catalog bucket, namespace, and table managementList(),Delete(),Disable(),Enable(),Get()MaintenanceConfigs.Update(),Get()Credentials.New()Namespaces.List()Namespaces.Tables.List()Namespaces.Tables.MaintenanceConfigs.Update(),Get()ThreatSignalssub-resource tree (/accounts/{account_id}/cloudforce-one/v2/threat-signals)ThreatSignals.Search.Search()ThreatSignals.Categories.List()ThreatSignals.Feeds.New(),List(),Delete(),Edit(),Poll()ThreatSignals.Feeds.Raw.Get()ThreatSignals.Feeds.Skills.Update(),Get()ThreatSignals.Articles.List(),BulkEdit(),Edit(),Get()ThreatSignals.Articles.Content.Get()ThreatSignals.Articles.Tags.New(),Delete(),Generate()ThreatSignals.Articles.SkillOutputs.Get()ThreatSignals.Indicators.List()ThreatSignals.Skills.New(),List(),Delete(),Edit(),Get()ThreatSignals.Skills.TagCategories.Update(),Get()Invalidate()method (POST /zones/{zone_id}/invalidate_cache)InvalidateEnvironment()method (POST /zones/{zone_id}/environments/{environment_id}/invalidate_cache)Settings.Account.NameserverSetssub-resource withNew(),List(),Delete(),Get()methodsTransferCheck()method (POST /accounts/{account_id}/registrar/domain-transfer-check)PageTokenPaginationandContainersInstancesV1Paginationpage types (with theirAutoPagervariants) topackages/paginationSettings.Domains,Settings.ContentPolicies,Settings.TrustedDomains,Settings.ImpersonationRegistry,Settings.BlockSenders,Settings.AllowPolicies,Investigate, andSubmissions