feat: Add Issue Dependencies API support#4130
feat: Add Issue Dependencies API support#4130tommaso-moro wants to merge 3 commits intogoogle:masterfrom
Conversation
Add four new methods to IssuesService for the Issue Dependencies REST API (apiVersion 2026-03-10): - ListBlockedBy: list dependencies blocking an issue - AddBlockedBy: add a blocking dependency to an issue - RemoveBlockedBy: remove a blocking dependency - ListBlocking: list issues that an issue is blocking Includes IssueDependencyRequest type, full test coverage with testBadOptions, testNewRequestAndDoFailure, testURLParseError, and testJSONMarshal helpers.
Run go generate to add: - GetIssueID accessor for IssueDependencyRequest - ListBlockedBy and ListBlocking iterators with tests
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #4130 +/- ##
==========================================
+ Coverage 93.72% 93.74% +0.02%
==========================================
Files 211 212 +1
Lines 19621 19701 +80
==========================================
+ Hits 18389 18469 +80
Misses 1034 1034
Partials 198 198 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
gmlewis
left a comment
There was a problem hiding this comment.
Thank you, @tommaso-moro!
LGTM.
Awaiting second LGTM+Approval from any other contributor to this repo before merging.
cc: @stevehipwell - @alexandear - @zyfy29 - @Not-Dhananjay-Mishra - @munlicode
|
|
||
| // IssueDependencyRequest represents a request to add a dependency to an issue. | ||
| type IssueDependencyRequest struct { | ||
| IssueID *int64 `json:"issue_id,omitempty"` |
| // GitHub API docs: https://docs.github.com/rest/issues/issue-dependencies#add-a-dependency-an-issue-is-blocked-by | ||
| // | ||
| //meta:operation POST /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by | ||
| func (s *IssuesService) AddBlockedBy(ctx context.Context, owner, repo string, number int, issueDepReq *IssueDependencyRequest) (*Issue, *Response, error) { |
There was a problem hiding this comment.
body is required so should we pass it by value?
| func (s *IssuesService) AddBlockedBy(ctx context.Context, owner, repo string, number int, issueDepReq *IssueDependencyRequest) (*Issue, *Response, error) { | |
| func (s *IssuesService) AddBlockedBy(ctx context.Context, owner, repo string, number int, issueDepReq IssueDependencyRequest) (*Issue, *Response, error) { |
| // GitHub API docs: https://docs.github.com/rest/issues/issue-dependencies#list-dependencies-an-issue-is-blocked-by | ||
| // | ||
| //meta:operation GET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by | ||
| func (s *IssuesService) ListBlockedBy(ctx context.Context, owner, repo string, number int, opts *ListOptions) ([]*Issue, *Response, error) { |
There was a problem hiding this comment.
Issue struct seems outdated according to new response schema.
It now includes a new field related to Issue Dependencies:
"issue_dependencies_summary": {
"title": "Issue Dependencies Summary",
"type": "object",
"properties": {
"blocked_by": {
"type": "integer"
},
"blocking": {
"type": "integer"
},
"total_blocked_by": {
"type": "integer"
},
"total_blocking": {
"type": "integer"
}
},
"required": [
"blocked_by",
"blocking",
"total_blocked_by",
"total_blocking"
]
}Additionally, several other fields are missing, such as performed_via_github_app, pinned_comment, issue_field_values and sub_issues_summary
can you add these to Issue struct?

closes: #4129
Add Issue Dependencies API support
Add support for the Issue Dependencies REST API.
Changes
New file
github/issues_dependencies.goadds four methods toIssuesService:ListBlockedByGET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_byAddBlockedByPOST /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_byRemoveBlockedByDELETE /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blocked_by/{issue_id}ListBlockingGET /repos/{owner}/{repo}/issues/{issue_number}/dependencies/blockingAlso adds
IssueDependencyRequesttype used byAddBlockedBy.Testing
Full test coverage in
github/issues_dependencies_test.go(12 tests) using standard helpers:testBadOptions,testNewRequestAndDoFailure,testURLParseError,testJSONMarshal.Auto-generated files updated via
go generate: accessors, accessor tests, iterators, and iterator tests.All scripts pass:
script/fmt.sh,script/test.sh,script/lint.sh.