Skip to content

feat: Ensure compatibility with encoding/json/v2 experiment#4029

Merged
gmlewis merged 1 commit into
google:masterfrom
munlicode:investigate-json-v2
Feb 23, 2026
Merged

feat: Ensure compatibility with encoding/json/v2 experiment#4029
gmlewis merged 1 commit into
google:masterfrom
munlicode:investigate-json-v2

Conversation

@munlicode

@munlicode munlicode commented Feb 22, 2026

Copy link
Copy Markdown
Contributor

Closes #4026

Summary

Following the investigation of Go 1.25 support for encoding/json/v2, this PR makes the test suite compatible with the new implementation. While the core library is already compatible, several tests were "brittle"—they relied on exact Go v1 error strings or specific unsupported types that have evolved in v2.

Changes

  • Relaxed Error Assertions: Updated error checks in security_advisories_test.go and repos_hooks_deliveries_test.go to use strings.Contains for logical error substrings. This avoids failures due to v2's descriptive field paths (e.g., adding .0 to indexed errors).
  • Stable Negative Testing: Refactored TestNewRequest_invalidJSON in github_test.go to use a func() payload. jsonv2 now supports marshaling map[any]any, so using a function ensures the test remains a valid failure test in both JSON versions.
  • Future-Proofing: Simplified internal error type checks (errors.As) to make tests more resilient to changes in Go's internal error wrapping or reporting.

Performance Analysis (Benchmarked on Go 1.25.7)

Benchmarks were run on NewRequest comparing the two implementations:

Metric v1 (Standard) v2 (Experimental)
Time per Op 3524 ns/op 4896 ns/op
Memory per Op 1560 B/op 2048 B/op
Allocations 20 allocs/op 26 allocs/op

Note: v2 currently shows slightly higher latency and memory usage.

Verification

Tests pass in both environments on Go 1.25.7:

  • script/test.sh -> PASS
  • GOEXPERIMENT=jsonv2 script/test.sh -> PASS

…a `NewRequest` test case to use an unsupported function type.
@gmlewis gmlewis changed the title feat: ensure compatibility with encoding/json/v2 experiment feat: Ensure compatibility with encoding/json/v2 experiment Feb 22, 2026
@codecov

codecov Bot commented Feb 22, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.07%. Comparing base (c02c318) to head (d917f16).
⚠️ Report is 1 commits behind head on master.

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #4029   +/-   ##
=======================================
  Coverage   94.07%   94.07%           
=======================================
  Files         207      207           
  Lines       19163    19163           
=======================================
  Hits        18028    18028           
  Misses        936      936           
  Partials      199      199           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@gmlewis gmlewis left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Thank you, @munlicode!
LGTM.
Awaiting second LGTM+Approval from any other contributor to this repo before merging.

cc: @stevehipwell - @alexandear - @zyfy29 - @Not-Dhananjay-Mishra

@gmlewis gmlewis added the NeedsReview PR is awaiting a review before merging. label Feb 22, 2026
@merchantmoh-debug

Copy link
Copy Markdown
Contributor

This is a really solid, proactive update. Getting ahead of the Go 1.25 encoding/json/v2 experiment will definitely save us some headaches down the line.

Looking through the diff, a couple of things stand out. First, swapping map[any]any for func() in github_test.go is a super smart catch. Since v2 is way more flexible and can actually marshal map[any]any under the right conditions, using a function is basically a bulletproof way to guarantee an encoding failure across all JSON versions.

Second, shifting to strings.Contains() for the error assertions (like in security_advisories_test.go and repos_hooks_deliveries_test.go) is just good testing hygiene. Hardcoding exact stdlib error strings is a classic anti-pattern since the internal formatting shifts around all the time. Good use of short-circuiting there too (err == nil || !strings.Contains(...)) so we don't accidentally panic on a nil error.

I do have one tiny nitpick—completely non-blocking. In github/github_test.go, you yanked the type assertion check entirely. As it stands now, it just asserts that some error occurred. It's highly unlikely to fail for another reason here (since "GET" and "." are perfectly valid for NewRequest), but dropping the validation completely makes the test feel a little loose.

To keep it resilient but still focused, maybe just swap it for a quick string check? Something like: if err == nil { t.Error("Expected error to be returned.") } else if !strings.Contains(err.Error(), "unsupported") && !strings.Contains(err.Error(), "json") { t.Errorf("Expected a JSON marshaling error; got %v", err) }

Honestly though, it's a minor nit and not worth stalling the PR over unless we want to be hyper-strict on the assertions.

Overall—changes are clean, strictly confined to the test files so there's zero prod risk, and the CI scripts are perfectly green. Since gmlewis already gave the initial approval, I'm good with this. LGTM!

@stevehipwell stevehipwell 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

@gmlewis gmlewis removed the NeedsReview PR is awaiting a review before merging. label Feb 23, 2026

@alexandear alexandear 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.

Thank you for investigating the migration to encoding/json/v2. Since the required changes affect only tests, I suggest postponing them for now. json/v2 is expected to reach a stable state in about half a year. Given the compatibility promise, we will likely upgrade to json/v2 no earlier than a year from now.

With that in mind, would it make more sense to apply these changes during the actual upgrade rather than in advance?

For now, we can simply document our findings in the issue and close the PR.

@alexandear

Copy link
Copy Markdown
Contributor

This is a really solid, proactive update. Getting ahead of the Go 1.25 encoding/json/v2 experiment will definitely save us some headaches down the line.

@merchantmoh-debug, could you please avoid posting AI-generated or low-effort content in this thread?

@gmlewis

gmlewis commented Feb 23, 2026

Copy link
Copy Markdown
Collaborator

With that in mind, would it make more sense to apply these changes during the actual upgrade rather than in advance?

I'm not seeing any harm in this PR, and I really do like the change from map[any]any to func as that makes a lot of sense to me.
So I'm leaning toward going ahead with this PR even though encoding/json/v2 is a year or more in the future.

@merchantmoh-debug, could you please avoid posting AI-generated or low-effort content in this thread?

I understand your perspective, @alexandear - I really do. However, in my mind, these posts are very similar in spirit to auto-generated GitHub Copilot code reviews... and yet I'm now finding them interesting to at least skim over and sometimes to actually fully read. 😅 If the volume simply becomes too much so that there is more noise than content, then I think we may have to address this in the future... but I honestly found this one interesting to read and informative...

And actually, I was also myself very concerned that we were REMOVING checks in one of the tests in this PR... which I'm still honestly a bit unsure about... and before the post by @merchantmoh-debug, I was ALSO thinking that we should NOT be removing an existing check... and I'm kinda leaning that way right now before I review...

So anyway, my comment is turning out longer than the post above (sorry!). But the bottom line I think is that times are changing and that @merchantmoh-debug hasn't done anything wrong, and I found the post above to be an interesting and informative read, so maybe we should be more tolerant and slower to react. Just my $0.02.

@gmlewis gmlewis left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

OK, after reviewing again, I see that the func() test is truly getting covered at lines 579-581, so I'm happy with this PR.
Still LGTM.

Thank you, again, @munlicode, @stevehipwell, @merchantmoh-debug, and @alexandear!
I do appreciate all of you and your input.

Merging.

@gmlewis gmlewis merged commit 92a3830 into google:master Feb 23, 2026
8 checks passed
@munlicode munlicode deleted the investigate-json-v2 branch February 23, 2026 15:01
eleboucher pushed a commit to eleboucher/forgesync that referenced this pull request Jun 7, 2026
… v88.0.0) (#7)

This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [github.com/google/go-github/v75](https://github.com/google/go-github) | `v75.0.0` → `v88.0.0` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fgoogle%2fgo-github%2fv75/v88.0.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fgoogle%2fgo-github%2fv75/v75.0.0/v88.0.0?slim=true) |

---

### Release Notes

<details>
<summary>google/go-github (github.com/google/go-github/v75)</summary>

### [`v88.0.0`](https://github.com/google/go-github/releases/tag/v88.0.0)

[Compare Source](https://github.com/google/go-github/compare/v87.0.0...v88.0.0)

This release contains the following breaking API changes:

- refactor!: Change app installation `Find*` methods to `Get*` ([#&#8203;4243](https://github.com/google/go-github/issues/4243))
  BREAKING CHANGE: App installation methods are renamed from `Find*` to `Get*`.

...and the following additional changes:

- chore: Bump version of go-github to v88.0.0 ([#&#8203;4245](https://github.com/google/go-github/issues/4245))
- chore: Update `openapi_operations.yaml` ([#&#8203;4242](https://github.com/google/go-github/issues/4242))
- feat: Add support for setting client URLs ([#&#8203;4240](https://github.com/google/go-github/issues/4240))
- refactor: Add constants for API versions ([#&#8203;4236](https://github.com/google/go-github/issues/4236))
- docs: Formatting and punctuation changes ([#&#8203;4235](https://github.com/google/go-github/issues/4235))
- feat: Add `GetParentIssue` for sub-issues ([#&#8203;4232](https://github.com/google/go-github/issues/4232))
- chore: Bump go-github from v86 to v87 in /scrape ([#&#8203;4234](https://github.com/google/go-github/issues/4234))

### [`v87.0.0`](https://github.com/google/go-github/releases/tag/v87.0.0)

[Compare Source](https://github.com/google/go-github/compare/v86.0.0...v87.0.0)

This release contains the following breaking API changes:

- refactor!: Change `GetConsumedLicenses` to `ListConsumedLicenses` ([#&#8203;4226](https://github.com/google/go-github/issues/4226))
  BREAKING CHANGE: `EnterpriseService.GetConsumedLicenses` is now `EnterpriseService.ListConsumedLicenses`.
- refactor!: Change `GetAllRepositoryRulesets` to `ListAllRepositoryRulesets` ([#&#8203;4227](https://github.com/google/go-github/issues/4227))
  BREAKING CHANGE: `OrganizationsService.GetAllRepositoryRulesets` is now `OrganizationsService.ListAllRepositoryRulesets`.
- refactor!: Change `GetRulesForBranch` to `ListRulesForBranch` ([#&#8203;4229](https://github.com/google/go-github/issues/4229))
  BREAKING CHANGE: `RepositoriesService.GetRulesForBranch` is now `RepositoriesService.ListRulesForBranch`.
- feat!: Refactor client constructor to use options pattern ([#&#8203;4201](https://github.com/google/go-github/issues/4201))
  BREAKING CHANGE: Clients are now constructed with a nicer builder pattern. See docs for details.
- fix!: Align `IssueFieldValues` with schema  ([#&#8203;4207](https://github.com/google/go-github/issues/4207))
  BREAKING CHANGE: `IssueRequest.IssueFieldValues` type is changed.

...and the following additional changes:

- chore: Bump version of go-github to v87.0.0 ([#&#8203;4233](https://github.com/google/go-github/issues/4233))
- feat: Add enterprise app installation lookup ([#&#8203;4230](https://github.com/google/go-github/issues/4230))
- chore: Update openapi\_operations.yaml ([#&#8203;4228](https://github.com/google/go-github/issues/4228))
- fix: Use value receiver for `MarshalJSON` ([#&#8203;4211](https://github.com/google/go-github/issues/4211))
- chore: Update dependencies ([#&#8203;4224](https://github.com/google/go-github/issues/4224))
- fix: Close `httptest` server to prevent test flakiness ([#&#8203;4210](https://github.com/google/go-github/issues/4210))
- feat: Add two new fields to org `CodeSecurityConfiguration` ([#&#8203;4205](https://github.com/google/go-github/issues/4205))
- chore: Bump golangci-lint to v2.12.2 ([#&#8203;4206](https://github.com/google/go-github/issues/4206))
- build(deps): Bump github.com/in-toto/in-toto-golang from 0.9.0 to 0.11.0 in /example ([#&#8203;4203](https://github.com/google/go-github/issues/4203))
- fix: Limit HTTP error response body reads to prevent OOM ([#&#8203;4191](https://github.com/google/go-github/issues/4191))
- feat: Add issue field values support for write and read ([#&#8203;4200](https://github.com/google/go-github/issues/4200))
- chore: Bump `go-github` from `v85` to `v86` in /scrape ([#&#8203;4199](https://github.com/google/go-github/issues/4199))

### [`v86.0.0`](https://github.com/google/go-github/releases/tag/v86.0.0)

[Compare Source](https://github.com/google/go-github/compare/v85.0.0...v86.0.0)

This release contains the following breaking API changes:

- feat!: Refactor request context ([#&#8203;4151](https://github.com/google/go-github/issues/4151))
  BREAKING CHANGE: All internal calls now provide `Context` via the `Request` itself.
- feat!: Add OIDC authentication support to `PrivateRegistries` ([#&#8203;4159](https://github.com/google/go-github/issues/4159))
  BREAKING CHANGE: `PrivateRegistriesService` is updated to API version `2026-03-10` with struct and response changes.

...and the following additional changes:

- chore: Bump version of `go-github` to `v86.0.0` ([#&#8203;4198](https://github.com/google/go-github/issues/4198))
- test: Fix invalid JSON payloads in actions workflow runs tests ([#&#8203;4197](https://github.com/google/go-github/issues/4197))
- feat: Add repo download contents sentinel errors ([#&#8203;4192](https://github.com/google/go-github/issues/4192))
- chore: Fix `otel` module name ([#&#8203;4187](https://github.com/google/go-github/issues/4187))
- feat: Add typed Copilot metrics download helpers ([#&#8203;4177](https://github.com/google/go-github/issues/4177))
- feat: Add `deploy_keys_enabled_for_repositories` and secret scanning custom link fields to `Organization` struct ([#&#8203;4188](https://github.com/google/go-github/issues/4188))
- refactor: Use `testJSONBody` helper for request body assertions in tests ([#&#8203;4183](https://github.com/google/go-github/issues/4183))
- build(deps): Bump github.com/getkin/kin-openapi from 0.135.0 to 0.137.0 in /tools ([#&#8203;4184](https://github.com/google/go-github/issues/4184))
- fix: Include `RetryAfter` in `AbuseRateLimitError.Error` output ([#&#8203;4181](https://github.com/google/go-github/issues/4181))
- fix: Handle string-typed reviewer `ID` in Ruleset API responses ([#&#8203;4178](https://github.com/google/go-github/issues/4178))
- feat: Add `ArchivedAt` field to `Organization` struct ([#&#8203;4179](https://github.com/google/go-github/issues/4179))
- feat: Add Copilot coding agent and content exclusion org endpoints ([#&#8203;4176](https://github.com/google/go-github/issues/4176))
- chore: Bump go-github from v84 to v85 in /scrape ([#&#8203;4174](https://github.com/google/go-github/issues/4174))

### [`v85.0.0`](https://github.com/google/go-github/releases/tag/v85.0.0)

[Compare Source](https://github.com/google/go-github/compare/v84.0.0...v85.0.0)

This release contains the following breaking API changes:

- fix!: Resolve inconsistent options for `create` and `update` on custom org role ([#&#8203;4075](https://github.com/google/go-github/issues/4075))
  BREAKING CHANGE: `GetOrgRole`, `CreateCustomOrgRole`, and `UpdateCustomOrgRole` have new params and return values.
- fix!: Change `id` from `int64` to `string` in `ActivityService.MarkThreadDone` ([#&#8203;4056](https://github.com/google/go-github/issues/4056))
  BREAKING CHANGE: `ActivityService.MarkThreadDone` accepts `string` `id` instead of `int64`.

...and the following additional changes:

- chore: Bump version of go-github to v85.0.0 ([#&#8203;4173](https://github.com/google/go-github/issues/4173))
- chore: Update `openapi_operations.yaml` ([#&#8203;4172](https://github.com/google/go-github/issues/4172))
- security: Reject cross-host redirects to prevent Authorization leak ([#&#8203;4171](https://github.com/google/go-github/issues/4171))
- chore: Improve GitHub Actions workflows lint and testing ([#&#8203;4169](https://github.com/google/go-github/issues/4169))
- chore: Switch legacy redirect handling to new pattern ([#&#8203;4161](https://github.com/google/go-github/issues/4161))
- feat: Add `CodeSecurity` to `SecurityAndAnalysis` ([#&#8203;4155](https://github.com/google/go-github/issues/4155))
- fix: Reject URL path segments containing ".." in all request methods ([#&#8203;4150](https://github.com/google/go-github/issues/4150))
- feat: Refactor repositories download contents ([#&#8203;4153](https://github.com/google/go-github/issues/4153))
- chore: Bump google.org/x/tools to v0.44.0 in /tools ([#&#8203;4168](https://github.com/google/go-github/issues/4168))
- docs: Fix broken blog post link ([#&#8203;4160](https://github.com/google/go-github/issues/4160))
- build(deps): Bump github.com/sigstore/timestamp-authority/v2 from 2.0.3 to 2.0.6 in /example ([#&#8203;4156](https://github.com/google/go-github/issues/4156))
- chore: Update openapi\_operations.yaml ([#&#8203;4157](https://github.com/google/go-github/issues/4157))
- feat: Remove Google App Engine standard support ([#&#8203;4152](https://github.com/google/go-github/issues/4152))
- feat: Add `DownloadCopilotMetrics` helper method ([#&#8203;4149](https://github.com/google/go-github/issues/4149))
- docs: Add `apiVersion` to GitHub API link ([#&#8203;4147](https://github.com/google/go-github/issues/4147))
- chore: Simplify `redundantptr` custom linter ([#&#8203;4148](https://github.com/google/go-github/issues/4148))
- docs: Deprecate old Copilot metrics endpoints closed on April 2, 2026 ([#&#8203;4137](https://github.com/google/go-github/issues/4137))
- refactor: Remove redundant `github.Ptr` calls ([#&#8203;4145](https://github.com/google/go-github/issues/4145))
- fix: Add missing `User` fields ([#&#8203;4146](https://github.com/google/go-github/issues/4146))
- fix: Preserve `Marketplace.Stubbed` during client copy ([#&#8203;4144](https://github.com/google/go-github/issues/4144))
- refactor: Simplify array copying ([#&#8203;4143](https://github.com/google/go-github/issues/4143))
- build(deps): Bump golang.org/x/crypto from 0.49.0 to 0.50.0 in /example ([#&#8203;4141](https://github.com/google/go-github/issues/4141))
- build(deps): Bump github.com/getkin/kin-openapi from 0.134.0 to 0.135.0 in /tools ([#&#8203;4142](https://github.com/google/go-github/issues/4142))
- build(deps): Bump golang.org/x/term from 0.41.0 to 0.42.0 in /example ([#&#8203;4140](https://github.com/google/go-github/issues/4140))
- build(deps): Bump golang.org/x/net from 0.52.0 to 0.53.0 in /scrape ([#&#8203;4139](https://github.com/google/go-github/issues/4139))
- build(deps): Bump go.opentelemetry.io/otel to v1.43.0 ([#&#8203;4135](https://github.com/google/go-github/issues/4135))
- fix: Expand `sanitizeURL` secrets redactions ([#&#8203;4126](https://github.com/google/go-github/issues/4126))
- build(deps): Bump github.com/alecthomas/kong from 1.14.0 to 1.15.0 in /tools ([#&#8203;4132](https://github.com/google/go-github/issues/4132))
- build(deps): Bump actions/setup-go from 6.3.0 to 6.4.0 in the actions group ([#&#8203;4131](https://github.com/google/go-github/issues/4131))
- feat: Add support for custom names and methods that return structs with multiple `[]*T` fields in `gen-iterators.go` ([#&#8203;4128](https://github.com/google/go-github/issues/4128))
- fix: Limit webhook payload size in `ValidatePayloadFromBody` ([#&#8203;4125](https://github.com/google/go-github/issues/4125))
- build(deps): Bump codecov/codecov-action from 5.5.3 to 6.0.0 ([#&#8203;4123](https://github.com/google/go-github/issues/4123))
- fix: Synchronize `requestCount` in rate limit tests ([#&#8203;4124](https://github.com/google/go-github/issues/4124))
- chore: Simplify `generate.sh` by removing `git worktree` and using generator-based check  ([#&#8203;4120](https://github.com/google/go-github/issues/4120))
- docs: Improve comments in /examples ([#&#8203;4122](https://github.com/google/go-github/issues/4122))
- chore: Use `golangci-lint-action`; remove `newreposecretwithlibsodium` ([#&#8203;4119](https://github.com/google/go-github/issues/4119))
- feat: Add custom image endpoints for GitHub-hosted runners ([#&#8203;4101](https://github.com/google/go-github/issues/4101))
- chore: Cache custom golangci-lint binaries in GHA workflow ([#&#8203;4116](https://github.com/google/go-github/issues/4116))
- build(deps): Bump github.com/ProtonMail/go-crypto from 1.4.0 to 1.4.1 in /example ([#&#8203;4115](https://github.com/google/go-github/issues/4115))
- build(deps): Bump golang.org/x/tools from 0.29.0 to 0.43.0 in /tools/extraneous-new ([#&#8203;4114](https://github.com/google/go-github/issues/4114))
- build(deps): Bump codecov/codecov-action from 5.5.2 to 5.5.3 ([#&#8203;4112](https://github.com/google/go-github/issues/4112))
- build(deps): Bump github.com/golangci/plugin-module-register from 0.1.1 to 0.1.2 in /tools/extraneous-new ([#&#8203;4113](https://github.com/google/go-github/issues/4113))
- build(deps): Bump github.com/getkin/kin-openapi from 0.133.0 to 0.134.0 in /tools ([#&#8203;4111](https://github.com/google/go-github/issues/4111))
- build(deps): Bump github.com/PuerkitoBio/goquery from 1.11.0 to 1.12.0 in /scrape ([#&#8203;4110](https://github.com/google/go-github/issues/4110))
- chore: Upgrade deps for linters using dependabot ([#&#8203;4107](https://github.com/google/go-github/issues/4107))
- chore: Use `structfield.Settings` in `check-structfield-settings` ([#&#8203;4108](https://github.com/google/go-github/issues/4108))
- build(deps): Bump google.golang.org/grpc from 1.78.0 to 1.79.3 in /example ([#&#8203;4109](https://github.com/google/go-github/issues/4109))
- chore: Remove unnecessary use of `new` and `&SomeStruct{}` and add new `extraneousnew` custom linter ([#&#8203;4106](https://github.com/google/go-github/issues/4106))
- feat: Add `NetworkConfigurationID` and `HostedRunnersURL` to enterprise runner group types ([#&#8203;4099](https://github.com/google/go-github/issues/4099))
- feat: Generate accessors for all fields ([#&#8203;4105](https://github.com/google/go-github/issues/4105))
- feat: Add `ListRunnerGroupHostedRunners` for org runner groups ([#&#8203;4100](https://github.com/google/go-github/issues/4100))
- chore: Enable `default: none` linters; remove duplicated ([#&#8203;4097](https://github.com/google/go-github/issues/4097))
- fix: Use `Cursor` pagination for `*.ListHookDeliveriesIter` ([#&#8203;4096](https://github.com/google/go-github/issues/4096))
- chore: Remove duplicated formatters ([#&#8203;4094](https://github.com/google/go-github/issues/4094))
- chore: Fix typos in comments and tests ([#&#8203;4093](https://github.com/google/go-github/issues/4093))
- chore: Fix typo in CONTRIBUTING.md ([#&#8203;4092](https://github.com/google/go-github/issues/4092))
- chore: Update openapi\_operations.yaml ([#&#8203;4091](https://github.com/google/go-github/issues/4091))
- build(deps): Bump github.com/bradleyfalzon/ghinstallation/v2 from 2.17.0 to 2.18.0 in /example ([#&#8203;4084](https://github.com/google/go-github/issues/4084))
- chore: Bump go.opentelemetry.io/otel to v1.42.0 ([#&#8203;4090](https://github.com/google/go-github/issues/4090))
- build(deps): Bump golang.org/x/crypto from 0.48.0 to 0.49.0 in /example ([#&#8203;4081](https://github.com/google/go-github/issues/4081))
- build(deps): Bump golang.org/x/sync from 0.19.0 to 0.20.0 in /tools ([#&#8203;4078](https://github.com/google/go-github/issues/4078))
- build(deps): Bump golang.org/x/net from 0.51.0 to 0.52.0 in /scrape ([#&#8203;4079](https://github.com/google/go-github/issues/4079))
- test: Add fuzz test for `ParseWebHook` ([#&#8203;4076](https://github.com/google/go-github/issues/4076))
- feat: Add enterprise budgets API ([#&#8203;4069](https://github.com/google/go-github/issues/4069))
- feat: Add list organization fine-grained permissions ([#&#8203;4072](https://github.com/google/go-github/issues/4072))
- feat: Make `script/lint.sh` output simpler to read ([#&#8203;4073](https://github.com/google/go-github/issues/4073))
- chore: Speed up linting ([#&#8203;4071](https://github.com/google/go-github/issues/4071))
- build(deps): Bump go.opentelemetry.io/otel/sdk from 1.40.0 to 1.41.0 in /otel ([#&#8203;4065](https://github.com/google/go-github/issues/4065))
- build(deps): Bump go.opentelemetry.io/otel from 1.40.0 to 1.41.0 in /otel ([#&#8203;4068](https://github.com/google/go-github/issues/4068))
- build(deps): Bump go.opentelemetry.io/otel/exporters/stdout/stdouttrace from 1.40.0 to 1.41.0 in /example ([#&#8203;4062](https://github.com/google/go-github/issues/4062))
- build(deps): Bump go.opentelemetry.io/otel/sdk from 1.40.0 to 1.41.0 in /example ([#&#8203;4064](https://github.com/google/go-github/issues/4064))
- build(deps): Bump github.com/ProtonMail/go-crypto from 1.3.0 to 1.4.0 in /example ([#&#8203;4063](https://github.com/google/go-github/issues/4063))
- feat: Add `client_id` field to `App` ([#&#8203;4060](https://github.com/google/go-github/issues/4060))
- test: Simplify `CopilotService` tests ([#&#8203;4058](https://github.com/google/go-github/issues/4058))
- test: Fix flaky `TestDo_rateLimit_abuseRateLimitError_xRateLimitReset` ([#&#8203;4057](https://github.com/google/go-github/issues/4057))
- feat: Add support for enterprise audit log streaming API ([#&#8203;4035](https://github.com/google/go-github/issues/4035))
- feat: Add repository-level immutable releases settings ([#&#8203;4039](https://github.com/google/go-github/issues/4039))
- chore: Add `SAS` as a common initialism to `structfield` ([#&#8203;4054](https://github.com/google/go-github/issues/4054))
- fix: Fix data race on Windows ([#&#8203;4051](https://github.com/google/go-github/issues/4051))
- docs: Fix grammar in `README.md` ([#&#8203;4053](https://github.com/google/go-github/issues/4053))
- chore: Simplify form value assertions in tests ([#&#8203;4048](https://github.com/google/go-github/issues/4048))
- chore: Bump go-github from v83 to v84 in /scrape ([#&#8203;4050](https://github.com/google/go-github/issues/4050))

### [`v84.0.0`](https://github.com/google/go-github/releases/tag/v84.0.0)

[Compare Source](https://github.com/google/go-github/compare/v83.0.0...v84.0.0)

This release contains the following breaking API changes:

- feat!: Support workflow dispatch run details in response ([#&#8203;4028](https://github.com/google/go-github/issues/4028))
  BREAKING CHANGE: `CreateWorkflowDispatchEventByID` and `CreateWorkflowDispatchEventByFileName` now return `*WorkflowDispatchRunDetails`.
- fix!: Fix `opts` for methods listing issues and sub-issues ([#&#8203;4016](https://github.com/google/go-github/issues/4016))
  BREAKING CHANGE: Split `IssuesService.List` into `IssuesService.ListAllIssues` and `IssuesService.ListUserIssues`. `IssuesService.ListByOrg` now accepts `IssueListByOrgOptions`. `SubIssueService.ListByIssue` now accepts `ListOptions`.

...and the following additional changes:

- chore: Bump version of go-github to v84.0.0 ([#&#8203;4049](https://github.com/google/go-github/issues/4049))
- chore: Spell `white space` instead of `whitespace` ([#&#8203;4047](https://github.com/google/go-github/issues/4047))
- build(deps): Bump the go\_modules group in /example ([#&#8203;4040](https://github.com/google/go-github/issues/4040))
- chore: Improve `testJSONMarshal` ([#&#8203;4042](https://github.com/google/go-github/issues/4042))
- Add 'munlicode' to REVIEWERS list ([#&#8203;4046](https://github.com/google/go-github/issues/4046))
- build(deps): Bump golang.org/x/net from 0.50.0 to 0.51.0 in /scrape ([#&#8203;4045](https://github.com/google/go-github/issues/4045))
- build(deps): Bump actions/setup-go from 6.2.0 to 6.3.0 in the actions group ([#&#8203;4044](https://github.com/google/go-github/issues/4044))
- chore: Fix `TestNewFormRequest` ([#&#8203;4043](https://github.com/google/go-github/issues/4043))
- feat: Add support for team `type` field ([#&#8203;4037](https://github.com/google/go-github/issues/4037))
- chore: Update openapi\_operations.yaml ([#&#8203;4041](https://github.com/google/go-github/issues/4041))
- feat: Add support for repository fine-grained permissions ([#&#8203;4032](https://github.com/google/go-github/issues/4032))
- docs: Fix documentation links ([#&#8203;4036](https://github.com/google/go-github/issues/4036))
- feat: Add fields `Codespaces`, `Copilot` and `ActionsInbound` to `APIMeta` ([#&#8203;3975](https://github.com/google/go-github/issues/3975))
- chore: Use `go:fix inline` for deprecated ptr funcs ([#&#8203;4034](https://github.com/google/go-github/issues/4034))
- feat: Add `ListFineGrainedPersonalAccessTokenRequests` for org ([#&#8203;4022](https://github.com/google/go-github/issues/4022))
- feat: Ensure compatibility with encoding/json/v2 experiment ([#&#8203;4029](https://github.com/google/go-github/issues/4029))
- chore: Update `golangci-lint` and enable some revive rules ([#&#8203;4025](https://github.com/google/go-github/issues/4025))
- refactor: Use sorting functions from `slices` instead of `sort` ([#&#8203;4020](https://github.com/google/go-github/issues/4020))
- build(deps): Bump github.com/theupdateframework/go-tuf/v2 to v2.4.1 ([#&#8203;4018](https://github.com/google/go-github/issues/4018))
- chore: Update workflow and tools to use Go 1.26 and 1.25 ([#&#8203;3995](https://github.com/google/go-github/issues/3995))
- chore: Bump go-github from v82 to v83 in /scrape ([#&#8203;4017](https://github.com/google/go-github/issues/4017))

### [`v83.0.0`](https://github.com/google/go-github/releases/tag/v83.0.0)

[Compare Source](https://github.com/google/go-github/compare/v82.0.0...v83.0.0)

I don't recall ever having this many breaking API changes in a single release, and the last release was only 3 weeks ago!

A special heart-felt thanks goes to [@&#8203;merchantmoh-debug](https://github.com/merchantmoh-debug), [@&#8203;Not-Dhananjay-Mishra](https://github.com/Not-Dhananjay-Mishra), and [@&#8203;alexandear](https://github.com/alexandear) for the addition of a long-requested feature to this repo:

- native auto-generated iterators for all `List*` methods that support pagination (change your call from `List*` to `List*Iter` and make sure to use a rate-limiting transport or you will quickly exhaust your quotas!)

A second set of heart-felt thanks go to [@&#8203;stevehipwell](https://github.com/stevehipwell) for setting up our REVIEWERS file and to our amazing volunteer reviewers:

- [@&#8203;stevehipwell](https://github.com/stevehipwell)
- [@&#8203;alexandear](https://github.com/alexandear)
- [@&#8203;zyfy29](https://github.com/zyfy29)
- [@&#8203;Not-Dhananjay-Mishra](https://github.com/Not-Dhananjay-Mishra)

who have reduced our code-review wait times from days (*sometimes weeks*) down to literally ***hours*** and thereby enable rapid responses to bug fixes and attempts to stay up-to-date with the ever-evolving GitHub v3 API.

This release contains the following breaking API changes:

- fix!: Divide `PackageGetAllVersions` into two separate methods `ListPackageVersions` and `ListUserPackageVersions` ([#&#8203;4014](https://github.com/google/go-github/issues/4014))
  BREAKING CHANGE: `PackageGetAllVersions` is now divided into `ListPackageVersions` and `ListUserPackageVersions`.
- fix!: Remove unsupported pagination from `ListAutolinks` ([#&#8203;4012](https://github.com/google/go-github/issues/4012))
  BREAKING CHANGE: `opts *ListOptions` is removed from `RepositoriesService.ListAutoLinks`.
- fix!: Remove `ListOptions` from `PullRequestsService.ListReviewers` ([#&#8203;4009](https://github.com/google/go-github/issues/4009))
  BREAKING CHANGE: `PullRequestsService.ListReviewers` no longer has `opts *ListOptions`.
- fix!: Change `PremiumRequestUsageItem` quantities to `float64` ([#&#8203;4002](https://github.com/google/go-github/issues/4002))
  BREAKING CHANGE: `PremiumRequestUsageItem` numeric fields are now `float64`.
- fix!: Add `ListOptions` to `ListDeploymentBranchPolicies` and `ListCustomDeploymentRuleIntegrations` ([#&#8203;3988](https://github.com/google/go-github/issues/3988))
  BREAKING CHANGE: `RepositoriesService.ListDeploymentBranchPolicies` and `RepositoriesService.ListCustomDeploymentRuleIntegrations` now accept `ListOptions`.
- fix!: Pass `url` struct tags by value instead of by reference ([#&#8203;3991](https://github.com/google/go-github/issues/3991))
  BREAKING CHANGE: Many `*Options` structs now pass `omitempty` URL struct fields by value instead of by reference.
- fix!: Fix pagination support for `IssuesService` list methods ([#&#8203;3984](https://github.com/google/go-github/issues/3984))
  BREAKING CHANGE: `ListCursorOptions` is removed from `IssueListOptions`.
- fix!: Add field `PerPage` to `OrganizationsListOptions` ([#&#8203;3986](https://github.com/google/go-github/issues/3986))
  BREAKING CHANGE: `OrganizationsListOptions` now contains only `PerPage` instead of `ListOptions`.
- fix!: Add `ListLicensesOptions` to `LicensesService.List` ([#&#8203;3981](https://github.com/google/go-github/issues/3981))
  BREAKING CHANGE: `LicensesService.List` now accepts `ListLicensesOptions` for pagination.
- fix!: Change `SCIMEnterpriseAttributeOperation.Value` from `*string` to `any` ([#&#8203;3971](https://github.com/google/go-github/issues/3971))
  BREAKING CHANGE: `SCIMEnterpriseAttributeOperation.Value` is changed from `*string` to `any`.
- feat!: Add `ListOptions` to `RepositoriesService.ListAllTopics` ([#&#8203;3978](https://github.com/google/go-github/issues/3978))
  BREAKING CHANGE: `RepositoriesService.ListAllTopics` now accepts `ListOptions` for pagination.
- fix!: Replace `UserListOptions.ListOptions` with `UserListOptions.PerPage` ([#&#8203;3977](https://github.com/google/go-github/issues/3977))
  BREAKING CHANGE: Replaces `UserListOptions.ListOptions` with `UserListOptions.PerPage` which also removes `UsersService.ListAllIter`.
- fix!: `CreateHostedRunnerRequest`, `UpdateHostedRunnerRequest` instead of `HostedRunnerRequest` ([#&#8203;3973](https://github.com/google/go-github/issues/3973))
  BREAKING CHANGE: `ActionsService.CreateHostedRunner` and `EnterpriseService.CreateHostedRunner` now accept `CreateHostedRunnerRequest`; `ActionsService.UpdateHostedRunner` and `EnterpriseService.UpdateHostedRunner` now accept `UpdateHostedRunnerRequest`.
- refactor!: Use `RepositoryPermissions` struct for `User.Permissions` ([#&#8203;3963](https://github.com/google/go-github/issues/3963))
  BREAKING CHANGE: `User.Permissions` is now `*RepositoryPermissions` instead of `map[string]bool`.

...and the following additional changes:

- Bump version of go-github to v83.0.0 ([#&#8203;4015](https://github.com/google/go-github/issues/4015))
- feat: Support pagination for methods that return structs ([#&#8203;4011](https://github.com/google/go-github/issues/4011))
- chore: Bump golangci-lint to v2.9.0 ([#&#8203;4013](https://github.com/google/go-github/issues/4013))
- docs: Update usage instructions ([#&#8203;4008](https://github.com/google/go-github/issues/4008))
- feat: Add iterators for methods with `After` ([#&#8203;4007](https://github.com/google/go-github/issues/4007))
- chore: Improve `addOptions` implementation ([#&#8203;3998](https://github.com/google/go-github/issues/3998))
- chore: Do not print any output when `check-structfield-settings` is OK ([#&#8203;4001](https://github.com/google/go-github/issues/4001))
- build(deps): Bump golang.org/x/net from 0.49.0 to 0.50.0 in /scrape ([#&#8203;4003](https://github.com/google/go-github/issues/4003))
- chore: Remove unnecessary `fmt.Print` in tests ([#&#8203;3999](https://github.com/google/go-github/issues/3999))
- build(deps): Bump github.com/alecthomas/kong from 1.13.0 to 1.14.0 in /tools ([#&#8203;4004](https://github.com/google/go-github/issues/4004))
- build(deps): Bump golang.org/x/crypto from 0.47.0 to 0.48.0 in /example ([#&#8203;4006](https://github.com/google/go-github/issues/4006))
- fix: Change cursor pagination to use `After` ([#&#8203;3994](https://github.com/google/go-github/issues/3994))
- fix: Add support for GitHub Enterprise cloud upload URLs ([#&#8203;3993](https://github.com/google/go-github/issues/3993))
- chore: Turn off commit with `gpgsign` in script/generate.sh ([#&#8203;3982](https://github.com/google/go-github/issues/3982))
- feat: Support `[]string` return type in `gen-iterators.go` ([#&#8203;3980](https://github.com/google/go-github/issues/3980))
- fix: Address `modernize.omitzero` issues ([#&#8203;3972](https://github.com/google/go-github/issues/3972))
- feat: Add organization artifact metadata APIs ([#&#8203;3944](https://github.com/google/go-github/issues/3944))
- chore: Address `otel` review feedback ([#&#8203;3969](https://github.com/google/go-github/issues/3969))
- feat(otel): Add native OpenTelemetry Transport module ([#&#8203;3938](https://github.com/google/go-github/issues/3938))
- feat: Add native Go 1.23 iterator support for cursor-based pagination ([#&#8203;3965](https://github.com/google/go-github/issues/3965))
- chore: Address `gen-iterators` review feedback ([#&#8203;3962](https://github.com/google/go-github/issues/3962))
- feat: Add native Go 1.23 Iterator support ([#&#8203;3916](https://github.com/google/go-github/issues/3916))
- docs: Fix typo in README.md ([#&#8203;3961](https://github.com/google/go-github/issues/3961))
- chore: Move all "DO NOT EDIT" messages to line 1 ([#&#8203;3960](https://github.com/google/go-github/issues/3960))
- chore: Enable `unparam` linter and cover unused `*Response` results ([#&#8203;3955](https://github.com/google/go-github/issues/3955))
- fix(tools): Change `gen-release-notes` to use `git` instead of scraping web ([#&#8203;3958](https://github.com/google/go-github/issues/3958))
- chore: Use `example.com` instead of random URLs in tests ([#&#8203;3948](https://github.com/google/go-github/issues/3948))
- feat: Add `organization_copilot_metrics` installation permission ([#&#8203;3957](https://github.com/google/go-github/issues/3957))
- chore(deps): Switch from `gopkg.in/yaml.v3` to `go.yaml.in/yaml/v3` in /tools ([#&#8203;3907](https://github.com/google/go-github/issues/3907))
- docs: Address PR titles in CONTRIBUTING.md ([#&#8203;3952](https://github.com/google/go-github/issues/3952))
- chore: Format code with `golangci-lint fmt` ([#&#8203;3949](https://github.com/google/go-github/issues/3949))
- fix: Handle HTTP 429 status code for rate limiting ([#&#8203;3951](https://github.com/google/go-github/issues/3951))
- chore: Adapt `lint.sh` to Windows Git Bash ([#&#8203;3950](https://github.com/google/go-github/issues/3950))
- Bump go-github from v81 to v82 in /scrape ([#&#8203;3946](https://github.com/google/go-github/issues/3946))

### [`v82.0.0`](https://github.com/google/go-github/releases/tag/v82.0.0)

[Compare Source](https://github.com/google/go-github/compare/v81.0.0...v82.0.0)

This release contains the following breaking API changes:

- feat!: Improve support for custom property defaults ([#&#8203;3906](https://github.com/google/go-github/issues/3906))
  BREAKING CHANGE: `CustomProperty.DefaultValue` is now type `any` and `.ValueType` is now type `PropertyValueType`.
- fix!: Simplify `Git.ListMatchingRefs` by removing `ReferenceListOptions` ([#&#8203;3924](https://github.com/google/go-github/issues/3924))
  BREAKING CHANGE: `Git.ListMatchingRefs` accepts `ref` instead of the `ReferenceListOptions`.
- refactor!: Use a struct for `Repository.Permissions` instead of `map[string]bool` ([#&#8203;3936](https://github.com/google/go-github/issues/3936))
  BREAKING CHANGE: `Repository.Permissions` is now a struct instead of `map[string]bool`.

...and the following additional changes:

- Bump go-github from v80 to v81 in /scrape ([#&#8203;3900](https://github.com/google/go-github/issues/3900))
- build(deps): Bump github.com/google/go-querystring from 1.1.0 to 1.2.0 ([#&#8203;3901](https://github.com/google/go-github/issues/3901))
- docs: Correct variable name in rate limit error logging example ([#&#8203;3902](https://github.com/google/go-github/issues/3902))
- feat: Add `ConfigurationFilePath` field to `GenerateNotesOptions` ([#&#8203;3904](https://github.com/google/go-github/issues/3904))
- fix: Ignore unset `AllowedMergeMethods` field ([#&#8203;3905](https://github.com/google/go-github/issues/3905))
- docs: Clarify `nil`  `http.Client` usage has no timeout ([#&#8203;3910](https://github.com/google/go-github/issues/3910))
- build(deps): Bump golang.org/x/net from 0.48.0 to 0.49.0 in /scrape ([#&#8203;3911](https://github.com/google/go-github/issues/3911))
- build(deps): Bump golang.org/x/term from 0.38.0 to 0.39.0 in /example ([#&#8203;3912](https://github.com/google/go-github/issues/3912))
- build(deps): Bump golang.org/x/crypto from 0.46.0 to 0.47.0 in /example ([#&#8203;3913](https://github.com/google/go-github/issues/3913))
- feat: Add `dependency_sbom` rate limit support ([#&#8203;3908](https://github.com/google/go-github/issues/3908))
- feat: Add support for delegated bypass in code security org config ([#&#8203;3920](https://github.com/google/go-github/issues/3920))
- fix: `DeleteSocialAccounts` and `AddSocialAccounts` of `UsersService` ([#&#8203;3922](https://github.com/google/go-github/issues/3922))
- chore: Add Not-Dhananjay-Mishra to REVIEWERS ([#&#8203;3923](https://github.com/google/go-github/issues/3923))
- build(deps): Bump the actions group with 2 updates ([#&#8203;3927](https://github.com/google/go-github/issues/3927))
- chore: Refactor test workflow ([#&#8203;3929](https://github.com/google/go-github/issues/3929))
- fix: Use correct type for custom property default value ([#&#8203;3928](https://github.com/google/go-github/issues/3928))
- feat: Support creating repo with custom properties ([#&#8203;3933](https://github.com/google/go-github/issues/3933))
- chore: Enable `govet` linter with all checks ([#&#8203;3935](https://github.com/google/go-github/issues/3935))
- perf: Optimize `Stringify` allocations (\~3x faster) ([#&#8203;3914](https://github.com/google/go-github/issues/3914))
- docs: Update CONTRIBUTING.md to prevent AI slop PRs ([#&#8203;3940](https://github.com/google/go-github/issues/3940))
- chore: Update openapi\_operations.yaml ([#&#8203;3942](https://github.com/google/go-github/issues/3942))
- build(deps): Bump actions/checkout from 6.0.1 to 6.0.2 in the actions group ([#&#8203;3943](https://github.com/google/go-github/issues/3943))
- Bump version of go-github to v82.0.0 ([#&#8203;3945](https://github.com/google/go-github/issues/3945))

### [`v81.0.0`](https://github.com/google/go-github/releases/tag/v81.0.0)

[Compare Source](https://github.com/google/go-github/compare/v80.0.0...v81.0.0)

This release contains the following breaking API changes:

- fix!: Change Org usage report Quantity to float64 ([#&#8203;3862](https://github.com/google/go-github/issues/3862))
  BREAKING CHANGE: `UsageItem.Quantity` is now type `float64`.
- chore!: Remove `PullRequestRuleParameters.AutomaticCopilotCodeReviewEnabled` field ([#&#8203;3866](https://github.com/google/go-github/issues/3866))
  BREAKING CHANGE: `PullRequestRuleParameters.AutomaticCopilotCodeReviewEnabled` is now removed.
- feat!: Implement Enterprise SCIM - Provision Groups & Users ([#&#8203;3852](https://github.com/google/go-github/issues/3852))
  BREAKING CHANGE: `SCIMEnterpriseDisplayReference.Ref` is now of type `*string`.
- fix!: Change copilot\_code\_review field names to match GitHub API ([#&#8203;3874](https://github.com/google/go-github/issues/3874))
  BREAKING CHANGE: `CopilotCodeReviewRuleParameters.ReviewNewPushes` is now `ReviewOnPush`.
- fix!: Add support for missing attributes in ProjectsV2 API ([#&#8203;3888](https://github.com/google/go-github/issues/3888))
  BREAKING CHANGE: `AddProjectItemOptions` fields have changed types.
- feat!: Use omitzero for BypassActors to support handling empty arrays ([#&#8203;3891](https://github.com/google/go-github/issues/3891))
  BREAKING CHANGE: `UpdateRepositoryRulesetClearBypassActor`, `UpdateRepositoryRulesetClearBypassActor`, `UpdateRulesetClearBypassActor`, and `UpdateRulesetNoBypassActor` have been removed as they are no longer needed.

...and the following additional changes:

- Bump go-github from v79 to v80 in /scrape ([#&#8203;3855](https://github.com/google/go-github/issues/3855))
- feat: Add support for Enterprise Team APIs ([#&#8203;3861](https://github.com/google/go-github/issues/3861))
- feat: Implement Enterprise SCIM - Set Groups or Users ([#&#8203;3858](https://github.com/google/go-github/issues/3858))
- build(deps): Bump golang.org/x/term from 0.37.0 to 0.38.0 in /example ([#&#8203;3865](https://github.com/google/go-github/issues/3865))
- build(deps): Bump golang.org/x/sync from 0.18.0 to 0.19.0 in /tools ([#&#8203;3864](https://github.com/google/go-github/issues/3864))
- build(deps): Bump actions/checkout from 6.0.0 to 6.0.1 in the actions group ([#&#8203;3863](https://github.com/google/go-github/issues/3863))
- feat: Add advanced\_search parameter to SearchOptions ([#&#8203;3868](https://github.com/google/go-github/issues/3868))
- feat: Implement Enterprise SCIM - Delete Groups or Users ([#&#8203;3856](https://github.com/google/go-github/issues/3856))
- feat: Add support for copilot\_code\_review rule type ([#&#8203;3857](https://github.com/google/go-github/issues/3857))
- feat: Add support for Enterprise Team Members APIs ([#&#8203;3873](https://github.com/google/go-github/issues/3873))
- chore: Simplify JSON marshaling for RepositoryRulesetRules ([#&#8203;3875](https://github.com/google/go-github/issues/3875))
- feat: Add support for Enterprise Team Organizations APIs ([#&#8203;3876](https://github.com/google/go-github/issues/3876))
- docs: Clarify CreateTree semantics and TreeEntry usage ([#&#8203;3877](https://github.com/google/go-github/issues/3877))
- docs: Reformulate deprecation notice for Commits field in `PushEvent` ([#&#8203;3880](https://github.com/google/go-github/issues/3880))
- build(deps): Bump actions/cache from 4.3.0 to 5.0.1 in the actions group ([#&#8203;3883](https://github.com/google/go-github/issues/3883))
- build(deps): Bump golang.org/x/net from 0.47.0 to 0.48.0 in /scrape ([#&#8203;3882](https://github.com/google/go-github/issues/3882))
- build(deps): Bump codecov/codecov-action from 5.5.1 to 5.5.2 ([#&#8203;3884](https://github.com/google/go-github/issues/3884))
- build(deps): Bump golang.org/x/crypto from 0.45.0 to 0.46.0 in /example ([#&#8203;3885](https://github.com/google/go-github/issues/3885))
- chore: Rename 'opt' to 'opts' in multiple methods ([#&#8203;3887](https://github.com/google/go-github/issues/3887))
- feat: Add support for remaining Codespaces APIs ([#&#8203;3886](https://github.com/google/go-github/issues/3886))
- feat: Handle omitzero in structfield linter ([#&#8203;3881](https://github.com/google/go-github/issues/3881))
- feat: Implement Enterprise SCIM - Get a Group or User ([#&#8203;3889](https://github.com/google/go-github/issues/3889))
- feat: Add support for Codespace Machines APIs ([#&#8203;3890](https://github.com/google/go-github/issues/3890))
- feat: Add support for URL custom property value type ([#&#8203;3879](https://github.com/google/go-github/issues/3879))
- feat: Add UploadReleaseAssetFromRelease convenience helper ([#&#8203;3851](https://github.com/google/go-github/issues/3851))
- Update openapi\_operations.yaml ([#&#8203;3895](https://github.com/google/go-github/issues/3895))
- feat: Add support for Codespaces organizations APIs ([#&#8203;3892](https://github.com/google/go-github/issues/3892))
- feat: Add support for Copilot usage metrics reports API ([#&#8203;3893](https://github.com/google/go-github/issues/3893))
- feat: GetSignaturesProtectedBranch returns ErrBranchNotProtected when branch is not protected ([#&#8203;3896](https://github.com/google/go-github/issues/3896))
- Bump version of go-github to v81.0.0 ([#&#8203;3899](https://github.com/google/go-github/issues/3899))

### [`v80.0.0`](https://github.com/google/go-github/releases/tag/v80.0.0)

[Compare Source](https://github.com/google/go-github/compare/v79.0.0...v80.0.0)

This release contains the following breaking API changes:

- feat!: Implement Enterprise SCIM - EnterpriseService.ListProvisionedSCIMUsers ([#&#8203;3839](https://github.com/google/go-github/issues/3839))
  BREAKING CHANGE: `ListProvisionedSCIMGroupsEnterpriseOptions` optional fields are now pointers.

...and the following additional changes:

- Bump go-github from v78 to v79 in /scrape ([#&#8203;3828](https://github.com/google/go-github/issues/3828))
- build(deps): Bump github.com/PuerkitoBio/goquery from 1.10.3 to 1.11.0 in /scrape ([#&#8203;3833](https://github.com/google/go-github/issues/3833))
- build(deps): Bump actions/checkout from 5.0.0 to 5.0.1 in the actions group ([#&#8203;3834](https://github.com/google/go-github/issues/3834))
- build(deps): Bump golang.org/x/crypto from 0.43.0 to 0.44.0 in /example ([#&#8203;3835](https://github.com/google/go-github/issues/3835))
- build(deps): Bump github.com/alecthomas/kong from 1.12.1 to 1.13.0 in /tools ([#&#8203;3837](https://github.com/google/go-github/issues/3837))
- feat: Add support for Enterprise GitHub App Installation APIs ([#&#8203;3830](https://github.com/google/go-github/issues/3830))
- Add ParentIssueURL field to Issue struct ([#&#8203;3841](https://github.com/google/go-github/issues/3841))
- build(deps): Bump golang.org/x/crypto from 0.44.0 to 0.45.0 in /example ([#&#8203;3842](https://github.com/google/go-github/issues/3842))
- build(deps): Bump the actions group with 2 updates ([#&#8203;3844](https://github.com/google/go-github/issues/3844))
- Add custom `structfield` linter to check struct field names and tags ([#&#8203;3843](https://github.com/google/go-github/issues/3843))
- feat: Add Credentials Revoke API ([#&#8203;3847](https://github.com/google/go-github/issues/3847))
- docs: Improve displaying GitHub API links on pkg.go.dev ([#&#8203;3845](https://github.com/google/go-github/issues/3845))
- feat: Add GitHub Enterprise App installation repository management APIs ([#&#8203;3831](https://github.com/google/go-github/issues/3831))
- feat: Implement Enterprise SCIM - Update Group & User attributes ([#&#8203;3848](https://github.com/google/go-github/issues/3848))
- chore: Update golangci-lint to v2.7.0 ([#&#8203;3853](https://github.com/google/go-github/issues/3853))
- feat: Add repository target to ruleset ([#&#8203;3850](https://github.com/google/go-github/issues/3850))
- Bump version of go-github to v80.0.0 ([#&#8203;3854](https://github.com/google/go-github/issues/3854))

### [`v79.0.0`](https://github.com/google/go-github/releases/tag/v79.0.0)

[Compare Source](https://github.com/google/go-github/compare/v78.0.0...v79.0.0)

This release contains the following breaking API changes:

- fix!: Fix field selection and bugs in ProjectsV2 GET endpoints ([#&#8203;3809](https://github.com/google/go-github/issues/3809))
  BREAKING CHANGE: `UpdateProjectItemOptions.Field` is now `[]*ProjectV2FieldUpdate`.
- feat!: Add enterprise security configurations, update API fields ([#&#8203;3812](https://github.com/google/go-github/issues/3812))
  BREAKING CHANGES: Several `OrganizationsService` methods have been renamed for better consistency.
- feat!: Implement Enterprise SCIM - EnterpriseService.ListProvisionedSCIMGroups ([#&#8203;3814](https://github.com/google/go-github/issues/3814))
  BREAKING CHANGE: `SCIMService.ListSCIMProvisionedGroupsForEnterprise` is now `EnterpriseService.ListProvisionedSCIMEnterpriseGroups`.

...and the following additional changes:

- Bump go-github from v77 to v78 in /scrape ([#&#8203;3816](https://github.com/google/go-github/issues/3816))
- chore: Enable 'modernize'; bump golangci-lint to v2.6.1 ([#&#8203;3817](https://github.com/google/go-github/issues/3817))
- feat: Add `required_reviewers` support to `PullRequestRuleParameters` ([#&#8203;3806](https://github.com/google/go-github/issues/3806))
- Add support for new custom properties for orgs APIs ([#&#8203;3804](https://github.com/google/go-github/issues/3804))
- build(deps): Bump golang.org/x/sync from 0.17.0 to 0.18.0 in /tools ([#&#8203;3819](https://github.com/google/go-github/issues/3819))
- chore: Enable nolintlint linter ([#&#8203;3821](https://github.com/google/go-github/issues/3821))
- fix: Remove custom Accept headers from search endpoints ([#&#8203;3820](https://github.com/google/go-github/issues/3820))
- Return back preview headers for search; remove TODOs for custom headers ([#&#8203;3824](https://github.com/google/go-github/issues/3824))
- feat: Add hosted runners URL and network configuration ID to runner group models ([#&#8203;3825](https://github.com/google/go-github/issues/3825))
- Update `jsonfieldname` linter to support `$` in `json` tag names ([#&#8203;3826](https://github.com/google/go-github/issues/3826))
- Bump version of go-github to v79.0.0 ([#&#8203;3827](https://github.com/google/go-github/issues/3827))

### [`v78.0.0`](https://github.com/google/go-github/releases/tag/v78.0.0)

[Compare Source](https://github.com/google/go-github/compare/v77.0.0...v78.0.0)

This release contains the following breaking API changes:

- feat!: Address post-merge enterprise billing cost center review ([#&#8203;3805](https://github.com/google/go-github/issues/3805))
  BREAKING CHANGES: Various `EnterpriseService` structs have been renamed for consistency.

...and the following additional changes:

- Bump go-github from v76 to v77 in /scrape ([#&#8203;3801](https://github.com/google/go-github/issues/3801))
- chore: Update openapi\_operations.yaml ([#&#8203;3802](https://github.com/google/go-github/issues/3802))
- feat: Add support for enterprise billing cost centers API ([#&#8203;3803](https://github.com/google/go-github/issues/3803))
- feat: Add `sha_pinning_required` to `ActionsPermissions` structs ([#&#8203;3807](https://github.com/google/go-github/issues/3807))
- Bump version of go-github to v78.0.0 ([#&#8203;3815](https://github.com/google/go-github/issues/3815))

### [`v77.0.0`](https://github.com/google/go-github/releases/tag/v77.0.0)

[Compare Source](https://github.com/google/go-github/compare/v76.0.0...v77.0.0)

This release contains the following breaking API changes:

- refactor!: Remove pointer from required field of CreateStatus API ([#&#8203;3794](https://github.com/google/go-github/issues/3794))
  BREAKING CHANGE: `RepositoriesService.CreateStatus` now takes value for `status`, not pointer.
- feat!: Add support for project items CRUD and project fields read operations ([#&#8203;3793](https://github.com/google/go-github/issues/3793))
  BREAKING CHANGES:
  - `ProjectV2Field.Options` changed from `[]any` to `[]*ProjectV2FieldOption`.
  - `ProjectV2Field.URL` is now `ProjectV2Field.ProjectURL`
  - Optional fields in various `ProjectV2` structs are now passed as pointers
  - Aligns `ProjectsService` functions with [#&#8203;3761](https://github.com/google/go-github/issues/3761)
  - Almost all methods have been renamed

...and the following additional changes:

- Bump go-github from v75 to v76 in /scrape ([#&#8203;3783](https://github.com/google/go-github/issues/3783))
- Add custom jsonfieldname linter to ensure Go field name matches JSON tag name ([#&#8203;3757](https://github.com/google/go-github/issues/3757))
- chore: Fix typo in comment ([#&#8203;3786](https://github.com/google/go-github/issues/3786))
- feat: Add support for private registries endpoints ([#&#8203;3785](https://github.com/google/go-github/issues/3785))
- Only set `Authorization` when `token` is available ([#&#8203;3789](https://github.com/google/go-github/issues/3789))
- test: Ensure Authorization is not set with empty token ([#&#8203;3790](https://github.com/google/go-github/issues/3790))
- Fix spelling issues ([#&#8203;3792](https://github.com/google/go-github/issues/3792))
- Add test cases for JSON resource marshaling - SCIM ([#&#8203;3798](https://github.com/google/go-github/issues/3798))
- fix: Org/Enterprise UpdateRepositoryRulesetClearBypassActor sends empty array ([#&#8203;3796](https://github.com/google/go-github/issues/3796))
- Bump version of go-github to v77.0.0 ([#&#8203;3800](https://github.com/google/go-github/issues/3800))

### [`v76.0.0`](https://github.com/google/go-github/releases/tag/v76.0.0)

[Compare Source](https://github.com/google/go-github/compare/v75.0.0...v76.0.0)

This release contains the following breaking API changes:

- chore!: Remove ActionsBilling endpoints for User and Organization ([#&#8203;3701](https://github.com/google/go-github/issues/3701))
  BREAKING CHANGE: ActionsBilling endpoints are removed.
- fix!: Return RepositoryAttachment from `GetRepositoriesForCodeSecurityConfiguration` ([#&#8203;3707](https://github.com/google/go-github/issues/3707))
  BREAKING CHANGE: GetRepositoriesForCodeSecurityConfiguration now returns RepositoryAttachment instead of Repository.
- refactor!: Replace Edit with Update in permissions method names ([#&#8203;3731](https://github.com/google/go-github/issues/3731))
  BREAKING CHANGE: Permissions-related methods are renamed from `Edit*` to `Update*`.
- fix!: Change return type of GetDefaultCodeSecurityConfigurations ([#&#8203;3747](https://github.com/google/go-github/issues/3747))
  BREAKING CHANGE: `GetDefaultCodeSecurityConfigurations` now returns `CodeSecurityConfigurationWithDefaultForNewRepos` instead of `CodeSecurityConfiguration`.
- refactor!: Adjust function names and field types for billing API ([#&#8203;3770](https://github.com/google/go-github/issues/3770))
  BREAKING CHANGE: Billing-related methods are renamed to <verb><scope><subject> pattern, and required fields are changed to value types.

...and the following additional changes:

- Bump go-github from v74 to v75 in /scrape ([#&#8203;3724](https://github.com/google/go-github/issues/3724))
- feat: Add ClientID to Installation ([#&#8203;3712](https://github.com/google/go-github/issues/3712))
- feat: Add some GitHub Classroom API endpoints ([#&#8203;3690](https://github.com/google/go-github/issues/3690))
- chore: Replace http.Method\* constants with string literals ([#&#8203;3696](https://github.com/google/go-github/issues/3696))
- fix: Repositories.UpdateRulesetClearBypassActor sets BypassActors to empty slice ([#&#8203;3727](https://github.com/google/go-github/issues/3727))
- test: Ensure bypass\_actors serializes as an empty array when clearing ruleset bypass actors ([#&#8203;3734](https://github.com/google/go-github/issues/3734))
- Add reason field to PullRequestEvent ([#&#8203;3730](https://github.com/google/go-github/issues/3730))
- chore: Update openapi\_operations.yaml ([#&#8203;3735](https://github.com/google/go-github/issues/3735))
- Update CONTRIBUTING.md ([#&#8203;3736](https://github.com/google/go-github/issues/3736))
- feat: Support roles field in SCIM ([#&#8203;3728](https://github.com/google/go-github/issues/3728))
- chore: Ignore hidden .claude settings folder ([#&#8203;3738](https://github.com/google/go-github/issues/3738))
- feat: Add ListAcceptedAssignments and GetAssignmentGrades methods to Classroom API ([#&#8203;3732](https://github.com/google/go-github/issues/3732))
- feat: Add immutable releases support ([#&#8203;3725](https://github.com/google/go-github/issues/3725))
- build(deps): Bump actions/cache from 4.2.4 to 4.3.0 in the actions group ([#&#8203;3742](https://github.com/google/go-github/issues/3742))
- refactor: Use errors package to compare and assert error types ([#&#8203;3739](https://github.com/google/go-github/issues/3739))
- ci: Add errorlint configuration to golangci-lint settings ([#&#8203;3743](https://github.com/google/go-github/issues/3743))
- docs: Update code snippets to use errors package for type assertions ([#&#8203;3746](https://github.com/google/go-github/issues/3746))
- Update openapi\_operations.yaml ([#&#8203;3749](https://github.com/google/go-github/issues/3749))
- test: Use t.Context() instead of context.Background() ([#&#8203;3750](https://github.com/google/go-github/issues/3750))
- chore: Add zyfy29 to REVIEWERS ([#&#8203;3753](https://github.com/google/go-github/issues/3753))
- Prefer %v over %d,%s and add fmtpercentv custom linter ([#&#8203;3756](https://github.com/google/go-github/issues/3756))
- test: Simplify the function that skips integration tests ([#&#8203;3752](https://github.com/google/go-github/issues/3752))
- test: Fix issues in TestSecretScanningService tests ([#&#8203;3760](https://github.com/google/go-github/issues/3760))
- refactor: Simplify for range loops ([#&#8203;3762](https://github.com/google/go-github/issues/3762))
- chore(ci): Add example dir to dependabot config ([#&#8203;3764](https://github.com/google/go-github/issues/3764))
- fix: Correct body in EnterpriseService.InitialConfig ([#&#8203;3763](https://github.com/google/go-github/issues/3763))
- feat: Add premium request usage report endpoints for organizations and users ([#&#8203;3751](https://github.com/google/go-github/issues/3751))
- feat: Add two new Secret Scanning API endpoints ([#&#8203;3687](https://github.com/google/go-github/issues/3687))
- build(deps): Bump github.com/ProtonMail/go-crypto from 0.0.0-20230828082145-3c4c8a2d2371 to 1.3.0 in /example ([#&#8203;3765](https://github.com/google/go-github/issues/3765))
- build(deps): Bump golang.org/x/crypto from 0.36.0 to 0.42.0 in /example ([#&#8203;3766](https://github.com/google/go-github/issues/3766))
- build(deps): Bump github.com/gofri/go-github-pagination from 1.0.0 to 1.0.1 in /example ([#&#8203;3767](https://github.com/google/go-github/issues/3767))
- Update openapi\_operations.yaml ([#&#8203;3772](https://github.com/google/go-github/issues/3772))
- feat: Add fork PR workflows permission API support ([#&#8203;3737](https://github.com/google/go-github/issues/3737))
- Add support for organization Immutable Releases API ([#&#8203;3774](https://github.com/google/go-github/issues/3774))
- feat: Add enterprise license endpoints ([#&#8203;3755](https://github.com/google/go-github/issues/3755))
- build(deps): Bump github.com/bradleyfalzon/ghinstallation/v2 from 2.0.4 to 2.17.0 in /example ([#&#8203;3776](https://github.com/google/go-github/issues/3776))
- build(deps): Bump golang.org/x/net from 0.44.0 to 0.46.0 in /scrape ([#&#8203;3777](https://github.com/google/go-github/issues/3777))
- build(deps): Bump golang.org/x/crypto from 0.42.0 to 0.43.0 in /example ([#&#8203;3778](https://github.com/google/go-github/issues/3778))
- Add ProjectsService ([#&#8203;3718](https://github.com/google/go-github/issues/3718))
- Fix breakages caused by merge ([#&#8203;3781](https://github.com/google/go-github/issues/3781))
- Bump version of go-github to v76.0.0 ([#&#8203;3782](https://github.com/google/go-github/issues/3782))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJ0eXBlL21ham9yIl19-->

Reviewed-on: https://git.erwanleboucher.dev/eleboucher/forgesync/pulls/7
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.

Investigate updating to encoding/json/v2

5 participants